source: trunk/grails-app/domain/nl/tno/massSequencing/SequenceData.groovy @ 49

Last change on this file since 49 was 49, checked in by robert@…, 8 years ago
  • Added sequence length histograms
  • Fixed bugs in files that remained on the file system after uploading (while they shouldn't)
  • Added extra options in run- and assay screens
File size: 2.3 KB
Line 
1package nl.tno.massSequencing
2
3import org.codehaus.groovy.grails.commons.ConfigurationHolder
4
5class SequenceData {
6        def fileService
7       
8        String sequenceFile = ''
9        String qualityFile = ''
10        Long numSequences = 0L
11        Float averageQuality = 0.0
12
13        static belongsTo = [sample: AssaySample]
14        static constraints = {
15                qualityFile(nullable: true)
16                numSequences(nullable: true)
17                averageQuality(nullable: true)
18        }
19
20        /**
21         * Returns the number of files in this data object.
22         * @return
23         */
24        public int numFiles() {
25                int number = 0;
26                if( sequenceFile != null && sequenceFile != "" )
27                        number++;
28
29                if( qualityFile != null && qualityFile != "" )
30                        number++;
31
32                return number;
33        }
34       
35       
36        /**
37         * Returns the number of quality scores in this data object. This equals
38         * the number of sequences iff a quality score is attached to this object
39         *
40         * @return      Number of quality scores in this object
41         */
42        public int numQualScores() {
43                if( qualityFile != null )
44                        return numSequences
45                else
46                        return 0;
47        }
48       
49        def beforeDelete = {
50                def permanentDir = fileService.absolutePath( ConfigurationHolder.config.massSequencing.fileDir.toString() )
51                if( sequenceFile ) {
52                        fileService.delete( sequenceFile, permanentDir )
53                }
54
55                if( qualityFile )
56                        fileService.delete( qualityFile, permanentDir )
57               
58                // Reset statistics of the assay sample, to ensure the deleted files are removed from statistics
59                sample?.resetStats();
60               
61                return true;
62        }
63       
64        public SequenceData clone() {
65                // Copy the files to a new name
66                def permanentDir = fileService.absolutePath( ConfigurationHolder.config.massSequencing.fileDir.toString() )
67               
68                def newSequenceFileName = sequenceFile;
69                if( this.sequenceFile ) {
70                        newSequenceFileName = fileService.getUniqueFilename( this.sequenceFile, permanentDir );
71                        fileService.copy( sequenceFile, newSequenceFileName, permanentDir );
72                }
73
74                def newQualityFileName = qualityFile;
75                if( this.qualityFile ) {
76                        newQualityFileName = fileService.getUniqueFilename( this.qualityFile, permanentDir );
77                        fileService.copy( qualityFile, newQualityFileName, permanentDir );
78                }
79
80                def sd = new SequenceData( 
81                        sequenceFile: newSequenceFileName, 
82                        qualityFile: newQualityFileName, 
83                        numSequences: this.numSequences,
84                        averageQuality: this.averageQuality
85                );
86       
87                if( this.sample )
88                        this.sample.addToSequenceData( sd );
89                       
90                return sd;
91        }
92}
Note: See TracBrowser for help on using the repository browser.