Mercurial > repos > yating-l > jbrowsearchivecreator
diff tracks/IntervalFeatures.py @ 38:d17f629f5486 draft
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit e4c1d387db160a3bf4a1e8abc288bdffbbbe2818-dirty
| author | yating-l |
|---|---|
| date | Fri, 06 Apr 2018 13:44:56 -0400 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tracks/IntervalFeatures.py Fri Apr 06 13:44:56 2018 -0400 @@ -0,0 +1,81 @@ +#!/usr/bin/env python +import json +import logging +import collections + +from TrackDb import TrackDb +from util import subtools +from util import santitizer + +class Features(TrackDb): + def __init__(self, trackName, trackLabel, trackDataURL, trackType, dataType, extraSettings=None): + super(Features, self).__init__(trackName, trackLabel, trackDataURL, trackType, dataType, extraSettings) + + def prepareExtraSetting(self): + if self.trackType == 'HTMLFeatures': + self.prepareHTMLExtraSetting() + else: + self.prepareCanvasExtraSetting() + + def prepareHTMLExtraSetting(self): + """ set HTMLFeatures configuration options """ + extraConfigs = dict() + self.extraSettings["clientConfig"] = dict() + self.extraSettings["config"] = dict() + if 'type' in self.extraSettings: + extraConfigs["type"] = self.extraSettings['type'] + if 'color' in self.extraSettings and self.extraSettings['color']: + extraConfigs['feature_color'] = self.extraSettings['color'] + else: + extraConfigs['feature_color'] = "#000000" + #self.extraSettings['clientConfig']['color'] = self.extraSettings['color'] + if 'subfeatureClasses' in self.extraSettings: + subfeature_css_class = santitizer.sanitize_name(self.trackLabel + "_" + self.extraSettings['subfeatureClasses']) + extraConfigs['subfeatureClasses'] = {self.extraSettings['subfeatureClasses']: subfeature_css_class} + + if 'category' not in self.extraSettings or not self.extraSettings['category']: + self.extraSettings['config']['category'] = "Default group" + else: + self.extraSettings['config']['category'] = self.extraSettings['category'] + + extraConfigs['config'] = json.dumps(self.extraSettings["config"]) + extraConfigs['clientConfig'] = json.dumps(self.extraSettings["clientConfig"]) + return extraConfigs + + def prepareCanvasExtraSetting(self): + """ set CanvasFeatures configuration options """ + extraConfigs = dict() + self.extraSettings["clientConfig"] = dict() + self.extraSettings["config"] = dict() + if 'color' not in self.extraSettings or not self.extraSettings['color']: + self.extraSettings["clientConfig"]['color'] = "#daa520" + else: + self.extraSettings["clientConfig"]['color'] = self.extraSettings['color'] + if 'category' not in self.extraSettings or not self.extraSettings['category']: + self.extraSettings["config"]['category'] = "Default group" + else: + self.extraSettings["config"]['category'] = self.extraSettings['category'] + if 'glyph' in self.extraSettings: + self.extraSettings["config"]['glyph'] = self.extraSettings['glyph'] + if 'transcriptType' in self.extraSettings: + self.extraSettings['config']['transcriptType'] = self.extraSettings['transcriptType'] + extraConfigs["config"] = json.dumps(self.extraSettings["config"]) + extraConfigs["clientConfig"] = json.dumps(self.extraSettings["clientConfig"]) + return extraConfigs + + def createTrackDb(self): + self.track_db = collections.OrderedDict([("track",self.trackName), + ("trackLabel",self.trackLabel), + ("trackDataURL",self.trackDataURL), + ("dataType", self.dataType), + ("trackType", self.trackType)] + ) + + + htmlExtraConfigs = self.prepareHTMLExtraSetting() + self.logger.debug("Generate extraConfigs for htmlFeatures = %s", json.dumps(htmlExtraConfigs)) + self.track_db["html"]["options"] = htmlExtraConfigs + canvasExtraConfigs = self.prepareCanvasExtraSetting() + self.logger.debug("Generate extraConfigs for canvasFeatures = %s", json.dumps(canvasExtraConfigs)) + self.track_db["canvas"]["options"] = canvasExtraConfigs + self.logger.debug("TrackDb object is created track_db = %s ", json.dumps(self.track_db)) \ No newline at end of file
