Mercurial > repos > iuc > jbrowse
annotate jbrowse.py @ 5:ae9382cfb6ac draft
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
| author | iuc | 
|---|---|
| date | Sat, 25 Jun 2016 15:06:43 -0400 | 
| parents | 7342f467507b | 
| children | ad4b9d7eae6a | 
| rev | line source | 
|---|---|
| 0 
2c9e5136b416
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 685773d3da40afdc4d14846d4935b3b0a100f56e
 iuc parents: diff
changeset | 1 #!/usr/bin/env python | 
| 
2c9e5136b416
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 685773d3da40afdc4d14846d4935b3b0a100f56e
 iuc parents: diff
changeset | 2 import os | 
| 3 | 3 import copy | 
| 0 
2c9e5136b416
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 685773d3da40afdc4d14846d4935b3b0a100f56e
 iuc parents: diff
changeset | 4 import argparse | 
| 
2c9e5136b416
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 685773d3da40afdc4d14846d4935b3b0a100f56e
 iuc parents: diff
changeset | 5 import subprocess | 
| 
2c9e5136b416
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 685773d3da40afdc4d14846d4935b3b0a100f56e
 iuc parents: diff
changeset | 6 import hashlib | 
| 3 | 7 import struct | 
| 1 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 8 import tempfile | 
| 3 | 9 import shutil | 
| 1 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 10 import json | 
| 3 | 11 from Bio.Data import CodonTable | 
| 12 import xml.etree.ElementTree as ET | |
| 1 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 13 import logging | 
| 3 | 14 from collections import defaultdict | 
| 15 logging.basicConfig(level=logging.INFO) | |
| 16 log = logging.getLogger('jbrowse') | |
| 1 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 17 | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 18 | 
| 3 | 19 class ColorScaling(object): | 
| 20 | |
| 21 COLOR_FUNCTION_TEMPLATE = """ | |
| 22 function(feature, variableName, glyphObject, track) {{ | |
| 23 var score = {score}; | |
| 24 {opacity} | |
| 25 return 'rgba({red}, {green}, {blue}, ' + opacity + ')'; | |
| 26 }} | |
| 27 """ | |
| 28 | |
| 29 COLOR_FUNCTION_TEMPLATE_QUAL = """ | |
| 30 function(feature, variableName, glyphObject, track) {{ | |
| 31 var search_up = function self(sf, attr){{ | |
| 32 if(sf.get(attr) !== undefined){{ | |
| 33 return sf.get(attr); | |
| 34 }} | |
| 35 if(sf.parent() === undefined) {{ | |
| 36 return; | |
| 37 }}else{{ | |
| 38 return self(sf.parent(), attr); | |
| 39 }} | |
| 40 }}; | |
| 0 
2c9e5136b416
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 685773d3da40afdc4d14846d4935b3b0a100f56e
 iuc parents: diff
changeset | 41 | 
| 3 | 42 var search_down = function self(sf, attr){{ | 
| 43 if(sf.get(attr) !== undefined){{ | |
| 44 return sf.get(attr); | |
| 45 }} | |
| 46 if(sf.children() === undefined) {{ | |
| 47 return; | |
| 48 }}else{{ | |
| 49 var kids = sf.children(); | |
| 50 for(var child_idx in kids){{ | |
| 51 var x = self(kids[child_idx], attr); | |
| 52 if(x !== undefined){{ | |
| 53 return x; | |
| 54 }} | |
| 55 }} | |
| 56 return; | |
| 57 }} | |
| 58 }}; | |
| 59 | |
| 60 var color = ({user_spec_color} || search_up(feature, 'color') || search_down(feature, 'color') || {auto_gen_color}); | |
| 61 var score = (search_up(feature, 'score') || search_down(feature, 'score')); | |
| 62 {opacity} | |
| 63 var result = /^#?([a-f\d]{{2}})([a-f\d]{{2}})([a-f\d]{{2}})$/i.exec(color); | |
| 64 var red = parseInt(result[1], 16); | |
| 65 var green = parseInt(result[2], 16); | |
| 66 var blue = parseInt(result[3], 16); | |
| 67 if(isNaN(opacity) || opacity < 0){{ opacity = 0; }} | |
| 68 return 'rgba(' + red + ',' + green + ',' + blue + ',' + opacity + ')'; | |
| 69 }} | |
| 70 """ | |
| 0 
2c9e5136b416
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 685773d3da40afdc4d14846d4935b3b0a100f56e
 iuc parents: diff
