arda-mapper 2.0.2__tar.gz → 2.0.3__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.
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/PKG-INFO +11 -2
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/README.md +10 -1
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/pyproject.toml +1 -1
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/src/arda/__init__.py +1 -1
- arda_mapper-2.0.3/src/arda/_database_fetch.py +68 -0
- arda_mapper-2.0.3/src/arda/paths.py +107 -0
- arda_mapper-2.0.2/src/arda/paths.py +0 -74
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/.github/workflows/ci.yml +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/.github/workflows/docs.yml +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/.github/workflows/publish.yml +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/.github/workflows/testpypi.yml +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/.gitignore +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/CMakeLists.txt +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/LICENSE +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/ROADMAP.md +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/assets/arda_dark.png +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/assets/arda_dark.svg +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/assets/arda_dark_bg.svg +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/assets/arda_light.png +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/assets/arda_light.svg +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/benchmarks/RESULTS.md +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/human/alleles.aa.fasta +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/human/alleles.fasta +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/human/build.log +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/human/combinations.tsv +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/human/d_germlines.fasta +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/human/markup.aa.tsv +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/human/markup.tsv +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/human/mmseqs/aa/VERSION +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/human/mmseqs/aa/db +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/human/mmseqs/aa/db.dbtype +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/human/mmseqs/aa/db.index +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/human/mmseqs/aa/db.lookup +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/human/mmseqs/aa/db.source +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/human/mmseqs/aa/db_h +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/human/mmseqs/aa/db_h.dbtype +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/human/mmseqs/aa/db_h.index +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/human/mmseqs/nt/VERSION +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/human/mmseqs/nt/db +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/human/mmseqs/nt/db.dbtype +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/human/mmseqs/nt/db.index +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/human/mmseqs/nt/db.lookup +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/human/mmseqs/nt/db.source +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/human/mmseqs/nt/db_h +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/human/mmseqs/nt/db_h.dbtype +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/human/mmseqs/nt/db_h.index +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/mouse/alleles.aa.fasta +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/mouse/alleles.fasta +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/mouse/build.log +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/mouse/combinations.tsv +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/mouse/d_germlines.fasta +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/mouse/markup.aa.tsv +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/mouse/markup.tsv +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/mouse/mmseqs/aa/VERSION +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/mouse/mmseqs/aa/db +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/mouse/mmseqs/aa/db.dbtype +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/mouse/mmseqs/aa/db.index +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/mouse/mmseqs/aa/db.lookup +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/mouse/mmseqs/aa/db.source +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/mouse/mmseqs/aa/db_h +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/mouse/mmseqs/aa/db_h.dbtype +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/mouse/mmseqs/aa/db_h.index +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/mouse/mmseqs/nt/VERSION +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/mouse/mmseqs/nt/db +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/mouse/mmseqs/nt/db.dbtype +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/mouse/mmseqs/nt/db.index +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/mouse/mmseqs/nt/db.lookup +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/mouse/mmseqs/nt/db.source +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/mouse/mmseqs/nt/db_h +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/mouse/mmseqs/nt/db_h.dbtype +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/mouse/mmseqs/nt/db_h.index +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rabbit/alleles.aa.fasta +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rabbit/alleles.fasta +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rabbit/build.log +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rabbit/combinations.tsv +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rabbit/d_germlines.fasta +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rabbit/markup.aa.tsv +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rabbit/markup.tsv +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rabbit/mmseqs/aa/VERSION +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rabbit/mmseqs/aa/db +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rabbit/mmseqs/aa/db.dbtype +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rabbit/mmseqs/aa/db.index +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rabbit/mmseqs/aa/db.lookup +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rabbit/mmseqs/aa/db.source +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rabbit/mmseqs/aa/db_h +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rabbit/mmseqs/aa/db_h.dbtype +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rabbit/mmseqs/aa/db_h.index +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rabbit/mmseqs/nt/VERSION +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rabbit/mmseqs/nt/db +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rabbit/mmseqs/nt/db.dbtype +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rabbit/mmseqs/nt/db.index +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rabbit/mmseqs/nt/db.lookup +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rabbit/mmseqs/nt/db.source +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rabbit/mmseqs/nt/db_h +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rabbit/mmseqs/nt/db_h.dbtype +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rabbit/mmseqs/nt/db_h.index +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rat/alleles.aa.fasta +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rat/alleles.fasta +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rat/build.log +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rat/combinations.tsv +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rat/d_germlines.fasta +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rat/markup.aa.tsv +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rat/markup.tsv +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rat/mmseqs/aa/VERSION +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rat/mmseqs/aa/db +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rat/mmseqs/aa/db.dbtype +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rat/mmseqs/aa/db.index +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rat/mmseqs/aa/db.lookup +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rat/mmseqs/aa/db.source +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rat/mmseqs/aa/db_h +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rat/mmseqs/aa/db_h.dbtype +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rat/mmseqs/aa/db_h.index +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rat/mmseqs/nt/VERSION +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rat/mmseqs/nt/db +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rat/mmseqs/nt/db.dbtype +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rat/mmseqs/nt/db.index +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rat/mmseqs/nt/db.lookup +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rat/mmseqs/nt/db.source +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rat/mmseqs/nt/db_h +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rat/mmseqs/nt/db_h.dbtype +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rat/mmseqs/nt/db_h.index +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rhesus_monkey/alleles.aa.fasta +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rhesus_monkey/alleles.fasta +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rhesus_monkey/build.log +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rhesus_monkey/combinations.tsv +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rhesus_monkey/d_germlines.fasta +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rhesus_monkey/markup.aa.tsv +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rhesus_monkey/markup.tsv +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rhesus_monkey/mmseqs/aa/VERSION +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rhesus_monkey/mmseqs/aa/db +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rhesus_monkey/mmseqs/aa/db.dbtype +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rhesus_monkey/mmseqs/aa/db.index +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rhesus_monkey/mmseqs/aa/db.lookup +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rhesus_monkey/mmseqs/aa/db.source +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rhesus_monkey/mmseqs/aa/db_h +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rhesus_monkey/mmseqs/aa/db_h.dbtype +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rhesus_monkey/mmseqs/aa/db_h.index +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rhesus_monkey/mmseqs/nt/VERSION +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rhesus_monkey/mmseqs/nt/db +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rhesus_monkey/mmseqs/nt/db.dbtype +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rhesus_monkey/mmseqs/nt/db.index +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rhesus_monkey/mmseqs/nt/db.lookup +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rhesus_monkey/mmseqs/nt/db.source +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rhesus_monkey/mmseqs/nt/db_h +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rhesus_monkey/mmseqs/nt/db_h.dbtype +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/database/vdj/rhesus_monkey/mmseqs/nt/db_h.index +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/docs/Makefile +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/docs/_static/custom.css +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/docs/api.rst +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/docs/conf.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/docs/index.rst +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/docs/installation.rst +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/docs/reference_build.rst +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/docs/usage.rst +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/environment.yml +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/examples/README.md +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/examples/example.airr.tsv +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/examples/example.fasta +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/memory/README.md +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/memory/cluster-slurm.md +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/memory/discordance-and-scaling.md +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/memory/igblast-gotchas.md +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/memory/markup-transfer.md +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/memory/mmseqs-params.md +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/memory/reading-frames.md +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/memory/scaffold-enumeration.md +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/scripts/bench_prefilter.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/scripts/bench_vs_igblast.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/scripts/build_test_fixtures.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/scripts/fetch_igblast.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/scripts/fetch_mmseqs.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/setup.sh +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/skills/arda/SKILL.md +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/skills/arda/references/annotation.md +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/skills/arda/references/install-mmseqs.md +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/skills/arda/references/reference-build.md +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/skills/arda/references/region-segments.md +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/src/_markup/markup.cpp +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/src/arda/_mmseqs_fetch.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/src/arda/adapter.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/src/arda/annotate/__init__.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/src/arda/annotate/airr_out.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/src/arda/annotate/io.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/src/arda/annotate/mapper.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/src/arda/annotate/reference.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/src/arda/annotate/transfer.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/src/arda/cli.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/src/arda/cluster.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/src/arda/igblast.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/src/arda/mmseqs.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/src/arda/refbuild/__init__.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/src/arda/refbuild/airr_extract.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/src/arda/refbuild/build.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/src/arda/refbuild/combinations.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/src/arda/refbuild/imgt.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/src/arda/refbuild/loci.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/src/arda/refbuild/translate.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/tests/__init__.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/tests/assets/realworld/human.fasta.gz +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/tests/assets/realworld/human.igblast.airr.tsv.gz +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/tests/assets/realworld/mouse.fasta.gz +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/tests/assets/realworld/mouse.igblast.airr.tsv.gz +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/tests/assets/realworld/rabbit.fasta.gz +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/tests/assets/realworld/rabbit.igblast.airr.tsv.gz +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/tests/assets/realworld/rat.fasta.gz +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/tests/assets/realworld/rat.igblast.airr.tsv.gz +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/tests/assets/realworld/rhesus_monkey.fasta.gz +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/tests/assets/realworld/rhesus_monkey.igblast.airr.tsv.gz +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/tests/benchmark/__init__.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/tests/benchmark/test_benchmark.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/tests/conftest.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/tests/realworld/__init__.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/tests/realworld/test_realworld.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/tests/synthetic/__init__.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/tests/synthetic/test_germline_segments.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/tests/synthetic/test_locus_disambiguation.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/tests/synthetic/test_synthetic.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/tests/unit/__init__.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/tests/unit/test_adapter.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/tests/unit/test_airr_out.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/tests/unit/test_cli.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/tests/unit/test_cluster.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/tests/unit/test_combinations.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/tests/unit/test_markup.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/tests/unit/test_mmseqs_fetch.py +0 -0
- {arda_mapper-2.0.2 → arda_mapper-2.0.3}/tests/unit/test_translate.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: arda-mapper
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.3
|
|
4
4
|
Summary: Antigen Receptor Domain Annotation — fast TCR/BCR FR/CDR region annotation
|
|
5
5
|
Keywords: immunology,tcr,bcr,airr,igblast,mmseqs2,annotation
|
|
6
6
|
Author-Email: Mikhail Shugay <mikhail.shugay@gmail.com>
|
|
@@ -37,6 +37,7 @@ Description-Content-Type: text/markdown
|
|
|
37
37
|
<h1 align="center">arda — Antigen Receptor Domain Annotation</h1>
|
|
38
38
|
|
|
39
39
|
<p align="center">
|
|
40
|
+
<a href="https://pypi.org/project/arda-mapper/"><img alt="PyPI" src="https://img.shields.io/pypi/v/arda-mapper"></a>
|
|
40
41
|
<a href="https://github.com/antigenomics/arda/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/antigenomics/arda/actions/workflows/ci.yml/badge.svg"></a>
|
|
41
42
|
<a href="https://docs.isalgo.dev/arda/"><img alt="docs" src="https://github.com/antigenomics/arda/actions/workflows/docs.yml/badge.svg"></a>
|
|
42
43
|
<img alt="python" src="https://img.shields.io/badge/python-3.10%2B-blue">
|
|
@@ -69,6 +70,13 @@ IgBLAST is the gold standard but is slow to invoke per-batch and awkward to embe
|
|
|
69
70
|
|
|
70
71
|
## Install
|
|
71
72
|
|
|
73
|
+
```bash
|
|
74
|
+
pip install arda-mapper # from PyPI (imports as `arda`); binary wheels ship the C++ extension
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
`mmseqs2` (the search backend) is fetched/managed by arda at runtime. For development — and to
|
|
78
|
+
get the committed germline references on disk — use `setup.sh`:
|
|
79
|
+
|
|
72
80
|
```bash
|
|
73
81
|
bash setup.sh # creates conda env `arda`, fetches IgBLAST, pip install -e .
|
|
74
82
|
conda activate arda
|
|
@@ -76,7 +84,8 @@ conda activate arda
|
|
|
76
84
|
|
|
77
85
|
Flags: `--no-conda` (use the active env), `--build-db` (rebuild references after
|
|
78
86
|
install), `--tests` (run the fast suites). The committed `database/vdj/<organism>/`
|
|
79
|
-
references mean **most users never need to build anything
|
|
87
|
+
references mean **most users never need to build anything**; a `pip`-only install builds them
|
|
88
|
+
on first use (or set `$ARDA_HOME` to a checkout).
|
|
80
89
|
|
|
81
90
|
Supported organisms: **human, mouse** (full IG + TR), **rat, rabbit, rhesus_monkey**
|
|
82
91
|
(IG only — IgBLAST ships no TR internal annotation for these).
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
<h1 align="center">arda — Antigen Receptor Domain Annotation</h1>
|
|
9
9
|
|
|
10
10
|
<p align="center">
|
|
11
|
+
<a href="https://pypi.org/project/arda-mapper/"><img alt="PyPI" src="https://img.shields.io/pypi/v/arda-mapper"></a>
|
|
11
12
|
<a href="https://github.com/antigenomics/arda/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/antigenomics/arda/actions/workflows/ci.yml/badge.svg"></a>
|
|
12
13
|
<a href="https://docs.isalgo.dev/arda/"><img alt="docs" src="https://github.com/antigenomics/arda/actions/workflows/docs.yml/badge.svg"></a>
|
|
13
14
|
<img alt="python" src="https://img.shields.io/badge/python-3.10%2B-blue">
|
|
@@ -40,6 +41,13 @@ IgBLAST is the gold standard but is slow to invoke per-batch and awkward to embe
|
|
|
40
41
|
|
|
41
42
|
## Install
|
|
42
43
|
|
|
44
|
+
```bash
|
|
45
|
+
pip install arda-mapper # from PyPI (imports as `arda`); binary wheels ship the C++ extension
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
`mmseqs2` (the search backend) is fetched/managed by arda at runtime. For development — and to
|
|
49
|
+
get the committed germline references on disk — use `setup.sh`:
|
|
50
|
+
|
|
43
51
|
```bash
|
|
44
52
|
bash setup.sh # creates conda env `arda`, fetches IgBLAST, pip install -e .
|
|
45
53
|
conda activate arda
|
|
@@ -47,7 +55,8 @@ conda activate arda
|
|
|
47
55
|
|
|
48
56
|
Flags: `--no-conda` (use the active env), `--build-db` (rebuild references after
|
|
49
57
|
install), `--tests` (run the fast suites). The committed `database/vdj/<organism>/`
|
|
50
|
-
references mean **most users never need to build anything
|
|
58
|
+
references mean **most users never need to build anything**; a `pip`-only install builds them
|
|
59
|
+
on first use (or set `$ARDA_HOME` to a checkout).
|
|
51
60
|
|
|
52
61
|
Supported organisms: **human, mouse** (full IG + TR), **rat, rabbit, rhesus_monkey**
|
|
53
62
|
(IG only — IgBLAST ships no TR internal annotation for these).
|
|
@@ -4,7 +4,7 @@ build-backend = "scikit_build_core.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "arda-mapper" # PyPI distribution name (`arda` is taken); imports as `arda`
|
|
7
|
-
version = "2.0.
|
|
7
|
+
version = "2.0.3"
|
|
8
8
|
description = "Antigen Receptor Domain Annotation — fast TCR/BCR FR/CDR region annotation"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"""Auto-fetch the curated arda reference database (a GitHub release asset).
|
|
2
|
+
|
|
3
|
+
The wheel ships code only; the ~50 MB curated ``vdj/`` reference (allele FASTAs + region
|
|
4
|
+
markup, per species, AA + NT) is published as the ``arda-reference-vdj.tar.gz`` asset on the
|
|
5
|
+
matching ``vX.Y.Z`` GitHub release and downloaded once into the per-user cache on first use.
|
|
6
|
+
Version-sensitive precompiled mmseqs DBs are *not* shipped — they are built on demand from
|
|
7
|
+
the fetched FASTAs into ``<cache>/data``.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from __future__ import annotations
|
|
11
|
+
|
|
12
|
+
import os
|
|
13
|
+
import shutil
|
|
14
|
+
import sys
|
|
15
|
+
import tarfile
|
|
16
|
+
import tempfile
|
|
17
|
+
from pathlib import Path
|
|
18
|
+
|
|
19
|
+
from . import __version__
|
|
20
|
+
from ._mmseqs_fetch import _download # reuse the hardened UA/retry downloader
|
|
21
|
+
|
|
22
|
+
_ASSET = "arda-reference-vdj.tar.gz"
|
|
23
|
+
_URL = "https://github.com/antigenomics/arda/releases/download/v{version}/" + _ASSET
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def reference_url(version: str | None = None) -> str:
|
|
27
|
+
"""Release-asset URL for the reference tarball at ``version`` (default: this build)."""
|
|
28
|
+
return _URL.format(version=version or __version__)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def fetch_database(dest: Path, *, force: bool = False, version: str | None = None) -> Path:
|
|
32
|
+
"""Download + extract the reference (``vdj/<org>/...``) into ``dest``; return ``dest``.
|
|
33
|
+
|
|
34
|
+
Skips the download if ``dest/vdj`` already exists (unless ``force``). Extraction rejects
|
|
35
|
+
symlinks/hardlinks and any path that escapes the temp dir (same guards as the mmseqs
|
|
36
|
+
fetch), then moves the ``vdj`` tree into place atomically-ish.
|
|
37
|
+
"""
|
|
38
|
+
dest = Path(dest)
|
|
39
|
+
if (dest / "vdj").is_dir() and not force:
|
|
40
|
+
return dest
|
|
41
|
+
dest.mkdir(parents=True, exist_ok=True)
|
|
42
|
+
url = reference_url(version)
|
|
43
|
+
print(f"[arda] fetching reference database (one-time): {url}", file=sys.stderr)
|
|
44
|
+
with tempfile.TemporaryDirectory(prefix="arda_db_") as td:
|
|
45
|
+
tmp = Path(td)
|
|
46
|
+
tarball = tmp / _ASSET
|
|
47
|
+
_download(url, tarball)
|
|
48
|
+
with tarfile.open(tarball) as tf:
|
|
49
|
+
tmp_resolved = tmp.resolve()
|
|
50
|
+
for member in tf.getmembers():
|
|
51
|
+
if member.issym() or member.islnk():
|
|
52
|
+
raise RuntimeError(f"Refusing to extract link from archive: {member.name}")
|
|
53
|
+
member_path = (tmp / member.name).resolve()
|
|
54
|
+
if not str(member_path).startswith(str(tmp_resolved) + os.sep):
|
|
55
|
+
raise RuntimeError(f"Refusing to extract path outside temp dir: {member.name}")
|
|
56
|
+
tf.extractall(tmp)
|
|
57
|
+
# tarball root holds vdj/ (created with `tar -C database ... vdj`); tolerate a nested layout.
|
|
58
|
+
src = tmp / "vdj"
|
|
59
|
+
if not src.is_dir():
|
|
60
|
+
src = next((p for p in tmp.rglob("vdj") if p.is_dir()), None)
|
|
61
|
+
if src is None:
|
|
62
|
+
raise RuntimeError(f"Unexpected reference archive layout in {_ASSET} (no vdj/)")
|
|
63
|
+
target = dest / "vdj"
|
|
64
|
+
if target.exists():
|
|
65
|
+
shutil.rmtree(target)
|
|
66
|
+
shutil.move(str(src), str(target))
|
|
67
|
+
print(f"[arda] installed reference -> {dest}", file=sys.stderr)
|
|
68
|
+
return dest
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"""Filesystem layout discovery for arda.
|
|
2
|
+
|
|
3
|
+
Two modes, resolved transparently:
|
|
4
|
+
|
|
5
|
+
* **Source checkout** (``$ARDA_HOME`` or an editable/development install) — ``bin/``,
|
|
6
|
+
``data/`` and ``database/`` live next to ``pyproject.toml``, exactly as committed.
|
|
7
|
+
* **PyPI install** (``pip install arda-mapper``, no source tree) — there is no bundled
|
|
8
|
+
``database/`` in the wheel (it is 50+ MB of curated references), so everything lives under
|
|
9
|
+
a per-user cache (``$XDG_CACHE_HOME/arda`` or ``~/.cache/arda``). The curated reference is
|
|
10
|
+
**auto-fetched once** into the cache on first use (see :mod:`arda._database_fetch`), and
|
|
11
|
+
mmseqs target DBs are built there on demand. No ``ARDA_HOME`` needed.
|
|
12
|
+
|
|
13
|
+
Set ``$ARDA_NO_AUTO_FETCH`` to disable the one-time reference download (e.g. air-gapped
|
|
14
|
+
runs where the cache was pre-populated).
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
from __future__ import annotations
|
|
18
|
+
|
|
19
|
+
import os
|
|
20
|
+
from functools import lru_cache
|
|
21
|
+
from pathlib import Path
|
|
22
|
+
|
|
23
|
+
__all__ = [
|
|
24
|
+
"project_root",
|
|
25
|
+
"cache_root",
|
|
26
|
+
"bin_dir",
|
|
27
|
+
"data_dir",
|
|
28
|
+
"database_dir",
|
|
29
|
+
"vdj_dir",
|
|
30
|
+
]
|
|
31
|
+
|
|
32
|
+
_MARKERS = ("pyproject.toml", "setup.sh")
|
|
33
|
+
_REFERENCE_MARKER = "vdj" # database_dir()/vdj must exist for the reference to be usable
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
@lru_cache(maxsize=1)
|
|
37
|
+
def _source_root() -> Path | None:
|
|
38
|
+
"""The source checkout root if this is a dev/editable install, else ``None``.
|
|
39
|
+
|
|
40
|
+
Honors ``$ARDA_HOME`` (must be a directory); otherwise walks up from this file looking
|
|
41
|
+
for a directory that has both ``database/`` and a project marker. Never raises for a
|
|
42
|
+
plain PyPI install — it simply returns ``None`` and the caller falls back to the cache.
|
|
43
|
+
"""
|
|
44
|
+
env = os.environ.get("ARDA_HOME")
|
|
45
|
+
if env:
|
|
46
|
+
root = Path(env).expanduser().resolve()
|
|
47
|
+
if not root.is_dir():
|
|
48
|
+
raise RuntimeError(f"ARDA_HOME={env!r} is not a directory")
|
|
49
|
+
return root
|
|
50
|
+
here = Path(__file__).resolve()
|
|
51
|
+
for parent in here.parents:
|
|
52
|
+
if (parent / "database").is_dir() and any((parent / m).exists() for m in _MARKERS):
|
|
53
|
+
return parent
|
|
54
|
+
return None
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
@lru_cache(maxsize=1)
|
|
58
|
+
def cache_root() -> Path:
|
|
59
|
+
"""Per-user cache root (``$XDG_CACHE_HOME/arda`` or ``~/.cache/arda``)."""
|
|
60
|
+
base = os.environ.get("XDG_CACHE_HOME")
|
|
61
|
+
root = (Path(base) if base else Path.home() / ".cache") / "arda"
|
|
62
|
+
root.mkdir(parents=True, exist_ok=True)
|
|
63
|
+
return root
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
@lru_cache(maxsize=1)
|
|
67
|
+
def project_root() -> Path:
|
|
68
|
+
"""Source checkout root if present, else the per-user cache root.
|
|
69
|
+
|
|
70
|
+
Unlike older arda, this never raises: a PyPI install with no source tree resolves to the
|
|
71
|
+
cache dir, where the reference is auto-fetched and mmseqs DBs are built.
|
|
72
|
+
"""
|
|
73
|
+
return _source_root() or cache_root()
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
def bin_dir() -> Path:
|
|
77
|
+
"""Directory holding the downloaded mmseqs/IgBLAST binaries (gitignored / cached)."""
|
|
78
|
+
return project_root() / "bin"
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
def data_dir() -> Path:
|
|
82
|
+
"""Writable scratch directory for downloads and built mmseqs DBs (gitignored / cached)."""
|
|
83
|
+
return project_root() / "data"
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
@lru_cache(maxsize=1)
|
|
87
|
+
def database_dir() -> Path:
|
|
88
|
+
"""Curated reference database root.
|
|
89
|
+
|
|
90
|
+
Source checkout → the committed ``database/``. PyPI install → ``<cache>/database``, with
|
|
91
|
+
the reference auto-fetched on first call unless ``$ARDA_NO_AUTO_FETCH`` is set.
|
|
92
|
+
"""
|
|
93
|
+
src = _source_root()
|
|
94
|
+
if src is not None:
|
|
95
|
+
return src / "database"
|
|
96
|
+
db = cache_root() / "database"
|
|
97
|
+
if not (db / _REFERENCE_MARKER).is_dir() and "ARDA_NO_AUTO_FETCH" not in os.environ:
|
|
98
|
+
from ._database_fetch import fetch_database
|
|
99
|
+
|
|
100
|
+
fetch_database(db)
|
|
101
|
+
return db
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
def vdj_dir(species: str | None = None) -> Path:
|
|
105
|
+
"""``database/vdj`` (or a single species subdirectory)."""
|
|
106
|
+
base = database_dir() / "vdj"
|
|
107
|
+
return base / species if species else base
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
"""Filesystem layout discovery for arda.
|
|
2
|
-
|
|
3
|
-
Resolves the locations of the project's ``bin/`` (downloaded IgBLAST release),
|
|
4
|
-
``data/`` (scratch/downloads), and ``database/`` (committed curated references).
|
|
5
|
-
|
|
6
|
-
Resolution order for the project root:
|
|
7
|
-
|
|
8
|
-
1. ``$ARDA_HOME`` if set.
|
|
9
|
-
2. Walking up from this file to find a directory containing both ``database``
|
|
10
|
-
and one of ``pyproject.toml`` / ``setup.sh`` (the editable-install / source case).
|
|
11
|
-
"""
|
|
12
|
-
|
|
13
|
-
from __future__ import annotations
|
|
14
|
-
|
|
15
|
-
import os
|
|
16
|
-
from pathlib import Path
|
|
17
|
-
from functools import lru_cache
|
|
18
|
-
|
|
19
|
-
__all__ = [
|
|
20
|
-
"project_root",
|
|
21
|
-
"bin_dir",
|
|
22
|
-
"data_dir",
|
|
23
|
-
"database_dir",
|
|
24
|
-
"vdj_dir",
|
|
25
|
-
]
|
|
26
|
-
|
|
27
|
-
_MARKERS = ("pyproject.toml", "setup.sh")
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
@lru_cache(maxsize=1)
|
|
31
|
-
def project_root() -> Path:
|
|
32
|
-
"""Return the arda project root directory.
|
|
33
|
-
|
|
34
|
-
Honors ``$ARDA_HOME``; otherwise searches parent directories for a source
|
|
35
|
-
checkout. Raises ``RuntimeError`` if neither resolves.
|
|
36
|
-
"""
|
|
37
|
-
env = os.environ.get("ARDA_HOME")
|
|
38
|
-
if env:
|
|
39
|
-
root = Path(env).expanduser().resolve()
|
|
40
|
-
if not root.is_dir():
|
|
41
|
-
raise RuntimeError(f"ARDA_HOME={env!r} is not a directory")
|
|
42
|
-
return root
|
|
43
|
-
|
|
44
|
-
here = Path(__file__).resolve()
|
|
45
|
-
for parent in here.parents:
|
|
46
|
-
if (parent / "database").is_dir() and any(
|
|
47
|
-
(parent / m).exists() for m in _MARKERS
|
|
48
|
-
):
|
|
49
|
-
return parent
|
|
50
|
-
raise RuntimeError(
|
|
51
|
-
"Could not locate the arda project root. Set $ARDA_HOME to the checkout "
|
|
52
|
-
"directory (the one containing 'database/')."
|
|
53
|
-
)
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
def bin_dir() -> Path:
|
|
57
|
-
"""Directory holding the downloaded IgBLAST release (gitignored)."""
|
|
58
|
-
return project_root() / "bin"
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
def data_dir() -> Path:
|
|
62
|
-
"""Scratch directory for downloads and intermediate artifacts (gitignored)."""
|
|
63
|
-
return project_root() / "data"
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
def database_dir() -> Path:
|
|
67
|
-
"""Committed curated reference database root."""
|
|
68
|
-
return project_root() / "database"
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
def vdj_dir(species: str | None = None) -> Path:
|
|
72
|
-
"""``database/vdj`` (or a single species subdirectory)."""
|
|
73
|
-
base = database_dir() / "vdj"
|
|
74
|
-
return base / species if species else base
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|