about summary refs log tree commit diff
path: root/wqflask/utility/webqtlUtil.py
diff options
context:
space:
mode:
authorZachary Sloan2014-07-18 17:31:41 +0000
committerZachary Sloan2014-07-18 17:31:41 +0000
commit8c45fcf1e9228108034fab96bc7e7eaa7740f06c (patch)
tree679680c80d2b3d9f24f16741b17a09c8823d8af6 /wqflask/utility/webqtlUtil.py
parent8646d5fabd5e87f189f1429d71a872f8da80ba8c (diff)
downloadgenenetwork2-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-xwqflask/utility/webqtlUtil.py64
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])')