# HG changeset patch # User yating-l # Date 1490027733 14400 # Node ID a5108e5010b48098331c81cfe082eaa55e235702 # Parent 6a5f78bc0bedcae68fc00ece35cf43f4718bc95d planemo upload for repository https://github.com/Yating-L/jbrowse_hub commit 149c5cbda82f49f260767b5710f0c2160eebc881-dirty diff -r 6a5f78bc0bed -r a5108e5010b4 TrackHub.py --- 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" + diff -r 6a5f78bc0bed -r a5108e5010b4 jbrowse_hub.py --- a/jbrowse_hub.py Fri Mar 17 19:06:49 2017 -0400 +++ b/jbrowse_hub.py Mon Mar 20 12:35:33 2017 -0400 @@ -128,15 +128,15 @@ print 'Cannot open', datatype else: for f in inputfiles: - metadata = {} + #metadata = {} #print f - if f in inputs_data.keys(): - metadata = inputs_data[f] - print metadata + #if f in inputs_data.keys(): + # metadata = inputs_data[f] + #print metadata #Convert tracks into gff3 format - all_tracks.addToRaw(f, datatype, metadata) + all_tracks.addToRaw(f, datatype) - jbrowseHub = TrackHub.TrackHub(all_tracks, reference, out_path, tool_directory, genome, extra_files_path) + jbrowseHub = TrackHub.TrackHub(all_tracks, reference, out_path, tool_directory, genome, extra_files_path, inputs_data) jbrowseHub.createHub() """ diff -r 6a5f78bc0bed -r a5108e5010b4 jbrowse_hub.xml --- a/jbrowse_hub.xml Fri Mar 17 19:06:49 2017 -0400 +++ b/jbrowse_hub.xml Mon Mar 20 12:35:33 2017 -0400 @@ -35,13 +35,14 @@ #end def - + #for $g in $group #for $f in $format #set track_label = str($f.formatChoice.label) - #set extra_data_dict = {"label" : $track_label} + #set group_name = str($g.group_name) + #set extra_data_dict = {"label" : $track_label, "category" : $group_name} #if $f.formatChoice.format_select == 'bed' #set track_color = str($f.formatChoice.track_color) - #silent extra_data_dict.update({"track_color" : $track_color}) + #silent extra_data_dict.update({"color" : $track_color}) #if $f.formatChoice.bedChoice.bed_select == 'bed_simple_repeats_option' --bedSimpleRepeats $f.formatChoice.bedChoice.BED_simple_repeats #silent $prepare_json($f.formatChoice.bedChoice.BED_simple_repeats, extra_data_dict) @@ -56,7 +57,7 @@ #end if #if $f.formatChoice.format_select == 'gff3' #set track_color = str($f.formatChoice.track_color) - #silent extra_data_dict.update({"track_color" : $track_color}) + #silent extra_data_dict.update({"color" : $track_color}) #if $f.formatChoice.gff3Choice.gff3_select == 'gff3_transcript' --gff3_transcript $f.formatChoice.gff3Choice.GFF3_transcript #silent $prepare_json($f.formatChoice.gff3Choice.GFF3_transcript, extra_data_dict) @@ -68,23 +69,24 @@ #if $f.formatChoice.format_select == 'blastxml' --blastxml $f.formatChoice.BlastXML #set track_color = str($f.formatChoice.track_color) - #silent extra_data_dict.update({"track_color" : $track_color}) + #silent extra_data_dict.update({"color" : $track_color}) #silent $prepare_json($f.formatChoice.BlastXML, extra_data_dict) #end if #if $f.formatChoice.format_select == 'gtf' --gtf $f.formatChoice.GTF #set track_color = str($f.formatChoice.track_color) - #silent extra_data_dict.update({"track_color" : $track_color}) + #silent extra_data_dict.update({"color" : $track_color}) #silent $prepare_json($f.formatChoice.GTF, extra_data_dict) #end if #if $f.formatChoice.format_select == 'bigwig' --bigwig $f.formatChoice.BIGWIG #set pos_color = str($f.formatChoice.pos_color) #set neg_color = str($f.formatChoice.neg_color) - #silent $extra_data_dict.update({"pos_color" : $pos_color, "neg_color" : $neg_color}) + #silent $extra_data_dict.update({"style" : {"pos_color" : $pos_color, "neg_color" : $neg_color}}) #silent $prepare_json($f.formatChoice.BIGWIG, extra_data_dict) #end if #end for + #end for #set all_data_json = json.dumps($data_parameter_dict) -j '$all_data_json' @@ -96,6 +98,8 @@ + + @@ -235,7 +239,8 @@ - + + diff -r 6a5f78bc0bed -r a5108e5010b4 trackObject.py --- a/trackObject.py Fri Mar 17 19:06:49 2017 -0400 +++ b/trackObject.py Mon Mar 20 12:35:33 2017 -0400 @@ -24,19 +24,19 @@ except OSError as oserror: print "Cannot create raw folder error({0}): {1}".format(oserror.errno, oserror.strerror) - def addToRaw(self, dataFile, dataType, metaData): + def addToRaw(self, dataFile, dataType): """ Convert gff3, BED, blastxml and gtf files into gff3 files and store converted files in folder 'raw' """ - + false_path = os.path.abspath(dataFile) fileName = os.path.basename(dataFile) des_path = os.path.join(self.raw_folder, fileName) track = {} if dataType == 'gff3_mrna' or dataType == 'gff3_transcript' or dataType == 'fasta' or dataType == 'bam' or dataType == 'bigwig' or dataType == 'bai': if dataType == 'bam': # JBrowse will raise error: not a BAM file if the filename hasn't .bam extension - fileName = os.path.basename(dataFile) + '.bam' + fileName = fileName + '.bam' des_path = os.path.join(self.raw_folder, fileName) bam_index = utils.createBamIndex(dataFile) indexname = os.path.basename(bam_index) @@ -60,20 +60,8 @@ utils.gtfToGff3(dataFile, des_path, self.chrom_size) track['fileName'] = fileName track['dataType'] = dataType - self.SetMetadata(track, metaData) + track['false_path'] = false_path + #self.SetMetadata(track, metaData) self.tracks.append(track) - #If the metadata is not set, use the default value - def SetMetadata(self, track, metaData): - track.update(metaData) - if 'name' not in metaData.keys() or track['name'] == '': - track['name'] = track['fileName'] - if 'label' not in metaData.keys() or track['label'] == '': - track['label'] = track['name'] - if 'track_color' not in metaData.keys() or track['track_color'] == '': - track['track_color'] = "#daa520" - if track['dataType'] == 'bigwig': - if 'pos_color' not in metaData.keys() or track['pos_color'] == '': - track['pos_color'] = "#FFA600" - if 'neg_color' not in metaData.keys() or track['neg_color'] == '': - track['neg_color'] = "#005EFF" + \ No newline at end of file