gwaslab 3.5.4__tar.gz → 3.5.6__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 (103) hide show
  1. {gwaslab-3.5.4/src/gwaslab.egg-info → gwaslab-3.5.6}/PKG-INFO +4 -4
  2. {gwaslab-3.5.4 → gwaslab-3.5.6}/README.md +1 -1
  3. {gwaslab-3.5.4 → gwaslab-3.5.6}/pyproject.toml +2 -2
  4. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/__init__.py +3 -1
  5. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/g_Sumstats.py +56 -9
  6. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/g_SumstatsPair.py +16 -12
  7. gwaslab-3.5.6/src/gwaslab/g_SumstatsSet.py +663 -0
  8. gwaslab-3.5.6/src/gwaslab/g_headers.py +131 -0
  9. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/g_meta.py +2 -1
  10. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/g_version.py +3 -3
  11. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/hm_harmonize_sumstats.py +91 -1
  12. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/io_preformat_input.py +29 -7
  13. gwaslab-3.5.6/src/gwaslab/io_read_pipcs.py +23 -0
  14. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/io_to_formats.py +45 -44
  15. gwaslab-3.5.6/src/gwaslab/qc_check_datatype.py +126 -0
  16. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/qc_fix_sumstats.py +1 -1
  17. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/util_ex_ldproxyfinder.py +162 -3
  18. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/util_ex_ldsc.py +9 -0
  19. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/util_ex_run_2samplemr.py +34 -0
  20. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/util_ex_run_clumping.py +4 -2
  21. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/util_in_fill_data.py +28 -3
  22. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/util_in_filter_value.py +66 -1
  23. gwaslab-3.5.6/src/gwaslab/util_in_merge.py +51 -0
  24. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/viz_aux_save_figure.py +2 -1
  25. gwaslab-3.5.6/src/gwaslab/viz_plot_credible_sets.py +99 -0
  26. gwaslab-3.5.6/src/gwaslab/viz_plot_effect.py +283 -0
  27. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/viz_plot_miamiplot2.py +1 -1
  28. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/viz_plot_mqqplot.py +31 -11
  29. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/viz_plot_regional2.py +133 -32
  30. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/viz_plot_stackedregional.py +64 -34
  31. {gwaslab-3.5.4 → gwaslab-3.5.6/src/gwaslab.egg-info}/PKG-INFO +4 -4
  32. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab.egg-info/SOURCES.txt +6 -1
  33. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab.egg-info/requires.txt +1 -1
  34. gwaslab-3.5.4/src/gwaslab/qc_check_datatype.py +0 -103
  35. gwaslab-3.5.4/src/gwaslab/vis_plot_credible sets.py +0 -0
  36. {gwaslab-3.5.4 → gwaslab-3.5.6}/LICENSE +0 -0
  37. {gwaslab-3.5.4 → gwaslab-3.5.6}/LICENSE_before_v3.4.39 +0 -0
  38. {gwaslab-3.5.4 → gwaslab-3.5.6}/setup.cfg +0 -0
  39. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/bd_common_data.py +0 -0
  40. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/bd_config.py +0 -0
  41. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/bd_download.py +0 -0
  42. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/bd_get_hapmap3.py +0 -0
  43. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/cache_manager.py +0 -0
  44. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/data/chrx_par/chrx_par_hg19.bed.gz +0 -0
  45. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/data/chrx_par/chrx_par_hg38.bed.gz +0 -0
  46. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/data/formatbook.json +0 -0
  47. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/data/hapmap3_SNPs/hapmap3_db150_hg19.snplist.gz +0 -0
  48. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/data/hapmap3_SNPs/hapmap3_db151_hg38.snplist.gz +0 -0
  49. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/data/high_ld/high_ld_hla_hg19.bed.gz +0 -0
  50. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/data/high_ld/high_ld_hla_hg38.bed.gz +0 -0
  51. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/data/reference.json +0 -0
  52. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/g_Log.py +0 -0
  53. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/g_Phenotypes.py +0 -0
  54. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/g_SumstatsT.py +0 -0
  55. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/g_Sumstats_summary.py +0 -0
  56. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/g_vchange_status.py +0 -0
  57. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/hm_casting.py +0 -0
  58. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/hm_rsid_to_chrpos.py +0 -0
  59. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/io_process_args.py +0 -0
  60. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/io_read_ldsc.py +0 -0
  61. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/io_read_tabular.py +0 -0
  62. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/io_to_pickle.py +0 -0
  63. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/ldsc_irwls.py +0 -0
  64. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/ldsc_jackknife.py +0 -0
  65. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/ldsc_ldscore.py +0 -0
  66. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/ldsc_parse.py +0 -0
  67. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/ldsc_regressions.py +0 -0
  68. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/ldsc_sumstats.py +0 -0
  69. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/run_script.py +0 -0
  70. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/util_abf_finemapping.py +0 -0
  71. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/util_ex_calculate_ldmatrix.py +0 -0
  72. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/util_ex_calculate_prs.py +0 -0
  73. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/util_ex_gwascatalog.py +0 -0
  74. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/util_ex_plink_filter.py +0 -0
  75. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/util_ex_process_h5.py +0 -0
  76. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/util_ex_process_ref.py +0 -0
  77. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/util_ex_run_coloc.py +0 -0
  78. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/util_ex_run_susie.py +0 -0
  79. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/util_in_calculate_gc.py +0 -0
  80. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/util_in_calculate_power.py +0 -0
  81. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/util_in_convert_h2.py +0 -0
  82. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/util_in_correct_winnerscurse.py +0 -0
  83. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/util_in_get_density.py +0 -0
  84. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/util_in_get_sig.py +0 -0
  85. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/util_in_meta.py +0 -0
  86. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/util_in_snphwe.py +0 -0
  87. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/viz_aux_annotate_plot.py +0 -0
  88. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/viz_aux_chromatin.py +0 -0
  89. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/viz_aux_property.py +0 -0
  90. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/viz_aux_quickfix.py +0 -0
  91. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/viz_aux_reposition_text.py +0 -0
  92. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/viz_plot_compare_af.py +0 -0
  93. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/viz_plot_compare_effect.py +0 -0
  94. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/viz_plot_forestplot.py +0 -0
  95. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/viz_plot_miamiplot.py +0 -0
  96. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/viz_plot_phe_heatmap.py +0 -0
  97. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/viz_plot_qqplot.py +0 -0
  98. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/viz_plot_regionalplot.py +0 -0
  99. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/viz_plot_rg_heatmap.py +0 -0
  100. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/viz_plot_scatter_with_reg.py +0 -0
  101. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab/viz_plot_trumpetplot.py +0 -0
  102. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab.egg-info/dependency_links.txt +0 -0
  103. {gwaslab-3.5.4 → gwaslab-3.5.6}/src/gwaslab.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: gwaslab
