Skip to content

Commit 8dbf75e

Browse files
committed
functionality for retrieving gene density histogram added
1 parent 6a4f2be commit 8dbf75e

File tree

1 file changed

+22
-4
lines changed

1 file changed

+22
-4
lines changed

backend/JBrowseDataSource.py

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,25 @@ def __init__(self,data_folder,trackData):
1818
self.__sublistIndex = trackData['sublistIndex']
1919
self.__lazyIndex = trackData['lazyIndex']
2020
self.__lazyFeatureFile = self.__data_folder + '/' + re.sub('{chunk}','%s',trackData['lazyfeatureUrlTemplate'])
21+
self.__histogramFile = self.__data_folder + '/' + re.sub('{chunk}','%s',trackData['histogramMeta'][0]['arrayParams']['urlTemplate'])
22+
self._initHistogramData()
2123

24+
25+
def _initHistogramData(self):
26+
self.histogramData = []
27+
fp = open((self.__histogramFile % 0),'r')
28+
self.histogramData = simplejson.load(fp)
29+
fp.close()
30+
2231
def getGenes(self,start,end,getFeatures=True):
2332
genes = []
2433
genes = self._getGenesFromNCList(self.__featureNCList,start, end,getFeatures,genes)
2534
return genes
2635

36+
37+
def getGeneHistogram(self):
38+
return self.histogramData
39+
2740
def _getGenesFromNCList(self,nclist,start,end,getFeatures = True,genes = []):
2841
length = len(nclist)
2942
i = self._binary_search(nclist,start)
@@ -81,21 +94,26 @@ def __init__(self,jbrowse_tracks_folder,track_key):
8194
self.__genenametree = GeneNameTree(jbrowse_tracks_folder)
8295
dirList=os.listdir(self.__jbrowse_tracks_folder+"/data/tracks/")
8396
for fname in dirList:
84-
self.__initChromocomeSources(fname)
97+
self.__initChromosomeSources(fname)
8598

8699
def getGenes(self,chromosome,start,end,getFeatures=True):
87100
if chromosome not in self.__chromosomeSources:
88101
raise Exception('Chromosome Data-Source %s not found' % chromosome)
89102
genes = self.__chromosomeSources[chromosome].getGenes(start,end,getFeatures)
90103
return genes
91104

105+
def getGeneHistogram(self,chromosome):
106+
if chromosome not in self.__chromosomeSources:
107+
raise Exception('Chromosome Data-Source %s not found' % chromosome)
108+
data = self.__chromosomeSources[chromosome].getGeneHistogram()
109+
return int(self.trackData['histogramMeta'][0]['basesPerBin']),data
92110

93-
def __initChromocomeSources(self,fname):
111+
def __initChromosomeSources(self,fname):
94112
track_folder = self.__getChromosomeTrackFolder(fname)
95113
fp = open(track_folder+'trackData.json')
96-
trackData = simplejson.load(fp)
114+
self.trackData = simplejson.load(fp)
97115
fp.close()
98-
self.__chromosomeSources[fname] = ChromosomeData(track_folder,trackData)
116+
self.__chromosomeSources[fname] = ChromosomeData(track_folder,self.trackData)
99117

100118
def __getChromosomeTrackFolder(self,chromosome):
101119
return self.__jbrowse_tracks_folder + '/data/tracks/%s/%s/' % (chromosome,self.__track_key)

0 commit comments

Comments
 (0)