annotate hub-archive-creator/trackHub/tracks_partial.py @ 6:9193fe3ee73f draft default tip

Uploaded
author yating-l
date Thu, 22 Dec 2016 15:59:24 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
1 """
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
2 HubAssembly datatype
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
3 """
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
4 import logging
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
5
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
6 from galaxy.datatypes.text import Html
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
7
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
8 log = logging.getLogger( __name__ )
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
9
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
10 # !!! README !!! The content of this file should be added in tracks.py, but do it carefully!
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
11 # Don't erase the existing content
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
12
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
13
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
14 class UCSCTrackHub( Html ):
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
15 """
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
16 derived class for BioC data structures in Galaxy
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
17 """
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
18
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
19 file_ext = 'trackhub'
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
20 composite_type = 'auto_primary_file'
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
21
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
22 def __init__( self, **kwd ):
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
23 Html.__init__( self, **kwd )
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
24
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
25 def generate_primary_file( self, dataset=None ):
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
26 """
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
27 This is called only at upload to write the html file
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
28 cannot rename the datasets here - they come with the default unfortunately
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
29 """
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
30 rval = [
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
31 '<html><head><title>Files for Composite Dataset (%s)</title></head><p/>\
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
32 This composite dataset is composed of the following files:<p/><ul>' % (
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
33 self.file_ext)]
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
34
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
35 def create_tree(path, tree):
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
36 if path[0] in tree:
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
37 create_tree(path[1:], tree[path[0]])
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
38 else:
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
39 tree[path[0]] = {}
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
40 if len(path) == 1:
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
41 return
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
42 else:
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
43 create_tree(path[1:], tree[path[0]])
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
44
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
45 def print_tree(tree, level):
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
46 if len(tree) == 0:
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
47 return
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
48
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
49 for vertex in tree:
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
50 composite_name = vertex
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
51 bullet_point = '<li><a href="{0}>{0}</a></li>'.format(composite_name)
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
52 rval.append(bullet_point)
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
53 # Parent, so need to create a sub <ul>
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
54 if len(tree[vertex]) > 0:
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
55 rval.append('<ul>')
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
56 print_tree(tree[vertex], level+1)
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
57 rval.append('</ul>')
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
58
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
59 walkable_tree = {}
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
60
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
61 for composite_name_full_path, composite_file in self.get_composite_files(dataset=dataset).iteritems():
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
62 paths = composite_name_full_path.split('/')
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
63 # Prepare the tree from to perform a Depth First Search
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
64 create_tree(paths, walkable_tree)
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
65
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
66 # Perform a Depth First Search to print all the directory and files properly
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
67 print_tree(walkable_tree, 0)
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
68
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
69 # rval.append('<li><a href="%s">%s</a>%s' % (composite_name, composite_name, opt_text))
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
70 rval.append('</ul></html>')
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
71 return "\n".join(rval)
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
72
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
73 def set_peek( self, dataset, is_multi_byte=False ):
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
74 if not dataset.dataset.purged:
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
75 dataset.peek = "Track Hub structure: Visualization in UCSC Track Hub"
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
76 else:
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
77 dataset.peek = 'file does not exist'
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
78 dataset.blurb = 'file purged from disk'
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
79
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
80 def display_peek( self, dataset ):
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
81 try:
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
82 return dataset.peek
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
83 except:
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
84 return "Track Hub structure: Visualization in UCSC Track Hub"
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
85
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
86 def sniff( self, filename ):
9193fe3ee73f Uploaded
yating-l
parents:
diff changeset
87 return False