pylocuszoom 0.8.0__py3-none-any.whl → 1.1.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.
- pylocuszoom/__init__.py +27 -7
- pylocuszoom/_plotter_utils.py +66 -0
- pylocuszoom/backends/base.py +56 -0
- pylocuszoom/backends/bokeh_backend.py +141 -29
- pylocuszoom/backends/matplotlib_backend.py +60 -0
- pylocuszoom/backends/plotly_backend.py +297 -88
- pylocuszoom/config.py +365 -0
- pylocuszoom/ensembl.py +6 -11
- pylocuszoom/eqtl.py +3 -7
- pylocuszoom/exceptions.py +33 -0
- pylocuszoom/finemapping.py +2 -7
- pylocuszoom/forest.py +1 -0
- pylocuszoom/gene_track.py +10 -31
- pylocuszoom/labels.py +6 -2
- pylocuszoom/manhattan.py +246 -0
- pylocuszoom/manhattan_plotter.py +760 -0
- pylocuszoom/plotter.py +401 -327
- pylocuszoom/qq.py +123 -0
- pylocuszoom/recombination.py +7 -7
- pylocuszoom/schemas.py +1 -6
- pylocuszoom/stats_plotter.py +319 -0
- pylocuszoom/utils.py +2 -4
- pylocuszoom/validation.py +51 -0
- {pylocuszoom-0.8.0.dist-info → pylocuszoom-1.1.0.dist-info}/METADATA +159 -25
- pylocuszoom-1.1.0.dist-info/RECORD +36 -0
- pylocuszoom-0.8.0.dist-info/RECORD +0 -29
- {pylocuszoom-0.8.0.dist-info → pylocuszoom-1.1.0.dist-info}/WHEEL +0 -0
- {pylocuszoom-0.8.0.dist-info → pylocuszoom-1.1.0.dist-info}/licenses/LICENSE.md +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pylocuszoom
|
|
3
|
-
Version:
|
|
3
|
+
Version: 1.1.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
|
|
@@ -21,6 +21,7 @@ Classifier: Topic :: Scientific/Engineering :: Visualization
|
|
|
21
21
|
Requires-Python: >=3.10
|
|
22
22
|
Requires-Dist: adjusttext>=0.8
|
|
23
23
|
Requires-Dist: bokeh>=3.8.2
|
|
24
|
+
Requires-Dist: colorcet>=3.0.0
|
|
24
25
|
Requires-Dist: kaleido>=0.2.0
|
|
25
26
|
Requires-Dist: loguru>=0.7.0
|
|
26
27
|
Requires-Dist: matplotlib>=3.5.0
|
|
@@ -66,22 +67,24 @@ Inspired by [LocusZoom](http://locuszoom.org/) and [locuszoomr](https://github.c
|
|
|
66
67
|
- **Multi-species support**: Built-in reference data for *Canis lupus familiaris* (CanFam3.1/CanFam4) and *Felis catus* (FelCat9), or optionally provide your own for any species
|
|
67
68
|
- **LD coloring**: SNPs colored by linkage disequilibrium (R²) with lead variant
|
|
68
69
|
- **Gene tracks**: Annotated gene/exon positions below the association plot
|
|
69
|
-
- **Recombination rate**:
|
|
70
|
+
- **Recombination rate**: Overlay across region (*Canis lupus familiaris* built-in, or user-provided)
|
|
70
71
|
- **SNP labels (matplotlib)**: Automatic labeling of top SNPs by p-value (RS IDs)
|
|
71
72
|
- **Hover tooltips (Plotly and Bokeh)**: Detailed SNP data on hover
|
|
72
73
|
|
|
73
|
-

|
|
75
|
+
*Regional association plot with LD coloring, gene/exon track, recombination rate overlay (blue line), and top SNP labels.*
|
|
75
76
|
|
|
76
77
|
2. **Stacked plots**: Compare multiple GWAS/phenotypes vertically
|
|
77
|
-
3. **
|
|
78
|
-
4. **
|
|
79
|
-
5. **
|
|
80
|
-
6. **
|
|
81
|
-
7. **
|
|
82
|
-
8. **
|
|
83
|
-
9. **
|
|
84
|
-
10. **
|
|
78
|
+
3. **Manhattan plots**: Genome-wide association visualization with chromosome coloring
|
|
79
|
+
4. **QQ plots**: Quantile-quantile plots with confidence bands and genomic inflation factor
|
|
80
|
+
5. **eQTL plot**: Expression QTL data aligned with association plots and gene tracks
|
|
81
|
+
6. **Fine-mapping plots**: Visualize SuSiE credible sets with posterior inclusion probabilities
|
|
82
|
+
7. **PheWAS plots**: Phenome-wide association study visualization across multiple phenotypes
|
|
83
|
+
8. **Forest plots**: Meta-analysis effect size visualization with confidence intervals
|
|
84
|
+
9. **Multiple backends**: matplotlib (publication-ready), plotly (interactive), bokeh (dashboard integration)
|
|
85
|
+
10. **Pandas and PySpark support**: Works with both Pandas and PySpark DataFrames for large-scale genomics data
|
|
86
|
+
11. **Convenience data file loaders**: Load and validate common GWAS, eQTL and fine-mapping file formats
|
|
87
|
+
12. **Automatic gene annotations**: Fetch gene/exon data from Ensembl REST API with caching (human, mouse, rat, canine, feline, and any Ensembl species)
|
|
85
88
|
|
|
86
89
|
## Installation
|
|
87
90
|
|
|
@@ -107,17 +110,17 @@ conda install -c bioconda pylocuszoom
|
|
|
107
110
|
from pylocuszoom import LocusZoomPlotter
|
|
108
111
|
|
|
109
112
|
# Initialize plotter (loads reference data for canine)
|
|
110
|
-
plotter = LocusZoomPlotter(species="canine")
|
|
113
|
+
plotter = LocusZoomPlotter(species="canine", auto_genes=True)
|
|
111
114
|
|
|
112
|
-
#
|
|
115
|
+
# Plot with parameters passed directly
|
|
113
116
|
fig = plotter.plot(
|
|
114
|
-
gwas_df,
|
|
117
|
+
gwas_df, # DataFrame with pos, p_value, rs columns
|
|
115
118
|
chrom=1,
|
|
116
119
|
start=1000000,
|
|
117
120
|
end=2000000,
|
|
118
|
-
lead_pos=1500000,
|
|
121
|
+
lead_pos=1500000, # Highlight lead SNP
|
|
122
|
+
show_recombination=True, # Overlay recombination rate
|
|
119
123
|
)
|
|
120
|
-
|
|
121
124
|
fig.savefig("regional_plot.png", dpi=150)
|
|
122
125
|
```
|
|
123
126
|
|
|
@@ -137,9 +140,7 @@ fig = plotter.plot(
|
|
|
137
140
|
start=1000000,
|
|
138
141
|
end=2000000,
|
|
139
142
|
lead_pos=1500000,
|
|
140
|
-
ld_reference_file="genotypes
|
|
141
|
-
genes_df=genes_df, # Gene annotations
|
|
142
|
-
exons_df=exons_df, # Exon annotations
|
|
143
|
+
ld_reference_file="genotypes", # PLINK fileset (without extension)
|
|
143
144
|
show_recombination=True, # Overlay recombination rate
|
|
144
145
|
snp_labels=True, # Label top SNPs
|
|
145
146
|
label_top_n=5, # How many to label
|
|
@@ -147,6 +148,8 @@ fig = plotter.plot(
|
|
|
147
148
|
p_col="p_wald", # Column name for p-value
|
|
148
149
|
rs_col="rs", # Column name for SNP ID
|
|
149
150
|
figsize=(12, 8),
|
|
151
|
+
genes_df=genes_df, # Gene annotations
|
|
152
|
+
exons_df=exons_df, # Exon annotations
|
|
150
153
|
)
|
|
151
154
|
```
|
|
152
155
|
|
|
@@ -163,6 +166,8 @@ Recombination maps are automatically lifted over from CanFam3.1 to CanFam4 coord
|
|
|
163
166
|
## Using with Other Species
|
|
164
167
|
|
|
165
168
|
```python
|
|
169
|
+
from pylocuszoom import LocusZoomPlotter
|
|
170
|
+
|
|
166
171
|
# Feline (LD and gene tracks, user provides recombination data)
|
|
167
172
|
plotter = LocusZoomPlotter(species="feline")
|
|
168
173
|
|
|
@@ -172,10 +177,12 @@ plotter = LocusZoomPlotter(
|
|
|
172
177
|
recomb_data_dir="/path/to/recomb_maps/",
|
|
173
178
|
)
|
|
174
179
|
|
|
175
|
-
#
|
|
180
|
+
# Provide data per-plot
|
|
176
181
|
fig = plotter.plot(
|
|
177
182
|
gwas_df,
|
|
178
|
-
chrom=1,
|
|
183
|
+
chrom=1,
|
|
184
|
+
start=1000000,
|
|
185
|
+
end=2000000,
|
|
179
186
|
recomb_df=my_recomb_dataframe,
|
|
180
187
|
genes_df=my_genes_df,
|
|
181
188
|
)
|
|
@@ -186,6 +193,8 @@ fig = plotter.plot(
|
|
|
186
193
|
pyLocusZoom can automatically fetch gene annotations from Ensembl for any species:
|
|
187
194
|
|
|
188
195
|
```python
|
|
196
|
+
from pylocuszoom import LocusZoomPlotter
|
|
197
|
+
|
|
189
198
|
# Enable automatic gene fetching
|
|
190
199
|
plotter = LocusZoomPlotter(species="human", auto_genes=True)
|
|
191
200
|
|
|
@@ -201,6 +210,8 @@ Data is cached locally for fast subsequent plots. Maximum region size is 5Mb (En
|
|
|
201
210
|
pyLocusZoom supports multiple rendering backends (set at initialization):
|
|
202
211
|
|
|
203
212
|
```python
|
|
213
|
+
from pylocuszoom import LocusZoomPlotter
|
|
214
|
+
|
|
204
215
|
# Static publication-quality plot (default)
|
|
205
216
|
plotter = LocusZoomPlotter(species="canine", backend="matplotlib")
|
|
206
217
|
fig = plotter.plot(gwas_df, chrom=1, start=1000000, end=2000000)
|
|
@@ -229,6 +240,10 @@ fig = plotter.plot(gwas_df, chrom=1, start=1000000, end=2000000)
|
|
|
229
240
|
Compare multiple GWAS results vertically with shared x-axis:
|
|
230
241
|
|
|
231
242
|
```python
|
|
243
|
+
from pylocuszoom import LocusZoomPlotter
|
|
244
|
+
|
|
245
|
+
plotter = LocusZoomPlotter(species="canine")
|
|
246
|
+
|
|
232
247
|
fig = plotter.plot_stacked(
|
|
233
248
|
[gwas_height, gwas_bmi, gwas_whr],
|
|
234
249
|
chrom=1,
|
|
@@ -247,15 +262,21 @@ fig = plotter.plot_stacked(
|
|
|
247
262
|
Add expression QTL data as a separate panel:
|
|
248
263
|
|
|
249
264
|
```python
|
|
265
|
+
from pylocuszoom import LocusZoomPlotter
|
|
266
|
+
|
|
250
267
|
eqtl_df = pd.DataFrame({
|
|
251
268
|
"pos": [1000500, 1001200, 1002000],
|
|
252
269
|
"p_value": [1e-6, 1e-4, 0.01],
|
|
253
270
|
"gene": ["BRCA1", "BRCA1", "BRCA1"],
|
|
254
271
|
})
|
|
255
272
|
|
|
273
|
+
plotter = LocusZoomPlotter(species="canine")
|
|
274
|
+
|
|
256
275
|
fig = plotter.plot_stacked(
|
|
257
276
|
[gwas_df],
|
|
258
|
-
chrom=1,
|
|
277
|
+
chrom=1,
|
|
278
|
+
start=1000000,
|
|
279
|
+
end=2000000,
|
|
259
280
|
eqtl_df=eqtl_df,
|
|
260
281
|
eqtl_gene="BRCA1",
|
|
261
282
|
genes_df=genes_df,
|
|
@@ -270,15 +291,21 @@ fig = plotter.plot_stacked(
|
|
|
270
291
|
Visualize SuSiE or other fine-mapping results with credible set coloring:
|
|
271
292
|
|
|
272
293
|
```python
|
|
294
|
+
from pylocuszoom import LocusZoomPlotter
|
|
295
|
+
|
|
273
296
|
finemapping_df = pd.DataFrame({
|
|
274
297
|
"pos": [1000500, 1001200, 1002000, 1003500],
|
|
275
298
|
"pip": [0.85, 0.12, 0.02, 0.45], # Posterior inclusion probability
|
|
276
299
|
"cs": [1, 1, 0, 2], # Credible set assignment (0 = not in CS)
|
|
277
300
|
})
|
|
278
301
|
|
|
302
|
+
plotter = LocusZoomPlotter(species="canine")
|
|
303
|
+
|
|
279
304
|
fig = plotter.plot_stacked(
|
|
280
305
|
[gwas_df],
|
|
281
|
-
chrom=1,
|
|
306
|
+
chrom=1,
|
|
307
|
+
start=1000000,
|
|
308
|
+
end=2000000,
|
|
282
309
|
finemapping_df=finemapping_df,
|
|
283
310
|
finemapping_cs_col="cs",
|
|
284
311
|
genes_df=genes_df,
|
|
@@ -332,6 +359,112 @@ fig = plotter.plot_forest(
|
|
|
332
359
|

|
|
333
360
|
*Forest plot with effect sizes, confidence intervals, and weight-proportional markers.*
|
|
334
361
|
|
|
362
|
+
## Manhattan Plots
|
|
363
|
+
|
|
364
|
+
Create genome-wide Manhattan plots showing associations across all chromosomes:
|
|
365
|
+
|
|
366
|
+
```python
|
|
367
|
+
from pylocuszoom import LocusZoomPlotter
|
|
368
|
+
|
|
369
|
+
plotter = LocusZoomPlotter(species="human")
|
|
370
|
+
|
|
371
|
+
fig = plotter.plot_manhattan(
|
|
372
|
+
gwas_df,
|
|
373
|
+
chrom_col="chrom",
|
|
374
|
+
pos_col="pos",
|
|
375
|
+
p_col="p",
|
|
376
|
+
significance_threshold=5e-8, # Genome-wide significance line
|
|
377
|
+
figsize=(12, 5),
|
|
378
|
+
)
|
|
379
|
+
fig.savefig("manhattan.png", dpi=150)
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+

|
|
383
|
+
*Manhattan plot showing genome-wide associations with chromosome coloring and significance threshold.*
|
|
384
|
+
|
|
385
|
+
Categorical Manhattan plots (PheWAS-style) are also supported:
|
|
386
|
+
|
|
387
|
+
```python
|
|
388
|
+
fig = plotter.plot_manhattan(
|
|
389
|
+
phewas_df,
|
|
390
|
+
category_col="phenotype_category",
|
|
391
|
+
p_col="pvalue",
|
|
392
|
+
)
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
## QQ Plots
|
|
396
|
+
|
|
397
|
+
Create quantile-quantile plots to assess p-value distribution:
|
|
398
|
+
|
|
399
|
+
```python
|
|
400
|
+
from pylocuszoom import LocusZoomPlotter
|
|
401
|
+
|
|
402
|
+
plotter = LocusZoomPlotter()
|
|
403
|
+
|
|
404
|
+
fig = plotter.plot_qq(
|
|
405
|
+
gwas_df,
|
|
406
|
+
p_col="p",
|
|
407
|
+
show_confidence_band=True, # 95% confidence band
|
|
408
|
+
show_lambda=True, # Genomic inflation factor in title
|
|
409
|
+
figsize=(6, 6),
|
|
410
|
+
)
|
|
411
|
+
fig.savefig("qq_plot.png", dpi=150)
|
|
412
|
+
```
|
|
413
|
+
|
|
414
|
+

|
|
415
|
+
*QQ plot with 95% confidence band and genomic inflation factor (λ).*
|
|
416
|
+
|
|
417
|
+
## Stacked Manhattan Plots
|
|
418
|
+
|
|
419
|
+
Compare multiple GWAS results in vertically stacked Manhattan plots:
|
|
420
|
+
|
|
421
|
+
```python
|
|
422
|
+
from pylocuszoom import LocusZoomPlotter
|
|
423
|
+
|
|
424
|
+
plotter = LocusZoomPlotter()
|
|
425
|
+
|
|
426
|
+
fig = plotter.plot_manhattan_stacked(
|
|
427
|
+
[gwas_study1, gwas_study2, gwas_study3],
|
|
428
|
+
chrom_col="chrom",
|
|
429
|
+
pos_col="pos",
|
|
430
|
+
p_col="p",
|
|
431
|
+
panel_labels=["Study 1", "Study 2", "Study 3"],
|
|
432
|
+
significance_threshold=5e-8,
|
|
433
|
+
figsize=(12, 8),
|
|
434
|
+
title="Multi-study GWAS Comparison",
|
|
435
|
+
)
|
|
436
|
+
fig.savefig("manhattan_stacked.png", dpi=150)
|
|
437
|
+
```
|
|
438
|
+
|
|
439
|
+

|
|
440
|
+
*Stacked Manhattan plots comparing three GWAS studies with shared chromosome axis.*
|
|
441
|
+
|
|
442
|
+
## Manhattan and QQ Side-by-Side
|
|
443
|
+
|
|
444
|
+
Create combined Manhattan and QQ plots in a single figure:
|
|
445
|
+
|
|
446
|
+
```python
|
|
447
|
+
from pylocuszoom import LocusZoomPlotter
|
|
448
|
+
|
|
449
|
+
plotter = LocusZoomPlotter()
|
|
450
|
+
|
|
451
|
+
fig = plotter.plot_manhattan_qq(
|
|
452
|
+
gwas_df,
|
|
453
|
+
chrom_col="chrom",
|
|
454
|
+
pos_col="pos",
|
|
455
|
+
p_col="p",
|
|
456
|
+
significance_threshold=5e-8,
|
|
457
|
+
show_confidence_band=True,
|
|
458
|
+
show_lambda=True,
|
|
459
|
+
figsize=(14, 5),
|
|
460
|
+
title="GWAS Results",
|
|
461
|
+
)
|
|
462
|
+
fig.savefig("manhattan_qq.png", dpi=150)
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+

|
|
466
|
+
*Combined Manhattan and QQ plot showing genome-wide associations and p-value distribution.*
|
|
467
|
+
|
|
335
468
|
## PySpark Support
|
|
336
469
|
|
|
337
470
|
For large-scale genomics data, convert PySpark DataFrames with `to_pandas()` before plotting:
|
|
@@ -414,7 +547,7 @@ gwas_df = pd.DataFrame({
|
|
|
414
547
|
|--------|------|----------|-------------|
|
|
415
548
|
| `chr` | str or int | Yes | Chromosome identifier. Accepts "1", "chr1", or 1. The "chr" prefix is stripped for matching. |
|
|
416
549
|
| `start` | int | Yes | Gene start position (bp, 1-based). Transcript start for strand-aware genes. |
|
|
417
|
-
| `end` | int | Yes | Gene end position (bp, 1-based). Must be
|
|
550
|
+
| `end` | int | Yes | Gene end position (bp, 1-based). Must be >= start. |
|
|
418
551
|
| `gene_name` | str | Yes | Gene symbol displayed in track (e.g., "BRCA1", "TP53"). Keep short for readability. |
|
|
419
552
|
|
|
420
553
|
Example:
|
|
@@ -516,6 +649,7 @@ Optional:
|
|
|
516
649
|
## Documentation
|
|
517
650
|
|
|
518
651
|
- [User Guide](docs/USER_GUIDE.md) - Comprehensive documentation with API reference
|
|
652
|
+
- [Code Map](docs/CODEMAP.md) - Architecture diagram with source code links
|
|
519
653
|
- [Architecture](docs/ARCHITECTURE.md) - Design decisions and component overview
|
|
520
654
|
- [Example Notebook](examples/getting_started.ipynb) - Interactive tutorial
|
|
521
655
|
- [CHANGELOG](CHANGELOG.md) - Version history
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
pylocuszoom/__init__.py,sha256=F-LIZ4jSH9JC09MqQymwYDyEJQ1DWpGDutreJ1qI7NE,6108
|
|
2
|
+
pylocuszoom/_plotter_utils.py,sha256=ELdSOcKk2KvOo_AxEWHeutmmUS4zZMaDMmQfpQUWaF0,1541
|
|
3
|
+
pylocuszoom/colors.py,sha256=B28rfhWwGZ-e6Q-F43iXxC6NZpjUo0yWk4S_-vp9ZvU,7686
|
|
4
|
+
pylocuszoom/config.py,sha256=qjIEodI-RY71RVyQ5QmE6WXcPXU4Re_xEWiDlkEww3g,13266
|
|
5
|
+
pylocuszoom/ensembl.py,sha256=w2msgBoIrY79iHI3hURSbevvdFHxHyWF9Z78hXtAaBc,14296
|
|
6
|
+
pylocuszoom/eqtl.py,sha256=9hGcFARABQRCMN3rco0pVlFJdmlh4SLBBKSgOvdIH_U,5924
|
|
7
|
+
pylocuszoom/exceptions.py,sha256=nd-rWMUodW62WVV4TfcYVPQcb66xV6v9FA-_4xHb5VY,926
|
|
8
|
+
pylocuszoom/finemapping.py,sha256=VYQs4o4dVREXicueT1anzuENiFZk6YXb6HpbwyF0FD0,5828
|
|
9
|
+
pylocuszoom/forest.py,sha256=K-wBinxBOqIzsNMtZJ587e_oMhUXIXEqmEzVTUbmHSY,1161
|
|
10
|
+
pylocuszoom/gene_track.py,sha256=Sh0JCSdLNAAH0NQEiDVMvyXjm63PiCMq3gLvewcagvo,17277
|
|
11
|
+
pylocuszoom/labels.py,sha256=l4PHAR_err75Z9kTmb3a2h0eunkFj6UjzhKBUgmZTDc,3623
|
|
12
|
+
pylocuszoom/ld.py,sha256=64xIulpDVvbMSryWUPoCQ99Odcjwf1wejpwVr_30MLU,6412
|
|
13
|
+
pylocuszoom/loaders.py,sha256=KpWPBO0BCb2yrGTtgdiOqOuhx2YLmjK_ywmpr3onnx8,25156
|
|
14
|
+
pylocuszoom/logging.py,sha256=nZHEkbnjp8zoyWj_S-Hy9UQvUYLoMoxyiOWRozBT2dg,4987
|
|
15
|
+
pylocuszoom/manhattan.py,sha256=sNhPnsfsIqe1ls74D-kKMFyF_ZmaYB9Ul8qf4UMWnF0,8022
|
|
16
|
+
pylocuszoom/manhattan_plotter.py,sha256=1QQxaXEh5YG4x6ZIxpdhdfQPI2KuO_525qYKI7c32n4,27584
|
|
17
|
+
pylocuszoom/phewas.py,sha256=6g2LmwA5kmxYlHgPxJvuXIMerEqfqgsrth110Y3CgVU,968
|
|
18
|
+
pylocuszoom/plotter.py,sha256=mMOQxyLU3d1XJGpDJUuy71fAFm6IAnQfMZQXHgN6Mzk,54689
|
|
19
|
+
pylocuszoom/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
20
|
+
pylocuszoom/qq.py,sha256=GPIFHXYCLvhP4IUgjcU3QELLREH8r1AEYXMord8gtEo,3650
|
|
21
|
+
pylocuszoom/recombination.py,sha256=e11IlFRXKILEAP-vgMcbFK28zbAQ5jY-fESsisogq0o,14570
|
|
22
|
+
pylocuszoom/schemas.py,sha256=XxeivyRm5LGDwJw4GToxzOSdyx1yXvFYk3xgeFJ6VW0,11858
|
|
23
|
+
pylocuszoom/stats_plotter.py,sha256=67bgU-TXGnmVTxfTRWT3-PFemVVy6lTu4-ZlxUnwHS4,11171
|
|
24
|
+
pylocuszoom/utils.py,sha256=Z2P__Eau3ilF2ftuAZBm11EZ1NqCFQzfr4br9jCiJmg,6887
|
|
25
|
+
pylocuszoom/validation.py,sha256=3D9axjUvNXWW3Mk7dwRG38-di2P0zDpVVGF5WNSfZbk,7403
|
|
26
|
+
pylocuszoom/backends/__init__.py,sha256=xefVj3jVxmYwVLLY5AZtFqTPMehQxZ2qGd-Pk7_V_Bk,4267
|
|
27
|
+
pylocuszoom/backends/base.py,sha256=d_IqH2yGWIfQHeUCcavV4eL6V68hpNtOyGfTyb2ke0I,22628
|
|
28
|
+
pylocuszoom/backends/bokeh_backend.py,sha256=cubjEzNq5vHov-CeBMLgmf3SAtEET-fUUB8d_oYFgiw,29151
|
|
29
|
+
pylocuszoom/backends/hover.py,sha256=Hjm_jcxJL8dDxO_Ye7jeWAUcHKlbH6oO8ZfGJ2MzIFM,6564
|
|
30
|
+
pylocuszoom/backends/matplotlib_backend.py,sha256=9WAFLWcclj2-4WKi6bE6IPJfQ_HNoIekOE45ibBGPa0,22824
|
|
31
|
+
pylocuszoom/backends/plotly_backend.py,sha256=VDEZMdP7nOeFYLli-YOc_2DG00ZA6VVRNUcvT5PU0HM,39084
|
|
32
|
+
pylocuszoom/reference_data/__init__.py,sha256=qqHqAUt1jebGlCN3CjqW3Z-_coHVNo5K3a3bb9o83hA,109
|
|
33
|
+
pylocuszoom-1.1.0.dist-info/METADATA,sha256=9m2MMDhv12XxZD93IskPFDYGluazggOSErn_1ieTFjM,21283
|
|
34
|
+
pylocuszoom-1.1.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
35
|
+
pylocuszoom-1.1.0.dist-info/licenses/LICENSE.md,sha256=U2y_hv8RcN5lECA3uK88irU3ODUE1TDAPictcmnP0Q4,698
|
|
36
|
+
pylocuszoom-1.1.0.dist-info/RECORD,,
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
pylocuszoom/__init__.py,sha256=UtrNrjV0b0frxv3Zl4jw5D8aTMbNSE55j-PPkd8rz28,5585
|
|
2
|
-
pylocuszoom/colors.py,sha256=B28rfhWwGZ-e6Q-F43iXxC6NZpjUo0yWk4S_-vp9ZvU,7686
|
|
3
|
-
pylocuszoom/ensembl.py,sha256=q767o86FdcKn4V9aK48ESFwNI7ATlaX5tnwjZReYMEw,14436
|
|
4
|
-
pylocuszoom/eqtl.py,sha256=OrpWbFMR1wKMCmfQiC-2sqYx-99TT2i1cStIrPWIUOs,5948
|
|
5
|
-
pylocuszoom/finemapping.py,sha256=ZPcnc9E6N41Su8222wCqBkB3bhhyfASvj9u9Ot4td4o,5898
|
|
6
|
-
pylocuszoom/forest.py,sha256=302gULz9I0UiwqgcB18R756OOl1aa54OsPYHc6TnxGY,1092
|
|
7
|
-
pylocuszoom/gene_track.py,sha256=PkBwfqByVxhXlAPco9-d4P5X7cTg2rrOnw7BJVx48ow,17818
|
|
8
|
-
pylocuszoom/labels.py,sha256=Ams5WVZFNVT692BRiQ5wZcdbdNEAm5xtgRwmF5u0s_A,3492
|
|
9
|
-
pylocuszoom/ld.py,sha256=64xIulpDVvbMSryWUPoCQ99Odcjwf1wejpwVr_30MLU,6412
|
|
10
|
-
pylocuszoom/loaders.py,sha256=KpWPBO0BCb2yrGTtgdiOqOuhx2YLmjK_ywmpr3onnx8,25156
|
|
11
|
-
pylocuszoom/logging.py,sha256=nZHEkbnjp8zoyWj_S-Hy9UQvUYLoMoxyiOWRozBT2dg,4987
|
|
12
|
-
pylocuszoom/phewas.py,sha256=6g2LmwA5kmxYlHgPxJvuXIMerEqfqgsrth110Y3CgVU,968
|
|
13
|
-
pylocuszoom/plotter.py,sha256=gFywhaHPuXlbKPxWaWfw7Wrw8kqPMUPzKMgDcRB6wu8,50709
|
|
14
|
-
pylocuszoom/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
15
|
-
pylocuszoom/recombination.py,sha256=97GGBLDLTlQSRMp5sLOna3mCeRxeJiiWPHrw4dBRjQs,14546
|
|
16
|
-
pylocuszoom/schemas.py,sha256=vABBBlAR1vUP6BIewZ8E-TYpacccrcxavrdIDVCrQB4,11916
|
|
17
|
-
pylocuszoom/utils.py,sha256=_rI6ov0MbsWlZGJ7ni-V4387cirmJCX6IF2JAYhBx6A,6929
|
|
18
|
-
pylocuszoom/validation.py,sha256=UInqlhOWhWaCT_mrO7O7SfB1DNIYkjvEMudy4YjtUBg,5698
|
|
19
|
-
pylocuszoom/backends/__init__.py,sha256=xefVj3jVxmYwVLLY5AZtFqTPMehQxZ2qGd-Pk7_V_Bk,4267
|
|
20
|
-
pylocuszoom/backends/base.py,sha256=PBdm9t4f_qFDMkYR5z3edW4DvpuQSCAXuaxs2qjAeH0,21034
|
|
21
|
-
pylocuszoom/backends/bokeh_backend.py,sha256=11zRhXH2guUHiaYXyd7l2IDAv6uawdRAv6dyGPkHmJc,25512
|
|
22
|
-
pylocuszoom/backends/hover.py,sha256=Hjm_jcxJL8dDxO_Ye7jeWAUcHKlbH6oO8ZfGJ2MzIFM,6564
|
|
23
|
-
pylocuszoom/backends/matplotlib_backend.py,sha256=098ITnvNrBTaEztqez_7D0sZ_rKAYIxS6EDR5Yxt8is,20924
|
|
24
|
-
pylocuszoom/backends/plotly_backend.py,sha256=A6ZuHw0wVZaIIA6FgYJ4SH-Sz59tHOtnGUl-e-2VzZM,30574
|
|
25
|
-
pylocuszoom/reference_data/__init__.py,sha256=qqHqAUt1jebGlCN3CjqW3Z-_coHVNo5K3a3bb9o83hA,109
|
|
26
|
-
pylocuszoom-0.8.0.dist-info/METADATA,sha256=VqHRvFL1Wq5OJO3B727Rl0H8UfbBPaxVIJUOSA22s5A,17866
|
|
27
|
-
pylocuszoom-0.8.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
28
|
-
pylocuszoom-0.8.0.dist-info/licenses/LICENSE.md,sha256=U2y_hv8RcN5lECA3uK88irU3ODUE1TDAPictcmnP0Q4,698
|
|
29
|
-
pylocuszoom-0.8.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|