pylocuszoom 1.1.0__tar.gz → 1.1.1__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.
Files changed (113) hide show
  1. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/CHANGELOG.md +7 -0
  2. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/PKG-INFO +12 -12
  3. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/README.md +11 -11
  4. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/pyproject.toml +1 -1
  5. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/src/pylocuszoom/__init__.py +1 -1
  6. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/uv.lock +1 -1
  7. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/.gitattributes +0 -0
  8. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  9. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  10. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  11. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/.github/workflows/ci.yml +0 -0
  12. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/.github/workflows/publish.yml +0 -0
  13. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/.gitignore +0 -0
  14. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/.pre-commit-config.yaml +0 -0
  15. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/CONTRIBUTING.md +0 -0
  16. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/LICENSE.md +0 -0
  17. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/bioconda/meta.yaml +0 -0
  18. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/docs/ARCHITECTURE.md +0 -0
  19. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/docs/CODEMAP.md +0 -0
  20. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/docs/USER_GUIDE.md +0 -0
  21. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/examples/eqtl_bokeh.html +0 -0
  22. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/examples/eqtl_overlay.png +0 -0
  23. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/examples/eqtl_plotly.html +0 -0
  24. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/examples/finemapping_bokeh.html +0 -0
  25. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/examples/finemapping_plot.png +0 -0
  26. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/examples/finemapping_plotly.html +0 -0
  27. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/examples/forest_plot.png +0 -0
  28. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/examples/generate_example_plots.py +0 -0
  29. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/examples/getting_started.ipynb +0 -0
  30. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/examples/manhattan_bokeh.html +0 -0
  31. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/examples/manhattan_plot.png +0 -0
  32. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/examples/manhattan_plotly.html +0 -0
  33. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/examples/manhattan_qq_bokeh.html +0 -0
  34. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/examples/manhattan_qq_canine.png +0 -0
  35. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/examples/manhattan_qq_plotly.html +0 -0
  36. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/examples/manhattan_qq_sidebyside.png +0 -0
  37. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/examples/manhattan_qq_stacked.png +0 -0
  38. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/examples/manhattan_qq_stacked_bokeh.html +0 -0
  39. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/examples/manhattan_qq_stacked_plotly.html +0 -0
  40. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/examples/manhattan_stacked.png +0 -0
  41. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/examples/manhattan_stacked_bokeh.html +0 -0
  42. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/examples/manhattan_stacked_plotly.html +0 -0
  43. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/examples/phewas_plot.png +0 -0
  44. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/examples/qq_bokeh.html +0 -0
  45. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/examples/qq_plot.png +0 -0
  46. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/examples/qq_plotly.html +0 -0
  47. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/examples/regional_plot.png +0 -0
  48. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/examples/regional_plot_with_recomb.png +0 -0
  49. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/examples/regional_recomb_bokeh.html +0 -0
  50. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/examples/regional_recomb_plotly.html +0 -0
  51. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/examples/stacked_plot.png +0 -0
  52. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/logo.svg +0 -0
  53. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/src/pylocuszoom/_plotter_utils.py +0 -0
  54. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/src/pylocuszoom/backends/__init__.py +0 -0
  55. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/src/pylocuszoom/backends/base.py +0 -0
  56. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/src/pylocuszoom/backends/bokeh_backend.py +0 -0
  57. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/src/pylocuszoom/backends/hover.py +0 -0
  58. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/src/pylocuszoom/backends/matplotlib_backend.py +0 -0
  59. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/src/pylocuszoom/backends/plotly_backend.py +0 -0
  60. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/src/pylocuszoom/colors.py +0 -0
  61. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/src/pylocuszoom/config.py +0 -0
  62. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/src/pylocuszoom/ensembl.py +0 -0
  63. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/src/pylocuszoom/eqtl.py +0 -0
  64. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/src/pylocuszoom/exceptions.py +0 -0
  65. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/src/pylocuszoom/finemapping.py +0 -0
  66. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/src/pylocuszoom/forest.py +0 -0
  67. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/src/pylocuszoom/gene_track.py +0 -0
  68. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/src/pylocuszoom/labels.py +0 -0
  69. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/src/pylocuszoom/ld.py +0 -0
  70. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/src/pylocuszoom/loaders.py +0 -0
  71. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/src/pylocuszoom/logging.py +0 -0
  72. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/src/pylocuszoom/manhattan.py +0 -0
  73. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/src/pylocuszoom/manhattan_plotter.py +0 -0
  74. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/src/pylocuszoom/phewas.py +0 -0
  75. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/src/pylocuszoom/plotter.py +0 -0
  76. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/src/pylocuszoom/py.typed +0 -0
  77. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/src/pylocuszoom/qq.py +0 -0
  78. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/src/pylocuszoom/recombination.py +0 -0
  79. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/src/pylocuszoom/reference_data/__init__.py +0 -0
  80. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/src/pylocuszoom/schemas.py +0 -0
  81. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/src/pylocuszoom/stats_plotter.py +0 -0
  82. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/src/pylocuszoom/utils.py +0 -0
  83. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/src/pylocuszoom/validation.py +0 -0
  84. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/tests/conftest.py +0 -0
  85. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/tests/test_backend_bugs.py +0 -0
  86. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/tests/test_backends.py +0 -0
  87. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/tests/test_colors.py +0 -0
  88. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/tests/test_config.py +0 -0
  89. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/tests/test_edge_cases.py +0 -0
  90. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/tests/test_ensembl.py +0 -0
  91. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/tests/test_ensembl_integration.py +0 -0
  92. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/tests/test_eqtl.py +0 -0
  93. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/tests/test_exceptions.py +0 -0
  94. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/tests/test_finemapping.py +0 -0
  95. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/tests/test_forest.py +0 -0
  96. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/tests/test_gene_track.py +0 -0
  97. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/tests/test_hover.py +0 -0
  98. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/tests/test_labels.py +0 -0
  99. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/tests/test_ld.py +0 -0
  100. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/tests/test_loaders.py +0 -0
  101. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/tests/test_logging.py +0 -0
  102. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/tests/test_manhattan.py +0 -0
  103. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/tests/test_manhattan_plotter.py +0 -0
  104. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/tests/test_notebook_backends.py +0 -0
  105. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/tests/test_phewas.py +0 -0
  106. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/tests/test_plotter.py +0 -0
  107. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/tests/test_plotter_manhattan_qq.py +0 -0
  108. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/tests/test_plotter_utils.py +0 -0
  109. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/tests/test_qq.py +0 -0
  110. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/tests/test_recombination.py +0 -0
  111. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/tests/test_stats_plotter.py +0 -0
  112. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/tests/test_utils.py +0 -0
  113. {pylocuszoom-1.1.0 → pylocuszoom-1.1.1}/tests/test_validation.py +0 -0