changeset | 71 | 
| 3 | 72 OPACITY_MATH = { | 
| 73 'linear': """ | |
| 74 var opacity = (score - ({min})) / (({max}) - ({min})); | |
| 75 """, | |
| 76 'logarithmic': """ | |
| 77 var opacity = (score - ({min})) / (({max}) - ({min})); | |
| 78 opacity = Math.log10(opacity) + Math.log10({max}); | |
| 79 """, | |
| 80 'blast': """ | |
| 81 var opacity = 0; | |
| 5 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 82 if(score == 0.0) {{ | 
| 3 | 83 opacity = 1; | 
| 5 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 84 }} else {{ | 
| 3 | 85 opacity = (20 - Math.log10(score)) / 180; | 
| 5 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 86 }} | 
| 3 | 87 """ | 
| 88 } | |
| 1 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 89 | 
| 3 | 90 BREWER_COLOUR_IDX = 0 | 
| 91 BREWER_COLOUR_SCHEMES = [ | |
| 92 (166, 206, 227), | |
| 93 (31, 120, 180), | |
| 94 (178, 223, 138), | |
| 95 (51, 160, 44), | |
| 96 (251, 154, 153), | |
| 97 (227, 26, 28), | |
| 98 (253, 191, 111), | |
| 99 (255, 127, 0), | |
| 100 (202, 178, 214), | |
| 101 (106, 61, 154), | |
| 102 (255, 255, 153), | |
| 103 (177, 89, 40), | |
| 104 (228, 26, 28), | |
| 105 (55, 126, 184), | |
| 106 (77, 175, 74), | |
| 107 (152, 78, 163), | |
| 108 (255, 127, 0), | |
| 109 ] | |
| 110 | |
| 111 BREWER_DIVERGING_PALLETES = { | |
| 112 'BrBg': ("#543005", "#003c30"), | |
| 113 'PiYg': ("#8e0152", "#276419"), | |
| 114 'PRGn': ("#40004b", "#00441b"), | |
| 115 'PuOr': ("#7f3b08", "#2d004b"), | |
| 116 'RdBu': ("#67001f", "#053061"), | |
| 117 'RdGy': ("#67001f", "#1a1a1a"), | |
| 118 'RdYlBu': ("#a50026", "#313695"), | |
| 119 'RdYlGn': ("#a50026", "#006837"), | |
| 120 'Spectral': ("#9e0142", "#5e4fa2"), | |
| 121 } | |
| 122 | |
| 123 def __init__(self): | |
| 1 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 124 self.brewer_colour_idx = 0 | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 125 | 
| 3 | 126 def rgb_from_hex(self, hexstr): | 
| 127 # http://stackoverflow.com/questions/4296249/how-do-i-convert-a-hex-triplet-to-an-rgb-tuple-and-back | |
| 128 return struct.unpack('BBB',hexstr.decode('hex')) | |
| 1 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 129 | 
| 3 | 130 def min_max_gff(self, gff_file): | 
| 1 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 131 min_val = None | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 132 max_val = None | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 133 with open(gff_file, 'r') as handle: | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 134 for line in handle: | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 135 try: | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 136 value = float(line.split('\t')[5]) | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 137 min_val = min(value, (min_val or value)) | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 138 max_val = max(value, (max_val or value)) | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 139 | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 140 if value < min_val: | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 141 min_val = value | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 142 | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 143 if value > max_val: | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 144 max_val = value | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 145 except Exception: | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 146 pass | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 147 return min_val, max_val | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 148 | 
| 3 | 149 def hex_from_rgb(self, r, g, b): | 
| 150 return '#%02x%02x%02x' % (r, g, b) | |
| 151 | |
| 152 def _get_colours(self): | |
| 5 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 153 r, g, b = self.BREWER_COLOUR_SCHEMES[self.brewer_colour_idx % len(self.BREWER_COLOUR_SCHEMES)] | 
| 3 | 154 self.brewer_colour_idx += 1 | 
| 155 return r, g, b | |
| 156 | |
| 157 def parse_colours(self, track, trackFormat, gff3=None): | |
| 158 # Wiggle tracks have a bicolor pallete | |
| 159 trackConfig = {'style': {}} | |
| 160 if trackFormat == 'wiggle': | |
| 161 | |
| 162 trackConfig['style']['pos_color'] = track['wiggle']['color_pos'] | |
| 163 trackConfig['style']['neg_color'] = track['wiggle']['color_neg'] | |
| 164 | |
| 165 if trackConfig['style']['pos_color'] == '__auto__': | |
| 166 trackConfig['style']['neg_color'] = self.hex_from_rgb(*self._get_colours()) | |
| 167 trackConfig['style']['pos_color'] = self.hex_from_rgb(*self._get_colours()) | |
| 168 | |
| 1 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 169 | 
| 3 | 170 # Wiggle tracks can change colour at a specified place | 
| 171 bc_pivot = track['wiggle']['bicolor_pivot'] | |
| 172 if bc_pivot not in ('mean', 'zero'): | |
| 173 # The values are either one of those two strings | |
| 174 # or a number | |
| 175 bc_pivot = float(bc_pivot) | |
| 176 trackConfig['bicolor_pivot'] = bc_pivot | |
| 177 elif 'scaling' in track: | |
| 178 if track['scaling']['method'] == 'ignore': | |
| 179 if track['scaling']['scheme']['color'] != '__auto__': | |
| 180 trackConfig['style']['color'] = track['scaling']['scheme']['color'] | |
| 181 else: | |
| 182 trackConfig['style']['color'] = self.hex_from_rgb(*self._get_colours()) | |
| 183 else: | |
| 184 # Scored method | |
| 185 algo = track['scaling']['algo'] | |
| 186 # linear, logarithmic, blast | |
| 187 scales = track['scaling']['scales'] | |
| 188 # type __auto__, manual (min, max) | |
| 189 scheme = track['scaling']['scheme'] | |
| 190 # scheme -> (type (opacity), color) | |
| 191 # ================================== | |
| 192 # GENE CALLS OR BLAST | |
| 193 # ================================== | |
| 194 if trackFormat == 'blast': | |
| 195 red, green, blue = self._get_colours() | |
| 196 color_function = self.COLOR_FUNCTION_TEMPLATE.format(**{ | |
| 197 'score': "feature._parent.get('score')", | |
| 198 'opacity': self.OPACITY_MATH['blast'], | |
| 199 'red': red, | |
| 200 'green': green, | |
| 201 'blue': blue, | |
| 202 }) | |
| 203 trackConfig['style']['color'] = color_function.replace('\n', '') | |
| 204 elif trackFormat == 'gene_calls': | |
| 205 # Default values, based on GFF3 spec | |
| 206 min_val = 0 | |
| 207 max_val = 1000 | |
| 208 # Get min/max and build a scoring function since JBrowse doesn't | |
| 5 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 209 if scales['type'] == 'automatic' or scales['type'] == '__auto__': | 
| 3 | 210 min_val, max_val = self.min_max_gff(gff3) | 
| 211 else: | |
| 5 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 212 min_val = scales.get('min', 0) | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 213 max_val = scales.get('max', 1000) | 
| 3 | 214 | 
| 215 if scheme['color'] == '__auto__': | |
| 216 user_color = 'undefined' | |
| 217 auto_color = "'%s'" % self.hex_from_rgb(*self._get_colours()) | |
| 218 elif scheme['color'].startswith('#'): | |
| 219 user_color = "'%s'" % self.hex_from_rgb(*self.rgb_from_hex(scheme['color'][1:])) | |
| 220 auto_color = 'undefined' | |
| 221 else: | |
| 222 user_color = 'undefined' | |
| 223 auto_color = "'%s'" % self.hex_from_rgb(*self._get_colours()) | |
| 224 | |
| 225 color_function = self.COLOR_FUNCTION_TEMPLATE_QUAL.format(**{ | |
| 226 'opacity': self.OPACITY_MATH[algo].format(**{'max': max_val,'min': min_val}), | |
| 227 'user_spec_color': user_color, | |
| 228 'auto_gen_color': auto_color, | |
| 229 }) | |
| 230 | |
| 231 trackConfig['style']['color'] = color_function.replace('\n', '') | |
| 232 return trackConfig | |
| 233 | |
| 234 | |
| 235 def etree_to_dict(t): | |
| 236 d = {t.tag: {} if t.attrib else None} | |
| 237 children = list(t) | |
| 238 if children: | |
| 239 dd = defaultdict(list) | |
| 240 for dc in map(etree_to_dict, children): | |
| 241 for k, v in dc.iteritems(): | |
| 242 dd[k].append(v) | |
| 243 d = {t.tag: {k:v[0] if len(v) == 1 else v for k, v in dd.iteritems()}} | |
| 244 if t.attrib: | |
| 245 d[t.tag].update(('@' + k, v) for k, v in t.attrib.iteritems()) | |
| 246 if t.text: | |
| 247 text = t.text.strip() | |
| 248 if children or t.attrib: | |
| 249 if text: | |
| 250 d[t.tag]['#text'] = text | |
| 251 else: | |
| 252 d[t.tag] = text | |
| 253 return d | |
| 254 | |
| 255 | |
| 256 # score comes from feature._parent.get('score') or feature.get('score') | |
| 257 | |
| 258 INSTALLED_TO = os.path.dirname(os.path.realpath(__file__)) | |
| 259 | |
| 260 | |
| 261 class JbrowseConnector(object): | |
| 262 | |
| 263 def __init__(self, jbrowse, outdir, genomes, standalone=False, gencode=1): | |
| 264 self.TN_TABLE = { | |
| 265 'gff3': '--gff', | |
| 266 'gff': '--gff', | |
| 267 'bed': '--bed', | |
| 268 'genbank': '--gbk', | |
| 1 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 269 } | 
| 3 | 270 | 
| 271 self.cs = ColorScaling() | |
| 272 self.jbrowse = jbrowse | |
| 273 self.outdir = outdir | |
| 274 self.genome_paths = genomes | |
| 275 self.standalone = standalone | |
| 276 self.gencode = gencode | |
| 277 | |
| 278 if standalone: | |
| 279 self.clone_jbrowse(self.jbrowse, self.outdir) | |
| 280 else: | |
| 281 try: | |
| 282 os.makedirs(self.outdir) | |
| 283 except OSError: | |
| 284 # Ignore if the folder exists | |
| 285 pass | |
| 286 | |
| 287 self.process_genomes() | |
| 288 self.update_gencode() | |
| 289 | |
| 290 def update_gencode(self): | |
| 291 table = CodonTable.unambiguous_dna_by_id[int(self.gencode)] | |
| 292 trackList = os.path.join(self.outdir, 'data', 'trackList.json') | |
| 293 with open(trackList, 'r') as handle: | |
| 294 trackListData = json.load(handle) | |
| 1 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 295 | 
| 3 | 296 trackListData['tracks'][0].update({ | 
| 297 'codonStarts': table.start_codons, | |
| 298 'codonStops': table.stop_codons, | |
| 299 'codonTable': table.forward_table, | |
| 300 }) | |
| 301 | |
| 302 with open(trackList, 'w') as handle: | |
| 303 json.dump(trackListData, handle, indent=2) | |
| 304 | |
| 305 | |
| 306 def subprocess_check_call(self, command): | |
| 307 log.debug('cd %s && %s', self.outdir, ' '.join(command)) | |
| 308 subprocess.check_call(command, cwd=self.outdir) | |
| 309 | |
| 310 def _jbrowse_bin(self, command): | |
| 311 return os.path.realpath(os.path.join(self.jbrowse, 'bin', command)) | |
| 312 | |
| 313 def process_genomes(self): | |
| 314 for genome_path in self.genome_paths: | |
| 315 self.subprocess_check_call([ | |
| 316 'perl', self._jbrowse_bin('prepare-refseqs.pl'), | |
| 317 '--fasta', genome_path]) | |
| 318 | |
| 5 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 319 # Generate name | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 320 # self.subprocess_check_call([ | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 321 # 'perl', self._jbrowse_bin('generate-names.pl'), | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 322 # '--hashBits', '16' | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 323 # ]) | 
| 3 | 324 | 
| 5 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 325 def _add_json(self, json_data): | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 326 | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 327 cmd = [ | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 328 'perl', self._jbrowse_bin('add-json.pl'), | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 329 json.dumps(json_data), | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 330 os.path.join('data', 'trackList.json') | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 331 ] | 
| 3 | 332 self.subprocess_check_call(cmd) | 
| 1 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 333 | 
| 3 | 334 def _add_track_json(self, json_data): | 
| 335 if len(json_data.keys()) == 0: | |
| 336 return | |
| 337 | |
| 338 tmp = tempfile.NamedTemporaryFile(delete=False) | |
| 339 tmp.write(json.dumps(json_data)) | |
| 340 tmp.close() | |
| 341 cmd = ['perl', self._jbrowse_bin('add-track-json.pl'), tmp.name, | |
| 342 os.path.join('data', 'trackList.json')] | |
| 343 self.subprocess_check_call(cmd) | |
| 344 os.unlink(tmp.name) | |
| 345 | |
| 346 | |
| 347 def _blastxml_to_gff3(self, xml, min_gap=10): | |
| 348 gff3_unrebased = tempfile.NamedTemporaryFile(delete=False) | |
| 349 cmd = ['python', os.path.join(INSTALLED_TO, 'blastxml_to_gapped_gff3.py'), | |
| 350 '--trim', '--trim_end', '--min_gap', str(min_gap), xml] | |
| 351 log.debug('cd %s && %s > %s', self.outdir, ' '.join(cmd), gff3_unrebased.name) | |
| 352 subprocess.check_call(cmd, cwd=self.outdir, stdout=gff3_unrebased) | |
| 353 gff3_unrebased.close() | |
| 354 return gff3_unrebased.name | |
| 355 | |
| 356 def add_blastxml(self, data, trackData, blastOpts, **kwargs): | |
| 357 gff3 = self._blastxml_to_gff3(data, min_gap=blastOpts['min_gap']) | |
| 0 
2c9e5136b416
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 685773d3da40afdc4d14846d4935b3b0a100f56e
 iuc parents: diff
