Ignore:
Timestamp:
Apr 12, 2011, 3:39:13 PM (10 years ago)
Author:
robert@…
Message:
  • 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:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/controllers/nl/tno/massSequencing/AssaySampleController.groovy

    r44 r49  
    11package nl.tno.massSequencing
    22
     3import java.util.List;
     4
    35class AssaySampleController {
     6        def fastaService
    47
    5     /**
    6     * Shows information about this assaySample in dialog style
    7     */
     8        /**
     9        * Shows information about this assaySample in dialog style
     10        */
    811        def show = {
    912                AssaySample assaySample = AssaySample.get( params.id as long );
    10                
     13
    1114                if( !assaySample ) {
    1215                        render "Sample not found";
    1316                        return
    1417                }
    15                
     18
    1619                if (!assaySample.assay.study.canRead( session.user ) ) {
    1720                        flash.error = "You don't have the right authorizaton to access sample " + assaySample.sample.name
     
    2023                }
    2124
    22                
     25
    2326                [assaySample: assaySample, entityType: params.entityType]
    2427        }
    25        
    26        
     28
     29        def sequenceLengthHistogram = {
     30                def id = params.long( 'id' );
     31                def assaySample = id ? AssaySample.get( id ) : null
     32
     33                if( !id || !assaySample ) {
     34                        flash.message = "No sample selected";
     35                        redirect( action: "index" );
     36                        return;
     37                }
     38
     39                [ assaySample: assaySample, histogram: fastaService.sequenceLengthHistogram( [assaySample] ) ]
     40        }
     41
     42        /**
     43         * Exports data about one or more runs in fasta format
     44         */
     45        def exportAsFasta = {
     46                def assaySamples = getAssaySamples( params );
     47                def name
     48
     49                if( assaySamples?.size() == 0 ) {
     50                        flash.error = "No samples selected";
     51                        redirect( action: "list" );
     52                        return;
     53                }
     54
     55                name = "samples";
     56
     57                // Export the sequences and quality scores
     58                response.setHeader "Content-disposition", "attachment; filename=${name}.zip"
     59                try {
     60                        fastaService.export( assaySamples.unique(), response.getOutputStream() );
     61                        response.outputStream.flush();
     62                } catch( Exception e ) {
     63                        log.error( "Exception occurred during export of sequences. Probably the user has cancelled the download." );
     64                }
     65        }
     66
    2767        /**
    2868         * Shows a form to edit the specified assaySample in dialog mode
     
    3676                        return
    3777                }
    38                
     78
    3979                if (!assaySample.assay.study.canWrite( session.user ) ) {
    4080                        flash.error = "You don't have the right authorizaton to access sample " + assaySample.sample.name
     
    4585                [parent: params.parent ?: "run", parentId: params.parentId ?: assaySample.run?.id, assaySample: assaySample]
    4686        }
    47        
     87
    4888        def update = {
    4989                // load assaySample with id specified by param.id
     
    65105                redirect( controller: params.parent ?: "run", action: 'show', id: params.parentId ?: assaySample.run?.id )
    66106        }
     107
     108        protected List getAssaySamples( params ) {
     109                def ids = params.list( 'ids' );
     110
     111                ids = ids.findAll { it.isLong() }.collect { Long.parseLong( it ) }
     112
     113                if( !ids ) {
     114                        def message = "No assaysample ids given"
     115                        flash.error = message
     116                        redirect( controller: "run", action: "index" );
     117                        return;
     118                }
     119
     120                return ids.collect { id -> AssaySample.get( id ) }.findAll{ it }
     121        }
    67122}
Note: See TracChangeset for help on using the changeset viewer.