#!/usr/bin/env python from math import exp import logging from scipy.stats import binom_test debug = logging.debug def binomial(n, p): #calculate the expected maximum number of replicated reads at a single position x = 1 pvalue = 0 while (binom_test(x,n,p) > 0.00001): x = x + 1 if x >1: x= x - 1 return x def median(list): '''Will return the median of the list of numbers ''' list.sort() if len(list) % 2 == 0: med = (list[int(len(list)/2)]+list[int(len(list)/2-1)])/2 else: med = list[int((len(list)-1)/2)] return med def erfcc(x): """Complementary error function.""" z = abs(x) t = 1. / (1. + 0.5*z) r = t * exp(-z*z-1.26551223+t*(1.00002368+t*(.37409196+ t*(.09678418+t*(-.18628806+t*(.27886807+ t*(-1.13520398+t*(1.48851587+t*(-.82215223+ t*.17087277))))))))) if (x >= 0.): return r else: return 2. - r def ncdf(x): return 1. - 0.5*erfcc(x/(2**0.5))