Changeset 3 for trunk/grails-app/domain


Ignore:
Timestamp:
Jan 12, 2011, 9:45:08 PM (9 years ago)
Author:
robert@…
Message:

Externalized configuration; improved assay view (detail views of runs and samples); implemented uploading and parsing of FASTA and QUAL files

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk

    • Property svn:ignore
      •  

        old new  
        44.classpath
        55.project
         6fileuploads
  • trunk/grails-app/domain/nl/tno/metagenomics/AssaySample.groovy

    r2 r3  
    1111        private long _numSequences = -1;
    1212        private float _averageQuality = -1.0;
    13        
     13
    1414        Integer numUniqueSequences      // Number of unique sequences / OTUs. Is only available after preprocessing
    1515
     
    4949
    5050        /**
     51         * Returns the number of sequence files in the system, belonging to this
     52         * assay-sample combination.
     53         *
     54         * @return
     55         */
     56        public int numSequenceFiles() {
     57                if( !sequenceData )
     58                        return 0
     59
     60                int numFiles = 0;
     61                sequenceData.each {
     62                        if( it.sequenceFile )
     63                                numFiles++
     64                }
     65
     66                return numFiles;
     67        }
     68       
     69        /**
     70         * Returns the number of quality files in the system, belonging to this
     71         * assay-sample combination.
     72         *
     73         * @return
     74         */
     75        public int numQualityFiles() {
     76                if( !sequenceData )
     77                        return 0
     78
     79                int numFiles = 0;
     80                sequenceData.each {
     81                        if( it.qualityFile )
     82                                numFiles++
     83                }
     84
     85                return numFiles;
     86        }
     87       
     88        /**
    5189         * Returns the number of sequences in the files on the system, belonging to this
    5290         * assay-sample combination.
     
    5795                if( _numSequences > -1 )
    5896                        return _numSequences;
    59                        
     97
    6098                if( !sequenceData )
    6199                        return 0
     
    93131                // Save as cache
    94132                _averageQuality = averageQuality;
    95                
     133
    96134                return averageQuality;
    97135        }
     136       
     137        /**
     138         * Reset the statistics to their default value, in order to ensure that the values are recomputed next time.
     139         */
     140        public void resetStats() {
     141                _numSequences = -1;
     142                _averageQuality = -1;
     143        }
    98144}
  • trunk/grails-app/domain/nl/tno/metagenomics/Run.groovy

    r2 r3  
    1111class Run {
    1212        def fileService
    13        
     13
    1414        String  name
    1515        Date    date
     
    2020        static hasMany = [sequenceData: SequenceData, assays: Assay]
    2121        static belongsTo = Assay        // Only used to determine the owner of the many-to-many relationship assay-run
    22        
     22
    2323        static mapping = {
    2424                columns {
     
    3333                parameterFile(nullable:true)
    3434        }
    35        
     35
    3636        def beforeDelete = {
    3737                // Remove the file if the object is deleted
    3838                if( this.parameterFile )
    3939                        fileService.delete( this.parameterFile, fileService.absolutePath( ConfigurationHolder.config.metagenomics.fileDir ) )
    40          }
    41  
     40        }
     41
    4242        /**
    4343         * Sets the properties of this run from a form
     
    4747        public setPropertiesFromForm( params ) {
    4848                this.properties = params.run
    49                
     49
    5050                // Enter date or default NULL
    5151                if( params.run_date ) {
     
    5454                        this.date = null
    5555                }
    56                
     56
    5757                // Enter filename if needed
    5858                if( params.parameterFile ) {
    5959                        this.parameterFile = fileService.handleUploadedFile(
    60                                 fileService.get( params.parameterFile ),
    61                                 "",
    62                                 fileService.absolutePath( ConfigurationHolder.config.metagenomics.fileDir )
    63                         );
     60                                        fileService.get( params.parameterFile ),
     61                                        "",
     62                                        fileService.absolutePath( ConfigurationHolder.config.metagenomics.fileDir )
     63                                        );
    6464                }
    6565        }
     66
     67        /**
     68         * Returns the number of files in the system, belonging to this run
     69         *
     70         * @return
     71         */
     72        public int numFiles() {
     73                if( !sequenceData )
     74                        return 0
     75
     76                int numFiles = 0;
     77                sequenceData.each { numFiles += it.numFiles() }
     78
     79                return numFiles;
     80        }
     81
     82        /**
     83         * Returns the number of sequences in the files in the system, belonging to this run
     84         *
     85         * @return
     86         */
     87        public long numSequences() {
     88                if( !sequenceData )
     89                        return 0
     90
     91                long numSequences = 0;
     92                sequenceData.each { numSequences += it.numSequences }
     93
     94                return numSequences;
     95        }
     96
     97        /**
     98         * Returns the assaySamples associated with this run
     99         *
     100         * @return
     101         */
     102        public ArrayList samples( def assayId ) {
     103                if( !sequenceData )
     104                        return []
     105
     106                def list = []
     107                sequenceData.each {
     108                        if( it.sample.assay.id == assayId )
     109                                list << it.sample
     110                }
     111
     112                return list.unique().toList();
     113        }
    66114}
  • trunk/grails-app/domain/nl/tno/metagenomics/SequenceData.groovy

    r2 r3  
    11package nl.tno.metagenomics
    22
     3import org.codehaus.groovy.grails.commons.ConfigurationHolder
     4
    35class SequenceData {
     6        def fileService
     7       
    48        String sequenceFile = ''
    59        String qualityFile = ''
     
    2832                return number;
    2933        }
     34       
     35        def beforeDelete = {
     36                def permanentDir = fileService.absolutePath( ConfigurationHolder.config.metagenomics.fileDir.toString() )
     37                if( sequenceFile ) {
     38                        fileService.delete( sequenceFile, permanentDir )
     39                }
     40
     41                if( qualityFile )
     42                        fileService.delete( qualityFile, permanentDir )
     43               
     44                // Reset statistics of the assay sample, to ensure the deleted files are removed from statistics
     45                sample.resetStats();
     46        }
    3047}
Note: See TracChangeset for help on using the changeset viewer.