changeset | 358 | 
| 5 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 359 if 'parent' in blastOpts and blastOpts['parent'] != 'None': | 
| 3 | 360 gff3_rebased = tempfile.NamedTemporaryFile(delete=False) | 
| 361 cmd = ['python', os.path.join(INSTALLED_TO, 'gff3_rebase.py')] | |
| 362 if blastOpts.get('protein', 'false') == 'true': | |
| 363 cmd.append('--protein2dna') | |
| 364 cmd.extend([os.path.realpath(blastOpts['parent']), gff3]) | |
| 365 log.debug('cd %s && %s > %s', self.outdir, ' '.join(cmd), gff3_rebased.name) | |
| 366 subprocess.check_call(cmd, cwd=self.outdir, stdout=gff3_rebased) | |
| 367 gff3_rebased.close() | |
| 368 | |
| 369 # Replace original gff3 file | |
| 370 shutil.copy(gff3_rebased.name, gff3) | |
| 371 os.unlink(gff3_rebased.name) | |
| 372 | |
| 373 config = { | |
| 374 'glyph': 'JBrowse/View/FeatureGlyph/Segments', | |
| 375 "category": trackData['category'], | |
| 376 } | |
| 377 | |
| 378 clientConfig = trackData['style'] | |
| 379 | |
| 380 cmd = ['perl', self._jbrowse_bin('flatfile-to-json.pl'), | |
| 381 '--gff', gff3, | |
| 382 '--trackLabel', trackData['label'], | |
| 383 '--key', trackData['key'], | |
| 384 '--clientConfig', json.dumps(clientConfig), | |
| 385 '--config', json.dumps(config), | |
| 386 '--trackType', 'JBrowse/View/Track/CanvasFeatures' | |
| 387 ] | |
| 388 | |
| 389 self.subprocess_check_call(cmd) | |
| 390 os.unlink(gff3) | |
| 391 | |
| 392 def add_bigwig(self, data, trackData, wiggleOpts, **kwargs): | |
| 393 dest = os.path.join('data', 'raw', trackData['label'] + '.bw') | |
| 394 cmd = ['ln', data, dest] | |
| 1 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 395 self.subprocess_check_call(cmd) | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 396 | 
| 3 | 397 trackData.update({ | 
| 398 "urlTemplate": os.path.join('..', dest), | |
| 399 "storeClass": "JBrowse/Store/SeqFeature/BigWig", | |
| 400 "type": "JBrowse/View/Track/Wiggle/Density", | |
| 401 }) | |
| 402 | |
| 403 trackData['type'] = wiggleOpts['type'] | |
| 404 trackData['variance_band'] = True if wiggleOpts['variance_band'] == 'true' else False | |
| 405 | |
| 406 if 'min' in wiggleOpts and 'max' in wiggleOpts: | |
| 407 trackData['min_score'] = wiggleOpts['min'] | |
| 408 trackData['max_score'] = wiggleOpts['max'] | |
| 409 else: | |
| 410 trackData['autoscale'] = wiggleOpts.get('autoscale', 'local') | |
| 411 | |
| 412 self._add_track_json(trackData) | |
| 413 | |
| 414 def add_bam(self, data, trackData, bamOpts, bam_index=None, **kwargs): | |
| 415 dest = os.path.join('data', 'raw', trackData['label'] + '.bam') | |
| 416 cmd = ['ln', '-s', os.path.realpath(data), dest] | |
| 1 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 417 self.subprocess_check_call(cmd) | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 418 | 
| 3 | 419 cmd = ['ln', '-s', os.path.realpath(bam_index), dest + '.bai'] | 
| 420 self.subprocess_check_call(cmd) | |
| 421 | |
| 422 trackData.update({ | |
| 1 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 423 "urlTemplate": os.path.join('..', dest), | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 424 "type": "JBrowse/View/Track/Alignments2", | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 425 "storeClass": "JBrowse/Store/SeqFeature/BAM", | 
| 3 | 426 }) | 
| 427 | |
| 1 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 428 | 
| 3 | 429 self._add_track_json(trackData) | 
| 430 | |
| 431 if bamOpts.get('auto_snp', 'false') == 'true': | |
| 432 trackData2 = copy.copy(trackData) | |
| 433 trackData2.update({ | |
| 1 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 434 "type": "JBrowse/View/Track/SNPCoverage", | 
| 3 | 435 "key": trackData['key'] + " - SNPs/Coverage", | 
| 436 "label": trackData['label'] + "_autosnp", | |
| 437 }) | |
| 438 self._add_track_json(trackData2) | |
| 1 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 439 | 
| 3 | 440 def add_vcf(self, data, trackData, vcfOpts={}, **kwargs): | 
| 441 dest = os.path.join('data', 'raw', trackData['label'] + '.vcf') | |
| 1 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 442 # ln? | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 443 cmd = ['ln', '-s', data, dest] | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 444 self.subprocess_check_call(cmd) | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 445 cmd = ['bgzip', dest] | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 446 self.subprocess_check_call(cmd) | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 447 cmd = ['tabix', '-p', 'vcf', dest + '.gz'] | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 448 self.subprocess_check_call(cmd) | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 449 | 
| 3 | 450 trackData.update({ | 
| 1 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 451 "urlTemplate": os.path.join('..', dest + '.gz'), | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 452 "type": "JBrowse/View/Track/HTMLVariants", | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 453 "storeClass": "JBrowse/Store/SeqFeature/VCFTabix", | 
| 3 | 454 }) | 
| 455 self._add_track_json(trackData) | |
| 1 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 456 | 
| 3 | 457 def add_features(self, data, format, trackData, gffOpts, **kwargs): | 
| 458 cmd = [ | |
| 459 'perl', self._jbrowse_bin('flatfile-to-json.pl'), | |
| 460 self.TN_TABLE.get(format, 'gff'), | |
| 461 data, | |
| 462 '--trackLabel', trackData['label'], | |
| 5 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 463 # '--trackType', 'JBrowse/View/Track/CanvasFeatures', | 
| 3 | 464 '--key', trackData['key'] | 
| 465 ] | |
| 1 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 466 | 
| 3 | 467 config = copy.copy(trackData) | 
| 468 clientConfig = trackData['style'] | |
| 469 del config['style'] | |
| 1 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 470 | 
| 3 | 471 if 'match' in gffOpts: | 
| 1 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 472 config['glyph'] = 'JBrowse/View/FeatureGlyph/Segments' | 
| 3 | 473 cmd += ['--type', gffOpts['match']] | 
| 1 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 474 | 
| 3 | 475 cmd += ['--clientConfig', json.dumps(clientConfig), | 
| 5 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 476 ] | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 477 | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 478 if 'trackType' in gffOpts: | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 479 cmd += [ | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 480 '--trackType', gffOpts['trackType'] | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 481 ] | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 482 else: | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 483 cmd += [ | 
| 3 | 484 '--trackType', 'JBrowse/View/Track/CanvasFeatures' | 
| 5 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 485 ] | 
| 1 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 486 | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 487 cmd.extend(['--config', json.dumps(config)]) | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 488 | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 489 self.subprocess_check_call(cmd) | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 490 | 
| 3 | 491 | 
| 492 def process_annotations(self, track): | |
| 493 outputTrackConfig = { | |
| 494 'style': { | |
| 495 'label': track['style'].get('label', 'description'), | |
| 496 'className': track['style'].get('className', 'feature'), | |
| 497 'description': track['style'].get('description', ''), | |
| 498 }, | |
| 499 'category': track['category'], | |
| 500 } | |
| 501 | |
| 502 for i, (dataset_path, dataset_ext, track_human_label) in enumerate(track['trackfiles']): | |
| 503 log.info('Processing %s / %s', track['category'], track_human_label) | |
| 504 outputTrackConfig['key'] = track_human_label | |
| 505 hashData = [dataset_path, track_human_label, track['category']] | |
| 506 outputTrackConfig['label'] = hashlib.md5('|'.join(hashData)).hexdigest() + '_%s' % i | |
| 507 | |
| 508 # Colour parsing is complex due to different track types having | |
| 509 # different colour options. | |
| 510 colourOptions = self.cs.parse_colours(track['conf']['options'], track['format'], gff3=dataset_path) | |
| 511 # This used to be done with a dict.update() call, however that wiped out any previous style settings... | |
| 512 for key in colourOptions: | |
| 513 if key == 'style': | |
| 514 for subkey in colourOptions['style']: | |
| 515 outputTrackConfig['style'][subkey] = colourOptions['style'][subkey] | |
| 516 else: | |
| 517 outputTrackConfig[key] = colourOptions[key] | |
| 518 | |
| 5 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 519 # import pprint; pprint.pprint(track) | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 520 # import sys; sys.exit() | 
| 3 | 521 if dataset_ext in ('gff', 'gff3', 'bed'): | 
| 522 self.add_features(dataset_path, dataset_ext, outputTrackConfig, | |
| 523 track['conf']['options']['gff']) | |
| 524 elif dataset_ext == 'bigwig': | |
| 525 self.add_bigwig(dataset_path, outputTrackConfig, | |
| 526 track['conf']['options']['wiggle']) | |
| 527 elif dataset_ext == 'bam': | |
| 528 real_indexes = track['conf']['options']['pileup']['bam_indices']['bam_index'] | |
| 529 if not isinstance(real_indexes, list): | |
| 530 # <bam_indices> | |
| 531 # <bam_index>/path/to/a.bam.bai</bam_index> | |
| 532 # </bam_indices> | |
| 533 # | |
| 534 # The above will result in the 'bam_index' key containing a | |
| 535 # string. If there are two or more indices, the container | |
| 536 # becomes a list. Fun! | |
| 537 real_indexes = [real_indexes] | |
| 538 | |
| 539 self.add_bam(dataset_path, outputTrackConfig, | |
| 540 track['conf']['options']['pileup'], | |
| 541 bam_index=real_indexes[i]) | |
| 542 elif dataset_ext == 'blastxml': | |
| 543 self.add_blastxml(dataset_path, outputTrackConfig, track['conf']['options']['blast']) | |
| 544 elif dataset_ext == 'vcf': | |
| 545 self.add_vcf(dataset_path, outputTrackConfig) | |
| 1 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 546 | 
| 5 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 547 # Return non-human label for use in other fields | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 548 yield outputTrackConfig['label'] | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 549 | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 550 def add_final_data(self, data): | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 551 viz_data = {} | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 552 if len(data['visibility']['default_on']) > 0: | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 553 viz_data['defaultTracks'] = ','.join(data['visibility']['default_on']) | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 554 | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 555 if len(data['visibility']['always']) > 0: | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 556 viz_data['alwaysOnTracks'] = ','.join(data['visibility']['always']) | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 557 | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 558 if len(data['visibility']['force']) > 0: | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 559 viz_data['forceTracks'] = ','.join(data['visibility']['force']) | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 560 | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 561 generalData = {} | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 562 if data['general']['aboutDescription'] is not None: | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 563 generalData['aboutThisBrowser'] = {'description': data['general']['aboutDescription'].strip()} | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 564 | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 565 generalData['view'] = { | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 566 'trackPadding': data['general']['trackPadding'] | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 567 } | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 568 generalData['shareLink'] = (data['general']['shareLink'] == 'true') | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 569 generalData['show_tracklist'] = (data['general']['show_tracklist'] == 'true') | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 570 generalData['show_nav'] = (data['general']['show_nav'] == 'true') | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 571 generalData['show_overview'] = (data['general']['show_overview'] == 'true') | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 572 generalData['show_menu'] = (data['general']['show_menu'] == 'true') | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 573 generalData['hideGenomeOptions'] = (data['general']['hideGenomeOptions'] == 'true') | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 574 | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 575 viz_data.update(generalData) | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 576 self._add_json(viz_data) | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 577 | 
| 1 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 578 def clone_jbrowse(self, jbrowse_dir, destination): | 
| 3 | 579 """Clone a JBrowse directory into a destination directory. | 
| 580 """ | |
| 1 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 581 # JBrowse seems to have included some bad symlinks, cp ignores bad symlinks | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 582 # unlike copytree | 
| 3 | 583 cmd = ['cp', '-r', os.path.join(jbrowse_dir, '.'), destination] | 
| 584 log.debug(' '.join(cmd)) | |
| 1 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 585 subprocess.check_call(cmd) | 
| 3 | 586 cmd = ['mkdir', '-p', os.path.join(destination, 'data', 'raw')] | 
| 587 log.debug(' '.join(cmd)) | |
| 1 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 588 subprocess.check_call(cmd) | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 589 | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 590 # http://unix.stackexchange.com/a/38691/22785 | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 591 # JBrowse releases come with some broken symlinks | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 592 cmd = ['find', destination, '-type', 'l', '-xtype', 'l', '-exec', 'rm', "'{}'", '+'] | 
| 3 | 593 log.debug(' '.join(cmd)) | 
| 1 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 594 subprocess.check_call(cmd) | 
| 0 
2c9e5136b416
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 685773d3da40afdc4d14846d4935b3b0a100f56e
 iuc parents: diff
