annotate homerDatatypes.py @ 2:7268cbc535e5 draft

findpeaks and maketagdirectory
author kevyin
date Fri, 23 Nov 2012 00:30:27 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
1 """
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
2 homer composite datatypes
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
3 Use at your peril
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
4 Kevin Ying
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
5 for the homer wrapper
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
6
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
7 Nov 2012
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
8 """
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
9
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
10 import logging, os, sys, time, tempfile, shutil, string, glob
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
11 import data
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
12 from galaxy import util
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
13 from cgi import escape
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
14 import urllib, binascii
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
15 from galaxy.web import url_for
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
16 from galaxy.datatypes import metadata
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
17 from galaxy.datatypes.metadata import MetadataElement
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
18 from galaxy.datatypes.data import Text
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
19 from galaxy.datatypes.tabular import Tabular
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
20 from galaxy.datatypes.images import Html
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
21 from galaxy.datatypes.interval import Interval
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
22 from galaxy.util.hash_util import *
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
23
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
24 gal_Log = logging.getLogger(__name__)
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
25 verbose = False
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
26
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
27 class HomerTagDirectory(Html):
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
28 """
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
29 base class to use for homer tag directory datatypes
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
30 composite datatype elements
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
31 stored in extra files path
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
32 """
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
33
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
34 #MetadataElement( name="base_name", desc="base name for all transformed versions of this genetic dataset", default='HomerTagDirectory',
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
35 #readonly=True, set_in_upload=False)
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
36
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
37 composite_type = 'auto_primary_file'
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
38 #allow_datatype_change = False
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
39 file_ext = 'homerTagDirectory'
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
40
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
41 def __init__(self, **kwd):
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
42 Html.__init__(self, **kwd)
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
43 self.add_composite_file('tagInfo.txt', description="tagInfo")
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
44 self.add_composite_file('tagAutocorrelation.txt', description="tagAutocorrelation")
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
45 self.add_composite_file('tagCountDistribution.txt', description="tagCountDistribution")
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
46 self.add_composite_file('tagLengthDistribution.txt', description="tagLengthDistribution")
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
47
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
48 def generate_primary_file(self, dataset=None):
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
49 rval = ['<html><head><title>Homer Tag Directory Galaxy Composite Dataset </title></head><p/>']
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
50 rval.append('<div>This composite dataset is composed of the following files:<p/><ul>')
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
51 for composite_name, composite_file in self.get_composite_files( dataset = dataset ).iteritems():
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
52 fn = composite_name
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
53 opt_text = ''
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
54 if composite_file.optional:
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
55 opt_text = ' (optional)'
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
56 if composite_file.get('description'):
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
57 rval.append( '<li><a href="%s" type="application/binary">%s (%s)</a>%s</li>' % ( fn, fn, composite_file.get('description'), opt_text ) )
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
58 else:
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
59 rval.append( '<li><a href="%s" type="application/binary">%s</a>%s</li>' % ( fn, fn, opt_text ) )
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
60 rval.append( '</ul></div></html>' )
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
61 return "\n".join( rval )
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
62
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
63
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
64 def regenerate_primary_file(self,dataset):
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
65 """
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
66 cannot do this until we are setting metadata
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
67 """
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
68 #bn = dataset.metadata.base_name
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
69 efp = dataset.extra_files_path
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
70 flist = os.listdir(efp)
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
71 rval = ['<html><head><title>Files for Composite Dataset %s</title></head><body><p/>Composite %s contains:<p/><ul>' % (dataset.name,dataset.name)]
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
72 for i,fname in enumerate(flist):
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
73 sfname = os.path.split(fname)[-1]
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
74 f,e = os.path.splitext(fname)
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
75 rval.append( '<li><a href="%s">%s</a></li>' % ( sfname, sfname) )
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
76 rval.append( '</ul></body></html>' )
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
77 f = file(dataset.file_name,'w')
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
78 f.write("\n".join( rval ))
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
79 f.write('\n')
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
80 f.close()
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
81
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
82 def get_mime(self):
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
83 """Returns the mime type of the datatype"""
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
84 return 'text/html'
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
85
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
86 def set_meta( self, dataset, **kwd ):
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
87
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
88 """
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
89 for homer maketagdirectory eg
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
90
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
91 """
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
92 Html.set_meta( self, dataset, **kwd )
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
93 if kwd.get('overwrite') == False:
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
94 if verbose:
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
95 gal_Log.debug('@@@ HomerTagDirectory set_meta called with overwrite = False')
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
96 return True
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
97 try:
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
98 efp = dataset.extra_files_path
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
99 except:
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
100 if verbose:
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
101 gal_Log.debug('@@@ HomerTagDirectory set_meta failed %s - dataset %s has no efp ?' % (sys.exc_info()[0], dataset.name))
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
102 return False
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
103 try:
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
104 flist = os.listdir(efp)
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
105 except:
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
106 if verbose: gal_Log.debug('@@@ HomerTagDirectory set_meta failed %s - dataset %s has no efp ?' % (sys.exc_info()[0],dataset.name))
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
107 return False
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
108 if len(flist) == 0:
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
109 if verbose:
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
110 gal_Log.debug('@@@ HomerTagDirectory set_meta failed - %s efp %s is empty?' % (dataset.name,efp))
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
111 return False
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
112 self.regenerate_primary_file(dataset)
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
113 if not dataset.info:
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
114 dataset.info = 'Galaxy HomerTagDirectory datatype object'
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
115 if not dataset.blurb:
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
116 dataset.blurb = 'Composite file - Homer Galaxy toolkit'
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
117 return True
7268cbc535e5 findpeaks and maketagdirectory
kevyin
parents:
diff changeset
118