comparison 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
comparison
equal deleted inserted replaced
37:43909f065bee 38:d17f629f5486
1 #!/usr/bin/env python
2 import json
3 import logging
4 import collections
5
6 from TrackDb import TrackDb
7 from util import subtools
8 from util import santitizer
9
10 class Features(TrackDb):
11 def __init__(self, trackName, trackLabel, trackDataURL, trackType, dataType, extraSettings=None):
12 super(Features, self).__init__(trackName, trackLabel, trackDataURL, trackType, dataType, extraSettings)
13
14 def prepareExtraSetting(self):
15 if self.trackType == 'HTMLFeatures':
16 self.prepareHTMLExtraSetting()
17 else:
18 self.prepareCanvasExtraSetting()
19
20 def prepareHTMLExtraSetting(self):
21 """ set HTMLFeatures configuration options """
22 extraConfigs = dict()
23 self.extraSettings["clientConfig"] = dict()
24 self.extraSettings["config"] = dict()
25 if 'type' in self.extraSettings:
26 extraConfigs["type"] = self.extraSettings['type']
27 if 'color' in self.extraSettings and self.extraSettings['color']:
28 extraConfigs['feature_color'] = self.extraSettings['color']
29 else:
30 extraConfigs['feature_color'] = "#000000"
31 #self.extraSettings['clientConfig']['color'] = self.extraSettings['color']
32 if 'subfeatureClasses' in self.extraSettings:
33 subfeature_css_class = santitizer.sanitize_name(self.trackLabel + "_" + self.extraSettings['subfeatureClasses'])
34 extraConfigs['subfeatureClasses'] = {self.extraSettings['subfeatureClasses']: subfeature_css_class}
35
36 if 'category' not in self.extraSettings or not self.extraSettings['category']:
37 self.extraSettings['config']['category'] = "Default group"
38 else:
39 self.extraSettings['config']['category'] = self.extraSettings['category']
40
41 extraConfigs['config'] = json.dumps(self.extraSettings["config"])
42 extraConfigs['clientConfig'] = json.dumps(self.extraSettings["clientConfig"])
43 return extraConfigs
44
45 def prepareCanvasExtraSetting(self):
46 """ set CanvasFeatures configuration options """
47 extraConfigs = dict()
48 self.extraSettings["clientConfig"] = dict()
49 self.extraSettings["config"] = dict()
50 if 'color' not in self.extraSettings or not self.extraSettings['color']:
51 self.extraSettings["clientConfig"]['color'] = "#daa520"
52 else:
53 self.extraSettings["clientConfig"]['color'] = self.extraSettings['color']
54 if 'category' not in self.extraSettings or not self.extraSettings['category']:
55 self.extraSettings["config"]['category'] = "Default group"
56 else:
57 self.extraSettings["config"]['category'] = self.extraSettings['category']
58 if 'glyph' in self.extraSettings:
59 self.extraSettings["config"]['glyph'] = self.extraSettings['glyph']
60 if 'transcriptType' in self.extraSettings:
61 self.extraSettings['config']['transcriptType'] = self.extraSettings['transcriptType']
62 extraConfigs["config"] = json.dumps(self.extraSettings["config"])
63 extraConfigs["clientConfig"] = json.dumps(self.extraSettings["clientConfig"])
64 return extraConfigs
65
66 def createTrackDb(self):
67 self.track_db = collections.OrderedDict([("track",self.trackName),
68 ("trackLabel",self.trackLabel),
69 ("trackDataURL",self.trackDataURL),
70 ("dataType", self.dataType),
71 ("trackType", self.trackType)]
72 )
73
74
75 htmlExtraConfigs = self.prepareHTMLExtraSetting()
76 self.logger.debug("Generate extraConfigs for htmlFeatures = %s", json.dumps(htmlExtraConfigs))
77 self.track_db["html"]["options"] = htmlExtraConfigs
78 canvasExtraConfigs = self.prepareCanvasExtraSetting()
79 self.logger.debug("Generate extraConfigs for canvasFeatures = %s", json.dumps(canvasExtraConfigs))
80 self.track_db["canvas"]["options"] = canvasExtraConfigs
81 self.logger.debug("TrackDb object is created track_db = %s ", json.dumps(self.track_db))