Mercurial > repos > yating-l > jbrowse_hub
diff TrackHub.py @ 42:a5108e5010b4 draft
planemo upload for repository https://github.com/Yating-L/jbrowse_hub commit 149c5cbda82f49f260767b5710f0c2160eebc881-dirty
author | yating-l |
---|---|
date | Mon, 20 Mar 2017 12:35:33 -0400 |
parents | 75edbc203532 |
children | 37422f705e9b |
line wrap: on
line diff
--- a/TrackHub.py Fri Mar 17 19:06:49 2017 -0400 +++ b/TrackHub.py Mon Mar 20 12:35:33 2017 -0400 @@ -7,13 +7,14 @@ class TrackHub: - def __init__(self, inputFiles, reference, outputDirect, tool_dir, genome, extra_files_path): + def __init__(self, inputFiles, reference, outputDirect, tool_dir, genome, extra_files_path, metaData): self.input_files = inputFiles.tracks self.outfile = outputDirect self.outfolder = extra_files_path self.out_path = os.path.join(extra_files_path, genome) self.reference = reference self.tool_dir = tool_dir + self.metaData = metaData self.raw = os.path.join(self.out_path, 'raw') self.json = os.path.join(self.out_path, 'json') try: @@ -44,44 +45,25 @@ print "Cannot prepare reference error({0}): {1}".format(e.errno, e.strerror) #TODO: hard coded the bam and bigwig tracks. Need to allow users to customize the settings def addTrack(self, track): - track_label = track['label'] - track_color = track['track_color'] - if track['dataType'] == 'blastxml': - track_type = "G-OnRamp_plugin/BlastAlignment" - elif track['dataType'] == 'gff3_transcript' or track['dataType'] == 'gff3_mrna': - track_type = "G-OnRamp_plugin/GenePred" + print "false_path" , track['false_path'] + if track['false_path'] in self.metaData.keys(): + metadata = self.metaData[track['false_path']] else: - track_type = "CanvasFeatures" + metadata = {} + self.SetMetadata(track, metadata) if track['dataType'] == 'bam': - self.createTrackList() - json_file = os.path.join(self.json, "trackList.json") - bam_track = dict() - bam_track['type'] = 'JBrowse/View/Track/Alignments2' - bam_track['storeClass'] = 'JBrowse/Store/SeqFeature/BAM' - bam_track['label'] = track_label - bam_track['urlTemplate'] = os.path.join('../raw', track['fileName']) - bam_track['baiUrlTemplate'] = os.path.join('../raw', track['index']) - utils.add_tracks_to_json(json_file, bam_track, 'add_tracks') + self.Bam(track, metadata) # print "add bam track\n" elif track['dataType'] == 'bigwig': - self.createTrackList() - json_file = os.path.join(self.json, "trackList.json") - bigwig_track = dict() - bigwig_track['label'] = track_label - #color_setting = {"pos_color" : track['pos_color'], "neg_color" : track['neg_color']} - bigwig_track['style'] = {"pos_color" : track['pos_color'], "neg_color" : track['neg_color']} - bigwig_track['urlTemplate'] = os.path.join('../raw', track['fileName']) - bigwig_track['type'] = 'JBrowse/View/Track/Wiggle/XYPlot' - bigwig_track['storeClass'] = 'JBrowse/Store/SeqFeature/BigWig' - utils.add_tracks_to_json(json_file, bigwig_track, 'add_tracks') + self.BigWig(track, metadata) else: gff3_file = os.path.join(self.raw, track['fileName']) if track['dataType'] == 'bedSpliceJunctions' or track['dataType'] == 'gtf': - p = subprocess.Popen(['flatfile-to-json.pl', '--gff', gff3_file, '--trackType', track_type, '--trackLabel', track_label, '--Config', '{"glyph": "JBrowse/View/FeatureGlyph/Segments"}', '--clientConfig', '{"color" : "%s"}' % track_color, '--out', self.json]) + p = subprocess.Popen(['flatfile-to-json.pl', '--gff', gff3_file, '--trackType', metadata['type'], '--trackLabel', metadata['label'], '--Config', '{"glyph": "JBrowse/View/FeatureGlyph/Segments", "category" : "%s"}' % metadata['category'], '--clientConfig', '{"color" : "%s"}' % metadata['color'], '--out', self.json]) elif track['dataType'] == 'gff3_transcript': - p = subprocess.Popen(['flatfile-to-json.pl', '--gff', gff3_file, '--trackType', track_type, '--trackLabel', track_label, '--Config', '{"transcriptType": "transcript"}', '--clientConfig', '{"color" : "%s"}' % track_color, '--out', self.json]) + p = subprocess.Popen(['flatfile-to-json.pl', '--gff', gff3_file, '--trackType', metadata['type'], '--trackLabel', metadata['label'], '--Config', '{"transcriptType": "transcript", "category" : "%s"}' % metadata['category'], '--clientConfig', '{"color" : "%s"}' % metadata['color'], '--out', self.json]) else: - p = subprocess.Popen(['flatfile-to-json.pl', '--gff', gff3_file, '--trackType', track_type, '--trackLabel', track_label, '--clientConfig', '{"color" : "%s"}' % track_color, '--out', self.json]) + p = subprocess.Popen(['flatfile-to-json.pl', '--gff', gff3_file, '--trackType', metadata['type'], '--trackLabel', metadata['label'], '--Config', '{"category" : "%s"}' % metadata['category'], '--clientConfig', '{"color" : "%s"}' % metadata['color'], '--out', self.json]) p.communicate() def indexName(self): @@ -115,6 +97,56 @@ trackList = os.path.join(self.json, "trackList.json") if not os.path.exists(trackList): os.mknod(trackList) + + def Bam(self, track, metadata): + #create trackList.json if not exist + self.createTrackList() + json_file = os.path.join(self.json, "trackList.json") + bam_track = dict() + bam_track['type'] = 'JBrowse/View/Track/Alignments2' + bam_track['storeClass'] = 'JBrowse/Store/SeqFeature/BAM' + bam_track['urlTemplate'] = os.path.join('../raw', track['fileName']) + bam_track['baiUrlTemplate'] = os.path.join('../raw', track['index']) + bam_track.update(metadata) + utils.add_tracks_to_json(json_file, bam_track, 'add_tracks') + + def BigWig(self, track, metadata): + #create trackList.json if not exist + self.createTrackList() + json_file = os.path.join(self.json, "trackList.json") + bigwig_track = dict() + #color_setting = {"pos_color" : track['pos_color'], "neg_color" : track['neg_color']} + #bigwig_track['style'] = {"pos_color" : track['pos_color'], "neg_color" : track['neg_color']} + bigwig_track['urlTemplate'] = os.path.join('../raw', track['fileName']) + bigwig_track['type'] = 'JBrowse/View/Track/Wiggle/XYPlot' + bigwig_track['storeClass'] = 'JBrowse/Store/SeqFeature/BigWig' + bigwig_track.update(metadata) + utils.add_tracks_to_json(json_file, bigwig_track, 'add_tracks') + + #If the metadata is not set, use the default value + def SetMetadata(self, track, metadata): + print metadata + #track.update(metadata) + if 'label' not in metadata.keys() or metadata['label'] == '': + metadata['label'] = track['fileName'] + if 'color' not in metadata.keys() or metadata['color'] == '': + metadata['color'] = "#daa520" + if track['dataType'] == 'bigwig': + if 'style' not in metadata.keys(): + metadata['style'] = {} + if 'pos_color' not in metadata['style'] or metadata['style']['pos_color'] == '': + metadata['pos_color'] = "#FFA600" + if 'neg_color' not in metadata['style'] or metadata['style']['neg_color'] == '': + metadata['neg_color'] = "#005EFF" + if 'category' not in metadata.keys() or metadata['category'] == '': + metadata['category'] = "Default group" + if track['dataType'] == 'blastxml': + metadata['type'] = "G-OnRamp_plugin/BlastAlignment" + elif track['dataType'] == 'gff3_transcript' or track['dataType'] == 'gff3_mrna': + metadata['type'] = "G-OnRamp_plugin/GenePred" + else: + metadata['type'] = "CanvasFeatures" +