pylocuszoom 0.5.0__py3-none-any.whl → 0.6.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pylocuszoom
3
- Version: 0.5.0
3
+ Version: 0.6.0
4
4
  Summary: Publication-ready regional association plots with LD coloring, gene tracks, and recombination overlays
5
5
  Project-URL: Homepage, https://github.com/michael-denyer/pylocuszoom
6
6
  Project-URL: Documentation, https://github.com/michael-denyer/pylocuszoom#readme
@@ -26,13 +26,17 @@ Requires-Dist: loguru>=0.7.0
26
26
  Requires-Dist: matplotlib>=3.5.0
27
27
  Requires-Dist: numpy>=1.21.0
28
28
  Requires-Dist: pandas>=1.4.0
29
- Requires-Dist: plotly>=5.0.0
29
+ Requires-Dist: plotly>=5.15.0
30
30
  Requires-Dist: pydantic>=2.0.0
31
31
  Requires-Dist: pyliftover>=0.4
32
+ Requires-Dist: requests>=2.25.0
33
+ Requires-Dist: tqdm>=4.60.0
32
34
  Provides-Extra: all
33
35
  Requires-Dist: pyspark>=3.0.0; extra == 'all'
34
36
  Provides-Extra: dev
35
37
  Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
38
+ Requires-Dist: pytest-randomly>=3.0.0; extra == 'dev'
39
+ Requires-Dist: pytest-xdist>=3.0.0; extra == 'dev'
36
40
  Requires-Dist: pytest>=7.0.0; extra == 'dev'
37
41
  Requires-Dist: ruff>=0.1.0; extra == 'dev'
38
42
  Provides-Extra: spark
