comparison tracks/TrackStyles.py @ 6:237707a6b74d draft

planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit a500f7ab2119cc5faaf80393bd87428389d06880-dirty
author yating-l
date Thu, 15 Feb 2018 17:05:05 -0500
parents
children 62dee5369e80
comparison
equal deleted inserted replaced
5:e762f4b9e4bd 6:237707a6b74d
1 #!/usr/bin/env python
2 import os
3 import json
4 import logging
5 from mako.lookup import TemplateLookup
6
7 class TrackStyles(object):
8 def __init__(self, tool_directory, species_folder, trackListFile, cssFolderName="css", cssFileName="custom_track_styles.css"):
9 self.logger = logging.getLogger(__name__)
10 self.tool_directory = tool_directory
11 self.species_folder = species_folder
12 self.trackList = trackListFile
13 self.cssFolderName = cssFolderName
14 self.cssFileName = cssFileName
15 self.cssFilePath = self._createCssFile()
16 self.cssTemplate = self._getCssTemplate()
17 self._addCssToTrackList()
18
19
20 def addCustomColor(self, feature_class_name, feature_color):
21 with open(self.cssFilePath, 'a+') as css:
22 htmlMakoRendered = self.cssTemplate.render(
23 label = feature_class_name,
24 color = feature_color
25 )
26 css.write(htmlMakoRendered)
27 self.logger.debug("create customized track css class: cssFilePath= %s", self.cssFilePath)
28
29
30 def _createCssFile(self):
31 cssFolderPath = os.path.join(self.species_folder, self.cssFolderName)
32 cssFilePath = os.path.join(cssFolderPath, self.cssFileName)
33 if not os.path.exists(cssFilePath):
34 if not os.path.exists(cssFolderPath):
35 os.mkdir(cssFolderPath)
36 os.mknod(cssFilePath)
37 os.chmod(cssFilePath, 0o755)
38 return cssFilePath
39
40 def _getCssTemplate(self):
41 mylookup = TemplateLookup(directories=[os.path.join(self.tool_directory, 'templates')],
42 output_encoding='utf-8', encoding_errors='replace')
43 cssTemplate = mylookup.get_template("custom_track_styles.css")
44 return cssTemplate
45
46
47 def _addCssToTrackList(self):
48 with open(self.trackList, 'r+') as track:
49 data = json.load(track)
50 css_path = os.path.join('data', self.cssFolderName, self.cssFileName)
51 data['css'] = {'url': css_path}
52 json_string = json.dumps(data, indent=4, separators=(',', ': '))
53 track.seek(0)
54 track.write(json_string)
55 track.truncate()
56 self.logger.debug("added customized css url to trackList.json")
57
58
59