comparison rsem.py @ 0:ca988deacfd1

Uploaded
author jjohnson
date Fri, 07 Feb 2014 08:07:29 -0500
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:ca988deacfd1
1 """
2 RSEM 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=None, 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 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