diff options
author | Zachary Sloan | 2014-07-18 17:31:41 +0000 |
---|---|---|
committer | Zachary Sloan | 2014-07-18 17:31:41 +0000 |
commit | 8c45fcf1e9228108034fab96bc7e7eaa7740f06c (patch) | |
tree | 679680c80d2b3d9f24f16741b17a09c8823d8af6 /wqflask/utility/webqtlUtil.py | |
parent | 8646d5fabd5e87f189f1429d71a872f8da80ba8c (diff) | |
download | genenetwork2-8c45fcf1e9228108034fab96bc7e7eaa7740f06c.tar.gz |
Added outlier highlighting
Changed order of tabs in statistics panel on trait page
Started working on heatmap
Diffstat (limited to 'wqflask/utility/webqtlUtil.py')
-rwxr-xr-x | wqflask/utility/webqtlUtil.py | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/wqflask/utility/webqtlUtil.py b/wqflask/utility/webqtlUtil.py index 99451e33..4d7981d9 100755 --- a/wqflask/utility/webqtlUtil.py +++ b/wqflask/utility/webqtlUtil.py @@ -89,6 +89,70 @@ PROGRESSBAR = HT.Image('/images/waitAnima2.gif', alt='checkblue',align="middle", # Accessory Functions ######################################### +def inverseCumul(p): + #Coefficients in rational approximations. + a = [-3.969683028665376e+01,2.209460984245205e+02,-2.759285104469687e+02,1.383577518672690e+02,-3.066479806614716e+01,2.506628277459239e+00] + + b = [-5.447609879822406e+01,1.615858368580409e+02,-1.556989798598866e+02,6.680131188771972e+01,-1.328068155288572e+01] + + c = [-7.784894002430293e-03,-3.223964580411365e-01,-2.400758277161838e+00,-2.549732539343734e+00,4.374664141464968e+00,2.938163982698783e+00] + + d = [7.784695709041462e-03,3.224671290700398e-01,2.445134137142996e+00,3.754408661907416e+00] + + #Define break-points. + + p_low = 0.02425 + p_high = 1 - p_low + + #Rational approximation for lower region. + + if p > 0 and p < p_low: + q = sqrt(-2*log(p)) + x = (((((c[0]*q+c[1])*q+c[2])*q+c[3])*q+c[4])*q+c[5]) / ((((d[0]*q+d[1])*q+d[2])*q+d[3])*q+1) + + + #Rational approximation for central region. + + elif p>= p_low and p <= p_high: + q = p - 0.5 + r = q*q + x = (((((a[0]*r+a[1])*r+a[2])*r+a[3])*r+a[4])*r+a[5])*q /(((((b[0]*r+b[1])*r+b[2])*r+b[3])*r+b[4])*r+1) + + #Rational approximation for upper region. + + elif p>p_high and p < 1: + q = sqrt(-2*log(1-p)) + x = -(((((c[0]*q+c[1])*q+c[2])*q+c[3])*q+c[4])*q+c[5]) /((((d[0]*q+d[1])*q+d[2])*q+d[3])*q+1) + + else: + return None + + if p>0 and p < 1: + e = 0.5 * erfcc(-x/sqrt(2)) - p + u = e * sqrt(2*pi) * exp(x*x/2) + x = x - u/(1 + x*u/2) + return x + else: + return None + +def erfcc(x): + z=abs(x) + t=1.0/(1.0+0.5*z) + ans=t*exp(-z*z-1.26551223+t*(1.00002368+t*(0.37409196+t*(0.09678418+t*(-0.18628806+t*(0.27886807+t*(-1.13520398+t*(1.48851587+t*(-0.82215223+t*0.17087277))))))))) + if x>=0.0: + return ans + else: + return 2.0-ans + +def U(n): + x=pow(0.5,1.0/n) + m=[1-x] + for i in range(2,n): + a=(i-0.3175)/(n+0.365) + m.append(a) + m.append(x) + return m + def decodeEscape(str): a = str pattern = re.compile('(%[0-9A-Fa-f][0-9A-Fa-f])') |