@@ -73,9 +77,11 @@ Inspired by [LocusZoom](http://locuszoom.org/) and [locuszoomr](https://github.c
73
77
  2. **Stacked plots**: Compare multiple GWAS/phenotypes vertically
74
78
  3. **eQTL plot**: Expression QTL data aligned with association plots and gene tracks
75
79
  4. **Fine-mapping plots**: Visualize SuSiE credible sets with posterior inclusion probabilities
76
- 5. **Multiple charting libraries**: matplotlib (static), plotly (interactive), bokeh (dashboards)
77
- 6. **Pandas and PySpark support**: Works with both Pandas and PySpark DataFrames for large-scale genomics data
78
- 7. **Convenience data file loaders**: Load and validate common GWAS, eQTL and fine-mapping file formats
80
+ 5. **PheWAS plots**: Phenome-wide association study visualization across multiple phenotypes
81
+ 6. **Forest plots**: Meta-analysis effect size visualization with confidence intervals
82
+ 7. **Multiple charting libraries**: matplotlib (static), plotly (interactive), bokeh (dashboards)
83
+ 8. **Pandas and PySpark support**: Works with both Pandas and PySpark DataFrames for large-scale genomics data
84
+ 9. **Convenience data file loaders**: Load and validate common GWAS, eQTL and fine-mapping file formats
79
85
 
80
86
  ## Installation
81
87
 
@@ -261,6 +267,48 @@ fig = plotter.plot_stacked(
261
267
 
262
268
  ![Example fine-mapping plot](examples/finemapping_plot.png)
263
269
 
270
+ ## PheWAS Plots
271
+
272
+ Visualize associations of a single variant across multiple phenotypes:
273
+
274
+ ```python
275
+ phewas_df = pd.DataFrame({
276
+ "phenotype": ["Height", "BMI", "T2D", "CAD", "HDL"],
277
+ "p_value": [1e-15, 0.05, 1e-8, 1e-3, 1e-10],
278
+ "category": ["Anthropometric", "Anthropometric", "Metabolic", "Cardiovascular", "Lipids"],
279
+ })
280
+
281
+ fig = plotter.plot_phewas(
282
+ phewas_df,
283
+ variant_id="rs12345",
284
+ category_col="category",
285
+ )
286
+ ```
287
+
288
+ ![Example PheWAS plot](examples/phewas_plot.png)
289
+
290
+ ## Forest Plots
291
+
292
+ Create forest plots for meta-analysis visualization:
293
+
294
+ ```python
295
+ forest_df = pd.DataFrame({
296
+ "study": ["Study A", "Study B", "Study C", "Meta-analysis"],
297
+ "effect": [0.45, 0.52, 0.38, 0.46],
298
+ "ci_lower": [0.30, 0.35, 0.20, 0.40],
299
+ "ci_upper": [0.60, 0.69, 0.56, 0.52],
300
+ "weight": [25, 35, 20, 100],
301
+ })
302
+
303
+ fig = plotter.plot_forest(
304
+ forest_df,
305
+ variant_id="rs12345",
306
+ weight_col="weight",
307
+ )
308
+ ```
309
+
310
+ ![Example forest plot](examples/forest_plot.png)
311
+
264
312
  ## PySpark Support
265
313
 
266
314
  For large-scale genomics data, pass PySpark DataFrames directly:
@@ -0,0 +1,26 @@
1
+ pylocuszoom/__init__.py,sha256=yb7NMehYOWYPPSBkO4EWwMY4NT-fj8oniNvI3h4oLL0,5219
2
+ pylocuszoom/colors.py,sha256=B28rfhWwGZ-e6Q-F43iXxC6NZpjUo0yWk4S_-vp9ZvU,7686
3
+ pylocuszoom/eqtl.py,sha256=9lZJ8jT1WEj3won6D9B54xdqUvbRvxpOitf97NCUR28,6167
4
+ pylocuszoom/finemapping.py,sha256=PJ4HJYeCaHZecUmADCEGQxKd9HhhjrdIA1H5LQsUmLI,6332
5
+ pylocuszoom/forest.py,sha256=WFX29gEcH-xS5G4kbb9J2WPcbRw7OdMegFuLqN4VfIE,1147
6
+ pylocuszoom/gene_track.py,sha256=VWvPY0SrVFGJprTdttJ72r3JD-r3bdRDr0HDBai0oJw,18692
7
+ pylocuszoom/labels.py,sha256=Ams5WVZFNVT692BRiQ5wZcdbdNEAm5xtgRwmF5u0s_A,3492
8
+ pylocuszoom/ld.py,sha256=64xIulpDVvbMSryWUPoCQ99Odcjwf1wejpwVr_30MLU,6412
9
+ pylocuszoom/loaders.py,sha256=28PqlUhbq1Y6Xzv9NFucWSAqRTqGj8h-pR7wOOmIHxI,25132
10
+ pylocuszoom/logging.py,sha256=nZHEkbnjp8zoyWj_S-Hy9UQvUYLoMoxyiOWRozBT2dg,4987
11
+ pylocuszoom/phewas.py,sha256=jrVDQvUu4rEH3YCE00LX-6STY96vMcK9xZ7AhiN9Jjo,984
12
+ pylocuszoom/plotter.py,sha256=ywqlLMDalzWJaeIfkK_qYh9HRWbypJf9Pgd0II8jAss,53368
13
+ pylocuszoom/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
+ pylocuszoom/recombination.py,sha256=_KU9zwlhjk0MfyG4_i3rS0JPj5SIWcyTxglVlF-KMP8,13826
15
+ pylocuszoom/schemas.py,sha256=vABBBlAR1vUP6BIewZ8E-TYpacccrcxavrdIDVCrQB4,11916
16
+ pylocuszoom/utils.py,sha256=fKNX9WSTbfHR1EpPYijt6ycNjXEjwzunQMHXAvHaK3s,5211
17
+ pylocuszoom/backends/__init__.py,sha256=7dlGvDoqMVK3fCtoMcI9zOP9qO0odQGPwfXhxnLfXfI,1196
18
+ pylocuszoom/backends/base.py,sha256=ll6pKxVuzMNBDGowOYcPHpFkh4vIRoD_XomXQS8pPOk,11960
19
+ pylocuszoom/backends/bokeh_backend.py,sha256=MQ-UJyGW46Rm6Cj6za9mPn9z8yUVnHibLrAfyNzYp-c,23851
20
+ pylocuszoom/backends/matplotlib_backend.py,sha256=dK3n1KSGSTg4jgnwpa_5A5UvQhbN9hdyEtuDy-uUY1I,13178
21
+ pylocuszoom/backends/plotly_backend.py,sha256=l6H4xabuxZPIGn4bqMb1BGRGylehklvxomun7nL8wIY,29174
22
+ pylocuszoom/reference_data/__init__.py,sha256=qqHqAUt1jebGlCN3CjqW3Z-_coHVNo5K3a3bb9o83hA,109
23
+ pylocuszoom-0.6.0.dist-info/METADATA,sha256=rSgBh890ygYNyPwv6oEBpsIU23BSevMw1Nyfhzv90Bs,16543
24
+ pylocuszoom-0.6.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
25
+ pylocuszoom-0.6.0.dist-info/licenses/LICENSE.md,sha256=U2y_hv8RcN5lECA3uK88irU3ODUE1TDAPictcmnP0Q4,698
26
+ pylocuszoom-0.6.0.dist-info/RECORD,,
@@ -1,24 +0,0 @@
1
- pylocuszoom/__init__.py,sha256=kEfcTSdVSQgP85IdHDqCQ-oEdq_-8n_Rg-xWWtHzKYk,4806
2
- pylocuszoom/colors.py,sha256=IyzB6x5Q3kkulv-AnYoFVgvibgGgQYE27XjPx99BI5E,6624
3
- pylocuszoom/eqtl.py,sha256=9lZJ8jT1WEj3won6D9B54xdqUvbRvxpOitf97NCUR28,6167
4
- pylocuszoom/finemapping.py,sha256=PJ4HJYeCaHZecUmADCEGQxKd9HhhjrdIA1H5LQsUmLI,6332
5
- pylocuszoom/gene_track.py,sha256=VWvPY0SrVFGJprTdttJ72r3JD-r3bdRDr0HDBai0oJw,18692
6
- pylocuszoom/labels.py,sha256=Ams5WVZFNVT692BRiQ5wZcdbdNEAm5xtgRwmF5u0s_A,3492
7
- pylocuszoom/ld.py,sha256=64xIulpDVvbMSryWUPoCQ99Odcjwf1wejpwVr_30MLU,6412
8
- pylocuszoom/loaders.py,sha256=MK0jUpb09CLMuQYzIY2P1FF3hhtTwemLSiWv4RvLVf8,24350
9
- pylocuszoom/logging.py,sha256=nZHEkbnjp8zoyWj_S-Hy9UQvUYLoMoxyiOWRozBT2dg,4987
10
- pylocuszoom/plotter.py,sha256=A7phON4VYrzFZM0CjSlWwMPLYJmjGV1JF1uKHD8Ml2A,44205
11
- pylocuszoom/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
- pylocuszoom/recombination.py,sha256=_W6YVO8a8G8UmGGVda8J_MRI9dOJnffKj8491ILQf3Y,13807
13
- pylocuszoom/schemas.py,sha256=LRUrtgSYH8CZ7G14VSvSL_Z-p4EQBSv2r5WzyKnROh8,11454
14
- pylocuszoom/utils.py,sha256=fKNX9WSTbfHR1EpPYijt6ycNjXEjwzunQMHXAvHaK3s,5211
15
- pylocuszoom/backends/__init__.py,sha256=7dlGvDoqMVK3fCtoMcI9zOP9qO0odQGPwfXhxnLfXfI,1196
16
- pylocuszoom/backends/base.py,sha256=yLZkr5FRlYHs8L9ViNbTwu8hrBaHoVv_QbMujad2aTc,9793
17
- pylocuszoom/backends/bokeh_backend.py,sha256=OFx_FISiDFG-A6NXcR8V-2MgkTRq2dXEcpqaWxf0YUg,21528
18
- pylocuszoom/backends/matplotlib_backend.py,sha256=dUgH3ouQCkh55aufvjNIvkEqMG9oamKKvQYp2AEm4DY,11479
19
- pylocuszoom/backends/plotly_backend.py,sha256=U3odXYLVCwTC6Xb-NeOs456tlr_qJQxgix7QIjJX-3Q,26922
20
- pylocuszoom/reference_data/__init__.py,sha256=qqHqAUt1jebGlCN3CjqW3Z-_coHVNo5K3a3bb9o83hA,109
21
- pylocuszoom-0.5.0.dist-info/METADATA,sha256=_0mgXIY3m1x5ATnQpLfAdRvBjh8iwW_FnX4i-aX4ne8,15228
22
- pylocuszoom-0.5.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
23
- pylocuszoom-0.5.0.dist-info/licenses/LICENSE.md,sha256=U2y_hv8RcN5lECA3uK88irU3ODUE1TDAPictcmnP0Q4,698
24
- pylocuszoom-0.5.0.dist-info/RECORD,,