gwaslab 3.6.9__tar.gz → 3.6.10__tar.gz
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-3.6.9/src/gwaslab.egg-info → gwaslab-3.6.10}/PKG-INFO +1 -1
- {gwaslab-3.6.9 → gwaslab-3.6.10}/pyproject.toml +1 -1
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/g_Log.py +13 -1
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/g_Sumstats.py +7 -1
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/g_version.py +2 -2
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/util/util_in_calculate_power.py +19 -14
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/viz/viz_plot_associations.py +2 -2
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/viz/viz_plot_mqqplot.py +1 -1
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/viz/viz_plot_trumpetplot.py +45 -8
- {gwaslab-3.6.9 → gwaslab-3.6.10/src/gwaslab.egg-info}/PKG-INFO +1 -1
- {gwaslab-3.6.9 → gwaslab-3.6.10}/LICENSE +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/LICENSE_before_v3.4.39 +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/README.md +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/setup.cfg +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/__init__.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/bd/bd_common_data.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/bd/bd_config.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/bd/bd_download.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/bd/bd_get_hapmap3.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/bd/bd_path_manager.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/cache_manager.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/data/chrx_par/chrx_par_hg19.bed.gz +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/data/chrx_par/chrx_par_hg38.bed.gz +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/data/formatbook.json +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/data/hapmap3_SNPs/hapmap3_db150_hg19.snplist.gz +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/data/hapmap3_SNPs/hapmap3_db151_hg38.snplist.gz +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/data/high_ld/high_ld_hla_hg19.bed.gz +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/data/high_ld/high_ld_hla_hg38.bed.gz +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/data/reference.json +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/extension/ldsc/ldsc_irwls.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/extension/ldsc/ldsc_jackknife.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/extension/ldsc/ldsc_ldscore.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/extension/ldsc/ldsc_parse.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/extension/ldsc/ldsc_regressions.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/extension/ldsc/ldsc_sumstats.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/extension/prscs/prscs_gigrnd.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/extension/prscs/prscs_mcmc_gtb.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/extension/prscs/prscs_parse_genet.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/g_Phenotypes.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/g_SumstatsMulti.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/g_SumstatsPair.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/g_SumstatsSet.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/g_SumstatsT.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/g_Sumstats_polars.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/g_Sumstats_summary.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/g_headers.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/g_meta.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/g_meta_update.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/g_vchange_status.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/g_vchange_status_polars.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/hm/hm_casting.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/hm/hm_casting_polars.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/hm/hm_harmonize_sumstats.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/hm/hm_rsid_to_chrpos.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/io/io_load_ld.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/io/io_preformat_input.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/io/io_preformat_input_polars.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/io/io_process_args.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/io/io_read_ldsc.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/io/io_read_pipcs.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/io/io_read_tabular.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/io/io_to_formats.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/io/io_to_pickle.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/qc/qc_build.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/qc/qc_check_datatype.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/qc/qc_check_datatype_polars.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/qc/qc_fix_sumstats.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/qc/qc_fix_sumstats_polars.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/run_script.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/util/util_abf_finemapping.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/util/util_ex_calculate_ldmatrix.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/util/util_ex_calculate_prs.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/util/util_ex_gwascatalog.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/util/util_ex_infer_ancestry.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/util/util_ex_ldproxyfinder.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/util/util_ex_ldsc.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/util/util_ex_match_ldmatrix.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/util/util_ex_phewwas.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/util/util_ex_plink_filter.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/util/util_ex_process_h5.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/util/util_ex_process_ref.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/util/util_ex_run_2samplemr.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/util/util_ex_run_ccgwas.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/util/util_ex_run_clumping.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/util/util_ex_run_coloc.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/util/util_ex_run_hyprcoloc.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/util/util_ex_run_magma.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/util/util_ex_run_mesusie.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/util/util_ex_run_mtag.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/util/util_ex_run_prscs.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/util/util_ex_run_scdrs.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/util/util_ex_run_susie.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/util/util_in_calculate_gc.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/util/util_in_convert_h2.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/util/util_in_correct_winnerscurse.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/util/util_in_estimate_ess.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/util/util_in_fill_data.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/util/util_in_filter_value.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/util/util_in_get_density.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/util/util_in_get_sig.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/util/util_in_merge.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/util/util_in_meta.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/util/util_in_meta_polars.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/util/util_in_snphwe.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/viz/viz_aux_annotate_plot.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/viz/viz_aux_chromatin.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/viz/viz_aux_property.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/viz/viz_aux_quickfix.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/viz/viz_aux_reposition_text.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/viz/viz_aux_save_figure.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/viz/viz_plot_compare_af.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/viz/viz_plot_compare_effect.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/viz/viz_plot_credible_sets.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/viz/viz_plot_effect.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/viz/viz_plot_forestplot.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/viz/viz_plot_miamiplot.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/viz/viz_plot_miamiplot2.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/viz/viz_plot_phe_heatmap.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/viz/viz_plot_qqplot.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/viz/viz_plot_regional2.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/viz/viz_plot_regionalplot.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/viz/viz_plot_rg_heatmap.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/viz/viz_plot_scatter_with_reg.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/viz/viz_plot_stackedregional.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/viz/viz_plot_template.py +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab.egg-info/SOURCES.txt +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab.egg-info/dependency_links.txt +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab.egg-info/requires.txt +0 -0
- {gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab.egg-info/top_level.txt +0 -0
|
@@ -31,4 +31,16 @@ class Log():
|
|
|
31
31
|
self.log_text = self.log_text + str(time.strftime('%Y/%m/%d %H:%M:%S')) + " " + " ".join(map(str,message)) + end
|
|
32
32
|
else:
|
|
33
33
|
if verbose: print(*message,end=end)
|
|
34
|
-
self.log_text = self.log_text + " ".join(map(str,message)) + end
|
|
34
|
+
self.log_text = self.log_text + " ".join(map(str,message)) + end
|
|
35
|
+
|
|
36
|
+
def get_log_for_last_operation(self):
|
|
37
|
+
last_log = []
|
|
38
|
+
rows = self.log_text.strip().split("\n")
|
|
39
|
+
|
|
40
|
+
# Iterate backwards to find the last operation
|
|
41
|
+
for line in reversed(rows):
|
|
42
|
+
last_log.append(line)
|
|
43
|
+
if "Start to" in line:
|
|
44
|
+
break
|
|
45
|
+
|
|
46
|
+
return "".join(reversed(last_log))
|
|
@@ -112,6 +112,7 @@ from gwaslab.io.io_to_pickle import _reload
|
|
|
112
112
|
|
|
113
113
|
#20220309
|
|
114
114
|
class Sumstats():
|
|
115
|
+
|
|
115
116
|
def __init__(self,
|
|
116
117
|
sumstats=None,
|
|
117
118
|
fmt=None,
|
|
@@ -274,6 +275,10 @@ class Sumstats():
|
|
|
274
275
|
self.id = id(self)
|
|
275
276
|
self.tmp_path = _path(pid=self.id, log = self.log, verbose=verbose)
|
|
276
277
|
|
|
278
|
+
def __getitem__(self, index):
|
|
279
|
+
return self.data[index]
|
|
280
|
+
def __len__(self):
|
|
281
|
+
return len(self.data)
|
|
277
282
|
#### healper #################################################################################
|
|
278
283
|
def update_meta(self, **kwargs):
|
|
279
284
|
self.meta = _update_meta(self.meta, self.data,log = self.log, **kwargs)
|
|
@@ -695,7 +700,8 @@ class Sumstats():
|
|
|
695
700
|
return fig, outliers
|
|
696
701
|
|
|
697
702
|
def infer_ancestry(self, **kwargs):
|
|
698
|
-
self.meta["gwaslab"]["inferred_ancestry"] = _infer_ancestry(self.data,
|
|
703
|
+
self.meta["gwaslab"]["inferred_ancestry"] = _infer_ancestry(self.data, log=self.log,
|
|
704
|
+
**kwargs)
|
|
699
705
|
|
|
700
706
|
def plot_gwheatmap(self, **kwargs):
|
|
701
707
|
fig = _gwheatmap(self.data, **kwargs)
|
|
@@ -27,17 +27,19 @@ def get_power(
|
|
|
27
27
|
log.write(" -Number of cases:{}".format(ncase), verbose=verbose)
|
|
28
28
|
log.write(" -Number of controls:{}".format(ncontrol), verbose=verbose)
|
|
29
29
|
if genotype_rr is not None:
|
|
30
|
-
log.write(" -Risk allele RR:{
|
|
30
|
+
log.write(" -Risk allele RR:{}".format(genotype_rr), verbose=verbose)
|
|
31
31
|
elif genotype_or is not None:
|
|
32
|
-
log.write(" -Risk allele OR:{
|
|
32
|
+
log.write(" -Risk allele OR:{}".format(genotype_or), verbose=verbose)
|
|
33
33
|
elif beta is not None:
|
|
34
|
-
log.write(" -Risk allele beta:{
|
|
34
|
+
log.write(" -Risk allele beta:{}".format(beta), verbose=verbose)
|
|
35
35
|
else:
|
|
36
36
|
genotype_rr = 0.1
|
|
37
|
-
log.write(" -Risk allele RR:{
|
|
38
|
-
|
|
39
|
-
log.write(" -
|
|
40
|
-
log.write(" -
|
|
37
|
+
log.write(" -Risk allele RR:{}".format(genotype_rr), verbose=verbose)
|
|
38
|
+
|
|
39
|
+
log.write(" -Disease prevalence:{}".format(prevalence), verbose=verbose)
|
|
40
|
+
log.write(" -Risk allele frequency: {}".format(daf), verbose=verbose)
|
|
41
|
+
log.write(" -Significance level: {}".format(sig_level), verbose=verbose)
|
|
42
|
+
|
|
41
43
|
# 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.
|
|
42
44
|
aaf = daf**2
|
|
43
45
|
abf = 2 * (daf) * (1 - daf)
|
|
@@ -68,9 +70,9 @@ def get_power(
|
|
|
68
70
|
abp= x[1] * prevalence / (x[0]*aaf + x[1]*abf + x[2]*bbf)
|
|
69
71
|
bbp= x[2] * prevalence / (x[0]*aaf + x[1]*abf + x[2]*bbf)
|
|
70
72
|
log.write("Probability of disease :", verbose=verbose)
|
|
71
|
-
log.write(" - Individuals with AA genotype: {
|
|
72
|
-
log.write(" - Individuals with AB genotype: {
|
|
73
|
-
log.write(" - Individuals with BB genotype: {
|
|
73
|
+
log.write(" - Individuals with AA genotype: {}".format(aap), verbose=verbose)
|
|
74
|
+
log.write(" - Individuals with AB genotype: {}".format(abp), verbose=verbose)
|
|
75
|
+
log.write(" - Individuals with BB genotype: {}".format(bbp), verbose=verbose)
|
|
74
76
|
|
|
75
77
|
pcase= (aap * aaf + abp * abf*0.5) / prevalence
|
|
76
78
|
pcontrol=((1-aap )* aaf + (1-abp )* abf*0.5) / (1 - prevalence)
|
|
@@ -78,16 +80,19 @@ def get_power(
|
|
|
78
80
|
vcase = pcase *(1-pcase)
|
|
79
81
|
vcontrol =pcontrol *(1-pcontrol)
|
|
80
82
|
log.write("Expected risk allele frequency:", verbose=verbose)
|
|
81
|
-
log.write(" - In cases: {
|
|
82
|
-
log.write(" - In controls: {
|
|
83
|
+
log.write(" - In cases: {}".format(pcase), verbose=verbose)
|
|
84
|
+
log.write(" - In controls: {}".format(pcontrol), verbose=verbose)
|
|
83
85
|
|
|
84
86
|
num= (pcase - pcontrol)
|
|
85
|
-
|
|
87
|
+
for_sqrt = (vcase/ncase + vcontrol/ncontrol)*0.5
|
|
88
|
+
if np.iterable(for_sqrt):
|
|
89
|
+
for_sqrt[for_sqrt < 0] = np.nan
|
|
90
|
+
den= np.sqrt( for_sqrt )
|
|
86
91
|
u = num / den
|
|
87
92
|
|
|
88
93
|
c = ss.norm.isf(sig_level/2)
|
|
89
94
|
power = 1 - ss.norm.cdf(c-u) + ss.norm.cdf(-c-u)
|
|
90
|
-
log.write("Expected power: {
|
|
95
|
+
log.write("Expected power: {}".format(power), verbose=verbose)
|
|
91
96
|
|
|
92
97
|
elif mode=="q":
|
|
93
98
|
if beta is None:
|
|
@@ -33,8 +33,8 @@ def _plot_associations(associations,
|
|
|
33
33
|
associations = associations.dropna(subset=[values])
|
|
34
34
|
log.write(f" -Keeping associations without NA in {values} :{len(associations)} ", verbose=verbose)
|
|
35
35
|
|
|
36
|
-
log.write(f" -Total number of unique variants for plotting :{associations[
|
|
37
|
-
log.write(f" -Total number of unique traits for plotting:{associations[
|
|
36
|
+
log.write(f" -Total number of unique variants for plotting :{associations['rsID'].nunique()} ", verbose=verbose)
|
|
37
|
+
log.write(f" -Total number of unique traits for plotting:{associations['GWASCATALOG_TRAIT'].nunique()} ", verbose=verbose)
|
|
38
38
|
|
|
39
39
|
matrix_beta = associations.pivot_table(index=['rsID','gene.geneName'],
|
|
40
40
|
columns='GWASCATALOG_TRAIT',
|
|
@@ -296,7 +296,7 @@ def mqqplot(insumstats,
|
|
|
296
296
|
region_ref.append(region_ref_second)
|
|
297
297
|
region_ref_index_dic = {value: index for index,value in enumerate(region_ref)}
|
|
298
298
|
|
|
299
|
-
taf =
|
|
299
|
+
taf = _update_arg(taf, [track_n,track_n_offset,track_fontsize_ratio,track_exon_ratio,track_text_offset])
|
|
300
300
|
region_marker_shapes = _update_arg(region_marker_shapes, ['o', '^','s','D','*','P','X','h','8'])
|
|
301
301
|
region_grid_line = _update_args(region_grid_line, {"linewidth": 2,"linestyle":"--"})
|
|
302
302
|
region_lead_grid_line = _update_args(region_lead_grid_line, {"alpha":0.5,"linewidth" : 2,"linestyle":"--","color":"#FF0000"})
|
|
@@ -170,10 +170,11 @@ def plottrumpet(mysumstats,
|
|
|
170
170
|
cols_to_use.append(chrom) if chrom not in cols_to_use else cols_to_use
|
|
171
171
|
|
|
172
172
|
if size != "ABS_BETA":
|
|
173
|
-
if size not in cols_to_use:
|
|
173
|
+
if size is not None and size not in cols_to_use:
|
|
174
174
|
cols_to_use.append(size)
|
|
175
175
|
if "hue" in scatter_args.keys():
|
|
176
|
-
|
|
176
|
+
if scatter_args["hue"] not in cols_to_use:
|
|
177
|
+
cols_to_use.append(scatter_args["hue"])
|
|
177
178
|
#filter by p #################################################################################################################
|
|
178
179
|
if p in mysumstats.columns:
|
|
179
180
|
sumstats = mysumstats.loc[mysumstats[p]< p_level,cols_to_use ].copy()
|
|
@@ -287,7 +288,10 @@ def plottrumpet(mysumstats,
|
|
|
287
288
|
sumstats["ABS_BETA"] = sumstats[beta].abs()
|
|
288
289
|
|
|
289
290
|
##################################################################################################
|
|
290
|
-
|
|
291
|
+
if size is None:
|
|
292
|
+
size_norm = None
|
|
293
|
+
else:
|
|
294
|
+
size_norm = (sumstats[size].min(), sumstats[size].max())
|
|
291
295
|
## if highlight ##################################################################################################
|
|
292
296
|
|
|
293
297
|
log.write(" -Creating scatter plot...", verbose=verbose)
|
|
@@ -389,15 +393,30 @@ def plottrumpet(mysumstats,
|
|
|
389
393
|
|
|
390
394
|
#second_legend = ax.legend(title="Power", loc="upper right",fontsize =fontsize,title_fontsize=fontsize)
|
|
391
395
|
log.write(" -Creating legends...")
|
|
396
|
+
# curve, size, hue
|
|
392
397
|
h,l = ax.get_legend_handles_labels()
|
|
398
|
+
|
|
393
399
|
if len(ts)>0:
|
|
400
|
+
# power curves
|
|
394
401
|
l1 = ax.legend(h[:int(len(ts))],l[:int(len(ts))], title="Power", loc="upper right",fontsize =fontsize,title_fontsize=fontsize)
|
|
395
402
|
for line in l1.get_lines():
|
|
396
403
|
line.set_linewidth(5.0)
|
|
397
|
-
|
|
398
|
-
|
|
404
|
+
## hue
|
|
405
|
+
if hue is not None or size is not None:
|
|
406
|
+
# # sizes
|
|
407
|
+
if hue is None and size is not None:
|
|
408
|
+
hue_size_legend_title = size
|
|
409
|
+
elif hue is not None and size is None:
|
|
410
|
+
hue_size_legend_title = hue
|
|
411
|
+
else:
|
|
412
|
+
hue_size_legend_title = None
|
|
413
|
+
l2 = ax.legend(h[int(len(ts)):],l[int(len(ts)):], title=hue_size_legend_title, loc="lower right",fontsize =fontsize,title_fontsize=fontsize)
|
|
414
|
+
|
|
415
|
+
## hue
|
|
399
416
|
if len(ts)>0:
|
|
400
417
|
ax.add_artist(l1)
|
|
418
|
+
if hue is not None or size is not None:
|
|
419
|
+
ax.add_artist(l2)
|
|
401
420
|
#first_legend = ax.legend(handles=dots, loc="lower right" ,title=size,fontsize =fontsize,title_fontsize=fontsize)
|
|
402
421
|
#ax.add_artist(first_legend)
|
|
403
422
|
##################################################################################################
|
|
@@ -780,17 +799,31 @@ def plot_power_x(
|
|
|
780
799
|
log=Log()):
|
|
781
800
|
|
|
782
801
|
#Checking columns#################################################################################################################
|
|
802
|
+
"""
|
|
803
|
+
Create power cure with user-specified x axis
|
|
804
|
+
q mode:
|
|
805
|
+
N
|
|
806
|
+
MAF
|
|
807
|
+
b mode:
|
|
808
|
+
N_CASE
|
|
809
|
+
N_CONTROL
|
|
810
|
+
PREVALENCE
|
|
811
|
+
BETA
|
|
812
|
+
"""
|
|
813
|
+
|
|
783
814
|
log.write("Start to create power plot...", verbose=verbose)
|
|
784
815
|
matplotlib.rc('font', family=font_family)
|
|
785
816
|
|
|
786
817
|
log.write(" -Settings:", verbose=verbose)
|
|
787
818
|
log.write(" -Mode: {}".format(mode), verbose=verbose)
|
|
819
|
+
|
|
788
820
|
if mode == "q" :
|
|
789
821
|
log.write(" -X axis: {}".format(x), verbose=verbose)
|
|
790
822
|
if x!="N":
|
|
791
823
|
log.write(" -N: {}".format(ns), verbose=verbose)
|
|
792
824
|
if x!="MAF":
|
|
793
825
|
log.write(" -MAF: {}".format(mafs), verbose=verbose)
|
|
826
|
+
|
|
794
827
|
if mode == "b" :
|
|
795
828
|
log.write(" -X axis: {}".format(x), verbose=verbose)
|
|
796
829
|
if x!="N_CASE":
|
|
@@ -846,8 +879,11 @@ def plot_power_x(
|
|
|
846
879
|
prevalence_range = np.linspace(0.01,0.99,n_matrix)
|
|
847
880
|
else:
|
|
848
881
|
prevalence_range = np.linspace(prevalence_range[0],prevalence_range[1],n_matrix)
|
|
849
|
-
#configure power threshold###################################################################################################
|
|
850
882
|
|
|
883
|
+
|
|
884
|
+
#configure power threshold###################################################################################################
|
|
885
|
+
# for hue
|
|
886
|
+
# which is the variable
|
|
851
887
|
if type(ns) is list:
|
|
852
888
|
var_to_change = ns
|
|
853
889
|
legend_title = "N"
|
|
@@ -895,12 +931,13 @@ def plot_power_x(
|
|
|
895
931
|
##creating power line############################################################################################
|
|
896
932
|
if mode=="q":
|
|
897
933
|
for i,value in enumerate(var_to_change):
|
|
898
|
-
|
|
934
|
+
# iterate through variables
|
|
899
935
|
n = ns
|
|
900
936
|
beta = betas
|
|
901
937
|
maf = mafs
|
|
902
938
|
sig_level = sig_levels
|
|
903
939
|
|
|
940
|
+
# update the variable
|
|
904
941
|
if legend_title == "BETA":
|
|
905
942
|
beta = value
|
|
906
943
|
elif legend_title == "MAF":
|
|
@@ -910,7 +947,7 @@ def plot_power_x(
|
|
|
910
947
|
elif legend_title == "Significance level":
|
|
911
948
|
sig_level = value
|
|
912
949
|
|
|
913
|
-
|
|
950
|
+
# update X
|
|
914
951
|
if x == "N":
|
|
915
952
|
x_values = n_range
|
|
916
953
|
n = x_values
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/data/hapmap3_SNPs/hapmap3_db150_hg19.snplist.gz
RENAMED
|
File without changes
|
{gwaslab-3.6.9 → gwaslab-3.6.10}/src/gwaslab/data/hapmap3_SNPs/hapmap3_db151_hg38.snplist.gz
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|