3
- Version: 3.5.4
3
+ Version: 3.5.6
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/
@@ -14,7 +14,7 @@ License-File: LICENSE
14
14
  License-File: LICENSE_before_v3.4.39
15
15
  Requires-Dist: pandas!=1.5,>=1.3
16
16
  Requires-Dist: numpy<2,>=1.21.2
17
- Requires-Dist: matplotlib!=3.7.2,<3.9,>=3.5
17
+ Requires-Dist: matplotlib<3.9,>=3.8
18
18
  Requires-Dist: seaborn>=0.12
19
19
  Requires-Dist: scipy>=1.12
20
20
  Requires-Dist: pySAM==0.22.1
@@ -51,7 +51,7 @@ Warning: Known issues of GWASLab are summarized in [https://cloufield.github.io/
51
51
  ### install via pip
52
52
 
53
53
  ```
54
- pip install gwaslab==3.5.0
54
+ pip install gwaslab==3.5.4
55
55
  ```
56
56
 
57
57
  ```python
@@ -23,7 +23,7 @@ Warning: Known issues of GWASLab are summarized in [https://cloufield.github.io/
23
23
  ### install via pip
24
24
 
25
25
  ```
26
- pip install gwaslab==3.5.0
26
+ pip install gwaslab==3.5.4
27
27
  ```
28
28
 
29
29
  ```python
@@ -7,7 +7,7 @@ build-backend = "setuptools.build_meta"
7
7
 
8
8
  [project]
9
9
  name = "gwaslab"
10
- version = "3.5.4"
10
+ version = "3.5.6"
11
11
  authors = [
12
12
  { name="Yunye", email="yunye@gwaslab.com" },
13
13
  ]
@@ -18,7 +18,7 @@ readme = "README.md"
18
18
  dependencies = [
19
19
  "pandas>=1.3,!=1.5",
20
20
  "numpy>=1.21.2,<2",
21
- "matplotlib>=3.5,!=3.7.2,<3.9",
21
+ "matplotlib>=3.8,<3.9",
22
22
  "seaborn>=0.12",
23
23
  "scipy>=1.12",
24
24
  "pySAM==0.22.1",
@@ -46,4 +46,6 @@ from gwaslab.util_ex_process_h5 import process_vcf_to_hfd5
46
46
  from gwaslab.util_ex_run_susie import _run_susie_rss as run_susie_rss
47
47
  from gwaslab.io_read_tabular import _read_tabular as read_tabular
48
48
  from gwaslab.util_in_meta import meta_analyze
49
- from gwaslab.viz_plot_scatter_with_reg import scatter
49
+ from gwaslab.viz_plot_scatter_with_reg import scatter
50
+ from gwaslab.util_in_fill_data import rank_based_int
51
+ from gwaslab.g_SumstatsSet import SumstatsSet
@@ -30,6 +30,7 @@ from gwaslab.hm_harmonize_sumstats import rsidtochrpos
30
30
  from gwaslab.hm_harmonize_sumstats import parallelizeassignrsid
31
31
  from gwaslab.hm_harmonize_sumstats import parallelinferstrand
32
32
  from gwaslab.hm_harmonize_sumstats import parallelrsidtochrpos
33
+ from gwaslab.hm_harmonize_sumstats import _paralleleinferafwithmaf
33
34
  from gwaslab.util_in_filter_value import filtervalues
34
35
  from gwaslab.util_in_filter_value import filterout
35
36
  from gwaslab.util_in_filter_value import filterin
@@ -39,6 +40,7 @@ from gwaslab.util_in_filter_value import _filter_indel
39
40
  from gwaslab.util_in_filter_value import _filter_palindromic
40
41
  from gwaslab.util_in_filter_value import _filter_snp
41
42
  from gwaslab.util_in_filter_value import _exclude_hla
43
+ from gwaslab.util_in_filter_value import _search_variants
42
44
  from gwaslab.util_in_filter_value import inferbuild
43
45
  from gwaslab.util_in_filter_value import sampling
44
46
  from gwaslab.util_in_filter_value import _get_flanking
@@ -77,9 +79,12 @@ from gwaslab.util_ex_ldsc import _estimate_h2_by_ldsc
77
79
  from gwaslab.util_ex_ldsc import _estimate_rg_by_ldsc
78
80
  from gwaslab.util_ex_ldsc import _estimate_h2_cts_by_ldsc
79
81
  from gwaslab.util_ex_ldsc import _estimate_partitioned_h2_by_ldsc
82
+ from gwaslab.util_ex_ldproxyfinder import _extract_ld_proxy
80
83
  from gwaslab.bd_get_hapmap3 import gethapmap3
81
84
  from gwaslab.util_abf_finemapping import abf_finemapping
82
85
  from gwaslab.util_abf_finemapping import make_cs
86
+ from gwaslab.io_read_pipcs import _read_pipcs
87
+ from gwaslab.viz_plot_credible_sets import _plot_cs
83
88
  import gc
84
89
  from gwaslab.viz_plot_phe_heatmap import _gwheatmap
85
90
 
@@ -88,6 +93,7 @@ class Sumstats():
88
93
  def __init__(self,
89
94
  sumstats,
90
95
  fmt=None,
96
+ tab_fmt="tsv",
91
97
  snpid=None,
92
98
  rsid=None,
93
99
  chrom=None,
@@ -154,10 +160,17 @@ class Sumstats():
154
160
  self.meta["gwaslab"]["species"] = species
155
161
 
156
162
  # initialize attributes for clumping and finmapping
157
- self.to_finemapping_file_path = ""
158
- self.to_finemapping_file = pd.DataFrame()
159
- self.plink_log = ""
160
- self.clumps = pd.DataFrame()
163
+ #self.to_finemapping_file_path = ""
164
+ #self.to_finemapping_file = pd.DataFrame()
165
+ #self.plink_log = ""
166
+
167
+ # path / file / plink_log
168
+ self.finemapping = dict()
169
+
170
+ # clumps / clumps_raw / plink_log
171
+ self.clumps = dict()
172
+
173
+ #
161
174
  self.pipcs = pd.DataFrame()
162
175
 
163
176
  # print gwaslab version information
@@ -167,6 +180,7 @@ class Sumstats():
167
180
  self.data = preformat(
168
181
  sumstats=sumstats,
169
182
  fmt=fmt,
183
+ tab_fmt = tab_fmt,
170
184
  snpid=snpid,
171
185
  rsid=rsid,
172
186
  chrom=chrom,
@@ -579,6 +593,24 @@ class Sumstats():
579
593
  else:
580
594
  self.data = _exclude_hla(self.data,log=self.log,**kwargs)
581
595
 
596
+ def search(self, inplace=False, **kwargs):
597
+ if inplace is False:
598
+ new_Sumstats_object = copy.deepcopy(self)
599
+ new_Sumstats_object.data = _search_variants(new_Sumstats_object.data,
600
+ log=new_Sumstats_object.log,
601
+ **kwargs)
602
+ return new_Sumstats_object
603
+ else:
604
+ self.data = _search_variants(self.data,log=self.log,**kwargs)
605
+
606
+ def get_proxy(self,snplist, inplace=False, **kwargs):
607
+ if inplace is False:
608
+ new_Sumstats_object = copy.deepcopy(self)
609
+ new_Sumstats_object.data = _extract_ld_proxy(common_sumstats = new_Sumstats_object.data,
610
+ snplist=snplist,
611
+ log=new_Sumstats_object.log,
612
+ **kwargs)
613
+ return new_Sumstats_object
582
614
 
583
615
  def random_variants(self,inplace=False,n=1,p=None,**kwargs):
584
616
  if inplace is True:
@@ -606,6 +638,11 @@ class Sumstats():
606
638
  self.data = paralleleinferaf(self.data,ref_infer=ref_infer,log=self.log,**kwargs)
607
639
  self.meta["gwaslab"]["references"]["ref_infer_af"] = ref_infer
608
640
  self.meta["gwaslab"]["references"]["ref_infer_af"] = _append_meta_record(self.meta["gwaslab"]["references"]["ref_infer_af"] , ref_infer)
641
+ def maf_to_eaf(self,ref_infer,**kwargs):
642
+ self.data = _paralleleinferafwithmaf(self.data,ref_infer=ref_infer,log=self.log,**kwargs)
643
+ self.meta["gwaslab"]["references"]["ref_infer_maf"] = ref_infer
644
+ self.meta["gwaslab"]["references"]["ref_infer_maf"] = _append_meta_record(self.meta["gwaslab"]["references"]["ref_infer_af"] , ref_infer)
645
+
609
646
  def plot_daf(self, **kwargs):
610
647
  fig,outliers = plotdaf(self.data, **kwargs)
611
648
  return fig, outliers
@@ -794,7 +831,7 @@ class Sumstats():
794
831
  credible_sets = make_cs(region_data,threshold=0.95,log=self.log)
795
832
  return region_data, credible_sets
796
833
 
797
-
834
+
798
835
  ## LDSC ##############################################################################################
799
836
  def estimate_h2_by_ldsc(self, build=None, verbose=True, match_allele=True, how="right", **kwargs):
800
837
  if build is None:
@@ -822,21 +859,31 @@ class Sumstats():
822
859
  # external ################################################################################################
823
860
 
824
861
  def calculate_ld_matrix(self,**kwargs):
825
- self.to_finemapping_file_path, self.to_finemapping_file, self.plink_log = tofinemapping(self.data,study = self.meta["gwaslab"]["study_name"],**kwargs)
862
+ self.finemapping["path"],self.finemapping["file"],self.finemapping["plink_log"]= tofinemapping(self.data,study = self.meta["gwaslab"]["study_name"],**kwargs)
863
+ #self.to_finemapping_file_path, self.to_finemapping_file, self.plink_log = tofinemapping(self.data,study = self.meta["gwaslab"]["study_name"],**kwargs)
826
864
 
827
865
  def run_susie_rss(self,**kwargs):
828
- self.pipcs=_run_susie_rss(self.to_finemapping_file_path,**kwargs)
866
+ self.pipcs=_run_susie_rss(self.finemapping["path"],**kwargs)
867
+ #self.pipcs=_run_susie_rss(self.to_finemapping_file_path,**kwargs)
829
868
 
830
869
  def clump(self,**kwargs):
831
- self.clumps,self.plink_log = _clump(self.data, log=self.log, study = self.meta["gwaslab"]["study_name"], **kwargs)
870
+ self.clumps["clumps"], self.clumps["clumps_raw"], self.clumps["plink_log"] = _clump(self.data, log=self.log, study = self.meta["gwaslab"]["study_name"], **kwargs)
832
871
 
833
872
  def calculate_prs(self,**kwargs):
834
873
  combined_results_summary = _calculate_prs(self.data, log=self.log, study = self.meta["gwaslab"]["study_name"], **kwargs)
835
874
  return combined_results_summary
836
-
875
+
876
+ # loading aux data
877
+ def read_pipcs(self,prefix,**kwargs):
878
+ self.pipcs = _read_pipcs(self.data[["SNPID","CHR","POS"]],prefix, **kwargs)
879
+
880
+ def plot_pipcs(self, region,**kwargs):
881
+ _plot_cs(self.pipcs, region, **kwargs)
837
882
  # to_format ###############################################################################################
838
883
 
839
884
  def to_format(self, path, build=None, verbose=True, **kwargs):
840
885
  if build is None:
841
886
  build = self.meta["gwaslab"]["genome_build"]
842
887
  _to_format(self.data, path, log=self.log, verbose=verbose, meta=self.meta, build=build, **kwargs)
888
+
889
+
@@ -23,6 +23,7 @@ from gwaslab.viz_plot_compare_af import plotdaf
23
23
  from gwaslab.util_ex_run_2samplemr import _run_two_sample_mr
24
24
  from gwaslab.util_ex_run_clumping import _clump
25
25
  from gwaslab.util_ex_ldproxyfinder import _extract_with_ld_proxy
26
+ from gwaslab.g_headers import _get_headers
26
27
 
27
28
  class SumstatsPair( ):
28
29
  def __init__(self, sumstatsObject1, sumstatsObject2, study=None, suffixes = ("_1","_2") ,verbose=True ):
@@ -35,6 +36,7 @@ class SumstatsPair( ):
35
36
  self.study_name = "{}_{}".format(sumstatsObject1.meta["gwaslab"]["study_name"], sumstatsObject2.meta["gwaslab"]["study_name"])
36
37
  else:
37
38
  self.study_name = "{}_{}".format("STUDY1", "STUDY2")
39
+
38
40
  self.snp_info_cols = []
39
41
  self.stats_cols =[]
40
42
  self.stats_cols2 =[]
@@ -45,11 +47,13 @@ class SumstatsPair( ):
45
47
  self.colocalization=pd.DataFrame()
46
48
  self.sumstats1 = pd.DataFrame()
47
49
  self.sumstats2 = pd.DataFrame()
48
- self.mr = {}
49
- self.clumps ={}
50
+
51
+ self.mr =dict()
52
+ self.clumps =dict()
50
53
  self.ns = None
51
- self.to_finemapping_file_path = ""
52
- self.plink_log = ""
54
+ self.finemapping = dict()
55
+ #self.to_finemapping_file_path = ""
56
+ #self.plink_log = ""
53
57
 
54
58
  self.log.write( "Start to create SumstatsPair object..." )
55
59
 
@@ -66,16 +70,17 @@ class SumstatsPair( ):
66
70
  verbose=verbose)
67
71
 
68
72
  for i in sumstatsObject1.data.columns:
69
- if i in ["SNPID","rsID","CHR","POS","EA","NEA","STATUS"]:
73
+ if i in _get_headers(mode="info"):
74
+ # extract SNP info columns from sumstats1
70
75
  self.snp_info_cols.append(i)
71
- elif i in ["BETA","SE","P","MLOG10P","N","N_CASE","N_CONTROL","Z","T","F","OR","OR_95L","OR_95U","HR","HR_95L","HR_95U","MAF","EAF","BETA_95L","BETA_95U"]:
76
+ elif i in _get_headers(mode="stats"):
72
77
  self.stats_cols.append(i)
73
78
  else:
74
79
  self.other_cols.append(i)
75
80
  for i in sumstatsObject2.data.columns:
76
- if i in ["SNPID","rsID","CHR","POS","EA","NEA","STATUS"]:
81
+ if i in _get_headers(mode="info"):
77
82
  continue
78
- elif i in ["BETA","SE","P","MLOG10P","N","N_CASE","N_CONTROL","Z","T","F","OR","OR_95L","OR_95U","HR","HR_95L","HR_95U","MAF","EAF","BETA_95L","BETA_95U"]:
83
+ elif i in _get_headers(mode="stats"):
79
84
  self.stats_cols2.append(i)
80
85
  else:
81
86
  self.other_cols2.append(i)
@@ -136,14 +141,13 @@ class SumstatsPair( ):
136
141
 
137
142
 
138
143
  def clump(self,**kwargs):
139
- self.clumps["clumps"], self.clumps["plink_log"] = _clump(self.data, log=self.log, p="P_1",mlog10p="MLOG10P_1", study = self.study_name, **kwargs)
144
+ self.clumps["clumps"],self.clumps["clumps_raw"],self.clumps["plink_log"] = _clump(self.data, log=self.log, p="P_1",mlog10p="MLOG10P_1", study = self.study_name, **kwargs)
140
145
 
141
146
  def to_coloc(self,**kwargs):
142
- self.to_finemapping_file_path, output_file_list, self.plink_log = tofinemapping(self.data,study=self.study_name,suffixes=self.suffixes,log=self.log,**kwargs)
147
+ self.finemapping["path"],self.finemapping["file"],self.finemapping["plink_log"] = tofinemapping(self.data,study=self.study_name,suffixes=self.suffixes,log=self.log,**kwargs)
143
148
 
144
149
  def run_coloc_susie(self,**kwargs):
145
-
146
- self.colocalization = _run_coloc_susie(self.to_finemapping_file_path,log=self.log,ncols=self.ns,**kwargs)
150
+ self.colocalization = _run_coloc_susie(self.finemapping["path"],log=self.log,ncols=self.ns,**kwargs)
147
151
 
148
152
  def run_two_sample_mr(self, clump=False, **kwargs):
149
153
  exposure1 = self.study_name.split("_")[0]