comparison homer.py @ 56:07a5042bbe90

Uploaded
author bgruening
date Mon, 12 Aug 2013 14:25:53 -0400
parents e9cd105a8856
children
comparison
equal deleted inserted replaced
55:e9cd105a8856 56:07a5042bbe90
1 """ 1 """
2 HOMER special datatypes 2 HOMER special datatypes
3 """ 3 """
4 4 import os
5 from galaxy.datatypes.data import get_file_peek 5 from galaxy.datatypes.data import get_file_peek
6 from galaxy.datatypes.data import Text, Data 6 from galaxy.datatypes.data import Text, Data
7 from galaxy.datatypes.metadata import MetadataElement 7 from galaxy.datatypes.metadata import MetadataElement
8 from galaxy.datatypes.images import Html 8 from galaxy.datatypes.images import Html
9 9
10 10
11 class TagDirectory( Text ): 11 class TagDirectory( Html ):
12 """Base class for HOMER's Tag Directory datatype.""" 12 """Base class for HOMER's Tag Directory datatype."""
13 13
14 file_ext = 'homer_tagdir' 14 file_ext = 'homer_tagdir'
15 composite_type = 'auto_primary_file' 15 composite_type = 'auto_primary_file'
16 allow_datatype_change = False 16 allow_datatype_change = False
17 17
18 def __init__(self, **kwd): 18 def __init__(self, **kwd):
19 Text.__init__( self, **kwd ) 19 Html.__init__( self, **kwd )
20 #self.add_composite_file('tagInfo.txt', description = 'basic configuration information', mimetype = 'text/html') # Contains basic configuration information 20 #self.add_composite_file('tagInfo.txt', description = 'basic configuration information', mimetype = 'text/html') # Contains basic configuration information
21 self.add_composite_file('tagLengthDistribution.txt', description = 'histogram of read lengths used for alignment', mimetype = 'text/html') # File contains a histogram of read lengths used for alignment. 21 self.add_composite_file('tagLengthDistribution.txt', description = 'histogram of read lengths used for alignment', mimetype = 'text/html') # File contains a histogram of read lengths used for alignment.
22 self.add_composite_file('tagCountDistribution.txt', description = 'histogram of clonal read depth, showing the number of reads per unique position', mimetype = 'text/html') # File contains a histogram of clonal read depth, showing the number of reads per unique position. 22 self.add_composite_file('tagCountDistribution.txt', description = 'histogram of clonal read depth, showing the number of reads per unique position', mimetype = 'text/html') # File contains a histogram of clonal read depth, showing the number of reads per unique position.
23 self.add_composite_file('tagAutocorrelation.txt', description = 'distribution of distances between adjacent reads in the genome', mimetype = 'text/html') # The autocorrelation routine creates a distribution of distances between adjacent reads in the genome. 23 self.add_composite_file('tagAutocorrelation.txt', description = 'distribution of distances between adjacent reads in the genome', mimetype = 'text/html') # The autocorrelation routine creates a distribution of distances between adjacent reads in the genome.
24 self.add_composite_file('tagFreq.txt', description = "nucleotide and dinucleotide frequencies as a function of distance from the 5' end of all reads", mimetype = 'text/html', optional=True) # Calculates the nucleotide and dinucleotide frequencies as a function of distance from the 5' end of all reads. 24 self.add_composite_file('tagFreq.txt', description = "nucleotide and dinucleotide frequencies as a function of distance from the 5' end of all reads", mimetype = 'text/html', optional=True) # Calculates the nucleotide and dinucleotide frequencies as a function of distance from the 5' end of all reads.
27 self.add_composite_file('genomeGCcontent.txt', description = 'Distribution of fragment GC%-content at each location in the genome', mimetype = 'text/html', optional=True) # Distribution of fragment GC%-content at each location in the genome. 27 self.add_composite_file('genomeGCcontent.txt', description = 'Distribution of fragment GC%-content at each location in the genome', mimetype = 'text/html', optional=True) # Distribution of fragment GC%-content at each location in the genome.
28 28
29 29
30 def regenerate_primary_file(self,dataset): 30 def regenerate_primary_file(self,dataset):
31 """ 31 """
32 cannot do this until we are setting metadata 32 regenerate the index file after metadata generation
33 """ 33 """
34 flist = os.listdir(dataset.extra_files_path) 34 rval = ['<html><head><title>HOMER database files</title></head>']
35 rval = ['<html><head><title>CuffDiff Output</title></head>']
36 rval.append('<body>') 35 rval.append('<body>')
37 rval.append('<p/>CuffDiff Outputs:<p/><ul>') 36 rval.append('<p/>CuffDiff Outputs:<p/><ul>')
38 for i,fname in enumerate(flist): 37 for fname in os.listdir(dataset.extra_files_path):
39 sfname = os.path.split(fname)[-1] 38 sfname = os.path.split(fname)[-1]
40 rval.append( '<li><a href="%s" type="text/html">%s</a>' % ( sfname, sfname ) ) 39 rval.append( '<li><a href="%s" type="text/html">%s</a>' % ( sfname, sfname ) )
41 rval.append( '</ul></body></html>' ) 40 rval.append( '</ul></body></html>' )
42 f = file(dataset.file_name,'w') 41 f = file( dataset.file_name, 'w' )
43 f.write("\n".join( rval )) 42 f.write( '%s\n' % '\n'.join( rval ) )
44 f.write('\n')
45 f.close() 43 f.close()
46 44 if not dataset.info:
47 def set_meta( self, dataset, **kwd ): 45 dataset.info = 'HOMER datatype object'
48 Text.set_meta( self, dataset, **kwd ) 46 if not dataset.blurb:
49 self.regenerate_primary_file(dataset) 47 dataset.blurb = 'Composite file - HOMER'
50 48 return True
51 49
52 def generate_primary_file( self, dataset = None ): 50 def generate_primary_file( self, dataset = None ):
53 rval = ['<html><head><title>HOMER database files</title></head><ul>'] 51 rval = ['<html><head><title>HOMER database files</title></head><ul>']
54 for composite_name, composite_file in self.get_composite_files( dataset = dataset ).iteritems(): 52 for composite_name, composite_file in self.get_composite_files( dataset = dataset ).iteritems():
55 opt_text = '' 53 opt_text = ''
56 if composite_file.optional: 54 if composite_file.optional:
57 opt_text = ' (optional)' 55 opt_text = ' (optional)'
58 rval.append( '<li><a href="%s">%s</a>%s' % ( composite_name, composite_name, opt_text ) ) 56 rval.append( '<li><a href="%s">%s</a>%s' % ( composite_name, composite_name, opt_text ) )
59 rval.append( '</ul></html>' ) 57 rval.append( '</ul></html>' )
60 return "\n".join( rval ) 58 return "\n".join( rval )
59
60 def set_meta( self, dataset, **kwd ):
61 Html.set_meta( self, dataset, **kwd )
62 self.regenerate_primary_file(dataset)
63
61 64
62 def display_data(self, trans, data, preview=False, filename=None, 65 def display_data(self, trans, data, preview=False, filename=None,
63 to_ext=None, size=None, offset=None, **kwd): 66 to_ext=None, size=None, offset=None, **kwd):
64 """Apparently an old display method, but still gets called. 67 """Apparently an old display method, but still gets called.
65 68