gwaslab 3.4.15__py3-none-any.whl → 3.4.16__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of gwaslab might be problematic. Click here for more details.

gwaslab/__init__.py CHANGED
@@ -32,4 +32,6 @@ from gwaslab.download import update_record
32
32
  from gwaslab.to_pickle import dump_pickle
33
33
  from gwaslab.to_pickle import load_pickle
34
34
  from gwaslab.config import options
35
- from gwaslab.version import _show_version as show_version
35
+ from gwaslab.version import _show_version as show_version
36
+ from gwaslab.calculate_power import get_power
37
+ from gwaslab.calculate_power import get_beta
@@ -1,47 +1,124 @@
1
- def get_power(genotype_or=1.3 ,
1
+ import pandas as pd
2
+ import numpy as np
3
+ import scipy.stats as ss
4
+ from gwaslab.Log import Log
5
+ import scipy as sp
6
+
7
+ def get_power(
8
+ mode="b",
9
+ t=0,
10
+ genotype_or=1.3 ,
11
+ beta=0.3,
12
+ eaf=0.1,
13
+ n=10000,
2
14
  scase= 2000,
3
15
  scontrol= 15000,
4
16
  prevalence= 0.15,
5
17
  daf = 0.2,
6
- sig_level= 5e-8
18
+ sig_level= 5e-8,
19
+ vary=1,
20
+ log=Log(),
21
+ verbose=True
7
22
  ):
8
- print("Input settings:{}".format(daf))
9
- print(" -Number of cases:{}".format(scase))
10
- print(" -Number of controls:{}".format(scontrol))
11
- print(" -Risk allele OR:{:.3f}".format(genotype_or))
12
- print(" -Disease prevalence:{:.3f}".format(prevalence))
13
- print(" -Risk allele frequency: {:.3f}".format(daf))
14
- print(" -Significance level: {:.3e}".format(sig_level))
15
- # Skol, A. D., Scott, L. J., Abecasis, G. R., & Boehnke, M. (2006). Joint analysis is more efficient than replication-based analysis for two-stage genome-wide association studies. Nature genetics, 38(2), 209-213.
16
- aaf = daf**2
17
- abf = 2 * (daf) * (1 - daf)
18
- bbf = (1- daf)**2
19
-
20
- # additive
21
- x = [ 2*genotype_or-1, genotype_or, 1 ]
22
-
23
- aap= x[0] * prevalence / (x[0]*aaf + x[1]*abf + x[2]*bbf)
24
- abp= x[1] * prevalence / (x[0]*aaf + x[1]*abf + x[2]*bbf)
25
- bbp= x[2] * prevalence / (x[0]*aaf + x[1]*abf + x[2]*bbf)
26
- print("Probability of disease :")
27
- print(" - Individuals with AA genotype: {:.3f}".format(aap))
28
- print(" - Individuals with AB genotype: {:.3f}".format(abp))
29
- print(" - Individuals with BB genotype: {:.3f}".format(bbp))
30
-
31
- pcase= (aap * aaf + abp * abf*0.5) / prevalence
32
- pcontrol=((1-aap )* aaf + (1-abp )* abf*0.5) / (1 - prevalence)
33
-
34
- vcase = pcase *(1-pcase)
35
- vcontrol =pcontrol *(1-pcontrol)
36
- print("Expected risk allele frequency:")
37
- print(" - In cases: {:.3f}".format(pcase))
38
- print(" - In controls: {:.3f}".format(pcontrol))
39
-
40
- num= (pcase - pcontrol)
41
- den= np.sqrt( (vcase/scase + vcontrol/scontrol)*0.5 )
42
- u = num / den
43
-
44
- c = ss.norm.isf(sig_level/2)
45
- power = 1 - ss.norm.cdf(c-u) + ss.norm.cdf(-c-u)
46
- print("Expected power: {:.3f}".format(power))
47
- return power
23
+ if mode=="b":
24
+ print("Input settings:{}".format(daf))
25
+ print(" -Number of cases:{}".format(scase))
26
+ print(" -Number of controls:{}".format(scontrol))
27
+ print(" -Risk allele OR:{:.3f}".format(genotype_or))
28
+ print(" -Disease prevalence:{:.3f}".format(prevalence))
29
+ print(" -Risk allele frequency: {:.3f}".format(daf))
30
+ print(" -Significance level: {:.3e}".format(sig_level))
31
+ # Skol, A. D., Scott, L. J., Abecasis, G. R., & Boehnke, M. (2006). Joint analysis is more efficient than replication-based analysis for two-stage genome-wide association studies. Nature genetics, 38(2), 209-213.
32
+ aaf = daf**2
33
+ abf = 2 * (daf) * (1 - daf)
34
+ bbf = (1- daf)**2
35
+
36
+ # additive
37
+ x = [ 2*genotype_or-1, genotype_or, 1 ]
38
+
39
+ aap= x[0] * prevalence / (x[0]*aaf + x[1]*abf + x[2]*bbf)
40
+ abp= x[1] * prevalence / (x[0]*aaf + x[1]*abf + x[2]*bbf)
41
+ bbp= x[2] * prevalence / (x[0]*aaf + x[1]*abf + x[2]*bbf)
42
+ print("Probability of disease :")
43
+ print(" - Individuals with AA genotype: {:.3f}".format(aap))
44
+ print(" - Individuals with AB genotype: {:.3f}".format(abp))
45
+ print(" - Individuals with BB genotype: {:.3f}".format(bbp))
46
+
47
+ pcase= (aap * aaf + abp * abf*0.5) / prevalence
48
+ pcontrol=((1-aap )* aaf + (1-abp )* abf*0.5) / (1 - prevalence)
49
+
50
+ vcase = pcase *(1-pcase)
51
+ vcontrol =pcontrol *(1-pcontrol)
52
+ print("Expected risk allele frequency:")
53
+ print(" - In cases: {:.3f}".format(pcase))
54
+ print(" - In controls: {:.3f}".format(pcontrol))
55
+
56
+ num= (pcase - pcontrol)
57
+ den= np.sqrt( (vcase/scase + vcontrol/scontrol)*0.5 )
58
+ u = num / den
59
+
60
+ c = ss.norm.isf(sig_level/2)
61
+ power = 1 - ss.norm.cdf(c-u) + ss.norm.cdf(-c-u)
62
+ print("Expected power: {:.3f}".format(power))
63
+
64
+ elif mode=="q":
65
+ if verbose:
66
+ log.write("Significance level: {}".format(sig_level))
67
+ log.write("EAF: {}".format(eaf))
68
+ log.write("BETA: {}".format(beta))
69
+ log.write("N: {}".format(n))
70
+ log.write("H2: {}".format(2*eaf*(1-eaf)*(beta**2)))
71
+ c = ss.chi2.isf(sig_level/2,df=1)
72
+ NCP = n * 2*eaf*(1-eaf)*(beta**2)/vary
73
+ power = 1 - ss.ncx2.cdf(c,df=1,nc=NCP)
74
+
75
+ return power
76
+
77
+ def get_beta(
78
+ mode="b",
79
+ t=0,
80
+ genotype_or=1.3 ,
81
+ eaf=0.1,
82
+ n=10000,
83
+ scase= 2000,
84
+ scontrol= 15000,
85
+ prevalence= 0.15,
86
+ daf = 0.2,
87
+ sig_level= 5e-8,
88
+ vary=1,
89
+ log=Log(),
90
+ verbose=True,
91
+ n_matrix=500
92
+ ):
93
+ if mode=="q":
94
+ if t >0:
95
+ def calculate_power_single(
96
+ beta,
97
+ eaf,
98
+ n,
99
+ t,
100
+ sig_level=5e-8,vary=1):
101
+
102
+ c = ss.chi2.isf(sig_level/2,df=1)
103
+ h2 = 2*eaf*(1-eaf)*(beta**2)
104
+ NCP = n * h2/vary
105
+ power = 1 - ss.ncx2.cdf(c,df=1,nc=NCP)
106
+ return power
107
+
108
+ matrix = np.zeros((n_matrix,n_matrix),dtype=float)
109
+ eafs = np.linspace(0.5,0.0001,n_matrix)
110
+ betas = np.linspace(0.0001,10,n_matrix)
111
+
112
+ for i in range(n_matrix):
113
+ matrix[i,] = calculate_power_single(beta=betas,eaf=eafs[i],n=n,t=t)
114
+
115
+
116
+ i,j=1,1
117
+ eaf_beta = []
118
+ while i<n_matrix-1 and j<n_matrix-1:
119
+ if matrix[i,j] < t:
120
+ j+=1
121
+ else:
122
+ i+=1
123
+ eaf_beta.append((eafs[i],betas[j]))
124
+ return pd.DataFrame(eaf_beta)
gwaslab/mqqplot.py CHANGED
@@ -322,7 +322,7 @@ def mqqplot(insumstats,
322
322
 
323
323
  # CHR and POS ########################################################################
324
324
  # chrom and pos exists && (m || r mode)
325
- if (chrom is not None) and (pos is not None) and (("m" in mode) or ("r" in mode)):
325
+ if (chrom is not None) and (pos is not None) and (("qq" in mode) or ("m" in mode) or ("r" in mode)):
326
326
  # when manhattan plot, chrom and pos is needed.
327
327
  if chrom in insumstats.columns:
328
328
  usecols.append(chrom)
gwaslab/trumpetplot.py ADDED
File without changes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: gwaslab
3
- Version: 3.4.15
3
+ Version: 3.4.16
4
4
  Summary: A collection of handy tools for GWAS SumStats
5
5
  Author-email: Yunye <yunye@gwaslab.com>
6
6
  Project-URL: Homepage, https://cloufield.github.io/gwaslab/
@@ -45,7 +45,7 @@ Note: GWASLab is being updated very frequently for now. I will release the first
45
45
  ## Install
46
46
 
47
47
  ```
48
- pip install gwaslab==3.4.14
48
+ pip install gwaslab==3.4.15
49
49
  ```
50
50
 
51
51
 
@@ -3,11 +3,11 @@ gwaslab/Log.py,sha256=ILl6fPs_zZBlS2j1eZtgvWE2HGzON5EYDEGb6GZWzs8,758
3
3
  gwaslab/Phenotypes.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  gwaslab/Sumstats.py,sha256=f-8yAZiktiQxv-nokoJTUGEBlpxTuWspwu-DZ65XzPc,27929
5
5
  gwaslab/Sumstatssummary.py,sha256=Q69702tABxTVk6QIbqQ4k6eSujhXr_MVVQ5saOdEhlk,6367
6
- gwaslab/__init__.py,sha256=w388QRh8ikkBp3pYwUod85Q6zMC7WrmkwIUTA873uQM,1578
6
+ gwaslab/__init__.py,sha256=NIYPYIYZxqoq06D_yoDnFKjfiguRvBmnk1ojygnaoy4,1669
7
7
  gwaslab/annotategenename.py,sha256=SKvvH50jXKGdAy-kPxlFuUkk0q6blDJbeXf4uZjZu1A,1249
8
8
  gwaslab/annotateplot.py,sha256=eXo5Qn6rK1f9GX5XqzACPYKoUdoverKRukbbiO60rkE,30261
9
9
  gwaslab/calculate_gc.py,sha256=7eJlKzX3TdiBWS8kpAkQe1wbui50ge2cmZgyloyQbJI,2159
10
- gwaslab/calculate_power.py,sha256=2Id09sB7wtUAezaCF0RToACh2tNvjB4x76w-kuzfudA,1937
10
+ gwaslab/calculate_power.py,sha256=OYychyTqBWR0KbNWyRz6sxNxMaMXETtLrdkXPpuo7zE,4400
11
11
  gwaslab/compare_effect.py,sha256=Gl43HqkoXXTDWAT1GNGY0scEc9OdgnsKmzIiWqPAi8I,45945
12
12
  gwaslab/config.py,sha256=TP-r-DPhJD3XnRYZbw9bQHXaDIkiRgK8bG9HCt-UaLc,580
13
13
  gwaslab/download.py,sha256=vMWB3yY_SSMGjGWLXd0kvKI8lms3si3LJO8zaq7Hw5A,15067
@@ -22,7 +22,7 @@ gwaslab/h2_conversion.py,sha256=79Kc0o1Ik4PsRgS01Loc6wT0uaczpWoZDJ2nSq2_bvI,2377
22
22
  gwaslab/meta.py,sha256=kIDfLSC2TFidCX_yJdNk2ITfBhWtfrd2J-Q2a_FODns,2191
23
23
  gwaslab/metaanalysis.py,sha256=MuFaxzj9vnebut4pWUg29pGxMcPzWcqbEm3q7t-BUpQ,6770
24
24
  gwaslab/miamiplot.py,sha256=A0BFw_hDH9EGasebw9rbgcnugvrrW3TESMYSTVF8H6Q,26245
25
- gwaslab/mqqplot.py,sha256=WK2e3u_-DRSDkLN2Yp8F_Az5SuRAoxzc6Am-i8feahQ,41328
25
+ gwaslab/mqqplot.py,sha256=KWHQZ6ZSB7ty3wYap0nj47-OdfuS6QkyRyH0wiLO9gw,41346
26
26
  gwaslab/plotrg.py,sha256=X7_45qiDdbv06xjdpcS3W6K55unnsD5Yvp-M68OCObg,13544
27
27
  gwaslab/preformat_input.py,sha256=5e83HENakrR7bwI6O2iGNh-RBGA_D9V_dkry38PAaKU,17944
28
28
  gwaslab/processdata.py,sha256=hJQNkrR4IOLw1pZK_OA1v1iNwOmhvlCW9meGnpP5vfU,573
@@ -35,6 +35,7 @@ gwaslab/rsID2chrpos.py,sha256=-pKhY654zS4uULW7FP4yGHNy3e9Wc2ujc1VLBaoUO5A,6564
35
35
  gwaslab/textreposition.py,sha256=yHoWhQPfSKVfEjlqPAs6wexRz3EfGhqfP7e6WeqO0xM,2485
36
36
  gwaslab/to_formats.py,sha256=LDpYJjQj2gmvgVYXVcHwvqWgsC68hbWOVHepiEb9YEc,20357
37
37
  gwaslab/to_pickle.py,sha256=OOoLXiC0Wemyb7jwyeUNU7xMJTAOUT2XDXrd-sxUFFg,1175
38
+ gwaslab/trumpetplot.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
39
  gwaslab/vchangestatus.py,sha256=id3oUsnMrZth7E-jTQHUfNx2UE0b1ABLO9ajbuTMcjY,1527
39
40
  gwaslab/version.py,sha256=JQUDzBC67HUiB7dZaEpDZDRqNGRDkMUgxDUmOSytvcA,386
40
41
  gwaslab/winnerscurse.py,sha256=o7CjUwLp4B_60yrntV76ESNaoPcl-HPOzSw9cYWzpW4,2050
@@ -46,8 +47,8 @@ gwaslab/data/hapmap3_SNPs/hapmap3_db150_hg19.snplist.gz,sha256=qD9RsC5S2h6l-OdpW
46
47
  gwaslab/data/hapmap3_SNPs/hapmap3_db151_hg38.snplist.gz,sha256=Y8ZT2FIAhbhlgCJdE9qQVAiwnV_fcsPt72usBa7RSBM,10225828
47
48
  gwaslab/data/high_ld/high_ld_hla_hg19.bed.gz,sha256=R7IkssKu0L4WwkU9SrS84xCMdrkkKL0gnTNO_OKbG0Y,219
48
49
  gwaslab/data/high_ld/high_ld_hla_hg38.bed.gz,sha256=76CIU0pibDJ72Y6UY-TbIKE9gEPwTELAaIbCXyjm80Q,470
49
- gwaslab-3.4.15.dist-info/LICENSE,sha256=GhLOU_1UDEKeOacYhsRN_m9u-eIuVTazSndZPeNcTZA,1066
50
- gwaslab-3.4.15.dist-info/METADATA,sha256=H3fPWUSP8Lj4dUlmkMPQjcMW5IY2cvbCCPCkgwZngbo,6350
51
- gwaslab-3.4.15.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
52
- gwaslab-3.4.15.dist-info/top_level.txt,sha256=PyY6hWtrALpv2MAN3kjkIAzJNmmBTH5a2risz9KwH08,8
53
- gwaslab-3.4.15.dist-info/RECORD,,
50
+ gwaslab-3.4.16.dist-info/LICENSE,sha256=GhLOU_1UDEKeOacYhsRN_m9u-eIuVTazSndZPeNcTZA,1066
51
+ gwaslab-3.4.16.dist-info/METADATA,sha256=py8Go066oH_HpLAoipmirmc3w5QNtJwToJT68zvhp-I,6350
52
+ gwaslab-3.4.16.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
53
+ gwaslab-3.4.16.dist-info/top_level.txt,sha256=PyY6hWtrALpv2MAN3kjkIAzJNmmBTH5a2risz9KwH08,8
54
+ gwaslab-3.4.16.dist-info/RECORD,,