0
|
1 """
|
|
2 CuffData
|
|
3 """
|
|
4 import logging
|
|
5 import os,os.path,re
|
|
6 import galaxy.datatypes.data
|
|
7 from galaxy.datatypes.images import Html
|
|
8 from galaxy.datatypes.binary import Binary
|
|
9 from galaxy import util
|
|
10 from galaxy.datatypes.metadata import MetadataElement
|
|
11
|
|
12 log = logging.getLogger(__name__)
|
|
13
|
|
14 class CuffDiffData( Html ):
|
|
15 """
|
|
16 CuffDiff output files:
|
|
17 run.info
|
|
18 read_groups.info
|
|
19 cds.count_tracking
|
|
20 cds.diff
|
|
21 cds.fpkm_tracking
|
|
22 cds.read_group_tracking
|
|
23 cds_exp.diff
|
|
24 gene_exp.diff
|
|
25 genes.count_tracking
|
|
26 genes.fpkm_tracking
|
|
27 genes.read_group_tracking
|
|
28 isoform_exp.diff
|
|
29 isoforms.count_tracking
|
|
30 isoforms.fpkm_tracking
|
|
31 isoforms.read_group_tracking
|
|
32 promoters.diff
|
|
33 splicing.diff
|
|
34 tss_group_exp.diff
|
|
35 tss_groups.count_tracking
|
|
36 tss_groups.fpkm_tracking
|
|
37 tss_groups.read_group_tracking
|
|
38 """
|
|
39 file_ext = 'cuffdata'
|
|
40 is_binary = False
|
|
41 composite_type = 'auto_primary_file'
|
|
42 allow_datatype_change = False
|
|
43 def __init__( self, **kwd ):
|
|
44 Html.__init__( self, **kwd )
|
|
45 self.add_composite_file('run.info', description = 'run.info', mimetype = 'text/html', optional = True, is_binary = False )
|
|
46 self.add_composite_file('read_groups.info', description = 'read_groups.info', mimetype = 'text/html', optional = True, is_binary = False )
|
|
47 self.add_composite_file('cds.count_tracking', description = 'cds.count_tracking', mimetype = 'text/html', optional = True, is_binary = False )
|
|
48 self.add_composite_file('cds.diff', description = 'cds.diff', mimetype = 'text/html', optional = True, is_binary = False )
|
|
49 self.add_composite_file('cds.fpkm_tracking', description = 'cds.fpkm_tracking', mimetype = 'text/html', optional = True, is_binary = False )
|
|
50 self.add_composite_file('cds.read_group_tracking', description = 'cds.read_group_tracking', mimetype = 'text/html', optional = True, is_binary = False )
|
|
51 self.add_composite_file('cds_exp.diff', description = 'cds_exp.diff', mimetype = 'text/html', optional = True, is_binary = False )
|
|
52 self.add_composite_file('gene_exp.diff', description = 'gene_exp.diff', mimetype = 'text/html', optional = True, is_binary = False )
|
|
53 self.add_composite_file('genes.count_tracking', description = 'genes.count_tracking', mimetype = 'text/html', optional = True, is_binary = False )
|
|
54 self.add_composite_file('genes.fpkm_tracking', description = 'genes.fpkm_tracking', mimetype = 'text/html', optional = True, is_binary = False )
|
|
55 self.add_composite_file('genes.read_group_tracking', description = 'genes.read_group_tracking', mimetype = 'text/html', optional = True, is_binary = False )
|
|
56 self.add_composite_file('isoform_exp.diff', description = 'isoform_exp.diff', mimetype = 'text/html', optional = True, is_binary = False )
|
|
57 self.add_composite_file('isoforms.count_tracking', description = 'isoforms.count_tracking', mimetype = 'text/html', optional = True, is_binary = False )
|
|
58 self.add_composite_file('isoforms.fpkm_tracking', description = 'isoforms.fpkm_tracking', mimetype = 'text/html', optional = True, is_binary = False )
|
|
59 self.add_composite_file('isoforms.read_group_tracking', description = 'isoforms.read_group_tracking', mimetype = 'text/html', optional = True, is_binary = False )
|
|
60 self.add_composite_file('promoters.diff', description = 'promoters.diff', mimetype = 'text/html', optional = True, is_binary = False )
|
|
61 self.add_composite_file('splicing.diff', description = 'splicing.diff', mimetype = 'text/html', optional = True, is_binary = False )
|
|
62 self.add_composite_file('tss_group_exp.diff', description = 'tss_group_exp.diff', mimetype = 'text/html', optional = True, is_binary = False )
|
|
63 self.add_composite_file('tss_groups.count_tracking', description = 'tss_groups.count_tracking', mimetype = 'text/html', optional = True, is_binary = False )
|
|
64 self.add_composite_file('tss_groups.fpkm_tracking', description = 'tss_groups.fpkm_tracking', mimetype = 'text/html', optional = True, is_binary = False )
|
|
65 self.add_composite_file('tss_groups.read_group_tracking', description = 'tss_groups.read_group_tracking', mimetype = 'text/html', optional = True, is_binary = False )
|
|
66
|
|
67 def generate_primary_file( self, dataset = None ):
|
|
68 """
|
|
69 This is called only at upload to write the html file
|
|
70 cannot rename the datasets here - they come with the default unfortunately
|
|
71 """
|
|
72 rval = ['<html><head><title>CuffDiff Output</title></head>']
|
|
73 rval.append('<body>')
|
|
74 rval.append('<p/>CuffDiff Outputs:<p/><ul>')
|
|
75 for composite_name, composite_file in self.get_composite_files( dataset = dataset ).iteritems():
|
|
76 fn = composite_name
|
|
77 log.debug( "Velvet log info %s %s %s" % ('JJ generate_primary_file',fn,composite_file))
|
|
78 opt_text = ''
|
|
79 if composite_file.optional:
|
|
80 opt_text = ' (optional)'
|
|
81 if composite_file.get('description'):
|
|
82 rval.append( '<li><a href="%s" type="text/plain">%s (%s)</a>%s</li>' % ( fn, fn, composite_file.get('description'), opt_text ) )
|
|
83 else:
|
|
84 rval.append( '<li><a href="%s" type="text/plain">%s</a>%s</li>' % ( fn, fn, opt_text ) )
|
|
85 rval.append( '</ul></body></html>' )
|
|
86 return "\n".join( rval )
|
|
87
|
|
88 def regenerate_primary_file(self,dataset):
|
|
89 """
|
|
90 cannot do this until we are setting metadata
|
|
91 """
|
|
92 flist = os.listdir(dataset.extra_files_path)
|
|
93 rval = ['<html><head><title>CuffDiff Output</title></head>']
|
|
94 rval.append('<body>')
|
|
95 rval.append('<p/>CuffDiff Outputs:<p/><ul>')
|
|
96 for i,fname in enumerate(flist):
|
|
97 sfname = os.path.split(fname)[-1]
|
|
98 rval.append( '<li><a href="%s" type="text/html">%s</a>' % ( sfname, sfname ) )
|
|
99 rval.append( '</ul></body></html>' )
|
|
100 f = file(dataset.file_name,'w')
|
|
101 f.write("\n".join( rval ))
|
|
102 f.write('\n')
|
|
103 f.close()
|
|
104
|
|
105 def set_meta( self, dataset, **kwd ):
|
|
106 Html.set_meta( self, dataset, **kwd )
|
|
107 self.regenerate_primary_file(dataset)
|
|
108
|
|
109 def sniff( self, filename ):
|
|
110 return False
|
|
111
|
|
112 class CuffDataDB( Binary ):
|
|
113 file_ext = 'cuffdata'
|
|
114 is_binary = True
|
|
115 allow_datatype_change = False
|