Mercurial > repos > yating-l > jbrowse_hub
diff TrackHub.py @ 50:3e5b6f6a9abe draft
planemo upload for repository https://github.com/Yating-L/jbrowse_hub commit 6391cdb975d14b5a7060fa1665a8a575797a0eaa-dirty
author | yating-l |
---|---|
date | Thu, 30 Mar 2017 16:03:16 -0400 |
parents | 193e94a43f0f |
children | acedf82ea46c |
line wrap: on
line diff
--- a/TrackHub.py Wed Mar 29 14:46:23 2017 -0400 +++ b/TrackHub.py Thu Mar 30 16:03:16 2017 -0400 @@ -3,6 +3,7 @@ import os import subprocess import shutil +import json import utils @@ -38,9 +39,7 @@ def prepareRefseq(self): try: #print os.path.join(self.tool_dir, 'prepare-refseqs.pl') + ", '--fasta', " + self.reference +", '--out', self.json])" - p = subprocess.Popen(['prepare-refseqs.pl', '--fasta', self.reference, '--out', self.json]) - # Wait for process to terminate. - p.communicate() + subprocess.call(['prepare-refseqs.pl', '--fasta', self.reference, '--out', self.json]) except OSError as e: 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 @@ -57,18 +56,18 @@ elif track['dataType'] == 'bigwig': self.BigWig(track, metadata) else: - gff3_file = os.path.join(self.raw, track['fileName']) - if track['dataType'] == 'bedSpliceJunctions' or track['dataType'] == 'gtf' or track['dataType'] == 'blastxml': - 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]) + flat_file = os.path.join(self.raw, track['fileName']) + if track['dataType'] == 'bed': + subprocess.call(['flatfile-to-json.pl', '--bed', flat_file, '--trackType', metadata['type'], '--trackLabel', metadata['label'], '--Config', '{"category" : "%s"}' % metadata['category'], '--clientConfig', '{"color" : "%s"}' % metadata['color'], '--out', self.json]) + elif track['dataType'] == 'bedSpliceJunctions' or track['dataType'] == 'gtf' or track['dataType'] == 'blastxml': + subprocess.call(['flatfile-to-json.pl', '--gff', flat_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', metadata['type'], '--trackLabel', metadata['label'], '--Config', '{"transcriptType": "transcript", "category" : "%s"}' % metadata['category'], '--clientConfig', '{"color" : "%s"}' % metadata['color'], '--out', self.json]) + subprocess.call(['flatfile-to-json.pl', '--gff', flat_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', metadata['type'], '--trackLabel', metadata['label'], '--Config', '{"category" : "%s"}' % metadata['category'], '--clientConfig', '{"color" : "%s"}' % metadata['color'], '--out', self.json]) - p.communicate() + subprocess.call(['flatfile-to-json.pl', '--gff', flat_file, '--trackType', metadata['type'], '--trackLabel', metadata['label'], '--Config', '{"category" : "%s"}' % metadata['category'], '--clientConfig', '{"color" : "%s"}' % metadata['color'], '--out', self.json]) def indexName(self): - p = subprocess.Popen(['generate-names.pl', '-v', '--out', self.json]) - p.communicate() + subprocess.call(['generate-names.pl', '-v', '--out', self.json]) print "finished name index \n" def makeArchive(self): @@ -83,8 +82,7 @@ except OSError as oserror: print "Cannot create data folder({0}): {1}".format(oserror.errno, oserror.strerror) shutil.copytree(self.out_path, data_folder) - p = subprocess.Popen(['chmod', '-R', 'o+rx', '/var/www/html/JBrowse-1.12.1/jbrowse_hub']) - p.communicate() + subprocess.call(['chmod', '-R', 'o+rx', '/var/www/html/JBrowse-1.12.1/jbrowse_hub']) shutil.rmtree(self.out_path) #TODO: this will list all zip files in the filedir and sub-dirs. worked in Galaxy but all list zip files in test-data when @@ -93,7 +91,7 @@ with open(self.outfile, 'w') as htmlfile: htmlstr = 'The JBrowse Hub is created: <br>' zipfiles = '<li><a href = "%s">Download</a></li>' - jbrowse_hub = '<li><a href = "http://192.168.56.11/JBrowse-1.12.1/index.html?data=jbrowse_hub/json" target="_blank">View JBrowse Hub</a></li>' + jbrowse_hub = '<li><a href = "/static/JBrowse-1.12.1/index.html?data=jbrowse_hub/json" target="_blank">View JBrowse Hub</a></li>' filedir_abs = os.path.abspath(self.outfile) filedir = os.path.dirname(filedir_abs) filedir = os.path.join(filedir, self.outfolder) @@ -122,8 +120,11 @@ bam_track['baiUrlTemplate'] = os.path.join('../raw', track['index']) bam_track['label'] = metadata['label'] bam_track['category'] = metadata['category'] - utils.add_tracks_to_json(json_file, bam_track, 'add_tracks') - + bam_track = json.dumps(bam_track) + #Use add-track-json.pl to add bam track to json file + new_track = subprocess.Popen(['echo', bam_track], stdout=subprocess.PIPE) + subprocess.call(['add-track-json.pl', json_file], stdin=new_track.stdout) + def BigWig(self, track, metadata): #create trackList.json if not exist self.createTrackList() @@ -135,7 +136,11 @@ bigwig_track['label'] = metadata['label'] bigwig_track['style'] = metadata['style'] bigwig_track['category'] = metadata['category'] - utils.add_tracks_to_json(json_file, bigwig_track, 'add_tracks') + bigwig_track = json.dumps(bigwig_track) + #Use add-track-json.pl to add bigwig track to json file + new_track = subprocess.Popen(['echo', bigwig_track], stdout=subprocess.PIPE) + #output = new_track.communicate()[0] + subprocess.call(['add-track-json.pl', json_file], stdin=new_track.stdout) #If the metadata is not set, use the default value def SetMetadata(self, track, metadata): @@ -147,9 +152,9 @@ if 'style' not in metadata.keys(): metadata['style'] = {} if 'pos_color' not in metadata['style'] or metadata['style']['pos_color'] == '': - metadata['pos_color'] = "#FFA600" + metadata['style']['pos_color'] = "#FFA600" if 'neg_color' not in metadata['style'] or metadata['style']['neg_color'] == '': - metadata['neg_color'] = "#005EFF" + metadata['style']['neg_color'] = "#005EFF" if 'category' not in metadata.keys() or metadata['category'] == '': metadata['category'] = "Default group" if track['dataType'] == 'blastxml':