gwaslab 3.6.1__tar.gz → 3.6.2__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.1/src/gwaslab.egg-info → gwaslab-3.6.2}/PKG-INFO +2 -2
- {gwaslab-3.6.1 → gwaslab-3.6.2}/pyproject.toml +2 -2
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/g_Sumstats.py +20 -14
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/g_version.py +2 -2
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/qc_fix_sumstats.py +28 -28
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/util_ex_run_magma.py +1 -4
- gwaslab-3.6.2/src/gwaslab/util_ex_run_scdrs.py +108 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2/src/gwaslab.egg-info}/PKG-INFO +2 -2
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab.egg-info/SOURCES.txt +1 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/LICENSE +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/LICENSE_before_v3.4.39 +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/README.md +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/setup.cfg +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/__init__.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/bd_common_data.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/bd_config.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/bd_download.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/bd_get_hapmap3.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/cache_manager.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/data/chrx_par/chrx_par_hg19.bed.gz +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/data/chrx_par/chrx_par_hg38.bed.gz +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/data/formatbook.json +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/data/hapmap3_SNPs/hapmap3_db150_hg19.snplist.gz +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/data/hapmap3_SNPs/hapmap3_db151_hg38.snplist.gz +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/data/high_ld/high_ld_hla_hg19.bed.gz +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/data/high_ld/high_ld_hla_hg38.bed.gz +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/data/reference.json +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/g_Log.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/g_Phenotypes.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/g_SumstatsMulti.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/g_SumstatsPair.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/g_SumstatsSet.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/g_SumstatsT.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/g_Sumstats_polars.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/g_Sumstats_summary.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/g_headers.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/g_meta.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/g_meta_update.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/g_vchange_status.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/g_vchange_status_polars.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/hm_casting.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/hm_casting_polars.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/hm_harmonize_sumstats.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/hm_rsid_to_chrpos.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/io_load_ld.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/io_preformat_input.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/io_preformat_input_polars.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/io_process_args.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/io_read_ldsc.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/io_read_pipcs.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/io_read_tabular.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/io_to_formats.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/io_to_pickle.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/ldsc_irwls.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/ldsc_jackknife.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/ldsc_ldscore.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/ldsc_parse.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/ldsc_regressions.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/ldsc_sumstats.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/prscs_gigrnd.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/prscs_mcmc_gtb.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/prscs_parse_genet.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/qc_build.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/qc_check_datatype.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/qc_check_datatype_polars.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/qc_fix_sumstats_polars.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/run_script.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/util_abf_finemapping.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/util_ex_calculate_ldmatrix.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/util_ex_calculate_prs.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/util_ex_gwascatalog.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/util_ex_infer_ancestry.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/util_ex_ldproxyfinder.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/util_ex_ldsc.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/util_ex_match_ldmatrix.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/util_ex_plink_filter.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/util_ex_process_h5.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/util_ex_process_ref.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/util_ex_run_2samplemr.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/util_ex_run_ccgwas.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/util_ex_run_clumping.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/util_ex_run_coloc.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/util_ex_run_hyprcoloc.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/util_ex_run_mesusie.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/util_ex_run_mtag.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/util_ex_run_prscs.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/util_ex_run_susie.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/util_in_calculate_gc.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/util_in_calculate_power.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/util_in_convert_h2.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/util_in_correct_winnerscurse.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/util_in_estimate_ess.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/util_in_fill_data.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/util_in_filter_value.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/util_in_get_density.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/util_in_get_sig.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/util_in_merge.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/util_in_meta.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/util_in_meta_polars.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/util_in_snphwe.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/viz_aux_annotate_plot.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/viz_aux_chromatin.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/viz_aux_property.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/viz_aux_quickfix.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/viz_aux_reposition_text.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/viz_aux_save_figure.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/viz_plot_compare_af.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/viz_plot_compare_effect.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/viz_plot_credible_sets.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/viz_plot_effect.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/viz_plot_forestplot.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/viz_plot_miamiplot.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/viz_plot_miamiplot2.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/viz_plot_mqqplot.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/viz_plot_phe_heatmap.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/viz_plot_qqplot.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/viz_plot_regional2.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/viz_plot_regionalplot.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/viz_plot_rg_heatmap.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/viz_plot_scatter_with_reg.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/viz_plot_stackedregional.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab/viz_plot_trumpetplot.py +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab.egg-info/dependency_links.txt +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab.egg-info/requires.txt +0 -0
- {gwaslab-3.6.1 → gwaslab-3.6.2}/src/gwaslab.egg-info/top_level.txt +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: gwaslab
|
|
3
|
-
Version: 3.6.
|
|
3
|
+
Version: 3.6.2
|
|
4
4
|
Summary: A collection of handy tools for GWAS SumStats
|
|
5
|
-
Author-email: Yunye <
|
|
5
|
+
Author-email: Yunye <gwaslab@gmail.com>
|
|
6
6
|
Project-URL: Homepage, https://cloufield.github.io/gwaslab/
|
|
7
7
|
Project-URL: Github, https://github.com/Cloufield/gwaslab
|
|
8
8
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -7,9 +7,9 @@ build-backend = "setuptools.build_meta"
|
|
|
7
7
|
|
|
8
8
|
[project]
|
|
9
9
|
name = "gwaslab"
|
|
10
|
-
version = "3.6.
|
|
10
|
+
version = "3.6.2"
|
|
11
11
|
authors = [
|
|
12
|
-
{ name="Yunye", email="
|
|
12
|
+
{ name="Yunye", email="gwaslab@gmail.com" },
|
|
13
13
|
]
|
|
14
14
|
description = "A collection of handy tools for GWAS SumStats"
|
|
15
15
|
|
|
@@ -2,6 +2,7 @@ import pandas as pd
|
|
|
2
2
|
import numpy as np
|
|
3
3
|
import time
|
|
4
4
|
import copy
|
|
5
|
+
import gc
|
|
5
6
|
from gwaslab.g_Sumstats_summary import summarize
|
|
6
7
|
from gwaslab.g_Sumstats_summary import lookupstatus
|
|
7
8
|
from gwaslab.io_preformat_input import preformat
|
|
@@ -69,16 +70,24 @@ from gwaslab.g_version import gwaslab_info
|
|
|
69
70
|
from gwaslab.g_meta import _init_meta
|
|
70
71
|
from gwaslab.g_meta import _append_meta_record
|
|
71
72
|
from gwaslab.g_meta_update import _update_meta
|
|
72
|
-
from gwaslab.util_ex_run_clumping import _clump
|
|
73
|
-
from gwaslab.util_ex_calculate_ldmatrix import tofinemapping
|
|
74
73
|
from gwaslab.io_load_ld import tofinemapping_using_ld
|
|
75
|
-
from gwaslab.
|
|
74
|
+
from gwaslab.qc_fix_sumstats import _check_data_consistency
|
|
75
|
+
from gwaslab.bd_get_hapmap3 import gethapmap3
|
|
76
|
+
from gwaslab.util_abf_finemapping import abf_finemapping
|
|
77
|
+
from gwaslab.util_abf_finemapping import make_cs
|
|
78
|
+
from gwaslab.io_read_pipcs import _read_pipcs
|
|
79
|
+
from gwaslab.util_in_estimate_ess import _get_ess
|
|
80
|
+
from gwaslab.hm_casting import _align_with_mold
|
|
81
|
+
from gwaslab.hm_casting import _merge_mold_with_sumstats_by_chrpos
|
|
82
|
+
from gwaslab.viz_plot_phe_heatmap import _gwheatmap
|
|
76
83
|
from gwaslab.viz_plot_mqqplot import mqqplot
|
|
77
84
|
from gwaslab.viz_plot_trumpetplot import plottrumpet
|
|
78
85
|
from gwaslab.viz_plot_compare_af import plotdaf
|
|
86
|
+
from gwaslab.viz_plot_credible_sets import _plot_cs
|
|
87
|
+
from gwaslab.util_ex_run_clumping import _clump
|
|
88
|
+
from gwaslab.util_ex_calculate_ldmatrix import tofinemapping
|
|
79
89
|
from gwaslab.util_ex_run_susie import _run_susie_rss
|
|
80
90
|
from gwaslab.util_ex_run_susie import _get_cs_lead
|
|
81
|
-
from gwaslab.qc_fix_sumstats import _check_data_consistency
|
|
82
91
|
from gwaslab.util_ex_ldsc import _estimate_h2_by_ldsc
|
|
83
92
|
from gwaslab.util_ex_ldsc import _estimate_rg_by_ldsc
|
|
84
93
|
from gwaslab.util_ex_ldsc import _estimate_h2_cts_by_ldsc
|
|
@@ -86,17 +95,9 @@ from gwaslab.util_ex_ldsc import _estimate_partitioned_h2_by_ldsc
|
|
|
86
95
|
from gwaslab.util_ex_ldproxyfinder import _extract_ld_proxy
|
|
87
96
|
from gwaslab.util_ex_run_magma import _run_magma
|
|
88
97
|
from gwaslab.util_ex_infer_ancestry import _infer_ancestry
|
|
89
|
-
from gwaslab.bd_get_hapmap3 import gethapmap3
|
|
90
|
-
from gwaslab.util_abf_finemapping import abf_finemapping
|
|
91
|
-
from gwaslab.util_abf_finemapping import make_cs
|
|
92
|
-
from gwaslab.io_read_pipcs import _read_pipcs
|
|
93
|
-
from gwaslab.util_in_estimate_ess import _get_ess
|
|
94
|
-
from gwaslab.viz_plot_credible_sets import _plot_cs
|
|
95
|
-
from gwaslab.hm_casting import _align_with_mold
|
|
96
|
-
from gwaslab.hm_casting import _merge_mold_with_sumstats_by_chrpos
|
|
97
|
-
import gc
|
|
98
|
-
from gwaslab.viz_plot_phe_heatmap import _gwheatmap
|
|
99
98
|
from gwaslab.util_ex_run_prscs import _run_prscs
|
|
99
|
+
from gwaslab.util_ex_calculate_prs import _calculate_prs
|
|
100
|
+
from gwaslab.util_ex_run_scdrs import _run_scdrs
|
|
100
101
|
|
|
101
102
|
#20220309
|
|
102
103
|
class Sumstats():
|
|
@@ -895,6 +896,11 @@ class Sumstats():
|
|
|
895
896
|
_run_magma(self.data,
|
|
896
897
|
study=self.meta["gwaslab"]["study_name"],
|
|
897
898
|
build=build, verbose=verbose, log=self.log, **kwargs)
|
|
899
|
+
|
|
900
|
+
def run_scdrs(self, build=None, verbose=True, **kwargs):
|
|
901
|
+
_run_scdrs(
|
|
902
|
+
study=self.meta["gwaslab"]["study_name"],
|
|
903
|
+
build=build, verbose=verbose, log=self.log, **kwargs)
|
|
898
904
|
## LDSC ##############################################################################################
|
|
899
905
|
def estimate_h2_by_ldsc(self, build=None, verbose=True, match_allele=True, how="right", **kwargs):
|
|
900
906
|
if build is None:
|
|
@@ -1107,11 +1107,11 @@ def normalizevariant(pos,a,b,status):
|
|
|
1107
1107
|
|
|
1108
1108
|
###############################################################################################################
|
|
1109
1109
|
# 20220426
|
|
1110
|
-
def add_tolerence(stats,
|
|
1110
|
+
def add_tolerence(stats, float_tolerance, mode):
|
|
1111
1111
|
if "l" in mode:
|
|
1112
|
-
stats = (stats[0] -
|
|
1112
|
+
stats = (stats[0] - float_tolerance if stats[0]!=float("Inf") else float("Inf"), stats[1])
|
|
1113
1113
|
if "r" in mode:
|
|
1114
|
-
stats = (stats[0] , stats[1] +
|
|
1114
|
+
stats = (stats[0] , stats[1] + float_tolerance if stats[0]!=float("Inf") else float("Inf"))
|
|
1115
1115
|
return stats
|
|
1116
1116
|
|
|
1117
1117
|
|
|
@@ -1183,27 +1183,27 @@ def sanitycheckstats(sumstats,
|
|
|
1183
1183
|
mlog10p=(0,99999),
|
|
1184
1184
|
beta=(-100,100),
|
|
1185
1185
|
se=(0,float("Inf")),
|
|
1186
|
-
OR=(-100,100),
|
|
1186
|
+
OR=(np.exp(-100),np.exp(100)),
|
|
1187
1187
|
OR_95L=(0,float("Inf")),
|
|
1188
1188
|
OR_95U=(0,float("Inf")),
|
|
1189
|
-
HR=(-100,100),
|
|
1189
|
+
HR=(np.exp(-100),np.exp(100)),
|
|
1190
1190
|
HR_95L=(0,float("Inf")),
|
|
1191
1191
|
HR_95U=(0,float("Inf")),
|
|
1192
1192
|
info=(0,2),
|
|
1193
|
-
|
|
1193
|
+
float_tolerance = 1e-7,
|
|
1194
1194
|
verbose=True,
|
|
1195
1195
|
log=Log()):
|
|
1196
1196
|
'''
|
|
1197
1197
|
Sanity check (default; v3.4.33):
|
|
1198
1198
|
N: Int32 , N>0 ,
|
|
1199
|
-
EAF: float32 , 0<= EAF <=1,
|
|
1200
|
-
P: float64 , 0
|
|
1201
|
-
BETA: float64 , abs(BETA) <
|
|
1199
|
+
EAF: float32 , 0 <= EAF <=1,
|
|
1200
|
+
P: float64 , 0 <= P <= 1,
|
|
1201
|
+
BETA: float64 , abs(BETA) <100
|
|
1202
1202
|
SE: float64 , SE > 0
|
|
1203
|
-
OR: float64 , -
|
|
1203
|
+
OR: float64 , np.exp(-100) <OR < np.exp(100)
|
|
1204
1204
|
OR_95L: float64 , OR_95L >0
|
|
1205
1205
|
OR_95U: float64 , OR_95L >0
|
|
1206
|
-
HR: float64 , -
|
|
1206
|
+
HR: float64 , np.exp(-100) <log(HR) <np.exp(100)
|
|
1207
1207
|
HR_95L: float64 , HR_95L >0
|
|
1208
1208
|
HR_95U: float64 , HR_95L >0
|
|
1209
1209
|
INFO: float32 , 1>=INFO>0
|
|
@@ -1229,23 +1229,23 @@ def sanitycheckstats(sumstats,
|
|
|
1229
1229
|
if is_enough_info == False: return sumstats
|
|
1230
1230
|
############################################################################################
|
|
1231
1231
|
|
|
1232
|
-
log.write(" -Comparison tolerance for floats: {}".format(
|
|
1233
|
-
eaf = add_tolerence(eaf,
|
|
1234
|
-
maf = add_tolerence(maf,
|
|
1235
|
-
beta = add_tolerence(beta,
|
|
1236
|
-
se = add_tolerence(se,
|
|
1237
|
-
mlog10p = add_tolerence(mlog10p,
|
|
1238
|
-
OR = add_tolerence(OR,
|
|
1239
|
-
OR_95L = add_tolerence(OR_95L,
|
|
1240
|
-
OR_95U = add_tolerence(OR_95U,
|
|
1241
|
-
HR = add_tolerence(HR,
|
|
1242
|
-
HR_95L = add_tolerence(HR_95L,
|
|
1243
|
-
HR_95U = add_tolerence(HR_95U,
|
|
1244
|
-
info = add_tolerence(info,
|
|
1245
|
-
z = add_tolerence(z,
|
|
1246
|
-
p = add_tolerence(p,
|
|
1247
|
-
f = add_tolerence(f,
|
|
1248
|
-
chisq = add_tolerence(chisq,
|
|
1232
|
+
log.write(" -Comparison tolerance for floats: {}".format(float_tolerance), verbose=verbose)
|
|
1233
|
+
eaf = add_tolerence(eaf, float_tolerance, "lr")
|
|
1234
|
+
maf = add_tolerence(maf, float_tolerance, "lr")
|
|
1235
|
+
beta = add_tolerence(beta, float_tolerance, "lr")
|
|
1236
|
+
se = add_tolerence(se, float_tolerance, "lr")
|
|
1237
|
+
mlog10p = add_tolerence(mlog10p, float_tolerance, "lr")
|
|
1238
|
+
OR = add_tolerence(OR, float_tolerance, "lr")
|
|
1239
|
+
OR_95L = add_tolerence(OR_95L, float_tolerance, "lr")
|
|
1240
|
+
OR_95U = add_tolerence(OR_95U, float_tolerance, "lr")
|
|
1241
|
+
HR = add_tolerence(HR, float_tolerance, "lr")
|
|
1242
|
+
HR_95L = add_tolerence(HR_95L, float_tolerance, "lr")
|
|
1243
|
+
HR_95U = add_tolerence(HR_95U, float_tolerance, "lr")
|
|
1244
|
+
info = add_tolerence(info, float_tolerance, "lr")
|
|
1245
|
+
z = add_tolerence(z, float_tolerance, "lr")
|
|
1246
|
+
p = add_tolerence(p, float_tolerance, "lr")
|
|
1247
|
+
f = add_tolerence(f, float_tolerance, "lr")
|
|
1248
|
+
chisq = add_tolerence(chisq, float_tolerance, "lr")
|
|
1249
1249
|
############################################################################################
|
|
1250
1250
|
## add direction
|
|
1251
1251
|
if coltocheck is None:
|
|
@@ -41,14 +41,11 @@ def _run_magma(sumstats,
|
|
|
41
41
|
log.write(f" --bfile: {ref}", verbose=verbose)
|
|
42
42
|
log.write(f" Output prefix: {out}", verbose=verbose)
|
|
43
43
|
|
|
44
|
-
bash_script=f'''
|
|
45
|
-
|
|
46
|
-
#!/bin/bash
|
|
44
|
+
bash_script=f'''#!/bin/bash
|
|
47
45
|
|
|
48
46
|
{magma} --annotate window={window} --snp-loc {snploc} --gene-loc {ncbi} --out {study}
|
|
49
47
|
|
|
50
48
|
{magma} --bfile {ref} --pval {pval} ncol={ncol} --gene-annot {study}.genes.annot --out {study}
|
|
51
|
-
|
|
52
49
|
'''
|
|
53
50
|
|
|
54
51
|
if set_annot is not None:
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import subprocess
|
|
2
|
+
import os
|
|
3
|
+
import gc
|
|
4
|
+
import pandas as pd
|
|
5
|
+
import numpy as np
|
|
6
|
+
from gwaslab.g_Log import Log
|
|
7
|
+
|
|
8
|
+
def _run_scdrs( scdrs="scdrs",
|
|
9
|
+
python="python",
|
|
10
|
+
study="Study1",
|
|
11
|
+
conda_env=None,
|
|
12
|
+
zscore_file=None,
|
|
13
|
+
out_file=None,
|
|
14
|
+
h5ad_file=None,
|
|
15
|
+
out_folder=None,
|
|
16
|
+
exclude_hla=True,
|
|
17
|
+
group_analysis = None,
|
|
18
|
+
gene_analysis = False,
|
|
19
|
+
gs_species="human",
|
|
20
|
+
h5ad_species="human",
|
|
21
|
+
flag_filter_data=True,
|
|
22
|
+
flag_raw_count=True,
|
|
23
|
+
munge_gs=True,
|
|
24
|
+
compute_score=True,
|
|
25
|
+
perform_downstream=True,
|
|
26
|
+
out="./",
|
|
27
|
+
delete=True,
|
|
28
|
+
ncol="N",
|
|
29
|
+
build="19",
|
|
30
|
+
log=Log(),
|
|
31
|
+
verbose=True):
|
|
32
|
+
|
|
33
|
+
log.write(" Start to run scDRS from command line:", verbose=verbose)
|
|
34
|
+
|
|
35
|
+
trait = study
|
|
36
|
+
if out_file is None:
|
|
37
|
+
out_file = f"./{trait}.gs"
|
|
38
|
+
if out_folder is None:
|
|
39
|
+
out_folder = f"./"
|
|
40
|
+
if conda_env is not None:
|
|
41
|
+
conda_env_string = f"conda init bash\n conda activate {conda_env}\n"
|
|
42
|
+
else:
|
|
43
|
+
conda_env_string=""
|
|
44
|
+
log.write(f" Output prefix: {out}", verbose=verbose)
|
|
45
|
+
|
|
46
|
+
if group_analysis is not None:
|
|
47
|
+
analysis_string = f"--group-analysis {group_analysis} "
|
|
48
|
+
if gene_analysis == True:
|
|
49
|
+
analysis_string += "--gene-analysis"
|
|
50
|
+
|
|
51
|
+
bash_script=f'''#!/bin/bash
|
|
52
|
+
{conda_env_string}
|
|
53
|
+
'''
|
|
54
|
+
|
|
55
|
+
if munge_gs==True:
|
|
56
|
+
|
|
57
|
+
bash_script+=f'''
|
|
58
|
+
{python} {scdrs} munge-gs \
|
|
59
|
+
--out-file {out_file} \
|
|
60
|
+
--zscore-file {zscore_file} \
|
|
61
|
+
--weight zscore \
|
|
62
|
+
--n-max 1000
|
|
63
|
+
|
|
64
|
+
'''
|
|
65
|
+
|
|
66
|
+
if compute_score==True:
|
|
67
|
+
|
|
68
|
+
bash_script+=f'''
|
|
69
|
+
{python} {scdrs} compute-score \
|
|
70
|
+
--h5ad-file {h5ad_file} \
|
|
71
|
+
--h5ad-species {h5ad_species} \
|
|
72
|
+
--gs-file {out_file} \
|
|
73
|
+
--gs-species {gs_species} \
|
|
74
|
+
--out-folder {out_folder} \
|
|
75
|
+
--flag-filter-data {flag_filter_data} \
|
|
76
|
+
--flag-raw-count {flag_raw_count} \
|
|
77
|
+
--n-ctrl 1000 \
|
|
78
|
+
--flag-return-ctrl-raw-score False \
|
|
79
|
+
--flag-return-ctrl-norm-score True
|
|
80
|
+
|
|
81
|
+
'''
|
|
82
|
+
|
|
83
|
+
if perform_downstream==True:
|
|
84
|
+
bash_script+=f'''
|
|
85
|
+
{python} {scdrs} perform-downstream {analysis_string} \
|
|
86
|
+
--h5ad-file {h5ad_file} \
|
|
87
|
+
--score-file {trait}.full_score.gz \
|
|
88
|
+
--out-folder {out_folder} \
|
|
89
|
+
--min_genes 250 \
|
|
90
|
+
--min_cells 50 \
|
|
91
|
+
--knn_n_neighbors 15 \
|
|
92
|
+
--knn_n_pcs 20 \
|
|
93
|
+
--flag-filter-data {flag_filter_data} \
|
|
94
|
+
--flag-raw-count {flag_raw_count}
|
|
95
|
+
|
|
96
|
+
'''
|
|
97
|
+
log.write(f"Script: {bash_script}")
|
|
98
|
+
|
|
99
|
+
try:
|
|
100
|
+
log.write(" Running scDRS from command line...", verbose=verbose)
|
|
101
|
+
output = subprocess.check_output(bash_script, stderr=subprocess.STDOUT, shell=True,text=True)
|
|
102
|
+
output = output + "\n"
|
|
103
|
+
|
|
104
|
+
except subprocess.CalledProcessError as e:
|
|
105
|
+
log.warning("ERROR!")
|
|
106
|
+
log.write(e.output)
|
|
107
|
+
|
|
108
|
+
log.write("Finished running scDRS.", verbose=verbose)
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: gwaslab
|
|
3
|
-
Version: 3.6.
|
|
3
|
+
Version: 3.6.2
|
|
4
4
|
Summary: A collection of handy tools for GWAS SumStats
|
|
5
|
-
Author-email: Yunye <
|
|
5
|
+
Author-email: Yunye <gwaslab@gmail.com>
|
|
6
6
|
Project-URL: Homepage, https://cloufield.github.io/gwaslab/
|
|
7
7
|
Project-URL: Github, https://github.com/Cloufield/gwaslab
|
|
8
8
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -71,6 +71,7 @@ src/gwaslab/util_ex_run_magma.py
|
|
|
71
71
|
src/gwaslab/util_ex_run_mesusie.py
|
|
72
72
|
src/gwaslab/util_ex_run_mtag.py
|
|
73
73
|
src/gwaslab/util_ex_run_prscs.py
|
|
74
|
+
src/gwaslab/util_ex_run_scdrs.py
|
|
74
75
|
src/gwaslab/util_ex_run_susie.py
|
|
75
76
|
src/gwaslab/util_in_calculate_gc.py
|
|
76
77
|
src/gwaslab/util_in_calculate_power.py
|
|
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
|
|
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
|