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