gwaslab 3.6.0__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.

Files changed (125) hide show
  1. {gwaslab-3.6.0/src/gwaslab.egg-info → gwaslab-3.6.2}/PKG-INFO +3 -2
  2. {gwaslab-3.6.0 → gwaslab-3.6.2}/pyproject.toml +4 -3
  3. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/g_Sumstats.py +20 -14
  4. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/g_version.py +2 -2
  5. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/qc_fix_sumstats.py +28 -28
  6. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/util_ex_run_magma.py +1 -4
  7. gwaslab-3.6.2/src/gwaslab/util_ex_run_scdrs.py +108 -0
  8. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/util_in_meta.py +0 -1
  9. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/util_in_meta_polars.py +0 -2
  10. {gwaslab-3.6.0 → gwaslab-3.6.2/src/gwaslab.egg-info}/PKG-INFO +3 -2
  11. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab.egg-info/SOURCES.txt +1 -0
  12. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab.egg-info/requires.txt +1 -0
  13. {gwaslab-3.6.0 → gwaslab-3.6.2}/LICENSE +0 -0
  14. {gwaslab-3.6.0 → gwaslab-3.6.2}/LICENSE_before_v3.4.39 +0 -0
  15. {gwaslab-3.6.0 → gwaslab-3.6.2}/README.md +0 -0
  16. {gwaslab-3.6.0 → gwaslab-3.6.2}/setup.cfg +0 -0
  17. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/__init__.py +0 -0
  18. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/bd_common_data.py +0 -0
  19. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/bd_config.py +0 -0
  20. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/bd_download.py +0 -0
  21. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/bd_get_hapmap3.py +0 -0
  22. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/cache_manager.py +0 -0
  23. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/data/chrx_par/chrx_par_hg19.bed.gz +0 -0
  24. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/data/chrx_par/chrx_par_hg38.bed.gz +0 -0
  25. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/data/formatbook.json +0 -0
  26. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/data/hapmap3_SNPs/hapmap3_db150_hg19.snplist.gz +0 -0
  27. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/data/hapmap3_SNPs/hapmap3_db151_hg38.snplist.gz +0 -0
  28. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/data/high_ld/high_ld_hla_hg19.bed.gz +0 -0
  29. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/data/high_ld/high_ld_hla_hg38.bed.gz +0 -0
  30. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/data/reference.json +0 -0
  31. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/g_Log.py +0 -0
  32. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/g_Phenotypes.py +0 -0
  33. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/g_SumstatsMulti.py +0 -0
  34. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/g_SumstatsPair.py +0 -0
  35. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/g_SumstatsSet.py +0 -0
  36. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/g_SumstatsT.py +0 -0
  37. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/g_Sumstats_polars.py +0 -0
  38. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/g_Sumstats_summary.py +0 -0
  39. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/g_headers.py +0 -0
  40. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/g_meta.py +0 -0
  41. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/g_meta_update.py +0 -0
  42. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/g_vchange_status.py +0 -0
  43. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/g_vchange_status_polars.py +0 -0
  44. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/hm_casting.py +0 -0
  45. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/hm_casting_polars.py +0 -0
  46. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/hm_harmonize_sumstats.py +0 -0
  47. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/hm_rsid_to_chrpos.py +0 -0
  48. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/io_load_ld.py +0 -0
  49. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/io_preformat_input.py +0 -0
  50. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/io_preformat_input_polars.py +0 -0
  51. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/io_process_args.py +0 -0
  52. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/io_read_ldsc.py +0 -0
  53. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/io_read_pipcs.py +0 -0
  54. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/io_read_tabular.py +0 -0
  55. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/io_to_formats.py +0 -0
  56. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/io_to_pickle.py +0 -0
  57. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/ldsc_irwls.py +0 -0
  58. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/ldsc_jackknife.py +0 -0
  59. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/ldsc_ldscore.py +0 -0
  60. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/ldsc_parse.py +0 -0
  61. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/ldsc_regressions.py +0 -0
  62. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/ldsc_sumstats.py +0 -0
  63. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/prscs_gigrnd.py +0 -0
  64. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/prscs_mcmc_gtb.py +0 -0
  65. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/prscs_parse_genet.py +0 -0
  66. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/qc_build.py +0 -0
  67. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/qc_check_datatype.py +0 -0
  68. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/qc_check_datatype_polars.py +0 -0
  69. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/qc_fix_sumstats_polars.py +0 -0
  70. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/run_script.py +0 -0
  71. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/util_abf_finemapping.py +0 -0
  72. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/util_ex_calculate_ldmatrix.py +0 -0
  73. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/util_ex_calculate_prs.py +0 -0
  74. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/util_ex_gwascatalog.py +0 -0
  75. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/util_ex_infer_ancestry.py +0 -0
  76. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/util_ex_ldproxyfinder.py +0 -0
  77. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/util_ex_ldsc.py +0 -0
  78. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/util_ex_match_ldmatrix.py +0 -0
  79. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/util_ex_plink_filter.py +0 -0
  80. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/util_ex_process_h5.py +0 -0
  81. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/util_ex_process_ref.py +0 -0
  82. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/util_ex_run_2samplemr.py +0 -0
  83. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/util_ex_run_ccgwas.py +0 -0
  84. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/util_ex_run_clumping.py +0 -0
  85. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/util_ex_run_coloc.py +0 -0
  86. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/util_ex_run_hyprcoloc.py +0 -0
  87. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/util_ex_run_mesusie.py +0 -0
  88. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/util_ex_run_mtag.py +0 -0
  89. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/util_ex_run_prscs.py +0 -0
  90. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/util_ex_run_susie.py +0 -0
  91. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/util_in_calculate_gc.py +0 -0
  92. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/util_in_calculate_power.py +0 -0
  93. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/util_in_convert_h2.py +0 -0
  94. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/util_in_correct_winnerscurse.py +0 -0
  95. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/util_in_estimate_ess.py +0 -0
  96. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/util_in_fill_data.py +0 -0
  97. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/util_in_filter_value.py +0 -0
  98. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/util_in_get_density.py +0 -0
  99. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/util_in_get_sig.py +0 -0
  100. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/util_in_merge.py +0 -0
  101. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/util_in_snphwe.py +0 -0
  102. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/viz_aux_annotate_plot.py +0 -0
  103. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/viz_aux_chromatin.py +0 -0
  104. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/viz_aux_property.py +0 -0
  105. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/viz_aux_quickfix.py +0 -0
  106. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/viz_aux_reposition_text.py +0 -0
  107. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/viz_aux_save_figure.py +0 -0
  108. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/viz_plot_compare_af.py +0 -0
  109. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/viz_plot_compare_effect.py +0 -0
  110. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/viz_plot_credible_sets.py +0 -0
  111. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/viz_plot_effect.py +0 -0
  112. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/viz_plot_forestplot.py +0 -0
  113. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/viz_plot_miamiplot.py +0 -0
  114. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/viz_plot_miamiplot2.py +0 -0
  115. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/viz_plot_mqqplot.py +0 -0
  116. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/viz_plot_phe_heatmap.py +0 -0
  117. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/viz_plot_qqplot.py +0 -0
  118. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/viz_plot_regional2.py +0 -0
  119. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/viz_plot_regionalplot.py +0 -0
  120. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/viz_plot_rg_heatmap.py +0 -0
  121. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/viz_plot_scatter_with_reg.py +0 -0
  122. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/viz_plot_stackedregional.py +0 -0
  123. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab/viz_plot_trumpetplot.py +0 -0
  124. {gwaslab-3.6.0 → gwaslab-3.6.2}/src/gwaslab.egg-info/dependency_links.txt +0 -0
  125. {gwaslab-3.6.0 → 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.0
3
+ Version: 3.6.2
4
4
  Summary: A collection of handy tools for GWAS SumStats
5
- Author-email: Yunye <yunye@gwaslab.com>
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
@@ -25,6 +25,7 @@ Requires-Dist: scikit-allel>=1.3.5
25
25
  Requires-Dist: pyensembl==2.2.3
26
26
  Requires-Dist: gtfparse==1.3.0
27
27
  Requires-Dist: h5py>=3.10.0
28
+ Requires-Dist: pyarrow
28
29
  Dynamic: license-file
29
30
 
30
31
  # GWASLab
@@ -7,9 +7,9 @@ build-backend = "setuptools.build_meta"
7
7
 
8
8
  [project]
9
9
  name = "gwaslab"
10
- version = "3.6.0"
10
+ version = "3.6.2"
11
11
  authors = [
12
- { name="Yunye", email="yunye@gwaslab.com" },
12
+ { name="Yunye", email="gwaslab@gmail.com" },
13
13
  ]
14
14
  description = "A collection of handy tools for GWAS SumStats"
15
15
 
@@ -28,7 +28,8 @@ dependencies = [
28
28
  "scikit-allel>=1.3.5",
29
29
  "pyensembl==2.2.3",
30
30
  "gtfparse==1.3.0",
31
- "h5py>=3.10.0"
31
+ "h5py>=3.10.0",
32
+ "pyarrow"
32
33
  ]
33
34
 
34
35
  requires-python = ">=3.9,<3.13"
@@ -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.util_ex_calculate_prs import _calculate_prs
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:
@@ -15,8 +15,8 @@ def _get_version():
15
15
  def gwaslab_info():
16
16
  # version meta information
17
17
  dic={
18
- "version":"3.6.0",
19
- "release_date":"20250504"
18
+ "version":"3.6.2",
19
+ "release_date":"20250509"
20
20
  }
21
21
  return dic
22
22
 
@@ -1107,11 +1107,11 @@ def normalizevariant(pos,a,b,status):
1107
1107
 
1108
1108
  ###############################################################################################################
1109
1109
  # 20220426
1110
- def add_tolerence(stats, float_tolerence, mode):
1110
+ def add_tolerence(stats, float_tolerance, mode):
1111
1111
  if "l" in mode:
1112
- stats = (stats[0] - float_tolerence if stats[0]!=float("Inf") else float("Inf"), stats[1])
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] + float_tolerence if stats[0]!=float("Inf") else float("Inf"))
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
- float_tolerence = 1e-7,
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< P < 1,
1201
- BETA: float64 , abs(BETA) <10
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 , -10 <log(OR) <10
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 , -10 <log(HR) <10
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(float_tolerence), verbose=verbose)
1233
- eaf = add_tolerence(eaf, float_tolerence, "lr")
1234
- maf = add_tolerence(maf, float_tolerence, "lr")
1235
- beta = add_tolerence(beta, float_tolerence, "lr")
1236
- se = add_tolerence(se, float_tolerence, "lr")
1237
- mlog10p = add_tolerence(mlog10p, float_tolerence, "lr")
1238
- OR = add_tolerence(OR, float_tolerence, "lr")
1239
- OR_95L = add_tolerence(OR_95L, float_tolerence, "lr")
1240
- OR_95U = add_tolerence(OR_95U, float_tolerence, "lr")
1241
- HR = add_tolerence(HR, float_tolerence, "lr")
1242
- HR_95L = add_tolerence(HR_95L, float_tolerence, "lr")
1243
- HR_95U = add_tolerence(HR_95U, float_tolerence, "lr")
1244
- info = add_tolerence(info, float_tolerence, "lr")
1245
- z = add_tolerence(z, float_tolerence, "lr")
1246
- p = add_tolerence(p, float_tolerence, "lr")
1247
- f = add_tolerence(f, float_tolerence, "lr")
1248
- chisq = add_tolerence(chisq, float_tolerence, "lr")
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)
@@ -7,7 +7,6 @@ from gwaslab.g_Log import Log
7
7
  from gwaslab.io_to_pickle import load_data_from_pickle
