Mercurial > repos > yating-l > jbrowsearchivecreator
comparison TrackHub.py @ 32:7b955a58d8f2 draft
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 18da3c5b92673ba5030c24c981c6ca7ebe0bf097-dirty
| author | yating-l | 
|---|---|
| date | Fri, 20 Oct 2017 11:22:21 -0400 | 
| parents | 127037c49bc8 | 
| children | 07cc5384dd61 | 
   comparison
  equal
  deleted
  inserted
  replaced
| 31:127037c49bc8 | 32:7b955a58d8f2 | 
|---|---|
| 5 import shutil | 5 import shutil | 
| 6 import zipfile | 6 import zipfile | 
| 7 import json | 7 import json | 
| 8 import tempfile | 8 import tempfile | 
| 9 import logging | 9 import logging | 
| 10 from mako.lookup import TemplateLookup | |
| 10 | 11 | 
| 11 from datatypes.Datatype import Datatype | 12 from datatypes.Datatype import Datatype | 
| 12 from apollo.ApolloInstance import ApolloInstance | |
| 13 from tracks.TrackStyles import TrackStyles | 13 from tracks.TrackStyles import TrackStyles | 
| 14 from util import subtools | 14 from util import subtools | 
| 15 from util import santitizer | 15 from util import santitizer | 
| 16 | 16 | 
| 17 | 17 | 
| 18 class TrackHub: | 18 class TrackHub: | 
| 19 def __init__(self, inputFastaFile, apollo_user, outputFile, extra_files_path, tool_directory, trackType, apollo_host, user_email): | 19 def __init__(self, inputFastaFile, outputFile, extra_files_path, tool_directory, trackType): | 
| 20 | 20 | 
| 21 self.rootAssemblyHub = None | 21 self.rootAssemblyHub = None | 
| 22 | 22 | 
| 23 self.mySpecieFolderPath = None | 23 self.mySpecieFolderPath = None | 
| 24 | 24 | 
| 34 self.genome_name = inputFastaFile.assembly_id | 34 self.genome_name = inputFastaFile.assembly_id | 
| 35 self.extra_files_path = extra_files_path | 35 self.extra_files_path = extra_files_path | 
| 36 self.outputFile = outputFile | 36 self.outputFile = outputFile | 
| 37 self.chromSizesFile = None | 37 self.chromSizesFile = None | 
| 38 | 38 | 
| 39 # Set up apollo | |
| 40 self.apollo = ApolloInstance(apollo_host, tool_directory, user_email) | |
| 41 self.apollo_user = apollo_user | |
| 42 | 39 | 
| 43 # Set all the missing variables of this class, and create physically the folders/files | 40 # Set all the missing variables of this class, and create physically the folders/files | 
| 44 self.rootAssemblyHub = self.__createAssemblyHub__(extra_files_path=extra_files_path) | 41 self.rootAssemblyHub = self.__createAssemblyHub__(extra_files_path=extra_files_path) | 
| 45 # Init the Datatype | 42 # Init the Datatype | 
| 46 Datatype.pre_init(self.reference_genome, self.chromSizesFile, | 43 Datatype.pre_init(self.reference_genome, self.chromSizesFile, | 
| 75 def terminate(self, debug=False): | 72 def terminate(self, debug=False): | 
| 76 """ Write html file """ | 73 """ Write html file """ | 
| 77 self._indexName() | 74 self._indexName() | 
| 78 if not debug: | 75 if not debug: | 
| 79 self._removeRaw() | 76 self._removeRaw() | 
| 80 self._makeArchive() | 77 #self._makeArchive() | 
| 78 self._outHtml() | |
| 81 print "Success!\n" | 79 print "Success!\n" | 
| 82 | 80 | 
| 83 | 81 | 
| 84 def _customizeHTMLFeature(self, trackDbObject): | 82 def _customizeHTMLFeature(self, trackDbObject): | 
| 85 if trackDbObject['options']: | 83 if trackDbObject['options']: | 
| 114 def _indexName(self): | 112 def _indexName(self): | 
| 115 #subprocess.call(['generate-names.pl', '-v', '--out', self.mySpecieFolderPath]) | 113 #subprocess.call(['generate-names.pl', '-v', '--out', self.mySpecieFolderPath]) | 
| 116 subtools.generate_names(self.mySpecieFolderPath) | 114 subtools.generate_names(self.mySpecieFolderPath) | 
| 117 print "finished name index \n" | 115 print "finished name index \n" | 
| 118 | 116 | 
| 119 def _outHtml(self, host_name): | 117 def _outHtml(self): | 
| 118 mylookup = TemplateLookup(directories=[os.path.join(self.tool_directory, 'templates')], | |
| 119 output_encoding='utf-8', encoding_errors='replace') | |
| 120 htmlTemplate = mylookup.get_template("display.txt") | |
| 121 | |
| 120 with open(self.outputFile, 'w') as htmlfile: | 122 with open(self.outputFile, 'w') as htmlfile: | 
| 121 htmlstr = 'The new Organism "%s" is created on Apollo: <br>' % self.genome_name | 123 htmlMakoRendered = htmlTemplate.render( | 
| 122 jbrowse_hub = '<li><a href = "%s" target="_blank">View JBrowse Hub on Apollo</a></li>' % host_name | 124 genome_name = self.genome_name, | 
| 123 htmlstr += jbrowse_hub | 125 trackList = os.path.relpath(self.trackList, self.extra_files_path) | 
| 124 htmlfile.write(htmlstr) | 126 ) | 
| 127 htmlfile.write(htmlMakoRendered) | |
| 128 #with open(self.outputFile, 'w') as htmlfile: | |
| 129 # htmlstr = 'The new Organism "%s" is created on Apollo: <br>' % self.genome_name | |
| 130 # jbrowse_hub = '<li><a href = "%s" target="_blank">View JBrowse Hub on Apollo</a></li>' % host_name | |
| 131 # htmlstr += jbrowse_hub | |
| 132 # htmlfile.write(htmlstr) | |
| 125 | 133 | 
| 126 def _makeArchive(self): | |
| 127 self.apollo.loadHubToApollo(self.apollo_user, self.genome_name, self.mySpecieFolderPath, admin=True) | |
| 128 apollo_host = self.apollo.getHost() | |
| 129 self._outHtml(apollo_host) | |
| 130 | |
| 131 | 134 | 
| 132 def __createAssemblyHub__(self, extra_files_path): | 135 def __createAssemblyHub__(self, extra_files_path): | 
| 133 # Get all necessaries infos first | 136 # Get all necessaries infos first | 
| 134 # 2bit file creation from input fasta | 137 # 2bit file creation from input fasta | 
| 135 | 138 | 