changeset | 595 | 
| 
2c9e5136b416
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 685773d3da40afdc4d14846d4935b3b0a100f56e
 iuc parents: diff
changeset | 596 | 
| 
2c9e5136b416
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 685773d3da40afdc4d14846d4935b3b0a100f56e
 iuc parents: diff
changeset | 597 if __name__ == '__main__': | 
| 
2c9e5136b416
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 685773d3da40afdc4d14846d4935b3b0a100f56e
 iuc parents: diff
changeset | 598 parser = argparse.ArgumentParser(description="", epilog="") | 
| 3 | 599 parser.add_argument('xml', type=file, help='Track Configuration') | 
| 0 
2c9e5136b416
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 685773d3da40afdc4d14846d4935b3b0a100f56e
 iuc parents: diff
changeset | 600 | 
| 
2c9e5136b416
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 685773d3da40afdc4d14846d4935b3b0a100f56e
 iuc parents: diff
changeset | 601 parser.add_argument('--jbrowse', help='Folder containing a jbrowse release') | 
| 
2c9e5136b416
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 685773d3da40afdc4d14846d4935b3b0a100f56e
 iuc parents: diff
changeset | 602 parser.add_argument('--outdir', help='Output directory', default='out') | 
| 3 | 603 parser.add_argument('--standalone', help='Standalone mode includes a copy of JBrowse', action='store_true') | 
| 0 
2c9e5136b416
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 685773d3da40afdc4d14846d4935b3b0a100f56e
 iuc parents: diff
