Example #1
0
def SimulateStats(winSize):
    snpposits = LoadSnpPositions()
    maxcount = 200
    countsList =[[] for i in range(maxcount)]
    for simnr in range(100000):#!!! should be at least 10000
        print('Simulation {0}'.format(simnr))
        simevents = SimulateEvents(snpposits)
        #print('Simulated total events: {0}'.format(len(simevents['posits'])))
        rs = CalcIt(simevents,winSize)
        #print(str(rs['sizecountscumul']))
        sizecountscumul = rs['sizecountscumul']
        for nr in range(maxcount):
            if nr<len(sizecountscumul):
                countsList[nr].append(sizecountscumul[nr])
            else:
                countsList[nr].append(0)
    rs = []
    for nr in range(len(countsList)):
        vals={}
        samples = sorted(countsList[nr])
        vals['average'] = sum(samples)*1.0/len(samples)
        vals['median'] = DQXMathUtils.quantile(samples,0.5,7,True)
        vals['q95'] = DQXMathUtils.quantile(samples,0.95,7,True)
        vals['q99'] = DQXMathUtils.quantile(samples,0.99,7,True)
        vals['q999'] = DQXMathUtils.quantile(samples,0.999,7,True)
        rs.append(vals)
    return rs
Example #2
0
 def calcSummary(self, list):
     sortfloatlist = list.GetSortedFloatList()
     if len(sortfloatlist) == 0:
         return None
     return DQXMathUtils.quantile(sortfloatlist, self.frac, 7, True)
Example #3
0
 def getQuantile(self, idx, fraction):
     if not (self.needQuantiles):
         raise Exception("Quantiles are not being calculated")
     if (fraction < 0) or (fraction > 1):
         raise Exception("Invalid quantile fraction")
     return DQXMathUtils.quantile(self.dataList[idx], fraction)