Mercurial > repos > rmarenco > hubarchivecreator
comparison TrackDb.py @ 29:7e8a8b732db3 draft
planemo upload for repository https://github.com/goeckslab/hub-archive-creator commit 1a81ebd0ddea950b84af3fc830e9267a4814b29f
author | yating-l |
---|---|
date | Wed, 16 May 2018 18:04:20 -0400 |
parents | df42241d3731 |
children | e7c4be523cb7 |
comparison
equal
deleted
inserted
replaced
28:6aa28a85cc38 | 29:7e8a8b732db3 |
---|---|
1 #!/usr/bin/python | 1 #!/usr/bin/python |
2 import collections | |
3 from util import santitizer | |
2 | 4 |
3 class TrackDb(object): | 5 class TrackDb(object): |
4 """docstring for TrackDb""" | 6 """docstring for TrackDb""" |
7 def __init__(self, trackName="", longLabel="", shortLabel="", trackDataURL="", trackType="", extraSettings=None): | |
8 #super(TrackDb, self).__init__() | |
9 not_init_message = "The {0} is not initialized." | |
10 if trackName is None: | |
11 raise TypeError(not_init_message.format('trackName')) | |
12 if longLabel is None: | |
13 raise TypeError(not_init_message.format('longLabel')) | |
14 if trackType is None: | |
15 raise TypeError(not_init_message.format('trackType')) | |
16 if trackDataURL is None: | |
17 raise TypeError(not_init_message.format('trackDataURL')) | |
18 | |
19 self.createTrackDb(trackName, longLabel, shortLabel, trackDataURL, trackType, extraSettings) | |
5 | 20 |
6 def __init__(self, trackName="", longLabel="", shortLabel="", trackDataURL="", trackType="", visibility="", | 21 def createTrackDb(self, track_name, long_label, short_label, file_path, track_type, extraSettings = None): |
7 thickDrawItem='off', priority="0", track_color="#000000", group_name="Default", database=""): | 22 |
8 super(TrackDb, self).__init__() | 23 # TODO: Remove the hardcoded "tracks" by the value used as variable from myTrackFolderPath |
24 data_url = "tracks/%s" % track_name | |
25 if not short_label: | |
26 short_label = TrackDb.getShortName(long_label) | |
27 # Replace '_' by ' ', to invert the sanitization mecanism | |
28 # TODO: Find a better way to manage the sanitization of file path | |
29 long_label = long_label.replace("_", " ") | |
30 short_label = short_label.replace("_", " ") | |
9 | 31 |
10 self.trackName = trackName | 32 #sanitize the track_name |
11 self.longLabel = longLabel | 33 sanitized_name = santitizer.prefixTrackName(track_name) |
12 self.shortLabel = shortLabel | 34 |
13 self.trackDataURL = trackDataURL | 35 self.track_db = collections.OrderedDict([("track",sanitized_name), |
14 self.trackType = trackType | 36 ("type",track_type), |
15 self.visibility = visibility | 37 ("shortLabel",short_label), |
16 self.thickDrawItem = thickDrawItem | 38 ("longLabel",long_label), |
17 self.priority = priority | 39 ("bigDataUrl",data_url)] |
18 self.track_color = track_color | 40 ) |
19 self.group_name = group_name | 41 |
20 self.database = database | 42 |
21 | 43 TrackDb.prepareExtraSetting(extraSettings) |
44 self.track_db.update(extraSettings) | |
45 #print self.track_db | |
46 | |
47 # TODO: Rename for PEP8 | |
48 @staticmethod | |
49 def getShortName(name_to_shortify): | |
50 # Slice to get from Long label the short label | |
51 short_label_slice = slice(0, 17) | |
52 return name_to_shortify[short_label_slice] | |
53 | |
54 @staticmethod | |
55 def getRgb(track_color): | |
56 #TODO: Check if rgb or hexa | |
57 # Convert hexa to rgb array | |
58 hexa_without_sharp = track_color.lstrip('#') | |
59 rgb_array = [int(hexa_without_sharp[i:i+2], 16) for i in (0, 2, 4)] | |
60 rgb_ucsc = ','.join(map(str, rgb_array)) | |
61 return rgb_ucsc | |
62 | |
63 @staticmethod | |
64 def prepareExtraSetting(extraSettings): | |
65 if not extraSettings: | |
66 extraSettings = collections.OrderedDict() | |
67 if not "color" in extraSettings: | |
68 extraSettings["color"] = "#000000" | |
69 extraSettings["color"] = TrackDb.getRgb(extraSettings["color"]) | |
70 if not "group" in extraSettings or not extraSettings["group"]: | |
71 extraSettings["group"] = "Default group" | |
72 if not "thickDrawItem" in extraSettings: | |
73 extraSettings["thickDrawItem"] = "off" | |
74 | |
75 def get(self, item_name): | |
76 if item_name in self.track_db: | |
77 return self.track_db[item_name] | |
78 return None | |
79 | |
80 |