changeset | 604 args = parser.parse_args() | 
| 
2c9e5136b416
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 685773d3da40afdc4d14846d4935b3b0a100f56e
 iuc parents: diff
changeset | 605 | 
| 3 | 606 tree = ET.parse(args.xml.name) | 
| 607 root = tree.getroot() | |
| 608 | |
| 1 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 609 jc = JbrowseConnector( | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 610 jbrowse=args.jbrowse, | 
| 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 611 outdir=args.outdir, | 
| 3 | 612 genomes=[os.path.realpath(x.text) for x in root.findall('metadata/genomes/genome')], | 
| 613 standalone=args.standalone, | |
| 614 gencode=root.find('metadata/gencode').text | |
| 1 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 615 ) | 
| 0 
2c9e5136b416
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 685773d3da40afdc4d14846d4935b3b0a100f56e
 iuc parents: diff
changeset | 616 | 
| 5 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 617 extra_data = { | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 618 'visibility': { | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 619 'default_on': [], | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 620 'default_off': [], | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 621 'force': [], | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 622 'always': [], | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 623 }, | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 624 'general': { | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 625 'defaultLocation': root.find('metadata/general/defaultLocation').text, | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 626 'trackPadding': int(root.find('metadata/general/trackPadding').text), | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 627 'shareLink': root.find('metadata/general/shareLink').text, | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 628 'aboutDescription': root.find('metadata/general/aboutDescription').text, | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 629 'show_tracklist': root.find('metadata/general/show_tracklist').text, | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 630 'show_nav': root.find('metadata/general/show_nav').text, | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 631 'show_overview': root.find('metadata/general/show_overview').text, | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 632 'show_menu': root.find('metadata/general/show_menu').text, | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 633 'hideGenomeOptions': root.find('metadata/general/hideGenomeOptions').text, | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 634 } | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 635 } | 
| 3 | 636 for track in root.findall('tracks/track'): | 
| 637 track_conf = {} | |
| 638 track_conf['trackfiles'] = [ | |
| 639 (os.path.realpath(x.attrib['path']), x.attrib['ext'], x.attrib['label']) | |
| 640 for x in track.findall('files/trackFile') | |
| 641 ] | |
| 1 
497c6bb3b717
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 0887009a23d176b21536c9fd8a18c4fecc417d4f
 iuc parents: 
0diff
changeset | 642 | 
| 3 | 643 track_conf['category'] = track.attrib['cat'] | 
| 644 track_conf['format'] = track.attrib['format'] | |
| 645 try: | |
| 646 # Only pertains to gff3 + blastxml. TODO? | |
| 647 track_conf['style'] = {t.tag: t.text for t in track.find('options/style')} | |
| 648 except TypeError, te: | |
| 649 track_conf['style'] = {} | |
| 650 pass | |
| 651 track_conf['conf'] = etree_to_dict(track.find('options')) | |
| 5 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 652 keys = jc.process_annotations(track_conf) | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 653 | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 654 | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 655 for key in keys: | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 656 extra_data['visibility'][track.attrib.get('visibility', 'default_off')].append(key) | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 657 | 
| 
ae9382cfb6ac
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit 3bbca939ca8a3298a3a2d6450abb04a96851e1ed
 iuc parents: 
3diff
changeset | 658 jc.add_final_data(extra_data) | 