@@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.1.1] - 2026-01-30
9
+
10
+ ### Fixed
11
+
12
+ - README images now display correctly on PyPI (use absolute GitHub URLs)
13
+
8
14
  ## [1.1.0] - 2026-01-30
9
15
 
10
16
  ### Added
@@ -259,6 +265,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
259
265
  - bokeh >= 3.8.2
260
266
  - kaleido >= 0.2.0
261
267
 
268
+ [1.1.1]: https://github.com/michael-denyer/pyLocusZoom/compare/v1.1.0...v1.1.1
262
269
  [1.1.0]: https://github.com/michael-denyer/pyLocusZoom/compare/v1.0.2...v1.1.0
263
270
  [1.0.2]: https://github.com/michael-denyer/pyLocusZoom/compare/v1.0.1...v1.0.2
264
271
  [1.0.1]: https://github.com/michael-denyer/pyLocusZoom/compare/v1.0.0...v1.0.1
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pylocuszoom
3
- Version: 1.1.0
3
+ Version: 1.1.1
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
@@ -53,7 +53,7 @@ Description-Content-Type: text/markdown
53
53
  [![Plotly](https://img.shields.io/badge/Plotly-5.15+-3F4F75.svg)](https://plotly.com/python/)
54
54
  [![Bokeh](https://img.shields.io/badge/Bokeh-3.8+-E6526F.svg)](https://bokeh.org/)
55
55
  [![Pandas](https://img.shields.io/badge/Pandas-1.4+-150458.svg)](https://pandas.pydata.org/)
56
- <img src="logo.svg" alt="pyLocusZoom logo" width="120" align="right">
56
+ <img src="https://raw.githubusercontent.com/michael-denyer/pyLocusZoom/main/logo.svg" alt="pyLocusZoom logo" width="120" align="right">
57
57
  # pyLocusZoom
58
58
 
59
59
  Designed for publication-ready GWAS visualization with regional association plots, gene tracks, eQTL, PheWAS, fine-mapping, and forest plots.
@@ -71,7 +71,7 @@ Inspired by [LocusZoom](http://locuszoom.org/) and [locuszoomr](https://github.c
71
71
  - **SNP labels (matplotlib)**: Automatic labeling of top SNPs by p-value (RS IDs)
72
72
  - **Hover tooltips (Plotly and Bokeh)**: Detailed SNP data on hover
73
73
 
74
- ![Example regional association plot with LD coloring, gene track, and recombination overlay](examples/regional_plot_with_recomb.png)
74
+ ![Example regional association plot with LD coloring, gene track, and recombination overlay](https://raw.githubusercontent.com/michael-denyer/pyLocusZoom/main/examples/regional_plot_with_recomb.png)
75
75
  *Regional association plot with LD coloring, gene/exon track, recombination rate overlay (blue line), and top SNP labels.*
76
76
 
77
77
  2. **Stacked plots**: Compare multiple GWAS/phenotypes vertically
@@ -254,7 +254,7 @@ fig = plotter.plot_stacked(
254
254
  )
255
255
  ```
256
256
 
257
- ![Example stacked plot comparing two phenotypes](examples/stacked_plot.png)
257
+ ![Example stacked plot comparing two phenotypes](https://raw.githubusercontent.com/michael-denyer/pyLocusZoom/main/examples/stacked_plot.png)
258
258
  *Stacked plot comparing two phenotypes with LD coloring and shared gene track.*
259
259
 
260
260
  ## eQTL Overlay
@@ -283,7 +283,7 @@ fig = plotter.plot_stacked(
283
283
  )
284
284
  ```
285
285
 
286
- ![Example eQTL overlay plot](examples/eqtl_overlay.png)
286
+ ![Example eQTL overlay plot](https://raw.githubusercontent.com/michael-denyer/pyLocusZoom/main/examples/eqtl_overlay.png)
287
287
  *eQTL overlay with effect direction (up/down triangles) and magnitude binning.*
288
288
 
289
289
  ## Fine-mapping Visualization
@@ -312,7 +312,7 @@ fig = plotter.plot_stacked(
312
312
  )
313
313
  ```
314
314
 
315
- ![Example fine-mapping plot](examples/finemapping_plot.png)
315
+ ![Example fine-mapping plot](https://raw.githubusercontent.com/michael-denyer/pyLocusZoom/main/examples/finemapping_plot.png)
316
316
  *Fine-mapping visualization with PIP line and credible set coloring (CS1/CS2).*
317
317
 
318
318
  ## PheWAS Plots
@@ -333,7 +333,7 @@ fig = plotter.plot_phewas(
333
333
  )
334
334
  ```
335
335
 
336
- ![Example PheWAS plot](examples/phewas_plot.png)
336
+ ![Example PheWAS plot](https://raw.githubusercontent.com/michael-denyer/pyLocusZoom/main/examples/phewas_plot.png)
337
337
  *PheWAS plot showing associations across phenotype categories with significance threshold.*
338
338
 
339
339
  ## Forest Plots
@@ -356,7 +356,7 @@ fig = plotter.plot_forest(
356
356
  )
357
357
  ```
358
358
 
359
- ![Example forest plot](examples/forest_plot.png)
359
+ ![Example forest plot](https://raw.githubusercontent.com/michael-denyer/pyLocusZoom/main/examples/forest_plot.png)
360
360
  *Forest plot with effect sizes, confidence intervals, and weight-proportional markers.*
361
361
 
362
362
  ## Manhattan Plots
@@ -379,7 +379,7 @@ fig = plotter.plot_manhattan(
379
379
  fig.savefig("manhattan.png", dpi=150)
380
380
  ```
381
381
 
382
- ![Example Manhattan plot](examples/manhattan_plot.png)
382
+ ![Example Manhattan plot](https://raw.githubusercontent.com/michael-denyer/pyLocusZoom/main/examples/manhattan_plot.png)
383
383
  *Manhattan plot showing genome-wide associations with chromosome coloring and significance threshold.*
384
384
 
385
385
  Categorical Manhattan plots (PheWAS-style) are also supported:
@@ -411,7 +411,7 @@ fig = plotter.plot_qq(
411
411
  fig.savefig("qq_plot.png", dpi=150)
412
412
  ```
413
413
 
414
- ![Example QQ plot](examples/qq_plot.png)
414
+ ![Example QQ plot](https://raw.githubusercontent.com/michael-denyer/pyLocusZoom/main/examples/qq_plot.png)
415
415
  *QQ plot with 95% confidence band and genomic inflation factor (λ).*
416
416
 
417
417
  ## Stacked Manhattan Plots
@@ -436,7 +436,7 @@ fig = plotter.plot_manhattan_stacked(
436
436
  fig.savefig("manhattan_stacked.png", dpi=150)
437
437
  ```
438
438
 
439
- ![Example stacked Manhattan plot](examples/manhattan_stacked.png)
439
+ ![Example stacked Manhattan plot](https://raw.githubusercontent.com/michael-denyer/pyLocusZoom/main/examples/manhattan_stacked.png)
440
440
  *Stacked Manhattan plots comparing three GWAS studies with shared chromosome axis.*
441
441
 
442
442
  ## Manhattan and QQ Side-by-Side
@@ -462,7 +462,7 @@ fig = plotter.plot_manhattan_qq(
462
462
  fig.savefig("manhattan_qq.png", dpi=150)
463
463
  ```
464
464
 
465
- ![Example Manhattan and QQ side-by-side](examples/manhattan_qq_sidebyside.png)
465
+ ![Example Manhattan and QQ side-by-side](https://raw.githubusercontent.com/michael-denyer/pyLocusZoom/main/examples/manhattan_qq_sidebyside.png)
466
466
  *Combined Manhattan and QQ plot showing genome-wide associations and p-value distribution.*
467
467
 
468
468
  ## PySpark Support
@@ -7,7 +7,7 @@
7
7
  [![Plotly](https://img.shields.io/badge/Plotly-5.15+-3F4F75.svg)](https://plotly.com/python/)
8
8
  [![Bokeh](https://img.shields.io/badge/Bokeh-3.8+-E6526F.svg)](https://bokeh.org/)
9
9
  [![Pandas](https://img.shields.io/badge/Pandas-1.4+-150458.svg)](https://pandas.pydata.org/)
10
- <img src="logo.svg" alt="pyLocusZoom logo" width="120" align="right">
10
+ <img src="https://raw.githubusercontent.com/michael-denyer/pyLocusZoom/main/logo.svg" alt="pyLocusZoom logo" width="120" align="right">
11
11
  # pyLocusZoom
12
12
 
13
13
  Designed for publication-ready GWAS visualization with regional association plots, gene tracks, eQTL, PheWAS, fine-mapping, and forest plots.
@@ -25,7 +25,7 @@ Inspired by [LocusZoom](http://locuszoom.org/) and [locuszoomr](https://github.c
25
25
  - **SNP labels (matplotlib)**: Automatic labeling of top SNPs by p-value (RS IDs)
26
26
  - **Hover tooltips (Plotly and Bokeh)**: Detailed SNP data on hover
27
27
 
28
- ![Example regional association plot with LD coloring, gene track, and recombination overlay](examples/regional_plot_with_recomb.png)
28
+ ![Example regional association plot with LD coloring, gene track, and recombination overlay](https://raw.githubusercontent.com/michael-denyer/pyLocusZoom/main/examples/regional_plot_with_recomb.png)
29
29
  *Regional association plot with LD coloring, gene/exon track, recombination rate overlay (blue line), and top SNP labels.*
30
30
 
31
31
  2. **Stacked plots**: Compare multiple GWAS/phenotypes vertically
@@ -208,7 +208,7 @@ fig = plotter.plot_stacked(
208
208
  )
209
209
  ```
210
210
 
211
- ![Example stacked plot comparing two phenotypes](examples/stacked_plot.png)
211
+ ![Example stacked plot comparing two phenotypes](https://raw.githubusercontent.com/michael-denyer/pyLocusZoom/main/examples/stacked_plot.png)
212
212
  *Stacked plot comparing two phenotypes with LD coloring and shared gene track.*
213
213
 
214
214
  ## eQTL Overlay
@@ -237,7 +237,7 @@ fig = plotter.plot_stacked(
237
237
  )
238
238
  ```
239
239
 
240
- ![Example eQTL overlay plot](examples/eqtl_overlay.png)
240
+ ![Example eQTL overlay plot](https://raw.githubusercontent.com/michael-denyer/pyLocusZoom/main/examples/eqtl_overlay.png)
241
241
  *eQTL overlay with effect direction (up/down triangles) and magnitude binning.*
242
242
 
243
243
  ## Fine-mapping Visualization
@@ -266,7 +266,7 @@ fig = plotter.plot_stacked(
266
266
  )
267
267
  ```
268
268
 
269
- ![Example fine-mapping plot](examples/finemapping_plot.png)
269
+ ![Example fine-mapping plot](https://raw.githubusercontent.com/michael-denyer/pyLocusZoom/main/examples/finemapping_plot.png)
270
270
  *Fine-mapping visualization with PIP line and credible set coloring (CS1/CS2).*
271
271
 
272
272
  ## PheWAS Plots
@@ -287,7 +287,7 @@ fig = plotter.plot_phewas(
287
287
  )
288
288
  ```
289
289
 
290
- ![Example PheWAS plot](examples/phewas_plot.png)
290
+ ![Example PheWAS plot](https://raw.githubusercontent.com/michael-denyer/pyLocusZoom/main/examples/phewas_plot.png)
291
291
  *PheWAS plot showing associations across phenotype categories with significance threshold.*
292
292
 
293
293
  ## Forest Plots
@@ -310,7 +310,7 @@ fig = plotter.plot_forest(
310
310
  )
311
311
  ```
312
312
 
313
- ![Example forest plot](examples/forest_plot.png)
313
+ ![Example forest plot](https://raw.githubusercontent.com/michael-denyer/pyLocusZoom/main/examples/forest_plot.png)
314
314
  *Forest plot with effect sizes, confidence intervals, and weight-proportional markers.*
315
315
 
316
316
  ## Manhattan Plots
@@ -333,7 +333,7 @@ fig = plotter.plot_manhattan(
333
333
  fig.savefig("manhattan.png", dpi=150)
334
334
  ```
335
335
 
336
- ![Example Manhattan plot](examples/manhattan_plot.png)
336
+ ![Example Manhattan plot](https://raw.githubusercontent.com/michael-denyer/pyLocusZoom/main/examples/manhattan_plot.png)
337
337
  *Manhattan plot showing genome-wide associations with chromosome coloring and significance threshold.*
338
338
 
339
339
  Categorical Manhattan plots (PheWAS-style) are also supported:
@@ -365,7 +365,7 @@ fig = plotter.plot_qq(
365
365
  fig.savefig("qq_plot.png", dpi=150)
366
366
  ```
367
367
 
368
- ![Example QQ plot](examples/qq_plot.png)
368
+ ![Example QQ plot](https://raw.githubusercontent.com/michael-denyer/pyLocusZoom/main/examples/qq_plot.png)
369
369
  *QQ plot with 95% confidence band and genomic inflation factor (λ).*
370
370
 
371
371
  ## Stacked Manhattan Plots
@@ -390,7 +390,7 @@ fig = plotter.plot_manhattan_stacked(
390
390
  fig.savefig("manhattan_stacked.png", dpi=150)
391
391
  ```
392
392
 
393
- ![Example stacked Manhattan plot](examples/manhattan_stacked.png)
393
+ ![Example stacked Manhattan plot](https://raw.githubusercontent.com/michael-denyer/pyLocusZoom/main/examples/manhattan_stacked.png)
394
394
  *Stacked Manhattan plots comparing three GWAS studies with shared chromosome axis.*
395
395
 
396
396
  ## Manhattan and QQ Side-by-Side
@@ -416,7 +416,7 @@ fig = plotter.plot_manhattan_qq(
416
416
  fig.savefig("manhattan_qq.png", dpi=150)
417
417
  ```
418
418
 
419
- ![Example Manhattan and QQ side-by-side](examples/manhattan_qq_sidebyside.png)
419
+ ![Example Manhattan and QQ side-by-side](https://raw.githubusercontent.com/michael-denyer/pyLocusZoom/main/examples/manhattan_qq_sidebyside.png)
420
420
  *Combined Manhattan and QQ plot showing genome-wide associations and p-value distribution.*
421
421
 
422
422
  ## PySpark Support
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "pylocuszoom"
7
- version = "1.1.0"
7
+ version = "1.1.1"
8
8
  description = "Publication-ready regional association plots with LD coloring, gene tracks, and recombination overlays"
9
9
  readme = "README.md"
10
10
  license = "GPL-3.0-or-later"
@@ -34,7 +34,7 @@ Species Support:
34
34
  - Custom: User provides all reference data
35
35
  """
36
36
 
37
- __version__ = "1.1.0"
37
+ __version__ = "1.1.1"
38
38
 
39
39
  # Main plotter class
40
40
  # Backend types
@@ -1623,7 +1623,7 @@ wheels = [
1623
1623
 
1624
1624
  [[package]]
1625
1625
  name = "pylocuszoom"
1626
- version = "1.1.0"
1626
+ version = "1.1.1"
1627
1627
  source = { editable = "." }
1628
1628
  dependencies = [
1629
1629
  { name = "adjusttext" },
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes