annotate TrackHub.py @ 47:1eb4adefd747 draft

planemo upload for repository https://github.com/goeckslab/jbrowse-archive-creator.git commit 97a743ee6d228c8a0a5778ec3cb6f68a2e22c8e3
author yating-l
date Tue, 19 Jun 2018 17:39:12 -0400
parents 061da5d3a219
children 804e7217f27c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
8d1cf7ce65cd planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff changeset
1 #!/usr/bin/env python
8d1cf7ce65cd planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff changeset
2
8d1cf7ce65cd planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff changeset
3 import os
8d1cf7ce65cd planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff changeset
4 import subprocess
8d1cf7ce65cd planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff changeset
5 import shutil
10
91b3558fa73f planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 479fc6490e24ca0e5034ae6c3579882e97e095e6-dirty
yating-l
parents: 0
diff changeset
6 import zipfile
0
8d1cf7ce65cd planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff changeset
7 import json
25
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
8 import tempfile
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
9 import logging
32
7b955a58d8f2 planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 18da3c5b92673ba5030c24c981c6ca7ebe0bf097-dirty
yating-l
parents: 31
diff changeset
10 from mako.lookup import TemplateLookup
25
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
11
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
12 from datatypes.Datatype import Datatype
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
13 from tracks.TrackStyles import TrackStyles
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
14 from util import subtools
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
15 from util import santitizer
0
8d1cf7ce65cd planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff changeset
16
8d1cf7ce65cd planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff changeset
17
8d1cf7ce65cd planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff changeset
18 class TrackHub:
32
7b955a58d8f2 planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 18da3c5b92673ba5030c24c981c6ca7ebe0bf097-dirty
yating-l
parents: 31
diff changeset
19 def __init__(self, inputFastaFile, outputFile, extra_files_path, tool_directory, trackType):
25
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
20
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
21 self.mySpecieFolderPath = None
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
22
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
23 # Store intermediate files, will be removed if not in debug mode
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
24 self.myTracksFolderPath = None
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
25
39
4a69515eed63 planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 91271a6c0d39c923f0d460b2979247baa297286b-dirty
yating-l
parents: 38
diff changeset
26 # Store interval files and their tabix index
4a69515eed63 planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 91271a6c0d39c923f0d460b2979247baa297286b-dirty
yating-l
parents: 38
diff changeset
27 self.myFinalTracksFolderPath = None
4a69515eed63 planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 91271a6c0d39c923f0d460b2979247baa297286b-dirty
yating-l
parents: 38
diff changeset
28
25
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
29 # Store binary files: Bam, BigWig
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
30 self.myBinaryFolderPath = None
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
31
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
32 self.tool_directory = tool_directory
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
33 self.trackType = trackType
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
34 self.reference_genome = inputFastaFile
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
35 self.genome_name = inputFastaFile.assembly_id
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
36 self.extra_files_path = extra_files_path
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
37 self.outputFile = outputFile
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
38 self.chromSizesFile = None
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
39
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
40
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
41 # Set all the missing variables of this class, and create physically the folders/files
39
4a69515eed63 planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 91271a6c0d39c923f0d460b2979247baa297286b-dirty
yating-l
parents: 38
diff changeset
42 self.__createAssemblyHub__(extra_files_path=extra_files_path)
25
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
43 # Init the Datatype
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
44 Datatype.pre_init(self.reference_genome, self.chromSizesFile,
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
45 self.extra_files_path, self.tool_directory,
39
4a69515eed63 planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 91271a6c0d39c923f0d460b2979247baa297286b-dirty
yating-l
parents: 38
diff changeset
46 self.mySpecieFolderPath, self.myTracksFolderPath, self.myBinaryFolderPath, self.trackType)
25
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
47
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
48 self._prepareRefseq()
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
49 self.trackList = os.path.join(self.mySpecieFolderPath, "trackList.json")
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
50 self._createTrackList()
39
4a69515eed63 planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 91271a6c0d39c923f0d460b2979247baa297286b-dirty
yating-l
parents: 38
diff changeset
51 if Datatype.trackType == 'HTMLFeatures':
4a69515eed63 planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 91271a6c0d39c923f0d460b2979247baa297286b-dirty
yating-l
parents: 38
diff changeset
52 self.myTrackStyle = TrackStyles(self.tool_directory, self.mySpecieFolderPath, self.trackList)
25
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
53 self.logger = logging.getLogger(__name__)
46
061da5d3a219 planemo upload for repository https://github.com/goeckslab/jbrowse-archive-creator.git commit 3160592f4119e684ab5843dd28a2e6cf11df0121-dirty
yating-l
parents: 40
diff changeset
54 self.nameIndexTrackList = []
25
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
55
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
56
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
57 def addTrack(self, trackDbObject):
46
061da5d3a219 planemo upload for repository https://github.com/goeckslab/jbrowse-archive-creator.git commit 3160592f4119e684ab5843dd28a2e6cf11df0121-dirty
yating-l
parents: 40
diff changeset
58 if trackDbObject['nameIndex'] == "true":
47
1eb4adefd747 planemo upload for repository https://github.com/goeckslab/jbrowse-archive-creator.git commit 97a743ee6d228c8a0a5778ec3cb6f68a2e22c8e3
yating-l
parents: 46
diff changeset
59 self.nameIndexTrackList.append(trackDbObject['trackLabel'])
25
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
60 if trackDbObject['dataType'].lower() == 'bam':
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
61 subtools.add_track_json(self.trackList, trackDbObject['options'])
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
62 elif trackDbObject['dataType'].lower() == 'bigwig':
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
63 subtools.add_track_json(self.trackList, trackDbObject['options'])
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
64 else:
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
65 if trackDbObject['trackType'] == 'HTMLFeatures':
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
66 self._customizeHTMLFeature(trackDbObject)
38
d17f629f5486 planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit e4c1d387db160a3bf4a1e8abc288bdffbbbe2818-dirty
yating-l
parents: 33
diff changeset
67 subtools.flatfile_to_json(trackDbObject['trackDataURL'], trackDbObject['dataType'], trackDbObject['trackType'], trackDbObject['trackLabel'], self.mySpecieFolderPath, trackDbObject['options'])
d17f629f5486 planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit e4c1d387db160a3bf4a1e8abc288bdffbbbe2818-dirty
yating-l
parents: 33
diff changeset
68 # Use Tabix index tracks by default for CanvasFeatures
d17f629f5486 planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit e4c1d387db160a3bf4a1e8abc288bdffbbbe2818-dirty
yating-l
parents: 33
diff changeset
69 # TODO: add support for HTMLFeatures
d17f629f5486 planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit e4c1d387db160a3bf4a1e8abc288bdffbbbe2818-dirty
yating-l
parents: 33
diff changeset
70 else:
39
4a69515eed63 planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 91271a6c0d39c923f0d460b2979247baa297286b-dirty
yating-l
parents: 38
diff changeset
71 subtools.generate_tabix_indexed_track(trackDbObject['trackDataURL'], trackDbObject['dataType'], trackDbObject['track'], self.myFinalTracksFolderPath)
38
d17f629f5486 planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit e4c1d387db160a3bf4a1e8abc288bdffbbbe2818-dirty
yating-l
parents: 33
diff changeset
72 subtools.add_track_json(self.trackList, trackDbObject['options'])
25
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
73
40
b1553f2a4942 planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 12fb52d5b285935b2353d93a5aa291838df7893e
yating-l
parents: 39
diff changeset
74 def terminate(self, debug="false"):
25
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
75 """ Write html file """
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
76 self._indexName()
40
b1553f2a4942 planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 12fb52d5b285935b2353d93a5aa291838df7893e
yating-l
parents: 39
diff changeset
77 if debug.lower() == "false":
25
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
78 self._removeRaw()
32
7b955a58d8f2 planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 18da3c5b92673ba5030c24c981c6ca7ebe0bf097-dirty
yating-l
parents: 31
diff changeset
79 self._outHtml()
0
8d1cf7ce65cd planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff changeset
80 print "Success!\n"
25
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
81
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
82
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
83 def _customizeHTMLFeature(self, trackDbObject):
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
84 if trackDbObject['options']:
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
85 subfeatures = trackDbObject['options'].get('subfeatureClasses')
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
86 feature_color = trackDbObject['options']['feature_color']
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
87 if subfeatures:
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
88 for key, value in subfeatures.items():
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
89 self.myTrackStyle.addCustomColor(value, feature_color)
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
90 else:
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
91 customizedFeature = santitizer.sanitize_name(trackDbObject['trackLabel'])
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
92 clientConfig = json.loads(trackDbObject['options']['clientConfig'])
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
93 clientConfig['renderClassName'] = customizedFeature
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
94 trackDbObject['options']['clientConfig'] = json.dumps(clientConfig)
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
95 self.myTrackStyle.addCustomColor(customizedFeature, feature_color)
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
96
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
97 def _removeRaw(self):
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
98 if os.path.exists(self.myTracksFolderPath):
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
99 shutil.rmtree(self.myTracksFolderPath)
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
100
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
101 def _createTrackList(self):
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
102 if not os.path.exists(self.trackList):
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
103 os.mknod(self.trackList)
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
104
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
105 def _prepareRefseq(self):
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
106 subtools.prepare_refseqs(self.reference_genome.false_path, self.mySpecieFolderPath)
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
107
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
108 def _indexName(self):
47
1eb4adefd747 planemo upload for repository https://github.com/goeckslab/jbrowse-archive-creator.git commit 97a743ee6d228c8a0a5778ec3cb6f68a2e22c8e3
yating-l
parents: 46
diff changeset
109 if self.nameIndexTrackList:
1eb4adefd747 planemo upload for repository https://github.com/goeckslab/jbrowse-archive-creator.git commit 97a743ee6d228c8a0a5778ec3cb6f68a2e22c8e3
yating-l
parents: 46
diff changeset
110 subtools.generate_names(self.mySpecieFolderPath, self.nameIndexTrackList)
1eb4adefd747 planemo upload for repository https://github.com/goeckslab/jbrowse-archive-creator.git commit 97a743ee6d228c8a0a5778ec3cb6f68a2e22c8e3
yating-l
parents: 46
diff changeset
111 print "finished name index \n"
0
8d1cf7ce65cd planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff changeset
112
32
7b955a58d8f2 planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 18da3c5b92673ba5030c24c981c6ca7ebe0bf097-dirty
yating-l
parents: 31
diff changeset
113 def _outHtml(self):
7b955a58d8f2 planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 18da3c5b92673ba5030c24c981c6ca7ebe0bf097-dirty
yating-l
parents: 31
diff changeset
114 mylookup = TemplateLookup(directories=[os.path.join(self.tool_directory, 'templates')],
7b955a58d8f2 planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 18da3c5b92673ba5030c24c981c6ca7ebe0bf097-dirty
yating-l
parents: 31
diff changeset
115 output_encoding='utf-8', encoding_errors='replace')
7b955a58d8f2 planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 18da3c5b92673ba5030c24c981c6ca7ebe0bf097-dirty
yating-l
parents: 31
diff changeset
116 htmlTemplate = mylookup.get_template("display.txt")
7b955a58d8f2 planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 18da3c5b92673ba5030c24c981c6ca7ebe0bf097-dirty
yating-l
parents: 31
diff changeset
117
25
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
118 with open(self.outputFile, 'w') as htmlfile:
32
7b955a58d8f2 planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 18da3c5b92673ba5030c24c981c6ca7ebe0bf097-dirty
yating-l
parents: 31
diff changeset
119 htmlMakoRendered = htmlTemplate.render(
39
4a69515eed63 planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 91271a6c0d39c923f0d460b2979247baa297286b-dirty
yating-l
parents: 38
diff changeset
120 jbrowse_hub_name = self.reference_genome.assembly_id,
32
7b955a58d8f2 planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 18da3c5b92673ba5030c24c981c6ca7ebe0bf097-dirty
yating-l
parents: 31
diff changeset
121 trackList = os.path.relpath(self.trackList, self.extra_files_path)
7b955a58d8f2 planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 18da3c5b92673ba5030c24c981c6ca7ebe0bf097-dirty
yating-l
parents: 31
diff changeset
122 )
7b955a58d8f2 planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 18da3c5b92673ba5030c24c981c6ca7ebe0bf097-dirty
yating-l
parents: 31
diff changeset
123 htmlfile.write(htmlMakoRendered)
25
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
124
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
125 def __createAssemblyHub__(self, extra_files_path):
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
126 # Get all necessaries infos first
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
127 # 2bit file creation from input fasta
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
128 twoBitFile = tempfile.NamedTemporaryFile(bufsize=0)
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
129 subtools.faToTwoBit(self.reference_genome.false_path, twoBitFile.name)
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
130
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
131 # Generate the twoBitInfo
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
132 twoBitInfoFile = tempfile.NamedTemporaryFile(bufsize=0)
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
133 subtools.twoBitInfo(twoBitFile.name, twoBitInfoFile.name)
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
134
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
135 # Then we get the output to generate the chromSizes
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
136 self.chromSizesFile = tempfile.NamedTemporaryFile(bufsize=0, suffix=".chrom.sizes")
39
4a69515eed63 planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 91271a6c0d39c923f0d460b2979247baa297286b-dirty
yating-l
parents: 38
diff changeset
137 subtools.sortChromSizes(twoBitInfoFile.name, self.chromSizesFile.name)
0
8d1cf7ce65cd planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff changeset
138
25
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
139 # We can get the biggest scaffold here, with chromSizesFile
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
140 with open(self.chromSizesFile.name, 'r') as chrom_sizes:
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
141 # TODO: Check if exists
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
142 self.default_pos = chrom_sizes.readline().split()[0]
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
143
39
4a69515eed63 planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 91271a6c0d39c923f0d460b2979247baa297286b-dirty
yating-l
parents: 38
diff changeset
144 # Create the specie folder, use generic name "myHub", to support display JBrowse with Galaxy display application
4a69515eed63 planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 91271a6c0d39c923f0d460b2979247baa297286b-dirty
yating-l
parents: 38
diff changeset
145 mySpecieFolderPath = os.path.join(extra_files_path, "myHub")
25
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
146 if not os.path.exists(mySpecieFolderPath):
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
147 os.makedirs(mySpecieFolderPath)
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
148 self.mySpecieFolderPath = mySpecieFolderPath
0
8d1cf7ce65cd planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff changeset
149
38
d17f629f5486 planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit e4c1d387db160a3bf4a1e8abc288bdffbbbe2818-dirty
yating-l
parents: 33
diff changeset
150 # Create the folder named 'raw' inside the specie folder to place raw files
25
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
151 tracksFolderPath = os.path.join(mySpecieFolderPath, "raw")
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
152 if not os.path.exists(tracksFolderPath):
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
153 os.makedirs(tracksFolderPath)
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
154 self.myTracksFolderPath = tracksFolderPath
0
8d1cf7ce65cd planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
yating-l
parents:
diff changeset
155
38
d17f629f5486 planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit e4c1d387db160a3bf4a1e8abc288bdffbbbe2818-dirty
yating-l
parents: 33
diff changeset
156 # Create the folder tracks into the specie folder
d17f629f5486 planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit e4c1d387db160a3bf4a1e8abc288bdffbbbe2818-dirty
yating-l
parents: 33
diff changeset
157 finalTracksFolderPath = os.path.join(mySpecieFolderPath, "tracks")
d17f629f5486 planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit e4c1d387db160a3bf4a1e8abc288bdffbbbe2818-dirty
yating-l
parents: 33
diff changeset
158 if not os.path.exists(finalTracksFolderPath):
d17f629f5486 planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit e4c1d387db160a3bf4a1e8abc288bdffbbbe2818-dirty
yating-l
parents: 33
diff changeset
159 os.makedirs(finalTracksFolderPath)
d17f629f5486 planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit e4c1d387db160a3bf4a1e8abc288bdffbbbe2818-dirty
yating-l
parents: 33
diff changeset
160 self.myFinalTracksFolderPath = finalTracksFolderPath
d17f629f5486 planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit e4c1d387db160a3bf4a1e8abc288bdffbbbe2818-dirty
yating-l
parents: 33
diff changeset
161
25
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
162 myBinaryFolderPath = os.path.join(mySpecieFolderPath, 'bbi')
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
163 if not os.path.exists(myBinaryFolderPath):
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
164 os.makedirs(myBinaryFolderPath)
31a41ce128cc planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit 691e5366893905d30943a3cb8cdfb6341f0f5362-dirty
yating-l
parents: 24
diff changeset
165 self.myBinaryFolderPath = myBinaryFolderPath