varcode 11.3.2__tar.gz → 11.3.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.
- {varcode-11.3.2 → varcode-11.3.3}/CHANGELOG.md +10 -0
- {varcode-11.3.2/varcode.egg-info → varcode-11.3.3}/PKG-INFO +1 -1
- {varcode-11.3.2 → varcode-11.3.3}/pyproject.toml +6 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_genome_sequence.py +8 -9
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_public_somatic.py +20 -10
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_reference.py +40 -17
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_structural_variants.py +2 -1
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_symbolic_alleles.py +10 -5
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_vcf.py +19 -6
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_vcf_output.py +13 -1
- {varcode-11.3.2 → varcode-11.3.3}/varcode/reference.py +10 -4
- varcode-11.3.3/varcode/version.py +1 -0
- {varcode-11.3.2 → varcode-11.3.3/varcode.egg-info}/PKG-INFO +1 -1
- varcode-11.3.2/varcode/version.py +0 -1
- {varcode-11.3.2 → varcode-11.3.3}/AGENTS.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/CONTRIBUTING.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/LICENSE +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/MANIFEST.in +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/README.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/RELEASING.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/deploy.sh +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/develop.sh +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/docs/annotator_contract.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/docs/api.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/docs/api_annotators.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/docs/api_effects.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/docs/api_orfs.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/docs/api_phasing.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/docs/api_rna.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/docs/api_sample_identity.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/docs/api_variants.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/docs/changelog.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/docs/conventions.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/docs/created_orfs.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/docs/csv.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/docs/dev/api-quality.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/docs/effect_annotation.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/docs/effect_types.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/docs/errors.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/docs/experimental_annotators.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/docs/genotype.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/docs/germline.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/docs/getting_started.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/docs/index.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/docs/library_roles.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/docs/native_references.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/docs/phasing.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/docs/proteome.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/docs/rna_structures.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/docs/sample_identity.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/docs/splice_variants.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/docs/structural_variants.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/docs/sv_comparison.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/docs/sv_reference.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/docs/transcript_models.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/docs/transforms.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/docs/uorf_annotations.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/examples/benchmark_native_references.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/examples/vcf_header_usage.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/lint.sh +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/mkdocs.yml +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/requirements.txt +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/setup.cfg +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/test.sh +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/README.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/__init__.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/benchmark_vcf_load.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/collect_osteosarc_variants.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/common.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/conftest.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/README.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/SHA256SUMS +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/created_orfs/CDKN2A.json +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/created_orfs/README.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/dbnsfp_validation_set.csv +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/different-samples.1.vcf +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/different-samples.2.vcf +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/documentation/merged_phased.vcf +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/documentation/normal.vcf +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/documentation/structural_variants.vcf +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/documentation/variants.vcf +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/duplicate-id.1.vcf +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/duplicate-id.2.vcf +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/duplicates.maf +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/duplicates.vcf +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/mouse_vcf_dbsnp_chr1_partial.vcf +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/multiallelic.vcf +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/mutect-example-headerless.vcf +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/mutect-example.vcf +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/native_references/FOXI3-NP_001129118.1.fa +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/native_references/README.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/native_references/cases.json +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/native_references/chm13.cdna.fa.gz +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/native_references/chm13.gtf.gz +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/native_references/chm13.json +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/native_references/chm13.pep.fa.gz +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/native_references/dna-windows.json.gz +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/native_references/dog-mito.json +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/native_references/dog-tumour-source-audit.json +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/native_references/dog.cdna.fa.gz +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/native_references/dog.gtf.gz +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/native_references/dog.json +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/native_references/dog.pep.fa.gz +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/native_references/mouse.cdna.fa.gz +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/native_references/mouse.gtf.gz +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/native_references/mouse.json +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/native_references/mouse.pep.fa.gz +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/native_references/structural-cases.json +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/osteosarc_esvee_shared_svs.vcf +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/osteosarc_esvee_somatic.vcf +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/osteosarc_observed_junctions.json +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/osteosarc_snapshot_2026-09-18t.zip +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/osteosarc_variants.json +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/ov.wustle.subset5.maf +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/public_somatic/COLO829-SV-LICENSE.txt +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/public_somatic/LANCET2-LICENSE.txt +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/public_somatic/README.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/public_somatic/build_fixtures.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/public_somatic/canine-osa-vep99.tsv +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/public_somatic/canine-ros-native.json +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/public_somatic/canine-unresolved.json +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/public_somatic/check_ros_sources.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/public_somatic/colo829-lancet2-two-tech.vcf.gz +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/public_somatic/colo829-nygc-v6.vcf.gz +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/public_somatic/colo829-sv-truth.vcf +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/public_somatic/hcc1395-consensus-sv.tsv +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/public_somatic/hcc1395-lancet2-two-tech.vcf.gz +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/public_somatic/hcc1395-seqc2-indel.vcf.gz +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/public_somatic/hcc1395-seqc2-snv.vcf.gz +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/public_somatic/manifest.json +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/real_callers/README.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/real_callers/mutect2_example.vcf +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/real_callers/strelka2_somatic_snvs.vcf +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/real_callers/vep_annotated_csq.vcf +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/same-samples.1.vcf +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/same-samples.2.vcf +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/sid_rna_effect_references.json +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/simple.1.vcf +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/simple.2.vcf +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/somatic_hg19_14muts.space_in_sample_name.vcf +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/somatic_hg19_14muts.vcf +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/somatic_hg19_14muts.vcf.gz +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/spec_examples/README.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/spec_examples/vcf42_spec_trio.vcf +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/spec_examples/vcf43_spec_sv.vcf +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/strelka-example.vcf +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/tcga_ov.head.maf +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/tcga_ov.head.xychr.maf +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/transcript_orfs_ensembl115.json +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data/transcript_orfs_ensembl115.md +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/data.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/native_reference_fixture.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/osteosarc_variants.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/public_somatic.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_annotator_divergence_scenarios.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_annotator_haplotypes.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_annotator_parity_adversarial.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_annotators.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_api_inputs.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_bnd_retained_segments.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_canine_ros.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_cli_effects.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_cli_genes.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_cli_records.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_cli_reference_orfs.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_cli_without_pkg_resources.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_collection_exact_equality.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_collection_filtering.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_collection_variants_attr_consistency.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_common.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_common_transcript_orfs.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_composed_transcript_sequences.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_composition_default.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_contig_resolution.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_cosmic_mutations.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_created_orfs.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_cryptic_exons.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_csv_roundtrip.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_dated_reference.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_dbnsfp_validation.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_default_structural_helpers.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_deletion_short_description.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_deploy_script.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_documentation_examples.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_effect_annotation_errors.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_effect_candidates.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_effect_classes.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_effect_collection.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_effect_collection_serialization.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_effect_collection_sort_order.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_effect_hypotheses.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_effect_summary_regressions.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_effect_traversal.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_effects_from_mutagenix_variants.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_exacto_fusions.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_exacto_reference_mapping.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_exonic_splice_site.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_extra_orfs.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_fast_path.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_frameshift_cterminus_regression.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_frameshift_helpers.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_fusion_insertions.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_fusion_partner_candidates.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_genome_contig_validation.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_genomic_layout.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_genotype.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_genotype_from_vcf.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_germline_context.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_germline_effects.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_germline_overlap.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_germline_start_loss.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_germline_unresolved.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_haplotype_effect.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_intragenic_breakends.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_local_sv_insertions.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_maf.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_mitochondrial.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_mixed_haplotypes.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_mm10_klf6_frameshift.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_mouse.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_mutant_transcript.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_mutate.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_native_animal_structural_mito.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_native_reference_consequences.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_native_reference_dna.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_native_reference_splicing.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_no_duplicate_variants.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_non_aug_orfs.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_nonlocal_layout.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_nonlocal_sv_transcripts.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_orf_common_effect_fields.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_orf_contig_normalization.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_orf_reference_dna.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_orf_serialization.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_osteosarc_dataset.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_osteosarc_fusions.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_osteosarc_rna_phasing.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_osteosarc_shared_fusions.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_osteosarc_shared_reads.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_osteosarc_shared_svs.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_osteosarc_shared_targets.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_osteosarc_variants.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_partial_annotators.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_premature_stop_short_description.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_problematic_variants.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_protein_diff_parity.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_proteome.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_read_phase_resolver.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_real_world_callers.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_reference_completion.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_reference_fixture.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_reference_identity_exports.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_reference_mismatch_error.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_reference_range_coverage.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_reference_segments.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_rna_evidence.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_rna_haplotype_sequences.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_rna_read_phasing_source.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_sample_identity.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_selenocysteine.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_selenocysteine_proteins.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_silent_aa_pos.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_silent_hgvs_description.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_source_distribution.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_species_genetic_codes.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_splice_graph.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_splice_outcomes.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_splice_site_effects.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_start_loss_details.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_stop_codon_classification_bugs.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_string_helpers.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_structural_serialization.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_structural_variant_annotator.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_sv_comparison.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_sv_consequences.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_sv_info_validation.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_sv_selenocysteine.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_sv_sequence_changes.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_sv_tabular_metadata.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_symbolic_sv_padding.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_test_script.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_timings.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_transcript_layout.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_transcript_model.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_transcript_model_rna.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_transcript_model_serialization.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_transcript_model_start_codons.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_transcript_selection.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_transforms_left_align.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_transforms_pair_breakends.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_uorf.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_upstream_fusion_partners.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_variant.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_variant_collection.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_vcf_export_integrity.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_vcf_limits.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_vcf_parsing.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_vcf_phase_resolver.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/test_vcf_spec_examples.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/transcript_orf_fixture.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/tests/typing/api_inputs.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/__init__.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/_sample_vcf.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/annotators/__init__.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/annotators/fast.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/annotators/protein_diff.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/annotators/registry.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/cli/__init__.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/cli/effects_script.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/cli/genes_script.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/cli/logging.conf +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/cli/main.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/cli/sample_checks.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/cli/variant_args.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/cli/version_info.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/common.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/contigs.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/cryptic_exons.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/csv_helpers.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/data/genetic_codes.json +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/effect_candidates.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/effect_hypotheses.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/effect_traversal.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/effects/__init__.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/effects/classify.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/effects/codon_tables.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/effects/common.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/effects/effect_classes.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/effects/effect_collection.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/effects/effect_helpers.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/effects/effect_ordering.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/effects/effect_prediction.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/effects/effect_prediction_coding.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/effects/effect_prediction_coding_frameshift.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/effects/effect_prediction_coding_in_frame.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/effects/fast_path.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/effects/mutate.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/effects/selenocysteine.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/effects/sequence_change.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/effects/start_loss.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/effects/structural.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/effects/structural_serialization.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/effects/transcript_helpers.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/effects/translate.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/errors.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/exacto.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/extra_orfs.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/genome.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/genome_sequence.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/genomic_layout.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/genotype.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/germline.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/maf.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/mutant_transcript.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/nucleotides.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/orf.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/orf_discovery.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/orf_serialization.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/phasing.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/proteome.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/py.typed +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/realized_effects.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/reference_completion.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/reference_metadata.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/rna_evidence.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/rna_read_phasing.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/sample_identity.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/splice_graph.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/splice_outcomes.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/string_helpers.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/structural_variant.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/sv_allele_parser.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/sv_comparison.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/transcript_layout.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/transcript_model.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/transforms/__init__.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/ucsc_reference_names.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/uorf.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/util.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/variant.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/variant_collection.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/vcf.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/vcf_output.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode/vcf_parsing.py +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode.egg-info/SOURCES.txt +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode.egg-info/dependency_links.txt +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode.egg-info/entry_points.txt +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode.egg-info/requires.txt +0 -0
- {varcode-11.3.2 → varcode-11.3.3}/varcode.egg-info/top_level.txt +0 -0
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
+
## v11.3.3
|
|
4
|
+
|
|
5
|
+
- Stop warning that a reference is ambiguous when its file name matches only
|
|
6
|
+
one assembly under its Ensembl and UCSC names, such as `CanFam3.1`,
|
|
7
|
+
`CanFam3.1.dna.toplevel.fa` or `GRCh37_hg19.fa`. The chosen assembly is
|
|
8
|
+
unchanged.
|
|
9
|
+
- Assert the warnings tests trigger on purpose (skipped symbolic and REF == ALT
|
|
10
|
+
alleles, ambiguous reference paths, unoriented HCC1395 translocations), and
|
|
11
|
+
ignore the once-per-genome no-FASTA cryptic-exon warning across the suite.
|
|
12
|
+
|
|
3
13
|
## v11.3.2
|
|
4
14
|
|
|
5
15
|
- Type VCF compression as the literal values pandas accepts, and pin
|
|
@@ -49,6 +49,12 @@ varcode = "varcode.cli.main:main"
|
|
|
49
49
|
markers = [
|
|
50
50
|
"parity: fast vs protein_diff byte-for-byte parity harness (tests/test_protein_diff_parity.py). Runs by default; also selectable with `pytest -m parity`.",
|
|
51
51
|
]
|
|
52
|
+
# Test genomes have no chromosome FASTA, and this warning fires once per
|
|
53
|
+
# genome in whichever test reaches it first. tests/test_genome_sequence.py
|
|
54
|
+
# checks the warning itself.
|
|
55
|
+
filterwarnings = [
|
|
56
|
+
"ignore:cryptic_exons. no reference sequence:UserWarning",
|
|
57
|
+
]
|
|
52
58
|
|
|
53
59
|
[tool.ruff.lint]
|
|
54
60
|
select = ["E", "F"]
|
|
@@ -485,27 +485,26 @@ def test_cryptic_exons_warns_once_per_genome():
|
|
|
485
485
|
# Reset the per-instance flag so the warning is armed.
|
|
486
486
|
g._missing_reference_warned = False
|
|
487
487
|
|
|
488
|
+
# No release-81 transcript lies within the 500 bp scan window of
|
|
489
|
+
# either breakend (the first genes start at 1:11869 and 2:38814).
|
|
488
490
|
sv = StructuralVariant(
|
|
489
|
-
contig="1", start=
|
|
490
|
-
alt="N]2:
|
|
491
|
-
mate_start=
|
|
491
|
+
contig="1", start=1_000, sv_type="BND",
|
|
492
|
+
alt="N]2:1000]", mate_contig="2",
|
|
493
|
+
mate_start=1_000, mate_orientation="]]",
|
|
492
494
|
genome=g,
|
|
493
495
|
)
|
|
494
496
|
|
|
495
|
-
# First call — expect at most one warning (zero is also valid:
|
|
496
|
-
# transcripts may cover the position and Tier 2 returns content).
|
|
497
497
|
with warnings.catch_warnings(record=True) as first:
|
|
498
498
|
warnings.simplefilter("always")
|
|
499
499
|
enumerate_from_structural_variant(sv, genome=g)
|
|
500
500
|
first_no_ref = [w for w in first
|
|
501
501
|
if "no reference sequence" in str(w.message)]
|
|
502
|
-
#
|
|
502
|
+
# A second uncovered call on the same genome is silent.
|
|
503
503
|
with warnings.catch_warnings(record=True) as second:
|
|
504
504
|
warnings.simplefilter("always")
|
|
505
505
|
enumerate_from_structural_variant(sv, genome=g)
|
|
506
506
|
second_no_ref = [w for w in second
|
|
507
507
|
if "no reference sequence" in str(w.message)]
|
|
508
|
+
assert len(first_no_ref) == 1, [str(w.message) for w in first]
|
|
508
509
|
assert not second_no_ref, [str(w.message) for w in second]
|
|
509
|
-
|
|
510
|
-
if first_no_ref:
|
|
511
|
-
assert g._missing_reference_warned is True
|
|
510
|
+
assert g._missing_reference_warned is True
|
|
@@ -98,16 +98,26 @@ def test_every_hcc1395_consensus_sv_loads_and_annotates():
|
|
|
98
98
|
assert Counter(row["SV_type"] for row in rows) == {
|
|
99
99
|
"DEL": 717, "INS": 551, "DUP": 230, "TRA": 146, "INV": 133, "BND": 11}
|
|
100
100
|
genome = cached_release(93)
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
assert variant.
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
101
|
+
translocations = set()
|
|
102
|
+
# The table gives each translocation's partner position but not its
|
|
103
|
+
# orientation, so annotation says which partner it assumed is 5'.
|
|
104
|
+
with pytest.warns(UserWarning, match="can't read the breakend orientation") as caught:
|
|
105
|
+
for row in rows:
|
|
106
|
+
variant = hcc1395_structural_variant(row, genome)
|
|
107
|
+
assert variant.info["published_consensus"] == row
|
|
108
|
+
assert variant.alt_assembly is None
|
|
109
|
+
if row["SV_type"] in ("BND", "TRA"):
|
|
110
|
+
assert variant.mate_orientation is None
|
|
111
|
+
assert variant.mate_start == int(row["Pos2"])
|
|
112
|
+
translocations.add(variant.short_description)
|
|
113
|
+
effects = variant.effects(raise_on_error=True)
|
|
114
|
+
assert effects, row["SV_id"]
|
|
115
|
+
materialize_effects(effects)
|
|
116
|
+
assumed = {
|
|
117
|
+
str(w.message).split(" of ", 1)[1].split(" from ALT", 1)[0]
|
|
118
|
+
for w in caught.list
|
|
119
|
+
if "can't read the breakend orientation" in str(w.message)}
|
|
120
|
+
assert assumed <= translocations
|
|
111
121
|
|
|
112
122
|
|
|
113
123
|
def test_published_canine_consequences():
|
|
@@ -35,38 +35,61 @@ reference_test_cases = {
|
|
|
35
35
|
],
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
+
# These resolve with a warning: the first file name names no assembly, and
|
|
39
|
+
# in the second "job36" contains NCBI36's alias "b36".
|
|
40
|
+
AMBIGUOUS_REFERENCE_PATHS = {
|
|
41
|
+
'##reference=file:///var/lib/cwl/ncbi36/homo_sapiens.d1.vd1.fa':
|
|
42
|
+
"could not be matched against filename",
|
|
43
|
+
'##reference=file:///var/lib/cwl/job367935311_index_001zdr/GRCh38.job36.d1.vd1.fa':
|
|
44
|
+
"More than one reference",
|
|
45
|
+
}
|
|
46
|
+
|
|
38
47
|
def test_most_recent_assembly():
|
|
39
48
|
eq_(most_recent_assembly_name(['ncbi36', 'grch38']), 'grch38')
|
|
40
49
|
eq_(most_recent_assembly_name(['ncbi36', 'grch38', '37mm']), 'grch38')
|
|
41
50
|
eq_(most_recent_assembly_name(['ncbi36']), 'ncbi36')
|
|
42
51
|
eq_(most_recent_assembly_name(['ncbi36', '35']), 'ncbi36')
|
|
43
52
|
def generate_reference_name_aliases():
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
)
|
|
53
|
+
for assembly_name, aliases in ensembl_reference_aliases.items():
|
|
54
|
+
candidate_list = [assembly_name] + list(aliases)
|
|
55
|
+
for candidate in candidate_list:
|
|
56
|
+
yield (
|
|
57
|
+
candidate,
|
|
58
|
+
assembly_name
|
|
59
|
+
)
|
|
52
60
|
|
|
53
61
|
@pytest.mark.parametrize(['candidate', 'assembly_name'], list(generate_reference_name_aliases()))
|
|
54
62
|
def test_infer_reference_name_aliases(candidate, assembly_name):
|
|
55
63
|
eq_(infer_reference_name(candidate), assembly_name)
|
|
56
64
|
|
|
57
65
|
def generate_reference_name_fasta_filenames():
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
)
|
|
66
|
+
for assembly_name, aliases in reference_test_cases.items():
|
|
67
|
+
candidate_list = [assembly_name] + list(aliases)
|
|
68
|
+
for candidate in candidate_list:
|
|
69
|
+
yield (
|
|
70
|
+
candidate,
|
|
71
|
+
assembly_name
|
|
72
|
+
)
|
|
66
73
|
|
|
67
74
|
@pytest.mark.parametrize(['candidate', 'assembly_name'], list(generate_reference_name_fasta_filenames()))
|
|
68
75
|
def test_reference_name_fasta_filenames(candidate, assembly_name):
|
|
69
|
-
|
|
76
|
+
if candidate in AMBIGUOUS_REFERENCE_PATHS:
|
|
77
|
+
# Bypass memoization so the warning fires whatever ran first.
|
|
78
|
+
with pytest.warns(UserWarning, match=AMBIGUOUS_REFERENCE_PATHS[candidate]):
|
|
79
|
+
eq_(infer_reference_name.__wrapped__(candidate), assembly_name)
|
|
80
|
+
else:
|
|
81
|
+
eq_(infer_reference_name(candidate), assembly_name)
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
@pytest.mark.parametrize(["name", "reference_name"], [
|
|
85
|
+
("CanFam3.1", "CanFam3.1"),
|
|
86
|
+
("/ref/CanFam3.1.dna.toplevel.fa", "CanFam3.1"),
|
|
87
|
+
("GRCh37_hg19.fa", "GRCh37"),
|
|
88
|
+
])
|
|
89
|
+
def test_ensembl_and_ucsc_names_of_one_assembly_are_not_ambiguous(name, reference_name):
|
|
90
|
+
with warnings.catch_warnings():
|
|
91
|
+
warnings.simplefilter("error")
|
|
92
|
+
assert infer_reference_name.__wrapped__(name) == reference_name
|
|
70
93
|
|
|
71
94
|
|
|
72
95
|
|
|
@@ -346,7 +346,8 @@ def test_vcf_loader_skips_svs_by_default():
|
|
|
346
346
|
)
|
|
347
347
|
path = _write_vcf(body)
|
|
348
348
|
try:
|
|
349
|
-
|
|
349
|
+
with pytest.warns(UserWarning, match="Skipped 1 symbolic/breakend allele"):
|
|
350
|
+
vc = load_vcf(path, genome="GRCh38")
|
|
350
351
|
finally:
|
|
351
352
|
os.unlink(path)
|
|
352
353
|
# Only the normal SNV survives.
|
|
@@ -47,7 +47,8 @@ def test_symbolic_cnv_allele_is_skipped():
|
|
|
47
47
|
"22\t51179100\tnormal_snv\tA\tG\t100\tPASS\t.\n"
|
|
48
48
|
)
|
|
49
49
|
try:
|
|
50
|
-
|
|
50
|
+
with pytest.warns(UserWarning, match="Skipped 1 symbolic/breakend allele"):
|
|
51
|
+
vc = load_vcf(path, genome="GRCh37")
|
|
51
52
|
finally:
|
|
52
53
|
os.unlink(path)
|
|
53
54
|
# The normal SNV should load, the symbolic allele should be skipped.
|
|
@@ -61,7 +62,8 @@ def test_symbolic_insertion_allele_is_skipped():
|
|
|
61
62
|
"22\t51068654\tALU_test\tG\t<INS:ME:ALU>\t100\tPASS\t.\n"
|
|
62
63
|
)
|
|
63
64
|
try:
|
|
64
|
-
|
|
65
|
+
with pytest.warns(UserWarning, match="Skipped 1 symbolic/breakend allele"):
|
|
66
|
+
vc = load_vcf(path, genome="GRCh37")
|
|
65
67
|
finally:
|
|
66
68
|
os.unlink(path)
|
|
67
69
|
assert len(vc) == 0, \
|
|
@@ -75,7 +77,8 @@ def test_breakend_allele_is_skipped():
|
|
|
75
77
|
"17\t198983\tnormal\tC\tT\t100\tPASS\t.\n"
|
|
76
78
|
)
|
|
77
79
|
try:
|
|
78
|
-
|
|
80
|
+
with pytest.warns(UserWarning, match="Skipped 1 symbolic/breakend allele"):
|
|
81
|
+
vc = load_vcf(path, genome="GRCh37")
|
|
79
82
|
finally:
|
|
80
83
|
os.unlink(path)
|
|
81
84
|
assert len(vc) == 1, \
|
|
@@ -89,7 +92,8 @@ def test_multiallelic_with_one_symbolic_and_one_normal_keeps_normal():
|
|
|
89
92
|
"22\t51179178\tmixed\tA\tG,<CN0>\t100\tPASS\t.\n"
|
|
90
93
|
)
|
|
91
94
|
try:
|
|
92
|
-
|
|
95
|
+
with pytest.warns(UserWarning, match="Skipped 1 symbolic/breakend allele"):
|
|
96
|
+
vc = load_vcf(path, genome="GRCh37")
|
|
93
97
|
finally:
|
|
94
98
|
os.unlink(path)
|
|
95
99
|
assert len(vc) == 1, \
|
|
@@ -108,7 +112,8 @@ def test_mixed_vcf_with_many_symbolic_alleles_does_not_crash():
|
|
|
108
112
|
"22\t51179100\tnormal\tA\tG\t100\tPASS\t.\n"
|
|
109
113
|
)
|
|
110
114
|
try:
|
|
111
|
-
|
|
115
|
+
with pytest.warns(UserWarning, match="Skipped 3 symbolic/breakend allele"):
|
|
116
|
+
vc = load_vcf(path, genome="GRCh37")
|
|
112
117
|
finally:
|
|
113
118
|
os.unlink(path)
|
|
114
119
|
assert len(vc) == 1, "Expected 1 variant after filtering symbolic alleles"
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
# limitations under the License.
|
|
12
12
|
|
|
13
13
|
import os
|
|
14
|
+
import warnings
|
|
14
15
|
|
|
15
16
|
import pytest
|
|
16
17
|
|
|
@@ -28,6 +29,10 @@ RUN_TESTS_REQUIRING_INTERNET = bool(int(
|
|
|
28
29
|
os.environ.get("RUN_TESTS_REQUIRING_INTERNET", 0)))
|
|
29
30
|
|
|
30
31
|
HG19_VCF_FILENAME = data_path("somatic_hg19_14muts.vcf")
|
|
32
|
+
# One of its 14 records has REF == ALT, which load_vcf skips with a warning.
|
|
33
|
+
# test_load_vcf_local checks the warning; other tests here just load the file.
|
|
34
|
+
REF_IDENTICAL_SKIP = "Skipped 1 reference-identical ALT allele"
|
|
35
|
+
pytestmark = pytest.mark.filterwarnings("ignore:%s:UserWarning" % REF_IDENTICAL_SKIP)
|
|
31
36
|
HG19_VCF_EXTERNAL_URL = (
|
|
32
37
|
"https://raw.githubusercontent.com/hammerlab/varcode/master/test/data/somatic_hg19_14muts.vcf")
|
|
33
38
|
|
|
@@ -37,25 +42,30 @@ HG19_VCF_EXTERNAL_URL = (
|
|
|
37
42
|
# "https://raw.githubusercontent.com/hammerlab/varcode/faster-vcf-parsing/test/data/somatic_hg19_14muts.vcf")
|
|
38
43
|
|
|
39
44
|
def test_load_vcf_local():
|
|
40
|
-
|
|
45
|
+
with pytest.warns(UserWarning, match=REF_IDENTICAL_SKIP):
|
|
46
|
+
variants = load_vcf(HG19_VCF_FILENAME)
|
|
41
47
|
assert variants.reference_names() == {"GRCh37"}
|
|
42
48
|
assert len(variants) == 13
|
|
43
49
|
|
|
44
|
-
|
|
50
|
+
with pytest.warns(UserWarning, match=REF_IDENTICAL_SKIP):
|
|
51
|
+
variants = load_vcf(HG19_VCF_FILENAME + ".gz")
|
|
45
52
|
assert variants.reference_names() == {"GRCh37"}
|
|
46
53
|
assert len(variants) == 13
|
|
47
54
|
|
|
48
|
-
|
|
55
|
+
with pytest.warns(UserWarning, match=REF_IDENTICAL_SKIP):
|
|
56
|
+
variants = load_vcf("file://%s" % HG19_VCF_FILENAME)
|
|
49
57
|
assert variants.reference_names() == {"GRCh37"}
|
|
50
58
|
assert len(variants) == 13
|
|
51
59
|
|
|
52
|
-
|
|
60
|
+
with pytest.warns(UserWarning, match=REF_IDENTICAL_SKIP):
|
|
61
|
+
variants = load_vcf("file://%s.gz" % HG19_VCF_FILENAME)
|
|
53
62
|
assert variants.reference_names() == {"GRCh37"}
|
|
54
63
|
assert len(variants) == 13
|
|
55
64
|
|
|
56
65
|
# An extra slashe before an absolute path can confuse URL parsing.
|
|
57
66
|
# Test that it can still be opened:
|
|
58
|
-
|
|
67
|
+
with pytest.warns(UserWarning, match=REF_IDENTICAL_SKIP):
|
|
68
|
+
variants = load_vcf("/%s" % HG19_VCF_FILENAME)
|
|
59
69
|
assert variants.reference_names() == {"GRCh37"}
|
|
60
70
|
assert len(variants) == 13
|
|
61
71
|
|
|
@@ -141,7 +151,10 @@ def test_vcf_number_entries_duplicates():
|
|
|
141
151
|
assert len(variants) == 3
|
|
142
152
|
|
|
143
153
|
def generate_vcf_gene_names():
|
|
144
|
-
|
|
154
|
+
# Parameters load at collection, outside pytestmark's filter.
|
|
155
|
+
with warnings.catch_warnings():
|
|
156
|
+
warnings.filterwarnings("ignore", REF_IDENTICAL_SKIP, UserWarning)
|
|
157
|
+
variants = load_vcf(HG19_VCF_FILENAME)
|
|
145
158
|
for variant in variants:
|
|
146
159
|
yield (variants, variant)
|
|
147
160
|
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
# See the License for the specific language governing permissions and
|
|
11
11
|
# limitations under the License.
|
|
12
12
|
|
|
13
|
+
from contextlib import nullcontext
|
|
13
14
|
import tempfile
|
|
14
15
|
from pathlib import Path
|
|
15
16
|
|
|
@@ -53,6 +54,13 @@ def _merge_metadata_naive(variants):
|
|
|
53
54
|
|
|
54
55
|
|
|
55
56
|
|
|
57
|
+
# Each has one REF == ALT record, which load_vcf skips with a warning.
|
|
58
|
+
REF_IDENTICAL_FIXTURES = {
|
|
59
|
+
'somatic_hg19_14muts.space_in_sample_name.vcf',
|
|
60
|
+
'somatic_hg19_14muts.vcf',
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
|
|
56
64
|
def _do_roundtrip_test(filenames, convert_ucsc_to_grch37=False):
|
|
57
65
|
|
|
58
66
|
def load_fn(filename):
|
|
@@ -64,7 +72,11 @@ def _do_roundtrip_test(filenames, convert_ucsc_to_grch37=False):
|
|
|
64
72
|
def load_variants():
|
|
65
73
|
variant_collections = []
|
|
66
74
|
for filename in filenames:
|
|
67
|
-
|
|
75
|
+
skipped = (
|
|
76
|
+
pytest.warns(UserWarning, match="reference-identical ALT")
|
|
77
|
+
if filename in REF_IDENTICAL_FIXTURES else nullcontext())
|
|
78
|
+
with skipped:
|
|
79
|
+
variant_collections.append(load_fn(filename)(data_path(filename)))
|
|
68
80
|
return variant_collections[0].union(*variant_collections[1:])
|
|
69
81
|
|
|
70
82
|
variants = load_variants()
|
|
@@ -273,10 +273,16 @@ def infer_reference_name(reference_name_or_path):
|
|
|
273
273
|
elif len(file_name_matches) > 1:
|
|
274
274
|
# separate logic for >1 vs 1 to give informative warning
|
|
275
275
|
match = choose_best_assembly_name(file_name_matches)
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
276
|
+
# A UCSC name (canFam3 inside CanFam3.1) is the same assembly, so
|
|
277
|
+
# only matches naming different assemblies are ambiguous.
|
|
278
|
+
assemblies = {
|
|
279
|
+
ucsc_to_ensembl_reference_names.get(name, name)
|
|
280
|
+
for name in file_name_matches}
|
|
281
|
+
if len(assemblies) > 1:
|
|
282
|
+
warn(
|
|
283
|
+
('More than one reference ({}) matches path in header ({}); '
|
|
284
|
+
'the most recent one ({}) was used.').format(
|
|
285
|
+
','.join(file_name_matches), reference_name_or_path, match))
|
|
280
286
|
elif len(full_path_matches) >= 1:
|
|
281
287
|
# combine full-path logic since warning is the same
|
|
282
288
|
match = choose_best_assembly_name(full_path_matches)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "11.3.3"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "11.3.2"
|
|
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
|