Mercurial > repos > jjohnson > rsem
annotate rsem.py @ 2:f6b8155ab12a
Add test cases
| author | Jim Johnson <jj@umn.edu> |
|---|---|
| date | Thu, 06 Feb 2014 11:46:40 -0600 |
| parents | 1ff2fc8da328 |
| children |
| rev | line source |
|---|---|
| 0 | 1 """ |
|
1
1ff2fc8da328
Updates to rsem_calculate_expression.xml
Jim Johnson <jj@umn.edu>
parents:
0
diff
changeset
|
2 RSEM datatypes |
| 0 | 3 """ |
| 4 import os,os.path,re,sys | |
| 5 import galaxy.datatypes.data | |
| 6 from galaxy.datatypes.images import Html | |
| 7 from galaxy.datatypes.metadata import MetadataElement | |
| 8 | |
| 9 class RsemReference( Html ): | |
| 10 """Class describing an RSEM reference""" | |
|
1
1ff2fc8da328
Updates to rsem_calculate_expression.xml
Jim Johnson <jj@umn.edu>
parents:
0
diff
changeset
|
11 MetadataElement( name='reference_name', default=None, desc='RSEM Reference Name', readonly=True, visible=True, no_value=None ) |
| 0 | 12 |
| 13 file_ext = 'rsem_ref' | |
| 14 is_binary = True | |
| 15 composite_type = 'auto_primary_file' | |
| 16 allow_datatype_change = False | |
| 17 | |
| 18 def generate_primary_file( self, dataset = None ): | |
| 19 """ | |
| 20 This is called only at upload to write the html file | |
| 21 cannot rename the datasets here - they come with the default unfortunately | |
| 22 """ | |
| 23 return '<html><head></head><body>AutoGenerated Primary File for RSEM Reference Composite Dataset</body></html>' | |
| 24 | |
| 25 def regenerate_primary_file(self,dataset): | |
| 26 """ | |
| 27 cannot do this until we are setting metadata | |
| 28 """ | |
| 29 refname = dataset.metadata.reference_name | |
| 30 flist = os.listdir(dataset.extra_files_path) | |
| 31 rval = ['<html><head><title>RSEM Reference %s</title></head><p/>Comprises the following files:<p/><ul>' % (refname)] | |
| 32 for i,fname in enumerate(flist): | |
| 33 sfname = os.path.split(fname)[-1] | |
| 34 rval.append( '<li><a href="%s">%s</a>' % ( sfname, sfname ) ) | |
| 35 rval.append( '</ul></html>' ) | |
| 36 f = file(dataset.file_name,'w') | |
| 37 f.write("\n".join( rval )) | |
| 38 f.write('\n') | |
| 39 f.close() | |
| 40 | |
| 41 def set_peek( self, dataset, is_multi_byte=False ): | |
| 42 if not dataset.dataset.purged: | |
| 43 dataset.peek = "RSEM Reference (%s)" % ( dataset.metadata.reference_name ) | |
| 44 dataset.blurb = "RSEM Reference (%s)" % ( dataset.metadata.reference_name ) | |
| 45 else: | |
| 46 dataset.peek = 'RSEM Reference (%s) does not exist' % ( dataset.metadata.reference_name ) | |
| 47 dataset.blurb = 'RSEM Reference (%s) purged from disk' % ( dataset.metadata.reference_name ) | |
| 48 | |
| 49 def display_peek( self, dataset ): | |
| 50 try: | |
| 51 return dataset.peek | |
| 52 except: | |
| 53 return "RSEM Reference" | |
| 54 | |
| 55 def set_meta( self, dataset, overwrite = True, **kwd ): | |
| 56 """ | |
| 57 Expecting files: | |
| 58 extra_files_path/<reference_name>.grp | |
| 59 extra_files_path/<reference_name>.ti | |
| 60 extra_files_path/<reference_name>.seq | |
| 61 extra_files_path/<reference_name>.transcripts.fa | |
| 62 Optionally includes files: | |
| 63 extra_files_path/<reference_name>.chrlist | |
| 64 extra_files_path/<reference_name>.idx.fa | |
| 65 extra_files_path/<reference_name>.4.ebwt | |
| 66 extra_files_path/<reference_name>.3.ebwt | |
| 67 extra_files_path/<reference_name>.2.ebwt | |
| 68 extra_files_path/<reference_name>.1.ebwt | |
| 69 extra_files_path/<reference_name>.rev.2.ebwt | |
| 70 extra_files_path/<reference_name>.rev.1.ebwt | |
| 71 """ | |
| 72 pat = '^(.*)\.grp$' | |
| 73 efp = dataset.extra_files_path | |
| 74 flist = os.listdir(efp) | |
| 75 for i,fname in enumerate(flist): | |
| 76 m = re.match(pat,fname) | |
| 77 if m: | |
| 78 dataset.metadata.reference_name = m.groups()[0] | |
| 79 break | |
| 80 self.regenerate_primary_file(dataset) | |
| 81 | |
| 82 |
