source: trunk/grails-app/domain/nl/tno/metagenomics/SequenceData.groovy @ 28

Last change on this file since 28 was 28, checked in by robert@…, 8 years ago

Renamed module to massSequencing

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       
62        public SequenceData clone() {
63                // Copy the files to a new name
64                def permanentDir = fileService.absolutePath( ConfigurationHolder.config.massSequencing.fileDir.toString() )
65               
66                def newSequenceFileName = sequenceFile;
67                if( this.sequenceFile ) {
68                        newSequenceFileName = fileService.getUniqueFilename( this.sequenceFile, permanentDir );
69                        fileService.copy( sequenceFile, newSequenceFileName, permanentDir );
70                }
71
72                def newQualityFileName = qualityFile;
73                if( this.qualityFile ) {
74                        newQualityFileName = fileService.getUniqueFilename( this.qualityFile, permanentDir );
75                        fileService.copy( qualityFile, newQualityFileName, permanentDir );
76                }
77
78                def sd = new SequenceData( 
79                        sequenceFile: newSequenceFileName, 
80                        qualityFile: newQualityFileName, 
81                        numSequences: this.numSequences,
82                        averageQuality: this.averageQuality
83                );
84       
85                if( this.sample )
86                        this.sample.addToSequenceData( sd );
87                       
88                return sd;
89        }
90}
Note: See TracBrowser for help on using the repository browser.