Mercurial > repos > jjohnson > rsem
comparison rsem.py @ 0:64d45f959303
Uploaded
author | jjohnson |
---|---|
date | Mon, 11 Nov 2013 13:54:43 -0500 |
parents | |
children | 1ff2fc8da328 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:64d45f959303 |
---|---|
1 """ | |
2 SnpEff datatypes | |
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""" | |
11 MetadataElement( name='reference_name', default='galaxy_generated_bowtie_index', desc='RSEM Reference Name', readonly=True, visible=True, no_value=None ) | |
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 log.info( "RSEM reference set_meta %s %s" % (dataset,dataset.extra_files_path)) | |
73 pat = '^(.*)\.grp$' | |
74 efp = dataset.extra_files_path | |
75 flist = os.listdir(efp) | |
76 for i,fname in enumerate(flist): | |
77 m = re.match(pat,fname) | |
78 if m: | |
79 dataset.metadata.reference_name = m.groups()[0] | |
80 break | |
81 self.regenerate_primary_file(dataset) | |
82 | |
83 |