view 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 source

#!/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))