+def getGeneStats(genome, gid, minDistance, featureList, sense):
+ geneLength = minDistance
+ if sense == "F":
+ nextGene = genome.rightGeneDistance((genome.genome, gid), geneLength * 2)
+ geneStart = featureList[-1][1]
+ else:
+ nextGene = genome.leftGeneDistance((genome.genome, gid), geneLength * 2)
+ geneStart = max(featureList[0][0] - geneLength, 0)
+
+ if nextGene < geneLength * 2:
+ geneLength = nextGene / 2
+
+ geneLength = max(geneLength, 1)
+
+ return geneStart, geneLength
+
+
+def getBinList(readList, standardMinDist, geneStart, geneLength, sense):
+ tagCount = 0
+ bins = 10
+ standardMinThresh = standardMinDist / bins
+ binList = [0.] * bins
+ for read in readList:
+ tagStart = read["start"]
+ if tagStart >= geneLength:
+ break
+
+ tagStart -= geneStart
+ weight = read["weight"]
+ if tagStart > 0:
+ tagCount += weight
+ if sense == "F":
+ # we are relying on python's integer division quirk
+ binID = tagStart / standardMinThresh
+ else:
+ rdist = geneLength - tagStart
+ binID = rdist / standardMinThresh
+
+ binList[binID] += weight
+
+ return binList, tagCount