pav3 3.0.0.dev23__tar.gz → 3.0.0.dev26__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.
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/CONTRIBUTING.md +2 -2
- {pav3-3.0.0.dev23/src/pav3.egg-info → pav3-3.0.0.dev26}/PKG-INFO +100 -54
- pav3-3.0.0.dev23/PKG-INFO → pav3-3.0.0.dev26/README.md +82 -75
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/pyproject.toml +13 -16
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/__init__.py +11 -3
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/align/lift.py +4 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/align/op.py +6 -6
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/align/records.py +2 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/align/tables.py +66 -6
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/cli/__init__.py +11 -1
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/cli/_cli.py +49 -8
- pav3-3.0.0.dev26/src/pav3/cli/_common_opt.py +161 -0
- pav3-3.0.0.dev26/src/pav3/cli/_lift_cli.py +139 -0
- pav3-3.0.0.dev26/src/pav3/cli/_returncode.py +82 -0
- pav3-3.0.0.dev26/src/pav3/cli/_subcommand_lift.py +100 -0
- pav3-3.0.0.dev26/src/pav3/cli/_subcommand_maketable.py +106 -0
- pav3-3.0.0.dev26/src/pav3/cli/_subcommand_subseq.py +117 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/data/tracks/alignment_track_fields.tsv +27 -23
- pav3-3.0.0.dev26/src/pav3/data/tracks/variant_track_fields.tsv +41 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/data/workflow/rules/call.smk +4 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/data/workflow/rules/tracks.smk +4 -14
- pav3-3.0.0.dev26/src/pav3/errors.py +33 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/fig/tracks.py +207 -34
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/fig/util.py +5 -3
- pav3-3.0.0.dev26/src/pav3/format.py +122 -0
- pav3-3.0.0.dev26/src/pav3/lift/__init__.py +75 -0
- pav3-3.0.0.dev26/src/pav3/lift/errors.py +35 -0
- pav3-3.0.0.dev26/src/pav3/lift/output.py +516 -0
- pav3-3.0.0.dev26/src/pav3/lift/run.py +336 -0
- pav3-3.0.0.dev26/src/pav3/lift/source.py +422 -0
- pav3-3.0.0.dev26/src/pav3/lift/source_table.py +278 -0
- pav3-3.0.0.dev26/src/pav3/maketable.py +450 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/pipeline.py +56 -6
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/schema.py +75 -12
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/vcf.py +5 -1
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/workflow/call.py +29 -1
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/workflow/resource.py +2 -2
- pav3-3.0.0.dev26/src/pav3.egg-info/PKG-INFO +241 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3.egg-info/SOURCES.txt +19 -1
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3.egg-info/requires.txt +3 -4
- pav3-3.0.0.dev26/tests/cli/test_maketable.py +502 -0
- pav3-3.0.0.dev26/tests/lift/conftest.py +53 -0
- pav3-3.0.0.dev26/tests/lift/test_lift.py +197 -0
- pav3-3.0.0.dev26/tests/lift/test_subseq.py +201 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/tox.toml +1 -3
- pav3-3.0.0.dev23/README.md +0 -170
- pav3-3.0.0.dev23/src/pav3/cli/_common_opt.py +0 -41
- pav3-3.0.0.dev23/src/pav3/data/tracks/variant_track_fields.tsv +0 -37
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/CHANGELOG.md +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/CODE_OF_CONDUCT.md +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/LICENSE +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/MANIFEST.in +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/setup.cfg +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/__main__.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/align/__init__.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/align/features.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/align/lcmodel/__init__.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/align/lcmodel/_lcmodel.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/align/lcmodel/_lcmodel_logistic.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/align/lcmodel/_lcmodel_null.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/align/lcmodel/_util.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/align/score.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/align/trim.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/anno.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/call/__init__.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/call/expr.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/call/integrate.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/call/intra.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/call/util.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/cli/_subcommand_batch.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/cli/_subcommand_call.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/cli/_subcommand_license.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/const.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/data/lcmodel/default/model.json +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/data/lcmodel/human_95_80/model.json +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/data/lcmodel/human_95_80/model_info.tar.gz +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/data/lcmodel/human_95_80/weights.npz +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/data/lcmodel/human_98_80/model.json +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/data/lcmodel/human_98_80/model_info.tar.gz +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/data/lcmodel/human_98_80/weights.npz +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/data/lcmodel/prim_90_50/model.json +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/data/lcmodel/prim_90_50/model_info.tar.gz +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/data/lcmodel/prim_90_50/weights.npz +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/data/lcmodel/primdiv_85_50/model.json +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/data/lcmodel/primdiv_85_50/model_info.tar.gz +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/data/lcmodel/primdiv_85_50/weights.npz +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/data/workflow/Snakefile +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/data/workflow/profiles/pav_default/config.yaml +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/data/workflow/rules/align.smk +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/data/workflow/rules/data.smk +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/data/workflow/rules/pipeline.smk +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/dev/__init__.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/dev/imports.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/dev/inter.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/dev/path.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/dev/sm.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/dev/tables.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/fig/__init__.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/fig/const.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/fig/density.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/inv.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/io.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/kde.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/lgsv/__init__.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/lgsv/call.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/lgsv/chain.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/lgsv/interval.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/lgsv/io.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/lgsv/region_kde.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/lgsv/resources.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/lgsv/struct.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/lgsv/variant.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/params.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/region.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/seq.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/util.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3/workflow/__init__.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3.egg-info/dependency_links.txt +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3.egg-info/entry_points.txt +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/src/pav3.egg-info/top_level.txt +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/tests/TESTING_TODO.md +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/tests/align/.gitkeep +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/tests/align/test_score.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/tests/align/test_tables.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/tests/call/.gitkeep +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/tests/cli/.gitkeep +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/tests/conftest.py +0 -0
- {pav3-3.0.0.dev23 → pav3-3.0.0.dev26}/tests/lgsv/.gitkeep +0 -0
|
@@ -5,7 +5,7 @@ features.
|
|
|
5
5
|
|
|
6
6
|
## Bugs, questions, and feature requests
|
|
7
7
|
|
|
8
|
-
The project's [GitHub issues page](https://github.com/BeckLaboratory/
|
|
8
|
+
The project's [GitHub issues page](https://github.com/BeckLaboratory/pav3/issues) may be used to ask questions,
|
|
9
9
|
report bugs, and request features.
|
|
10
10
|
|
|
11
11
|
Please search for related issues before opening a new one. If you find a relevant open issue, you may monitor it for
|
|
@@ -49,7 +49,7 @@ Please make sure you understand the [Code of Conduct](CODE_OF_CONDUCT.md) before
|
|
|
49
49
|
|
|
50
50
|
Pull the codebase from GitHub:
|
|
51
51
|
```bash
|
|
52
|
-
git clone https://github.com/BeckLaboratory/
|
|
52
|
+
git clone https://github.com/BeckLaboratory/pav3.git
|
|
53
53
|
cd pav
|
|
54
54
|
```
|
|
55
55
|
|
|
@@ -1,17 +1,32 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pav3
|
|
3
|
-
Version: 3.0.0.
|
|
3
|
+
Version: 3.0.0.dev26
|
|
4
4
|
Summary: Assembly-based variant discovery
|
|
5
|
+
Author-email: Peter Audano <peter.audano@jax.org>
|
|
6
|
+
Maintainer-email: Peter Audano <peter.audano@jax.org>
|
|
5
7
|
License-Expression: MIT
|
|
8
|
+
Project-URL: Homepage, https://github.com/BeckLaboratory/pav3
|
|
9
|
+
Project-URL: Documentation, https://pav3.readthedocs.io
|
|
10
|
+
Project-URL: Repository, https://github.com/BeckLaboratory/pav3
|
|
11
|
+
Project-URL: Issues, https://github.com/BeckLaboratory/pav3/issues
|
|
12
|
+
Project-URL: Changelog, https://github.com/BeckLaboratory/pav3/blob/main/CHANGELOG.md
|
|
13
|
+
Keywords: variant calling,variant discovery,assembly-based,long-read,bioinformatics,genomics
|
|
14
|
+
Classifier: Development Status :: 4 - Beta
|
|
15
|
+
Classifier: Intended Audience :: Science/Research
|
|
16
|
+
Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
|
|
17
|
+
Classifier: Operating System :: OS Independent
|
|
18
|
+
Classifier: Programming Language :: Python :: 3
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
6
20
|
Requires-Python: >=3.12
|
|
7
21
|
Description-Content-Type: text/markdown
|
|
8
22
|
License-File: LICENSE
|
|
9
|
-
Requires-Dist: agglovar
|
|
23
|
+
Requires-Dist: agglovar>=0.0.1.dev18
|
|
10
24
|
Requires-Dist: biopython>=1.85
|
|
11
25
|
Requires-Dist: fastexcel>=0.14.0
|
|
12
26
|
Requires-Dist: frozendict>=2.4.6
|
|
13
27
|
Requires-Dist: hmmlearn>=0.3.3
|
|
14
28
|
Requires-Dist: intervaltree>=3.1.0
|
|
29
|
+
Requires-Dist: matplotlib>=3.11.0
|
|
15
30
|
Requires-Dist: numpy>=2.3.2
|
|
16
31
|
Requires-Dist: polars[numpy,pandas,pyarrow]>=1.41.0
|
|
17
32
|
Requires-Dist: pyarrow>=21.0.0
|
|
@@ -19,8 +34,7 @@ Requires-Dist: pysam>=0.23.3
|
|
|
19
34
|
Requires-Dist: scipy>=1.16.1
|
|
20
35
|
Requires-Dist: scipy-stubs==1.16.1.1
|
|
21
36
|
Requires-Dist: snakemake>=9.9.0
|
|
22
|
-
|
|
23
|
-
Requires-Dist: matplotlib>=3.10.8; extra == "fig"
|
|
37
|
+
Requires-Dist: xlsxwriter>=3.2.9
|
|
24
38
|
Dynamic: license-file
|
|
25
39
|
|
|
26
40
|
<h1 align="center"><img width="300px" src="img/logo/PAVLogo_Full.png"/></h1>
|
|
@@ -31,40 +45,23 @@ Dynamic: license-file
|
|
|
31
45
|
|
|
32
46
|
Variant caller for assembled genomes.
|
|
33
47
|
|
|
34
|
-
Please discuss with authors prior to publishing results using PAV 3
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
## Development release (Please read)
|
|
38
|
-
|
|
39
|
-
PAV 3 is currently a development release and may contain bugs. Please report problems you encounter.
|
|
40
|
-
|
|
41
|
-
PAV now uses Polars for fast data manipulation. If your job fails with strange Polars errors, such as "capacity
|
|
42
|
-
overflow" or "PanicException", this is likely from Polars running out of memory.
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
### Notes for early adopters
|
|
46
|
-
|
|
47
|
-
If you have been using development versions, please read about these changes.
|
|
48
|
-
|
|
49
|
-
**Call subcommand is deprecated.** If you have been running pav3 with the "call" subcommand, switch it to "batch"
|
|
50
|
-
(i.e. ("pav3 batch ...")). A future version will use "call" for single assemblies (with multiple haplotypes) defined on
|
|
51
|
-
the command-line and "batch" to run all assemblies from an assembly table.
|
|
52
|
-
|
|
53
|
-
**Moving configuration to pav.json.** The configuration file "config.json" is being moved to "pav.json". A future
|
|
54
|
-
version will ignore "config.json".
|
|
48
|
+
Please discuss with authors prior to publishing results using PAV 3; contact
|
|
49
|
+
[contact information](https://www.jax.org/people/peter-audano). A paper describing PAV 3 is in
|
|
50
|
+
preparation.
|
|
55
51
|
|
|
56
52
|
|
|
57
53
|
## Install and run
|
|
58
54
|
|
|
59
55
|
|
|
60
56
|
### Install
|
|
57
|
+
PAV requires Python 3.12 or newer.
|
|
61
58
|
```
|
|
62
59
|
pip install pav3
|
|
63
60
|
```
|
|
64
61
|
|
|
65
62
|
### Run
|
|
66
|
-
To run PAV, use the `pav3 batch` command after setting up configuration files (see below). A future version
|
|
67
|
-
|
|
63
|
+
To run PAV, use the `pav3 batch` command after setting up configuration files (see below). A future version may add
|
|
64
|
+
a command for single-assemblies without requiring configuration files.
|
|
68
65
|
|
|
69
66
|
Some Python environments may require you to run `pav3` through the `python` command:
|
|
70
67
|
```
|
|
@@ -72,13 +69,45 @@ python -m pav3 batch
|
|
|
72
69
|
```
|
|
73
70
|
|
|
74
71
|
|
|
72
|
+
### Containers
|
|
73
|
+
|
|
74
|
+
Public container images include PAV and all dependencies.
|
|
75
|
+
|
|
76
|
+
> [!IMPORTANT]
|
|
77
|
+
> Pulling containers will generate 401 errors pending permissions changes by our organization. This should be
|
|
78
|
+
> corrected within a few days, please check back.
|
|
79
|
+
|
|
80
|
+
Docker:
|
|
81
|
+
```
|
|
82
|
+
docker pull ghcr.io/becklaboratory/pav3:latest
|
|
83
|
+
|
|
84
|
+
docker run --rm -v "$PWD:$PWD" -w "$PWD" --user "$(id -u):$(id -g)" \
|
|
85
|
+
ghcr.io/becklaboratory/pav3:latest batch
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Apptainer (or Singularity):
|
|
89
|
+
```
|
|
90
|
+
apptainer pull pav3.sif oras://ghcr.io/becklaboratory/pav3-sif:latest
|
|
91
|
+
|
|
92
|
+
apptainer run pav3.sif batch
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
The container runs `pav3` itself, so arguments follow the image exactly as they would on the command line (`batch`,
|
|
96
|
+
`--help`, and so on).
|
|
97
|
+
|
|
98
|
+
Both examples give PAV access to the current directory only. If the reference genome or the assemblies are somewhere
|
|
99
|
+
else, make those locations visible as well: add `-v /path:/path` for Docker or `--bind /path` for Apptainer.
|
|
100
|
+
|
|
101
|
+
Replace `latest` with a version (e.g. `3.0.0.dev24`) to pin a specific release.
|
|
102
|
+
|
|
103
|
+
|
|
75
104
|
### Dependencies
|
|
76
|
-
Currently, PAV needs `minimap2` in the environment where it is run
|
|
77
|
-
dependencies are handled by the installer.
|
|
105
|
+
Currently, PAV needs `minimap2` in the environment where it is run (the containers above already include it). This may
|
|
106
|
+
change in future releases. All other dependencies are handled by the installer.
|
|
78
107
|
|
|
79
108
|
|
|
80
109
|
### Output
|
|
81
|
-
PAV will output a VCF file for each sample
|
|
110
|
+
PAV will output a VCF file `NAME.vcf.gz` to the run directory for each sample.
|
|
82
111
|
|
|
83
112
|
* `results/NAME/call_hap`: Unmerged variant calls.
|
|
84
113
|
* Includes tables of callable regions in reference ("callable_ref") and query ("callable_qry") coordinates.
|
|
@@ -113,61 +142,67 @@ The assembly table points PAV to input assemblies. It may be in TSV, CSV, Excel,
|
|
|
113
142
|
optionally be gzipped). Each assembly has one row in the table.
|
|
114
143
|
|
|
115
144
|
Columns:
|
|
116
|
-
*
|
|
117
|
-
*
|
|
145
|
+
* name: Assembly or sample name.
|
|
146
|
+
* hap_\*: One column for each assembled haplotype.
|
|
118
147
|
|
|
119
148
|
|
|
120
149
|
#### Name column
|
|
121
150
|
|
|
122
|
-
The `
|
|
151
|
+
The `name` column contains the assembly name (or sample name). This column must be present and each row must have a
|
|
123
152
|
unique value.
|
|
124
153
|
|
|
125
154
|
|
|
126
155
|
#### Haplotype columns
|
|
127
156
|
|
|
128
|
-
PAV accepts one or more assembled haplotypes per assembly, each with a column in the table starting with "
|
|
157
|
+
PAV accepts one or more assembled haplotypes per assembly, each with a column in the table starting with "hap_". Each
|
|
129
158
|
is a path to an input file for one assembly haplotype.
|
|
130
159
|
|
|
131
|
-
Common column names are "
|
|
132
|
-
parental origins, "
|
|
160
|
+
Common column names are "hap_h1" for haplotype "h1" and "hap_h2" for haplotype "h2". For some assemblies with known
|
|
161
|
+
parental origins, "hap_pat" and "hap_mat" are commonly used.
|
|
133
162
|
|
|
134
163
|
There must be at least one haplotype per assembly, and PAV has no limits on the number of haplotypes (i.e. 3 or more
|
|
135
164
|
are acceptable).
|
|
136
165
|
|
|
137
|
-
Not all assemblies need to have the same haplotypes. PAV will ignore empty
|
|
138
|
-
example, if some assemblies have an "unphased" haplotype and
|
|
139
|
-
for assemblies that do not have it.
|
|
166
|
+
Not all assemblies need to have the same haplotypes. PAV will ignore empty "hap_" values for each assembly where the
|
|
167
|
+
path is empty. For example, if some assemblies have an "unphased" haplotype and others do not, include the
|
|
168
|
+
"hap_unphased" column and leave it blank for assemblies that do not have it.
|
|
140
169
|
|
|
141
170
|
Note that genotypes in the VCF file will have one allele for each haplotype defined for the assembly. For an assembly
|
|
142
171
|
with haplotypes "h1", "h2", and "unphased", three genotype alleles will be possible (e.g. "1|0|." for a heterozygous
|
|
143
172
|
variant present in "h1", not present in "h2", and uncallable in "unphased"). The order of genotypes is determined by
|
|
144
173
|
the order of haplotype columns in the assembly table.
|
|
145
174
|
|
|
146
|
-
Each "
|
|
175
|
+
Each "hap_" column contains paths to input files in FASTA, FASTQ, GFA, or FOFN format. FOFN may contain paths to these
|
|
147
176
|
same file types including other FOFNs (recursive FOFNs are not recommended, but PAV will detect cycles). Multiple files
|
|
148
177
|
can be input by separating them by semi-colons (i.e. "path/to/file1.fasta.gz;path/to/file2.fasta.gz") and a mix of
|
|
149
|
-
types is possible.
|
|
150
|
-
|
|
178
|
+
types is possible.
|
|
179
|
+
|
|
180
|
+
PAV will be fastest if the input is a single indexed FASTA file, which may be plain text or bgzipped (Samtools bgzip).
|
|
181
|
+
For all other input including multiple FASTA files or any GFA files for one haplotype, PAV will build a single FASTA
|
|
182
|
+
file from the input, index it, and use it for variant calling.
|
|
151
183
|
|
|
152
184
|
|
|
153
185
|
#### Configuration column for global overrides
|
|
154
186
|
|
|
155
|
-
An optional "
|
|
187
|
+
An optional "config" column can override global configuration parameters per assembly. Global configuration parameters
|
|
156
188
|
are defined in `pav.json` or are PAV default values if not defined. Values in this column are semicolon-separated lists
|
|
157
|
-
of key-value pairs (i.e. "key1=val1;key2=val2"). The "reference" parameter cannot be
|
|
189
|
+
of key-value pairs (i.e. "key1=val1;key2=val2"). The "reference" parameter cannot be set in the assembly table.
|
|
158
190
|
|
|
159
191
|
|
|
160
|
-
###
|
|
192
|
+
### Suitable genome references
|
|
161
193
|
|
|
162
|
-
|
|
163
|
-
|
|
194
|
+
Align against primary assemblies composed of chromosome scaffolds including unplaced contigs and unlocalized contigs
|
|
195
|
+
if they exist (GRCh/hg references). Do not use references with ALT, PATCH, or DECOY scaffolds. Reference redundancy
|
|
196
|
+
from these non-primary contigs may increase callset errors.
|
|
164
197
|
|
|
165
|
-
The GRCh38 HGSVC no-ALT reference for long reads
|
|
166
|
-
|
|
198
|
+
The GRCh38 HGSVC no-ALT reference for long reads was shared by the HGSVC consortium:
|
|
199
|
+
https://ftp.1000genomes.ebi.ac.uk/vol1/ftp/data_collections/HGSVC2/technical/reference/20200513_hg38_NoALT/
|
|
167
200
|
|
|
168
|
-
The T2T-CHM13v2.0 (hs1 on UCSC) is suitable without alteration.
|
|
169
|
-
|
|
170
|
-
|
|
201
|
+
The T2T-CHM13v2.0 (hs1 on UCSC) is suitable without alteration.
|
|
202
|
+
|
|
203
|
+
Custom per-sample assemblies containing a single-haplotype or an unphased ("squashed") assembly typically also make a
|
|
204
|
+
suitable reference as long as they are free of large structural misassemblies and large false duplications. For phased
|
|
205
|
+
assemblies, choose only one haplotype as a reference.
|
|
171
206
|
|
|
172
207
|
|
|
173
208
|
## PAV versions
|
|
@@ -176,8 +211,8 @@ PAV uses Python package versioning with three fields:
|
|
|
176
211
|
|
|
177
212
|
* Major: Major changes or new features.
|
|
178
213
|
* Minor: Small changes, but may affect PAV's API or command-line interfaces.
|
|
179
|
-
* Patch: Small changes and minor new features. Patch versions do break API or command-line compatibility, but may
|
|
180
|
-
add
|
|
214
|
+
* Patch: Small changes and minor new features. Patch versions do not break API or command-line compatibility, but may
|
|
215
|
+
add new features.
|
|
181
216
|
|
|
182
217
|
PAV follows Python's packaging versioning scheme (https://packaging.python.org/en/latest/discussions/versioning/).
|
|
183
218
|
|
|
@@ -187,9 +222,20 @@ and "3.0.0a1" is an early alpha version, and "3.0.0rc1" is a release candidate,
|
|
|
187
222
|
release and should not be considered production-ready.
|
|
188
223
|
|
|
189
224
|
|
|
225
|
+
## Reporting bugs
|
|
226
|
+
|
|
227
|
+
Please report problems you encounter on the
|
|
228
|
+
[issues page](https://github.com/BeckLaboratory/pav3/issues).
|
|
229
|
+
|
|
230
|
+
|
|
190
231
|
## Cite PAV
|
|
191
232
|
|
|
192
233
|
PAV 3 does not yet have a citation. For now, use the citation for previous PAV versions, but check back for updates.
|
|
193
234
|
|
|
194
235
|
Ebert et al., “Haplotype-Resolved Diverse Human Genomes and Integrated Analysis of Structural Variation,”
|
|
195
236
|
Science, February 25, 2021, eabf7117, https://doi.org/10.1126/science.abf7117 (PMID: 33632895).
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
## License
|
|
240
|
+
|
|
241
|
+
PAV is released under the MIT License. See [LICENSE](LICENSE).
|
|
@@ -1,28 +1,3 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: pav3
|
|
3
|
-
Version: 3.0.0.dev23
|
|
4
|
-
Summary: Assembly-based variant discovery
|
|
5
|
-
License-Expression: MIT
|
|
6
|
-
Requires-Python: >=3.12
|
|
7
|
-
Description-Content-Type: text/markdown
|
|
8
|
-
License-File: LICENSE
|
|
9
|
-
Requires-Dist: agglovar==0.0.1.dev14
|
|
10
|
-
Requires-Dist: biopython>=1.85
|
|
11
|
-
Requires-Dist: fastexcel>=0.14.0
|
|
12
|
-
Requires-Dist: frozendict>=2.4.6
|
|
13
|
-
Requires-Dist: hmmlearn>=0.3.3
|
|
14
|
-
Requires-Dist: intervaltree>=3.1.0
|
|
15
|
-
Requires-Dist: numpy>=2.3.2
|
|
16
|
-
Requires-Dist: polars[numpy,pandas,pyarrow]>=1.41.0
|
|
17
|
-
Requires-Dist: pyarrow>=21.0.0
|
|
18
|
-
Requires-Dist: pysam>=0.23.3
|
|
19
|
-
Requires-Dist: scipy>=1.16.1
|
|
20
|
-
Requires-Dist: scipy-stubs==1.16.1.1
|
|
21
|
-
Requires-Dist: snakemake>=9.9.0
|
|
22
|
-
Provides-Extra: fig
|
|
23
|
-
Requires-Dist: matplotlib>=3.10.8; extra == "fig"
|
|
24
|
-
Dynamic: license-file
|
|
25
|
-
|
|
26
1
|
<h1 align="center"><img width="300px" src="img/logo/PAVLogo_Full.png"/></h1>
|
|
27
2
|
<p align="center">Phased Assembly Variant Caller</p>
|
|
28
3
|
|
|
@@ -31,40 +6,23 @@ Dynamic: license-file
|
|
|
31
6
|
|
|
32
7
|
Variant caller for assembled genomes.
|
|
33
8
|
|
|
34
|
-
Please discuss with authors prior to publishing results using PAV 3
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
## Development release (Please read)
|
|
38
|
-
|
|
39
|
-
PAV 3 is currently a development release and may contain bugs. Please report problems you encounter.
|
|
40
|
-
|
|
41
|
-
PAV now uses Polars for fast data manipulation. If your job fails with strange Polars errors, such as "capacity
|
|
42
|
-
overflow" or "PanicException", this is likely from Polars running out of memory.
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
### Notes for early adopters
|
|
46
|
-
|
|
47
|
-
If you have been using development versions, please read about these changes.
|
|
48
|
-
|
|
49
|
-
**Call subcommand is deprecated.** If you have been running pav3 with the "call" subcommand, switch it to "batch"
|
|
50
|
-
(i.e. ("pav3 batch ...")). A future version will use "call" for single assemblies (with multiple haplotypes) defined on
|
|
51
|
-
the command-line and "batch" to run all assemblies from an assembly table.
|
|
52
|
-
|
|
53
|
-
**Moving configuration to pav.json.** The configuration file "config.json" is being moved to "pav.json". A future
|
|
54
|
-
version will ignore "config.json".
|
|
9
|
+
Please discuss with authors prior to publishing results using PAV 3; contact
|
|
10
|
+
[contact information](https://www.jax.org/people/peter-audano). A paper describing PAV 3 is in
|
|
11
|
+
preparation.
|
|
55
12
|
|
|
56
13
|
|
|
57
14
|
## Install and run
|
|
58
15
|
|
|
59
16
|
|
|
60
17
|
### Install
|
|
18
|
+
PAV requires Python 3.12 or newer.
|
|
61
19
|
```
|
|
62
20
|
pip install pav3
|
|
63
21
|
```
|
|
64
22
|
|
|
65
23
|
### Run
|
|
66
|
-
To run PAV, use the `pav3 batch` command after setting up configuration files (see below). A future version
|
|
67
|
-
|
|
24
|
+
To run PAV, use the `pav3 batch` command after setting up configuration files (see below). A future version may add
|
|
25
|
+
a command for single-assemblies without requiring configuration files.
|
|
68
26
|
|
|
69
27
|
Some Python environments may require you to run `pav3` through the `python` command:
|
|
70
28
|
```
|
|
@@ -72,13 +30,45 @@ python -m pav3 batch
|
|
|
72
30
|
```
|
|
73
31
|
|
|
74
32
|
|
|
33
|
+
### Containers
|
|
34
|
+
|
|
35
|
+
Public container images include PAV and all dependencies.
|
|
36
|
+
|
|
37
|
+
> [!IMPORTANT]
|
|
38
|
+
> Pulling containers will generate 401 errors pending permissions changes by our organization. This should be
|
|
39
|
+
> corrected within a few days, please check back.
|
|
40
|
+
|
|
41
|
+
Docker:
|
|
42
|
+
```
|
|
43
|
+
docker pull ghcr.io/becklaboratory/pav3:latest
|
|
44
|
+
|
|
45
|
+
docker run --rm -v "$PWD:$PWD" -w "$PWD" --user "$(id -u):$(id -g)" \
|
|
46
|
+
ghcr.io/becklaboratory/pav3:latest batch
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Apptainer (or Singularity):
|
|
50
|
+
```
|
|
51
|
+
apptainer pull pav3.sif oras://ghcr.io/becklaboratory/pav3-sif:latest
|
|
52
|
+
|
|
53
|
+
apptainer run pav3.sif batch
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
The container runs `pav3` itself, so arguments follow the image exactly as they would on the command line (`batch`,
|
|
57
|
+
`--help`, and so on).
|
|
58
|
+
|
|
59
|
+
Both examples give PAV access to the current directory only. If the reference genome or the assemblies are somewhere
|
|
60
|
+
else, make those locations visible as well: add `-v /path:/path` for Docker or `--bind /path` for Apptainer.
|
|
61
|
+
|
|
62
|
+
Replace `latest` with a version (e.g. `3.0.0.dev24`) to pin a specific release.
|
|
63
|
+
|
|
64
|
+
|
|
75
65
|
### Dependencies
|
|
76
|
-
Currently, PAV needs `minimap2` in the environment where it is run
|
|
77
|
-
dependencies are handled by the installer.
|
|
66
|
+
Currently, PAV needs `minimap2` in the environment where it is run (the containers above already include it). This may
|
|
67
|
+
change in future releases. All other dependencies are handled by the installer.
|
|
78
68
|
|
|
79
69
|
|
|
80
70
|
### Output
|
|
81
|
-
PAV will output a VCF file for each sample
|
|
71
|
+
PAV will output a VCF file `NAME.vcf.gz` to the run directory for each sample.
|
|
82
72
|
|
|
83
73
|
* `results/NAME/call_hap`: Unmerged variant calls.
|
|
84
74
|
* Includes tables of callable regions in reference ("callable_ref") and query ("callable_qry") coordinates.
|
|
@@ -113,61 +103,67 @@ The assembly table points PAV to input assemblies. It may be in TSV, CSV, Excel,
|
|
|
113
103
|
optionally be gzipped). Each assembly has one row in the table.
|
|
114
104
|
|
|
115
105
|
Columns:
|
|
116
|
-
*
|
|
117
|
-
*
|
|
106
|
+
* name: Assembly or sample name.
|
|
107
|
+
* hap_\*: One column for each assembled haplotype.
|
|
118
108
|
|
|
119
109
|
|
|
120
110
|
#### Name column
|
|
121
111
|
|
|
122
|
-
The `
|
|
112
|
+
The `name` column contains the assembly name (or sample name). This column must be present and each row must have a
|
|
123
113
|
unique value.
|
|
124
114
|
|
|
125
115
|
|
|
126
116
|
#### Haplotype columns
|
|
127
117
|
|
|
128
|
-
PAV accepts one or more assembled haplotypes per assembly, each with a column in the table starting with "
|
|
118
|
+
PAV accepts one or more assembled haplotypes per assembly, each with a column in the table starting with "hap_". Each
|
|
129
119
|
is a path to an input file for one assembly haplotype.
|
|
130
120
|
|
|
131
|
-
Common column names are "
|
|
132
|
-
parental origins, "
|
|
121
|
+
Common column names are "hap_h1" for haplotype "h1" and "hap_h2" for haplotype "h2". For some assemblies with known
|
|
122
|
+
parental origins, "hap_pat" and "hap_mat" are commonly used.
|
|
133
123
|
|
|
134
124
|
There must be at least one haplotype per assembly, and PAV has no limits on the number of haplotypes (i.e. 3 or more
|
|
135
125
|
are acceptable).
|
|
136
126
|
|
|
137
|
-
Not all assemblies need to have the same haplotypes. PAV will ignore empty
|
|
138
|
-
example, if some assemblies have an "unphased" haplotype and
|
|
139
|
-
for assemblies that do not have it.
|
|
127
|
+
Not all assemblies need to have the same haplotypes. PAV will ignore empty "hap_" values for each assembly where the
|
|
128
|
+
path is empty. For example, if some assemblies have an "unphased" haplotype and others do not, include the
|
|
129
|
+
"hap_unphased" column and leave it blank for assemblies that do not have it.
|
|
140
130
|
|
|
141
131
|
Note that genotypes in the VCF file will have one allele for each haplotype defined for the assembly. For an assembly
|
|
142
132
|
with haplotypes "h1", "h2", and "unphased", three genotype alleles will be possible (e.g. "1|0|." for a heterozygous
|
|
143
133
|
variant present in "h1", not present in "h2", and uncallable in "unphased"). The order of genotypes is determined by
|
|
144
134
|
the order of haplotype columns in the assembly table.
|
|
145
135
|
|
|
146
|
-
Each "
|
|
136
|
+
Each "hap_" column contains paths to input files in FASTA, FASTQ, GFA, or FOFN format. FOFN may contain paths to these
|
|
147
137
|
same file types including other FOFNs (recursive FOFNs are not recommended, but PAV will detect cycles). Multiple files
|
|
148
138
|
can be input by separating them by semi-colons (i.e. "path/to/file1.fasta.gz;path/to/file2.fasta.gz") and a mix of
|
|
149
|
-
types is possible.
|
|
150
|
-
|
|
139
|
+
types is possible.
|
|
140
|
+
|
|
141
|
+
PAV will be fastest if the input is a single indexed FASTA file, which may be plain text or bgzipped (Samtools bgzip).
|
|
142
|
+
For all other input including multiple FASTA files or any GFA files for one haplotype, PAV will build a single FASTA
|
|
143
|
+
file from the input, index it, and use it for variant calling.
|
|
151
144
|
|
|
152
145
|
|
|
153
146
|
#### Configuration column for global overrides
|
|
154
147
|
|
|
155
|
-
An optional "
|
|
148
|
+
An optional "config" column can override global configuration parameters per assembly. Global configuration parameters
|
|
156
149
|
are defined in `pav.json` or are PAV default values if not defined. Values in this column are semicolon-separated lists
|
|
157
|
-
of key-value pairs (i.e. "key1=val1;key2=val2"). The "reference" parameter cannot be
|
|
150
|
+
of key-value pairs (i.e. "key1=val1;key2=val2"). The "reference" parameter cannot be set in the assembly table.
|
|
151
|
+
|
|
158
152
|
|
|
153
|
+
### Suitable genome references
|
|
159
154
|
|
|
160
|
-
|
|
155
|
+
Align against primary assemblies composed of chromosome scaffolds including unplaced contigs and unlocalized contigs
|
|
156
|
+
if they exist (GRCh/hg references). Do not use references with ALT, PATCH, or DECOY scaffolds. Reference redundancy
|
|
157
|
+
from these non-primary contigs may increase callset errors.
|
|
161
158
|
|
|
162
|
-
|
|
163
|
-
|
|
159
|
+
The GRCh38 HGSVC no-ALT reference for long reads was shared by the HGSVC consortium:
|
|
160
|
+
https://ftp.1000genomes.ebi.ac.uk/vol1/ftp/data_collections/HGSVC2/technical/reference/20200513_hg38_NoALT/
|
|
164
161
|
|
|
165
|
-
The
|
|
166
|
-
ftp://ftp.1000genomes.ebi.ac.uk/vol1/ftp/data_collections/HGSVC2/technical/reference/20200513_hg38_NoALT/
|
|
162
|
+
The T2T-CHM13v2.0 (hs1 on UCSC) is suitable without alteration.
|
|
167
163
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
164
|
+
Custom per-sample assemblies containing a single-haplotype or an unphased ("squashed") assembly typically also make a
|
|
165
|
+
suitable reference as long as they are free of large structural misassemblies and large false duplications. For phased
|
|
166
|
+
assemblies, choose only one haplotype as a reference.
|
|
171
167
|
|
|
172
168
|
|
|
173
169
|
## PAV versions
|
|
@@ -176,8 +172,8 @@ PAV uses Python package versioning with three fields:
|
|
|
176
172
|
|
|
177
173
|
* Major: Major changes or new features.
|
|
178
174
|
* Minor: Small changes, but may affect PAV's API or command-line interfaces.
|
|
179
|
-
* Patch: Small changes and minor new features. Patch versions do break API or command-line compatibility, but may
|
|
180
|
-
add
|
|
175
|
+
* Patch: Small changes and minor new features. Patch versions do not break API or command-line compatibility, but may
|
|
176
|
+
add new features.
|
|
181
177
|
|
|
182
178
|
PAV follows Python's packaging versioning scheme (https://packaging.python.org/en/latest/discussions/versioning/).
|
|
183
179
|
|
|
@@ -187,9 +183,20 @@ and "3.0.0a1" is an early alpha version, and "3.0.0rc1" is a release candidate,
|
|
|
187
183
|
release and should not be considered production-ready.
|
|
188
184
|
|
|
189
185
|
|
|
186
|
+
## Reporting bugs
|
|
187
|
+
|
|
188
|
+
Please report problems you encounter on the
|
|
189
|
+
[issues page](https://github.com/BeckLaboratory/pav3/issues).
|
|
190
|
+
|
|
191
|
+
|
|
190
192
|
## Cite PAV
|
|
191
193
|
|
|
192
194
|
PAV 3 does not yet have a citation. For now, use the citation for previous PAV versions, but check back for updates.
|
|
193
195
|
|
|
194
196
|
Ebert et al., “Haplotype-Resolved Diverse Human Genomes and Integrated Analysis of Structural Variation,”
|
|
195
197
|
Science, February 25, 2021, eabf7117, https://doi.org/10.1126/science.abf7117 (PMID: 33632895).
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
## License
|
|
201
|
+
|
|
202
|
+
PAV is released under the MIT License. See [LICENSE](LICENSE).
|
|
@@ -11,12 +11,13 @@ readme = "README.md"
|
|
|
11
11
|
|
|
12
12
|
requires-python = ">=3.12"
|
|
13
13
|
dependencies = [
|
|
14
|
-
"agglovar
|
|
14
|
+
"agglovar>=0.0.1.dev18",
|
|
15
15
|
"biopython>=1.85",
|
|
16
16
|
"fastexcel>=0.14.0",
|
|
17
17
|
"frozendict>=2.4.6",
|
|
18
18
|
"hmmlearn>=0.3.3",
|
|
19
19
|
"intervaltree>=3.1.0",
|
|
20
|
+
"matplotlib>=3.11.0",
|
|
20
21
|
"numpy>=2.3.2",
|
|
21
22
|
"polars[numpy,pandas,pyarrow]>=1.41.0",
|
|
22
23
|
"pyarrow>=21.0.0",
|
|
@@ -24,23 +25,9 @@ dependencies = [
|
|
|
24
25
|
"scipy>=1.16.1",
|
|
25
26
|
"scipy-stubs==1.16.1.1",
|
|
26
27
|
"snakemake>=9.9.0",
|
|
28
|
+
"xlsxwriter>=3.2.9",
|
|
27
29
|
]
|
|
28
30
|
|
|
29
|
-
[project.scripts]
|
|
30
|
-
pav3 = "pav3.cli:main"
|
|
31
|
-
|
|
32
|
-
[project.optional-dependencies]
|
|
33
|
-
fig = [
|
|
34
|
-
"matplotlib>=3.10.8",
|
|
35
|
-
]
|
|
36
|
-
|
|
37
|
-
[pav.urls]
|
|
38
|
-
Homepage = "https://github.com/BeckLaboratory/pav"
|
|
39
|
-
Documentation = "https://pav3.readthedocs.io"
|
|
40
|
-
Repository = "https://github.com/BeckLaboratory/pav"
|
|
41
|
-
Issues = "https://github.com/BeckLaboratory/pav/issues"
|
|
42
|
-
Changelog = "https://github.com/BeckLaboratory/pav/blob/master/CHANGELOG.md"
|
|
43
|
-
|
|
44
31
|
keywords = [
|
|
45
32
|
"variant calling",
|
|
46
33
|
"variant discovery",
|
|
@@ -67,6 +54,16 @@ maintainers = [
|
|
|
67
54
|
{name = "Peter Audano", email = "peter.audano@jax.org"}
|
|
68
55
|
]
|
|
69
56
|
|
|
57
|
+
[project.scripts]
|
|
58
|
+
pav3 = "pav3.cli:main"
|
|
59
|
+
|
|
60
|
+
[project.urls]
|
|
61
|
+
Homepage = "https://github.com/BeckLaboratory/pav3"
|
|
62
|
+
Documentation = "https://pav3.readthedocs.io"
|
|
63
|
+
Repository = "https://github.com/BeckLaboratory/pav3"
|
|
64
|
+
Issues = "https://github.com/BeckLaboratory/pav3/issues"
|
|
65
|
+
Changelog = "https://github.com/BeckLaboratory/pav3/blob/main/CHANGELOG.md"
|
|
66
|
+
|
|
70
67
|
[dependency-groups]
|
|
71
68
|
dev = [
|
|
72
69
|
"adbc-driver-manager>=1.7.0",
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"""PAV Python library routines."""
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import importlib
|
|
4
|
+
import logging
|
|
5
|
+
|
|
6
|
+
__version__ = '3.0.0.dev26'
|
|
4
7
|
|
|
5
8
|
__all__ = [
|
|
6
9
|
'align',
|
|
@@ -8,11 +11,14 @@ __all__ = [
|
|
|
8
11
|
'call',
|
|
9
12
|
'cli',
|
|
10
13
|
'const',
|
|
14
|
+
'errors',
|
|
11
15
|
'fig',
|
|
16
|
+
'format',
|
|
12
17
|
'io',
|
|
13
18
|
'inv',
|
|
14
19
|
'kde',
|
|
15
20
|
'lgsv',
|
|
21
|
+
'maketable',
|
|
16
22
|
'params',
|
|
17
23
|
'pipeline',
|
|
18
24
|
'region',
|
|
@@ -56,7 +62,9 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
|
56
62
|
SOFTWARE.
|
|
57
63
|
"""
|
|
58
64
|
|
|
59
|
-
import importlib
|
|
60
|
-
|
|
61
65
|
for name in __all__:
|
|
62
66
|
globals()[name] = importlib.import_module(f'.{name}', package=__name__)
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
# Configure logging
|
|
70
|
+
logging.getLogger(__name__).addHandler(logging.NullHandler())
|
|
@@ -58,6 +58,7 @@ poor alignment record is not prioritized over one where both coordinates land on
|
|
|
58
58
|
alignment record.
|
|
59
59
|
|
|
60
60
|
Values:
|
|
61
|
+
|
|
61
62
|
* score: Prioritize by the alignment record scores. First by the lowest score, then by the highest.
|
|
62
63
|
* filter: Prioritize by the lesser number of values in the alignment record "filter", first on
|
|
63
64
|
the record with more filters, then on the record with fewer filters.
|
|
@@ -69,6 +70,7 @@ Values:
|
|
|
69
70
|
if a lift switches alignment records.
|
|
70
71
|
|
|
71
72
|
Keys:
|
|
73
|
+
|
|
72
74
|
* best: Prioritize on the best alignment records (score, filter, len, single_align, same_align).
|
|
73
75
|
* align: Same align, then best (same_align, score, filter, len, single_align).
|
|
74
76
|
* len: Same region length, then best (len, score, filter, single_align, same_align).
|
|
@@ -391,6 +393,7 @@ class AlignLift:
|
|
|
391
393
|
"""Lift coordinates from query to reference.
|
|
392
394
|
|
|
393
395
|
Each dict has the following keys:
|
|
396
|
+
|
|
394
397
|
- chrom: Reference chromosome
|
|
395
398
|
- pos: Reference position in 0-based coordinates.
|
|
396
399
|
- is_rev: Whether the query is reverse-complemented in this alignment
|
|
@@ -456,6 +459,7 @@ class AlignLift:
|
|
|
456
459
|
"""Lift coordinates from reference to query.
|
|
457
460
|
|
|
458
461
|
Each dict has the following keys:
|
|
462
|
+
|
|
459
463
|
- chrom: Query ID
|
|
460
464
|
- pos: Query position in 0-based coordinates
|
|
461
465
|
- is_rev: Whether the query is reverse-complemented
|