comparison jbrowse.py @ 10:1a6d882d340d draft

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse commit ac44b067ee08de23180e8b5030374cf362ac4524
author iuc
date Fri, 02 Dec 2016 17:58:54 -0500
parents ad4b9d7eae6a
children 4cbceec1d6b4
comparison
equal deleted inserted replaced
9:f422ba2e9aa5 10:1a6d882d340d
262 d = {t.tag: {} if t.attrib else None} 262 d = {t.tag: {} if t.attrib else None}
263 children = list(t) 263 children = list(t)
264 if children: 264 if children:
265 dd = defaultdict(list) 265 dd = defaultdict(list)
266 for dc in map(etree_to_dict, children): 266 for dc in map(etree_to_dict, children):
267 for k, v in dc.iteritems(): 267 for k, v in dc.items():
268 dd[k].append(v) 268 dd[k].append(v)
269 d = {t.tag: {k: v[0] if len(v) == 1 else v for k, v in dd.iteritems()}} 269 d = {t.tag: {k: v[0] if len(v) == 1 else v for k, v in dd.items()}}
270 if t.attrib: 270 if t.attrib:
271 d[t.tag].update(('@' + k, v) for k, v in t.attrib.iteritems()) 271 d[t.tag].update(('@' + k, v) for k, v in t.attrib.items())
272 if t.text: 272 if t.text:
273 text = t.text.strip() 273 text = t.text.strip()
274 if children or t.attrib: 274 if children or t.attrib:
275 if text: 275 if text:
276 d[t.tag]['#text'] = text 276 d[t.tag]['#text'] = text
368 os.path.join('data', 'trackList.json') 368 os.path.join('data', 'trackList.json')
369 ] 369 ]
370 self.subprocess_check_call(cmd) 370 self.subprocess_check_call(cmd)
371 371
372 def _add_track_json(self, json_data): 372 def _add_track_json(self, json_data):
373 if len(json_data.keys()) == 0: 373 if len(json_data) == 0:
374 return 374 return
375 375
376 tmp = tempfile.NamedTemporaryFile(delete=False) 376 tmp = tempfile.NamedTemporaryFile(delete=False)
377 tmp.write(json.dumps(json_data)) 377 tmp.write(json.dumps(json_data))
378 tmp.close() 378 tmp.close()
497 cmd = [ 497 cmd = [
498 'perl', self._jbrowse_bin('flatfile-to-json.pl'), 498 'perl', self._jbrowse_bin('flatfile-to-json.pl'),
499 self.TN_TABLE.get(format, 'gff'), 499 self.TN_TABLE.get(format, 'gff'),
500 data, 500 data,
501 '--trackLabel', trackData['label'], 501 '--trackLabel', trackData['label'],
502 # '--trackType', 'JBrowse/View/Track/CanvasFeatures',
503 '--key', trackData['key'] 502 '--key', trackData['key']
504 ] 503 ]
505 504
506 config = copy.copy(trackData) 505 config = copy.copy(trackData)
507 clientConfig = trackData['style'] 506 clientConfig = trackData['style']
512 cmd += ['--type', gffOpts['match']] 511 cmd += ['--type', gffOpts['match']]
513 512
514 cmd += ['--clientConfig', json.dumps(clientConfig), 513 cmd += ['--clientConfig', json.dumps(clientConfig),
515 ] 514 ]
516 515
516 trackType = 'JBrowse/View/Track/CanvasFeatures'
517 if 'trackType' in gffOpts: 517 if 'trackType' in gffOpts:
518 cmd += [ 518 trackType = gffOpts['trackType']
519 '--trackType', gffOpts['trackType'] 519
520 ] 520 if trackType == 'JBrowse/View/Track/CanvasFeatures':
521 else: 521 if 'transcriptType' in gffOpts and gffOpts['transcriptType']:
522 cmd += [ 522 config['transcriptType'] = gffOpts['transcriptType']
523 '--trackType', 'JBrowse/View/Track/CanvasFeatures' 523 if 'subParts' in gffOpts and gffOpts['subParts']:
524 ] 524 config['subParts'] = gffOpts['subParts']
525 if 'impliedUTRs' in gffOpts and gffOpts['impliedUTRs']:
526 config['impliedUTRs'] = gffOpts['impliedUTRs']
527
528 cmd += [
529 '--trackType', gffOpts['trackType']
530 ]
525 531
526 cmd.extend(['--config', json.dumps(config)]) 532 cmd.extend(['--config', json.dumps(config)])
527 533
528 self.subprocess_check_call(cmd) 534 self.subprocess_check_call(cmd)
529 535
542 548
543 for i, (dataset_path, dataset_ext, track_human_label) in enumerate(track['trackfiles']): 549 for i, (dataset_path, dataset_ext, track_human_label) in enumerate(track['trackfiles']):
544 log.info('Processing %s / %s', track['category'], track_human_label) 550 log.info('Processing %s / %s', track['category'], track_human_label)
545 outputTrackConfig['key'] = track_human_label 551 outputTrackConfig['key'] = track_human_label
546 hashData = [dataset_path, track_human_label, track['category']] 552 hashData = [dataset_path, track_human_label, track['category']]
547 outputTrackConfig['label'] = hashlib.md5('|'.join(hashData)).hexdigest() + '_%s' % i 553 outputTrackConfig['label'] = hashlib.md5('|'.join(hashData).encode('utf-8')).hexdigest() + '_%s' % i
548 554
549 # Colour parsing is complex due to different track types having 555 # Colour parsing is complex due to different track types having
550 # different colour options. 556 # different colour options.
551 colourOptions = self.cs.parse_colours(track['conf']['options'], track['format'], gff3=dataset_path) 557 colourOptions = self.cs.parse_colours(track['conf']['options'], track['format'], gff3=dataset_path)
552 # This used to be done with a dict.update() call, however that wiped out any previous style settings... 558 # This used to be done with a dict.update() call, however that wiped out any previous style settings...
638 subprocess.check_call(cmd) 644 subprocess.check_call(cmd)
639 645
640 646
641 if __name__ == '__main__': 647 if __name__ == '__main__':
642 parser = argparse.ArgumentParser(description="", epilog="") 648 parser = argparse.ArgumentParser(description="", epilog="")
643 parser.add_argument('xml', type=file, help='Track Configuration') 649 parser.add_argument('xml', type=argparse.FileType('r'), help='Track Configuration')
644 650
645 parser.add_argument('--jbrowse', help='Folder containing a jbrowse release') 651 parser.add_argument('--jbrowse', help='Folder containing a jbrowse release')
646 parser.add_argument('--outdir', help='Output directory', default='out') 652 parser.add_argument('--outdir', help='Output directory', default='out')
647 parser.add_argument('--standalone', help='Standalone mode includes a copy of JBrowse', action='store_true') 653 parser.add_argument('--standalone', help='Standalone mode includes a copy of JBrowse', action='store_true')
648 args = parser.parse_args() 654 args = parser.parse_args()