8
8
  from gwaslab.g_Sumstats import Sumstats
9
9
  import gc
10
- import statsmodels.api as sm
11
10
 
12
11
  def meta_analyze(sumstats_list,
13
12
  random_effects=False,
@@ -6,9 +6,7 @@ from scipy.stats import norm
6
6
  from gwaslab.g_Log import Log
7
7
  from gwaslab.io_to_pickle import load_data_from_pickle
8
8
  from gwaslab.g_Sumstats import Sumstats
9
- import gc
10
9
  import polars as pl
11
- import statsmodels.api as sm
12
10
  ########################################################################################################################################################################################################################################################################################################################################################
13
11
  ########################################################################################################################################################################################################################################################################################################################################################
14
12
  ########################################################################################################################################################################################################################################################################################################################################################
@@ -1,8 +1,8 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gwaslab
3
- Version: 3.6.0
3
+ Version: 3.6.2
4
4
  Summary: A collection of handy tools for GWAS SumStats
5
- Author-email: Yunye <yunye@gwaslab.com>
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
@@ -25,6 +25,7 @@ Requires-Dist: scikit-allel>=1.3.5
25
25
  Requires-Dist: pyensembl==2.2.3
26
26
  Requires-Dist: gtfparse==1.3.0
27
27
  Requires-Dist: h5py>=3.10.0
28
+ Requires-Dist: pyarrow
28
29
  Dynamic: license-file
29
30
 
30
31
  # GWASLab
@@ -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
@@ -11,3 +11,4 @@ scikit-allel>=1.3.5
11
11
  pyensembl==2.2.3
12
12
  gtfparse==1.3.0
13
13
  h5py>=3.10.0
14
+ pyarrow
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes