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.
Files changed (389) hide show
  1. {varcode-11.3.2 → varcode-11.3.3}/CHANGELOG.md +10 -0
  2. {varcode-11.3.2/varcode.egg-info → varcode-11.3.3}/PKG-INFO +1 -1
  3. {varcode-11.3.2 → varcode-11.3.3}/pyproject.toml +6 -0
  4. {varcode-11.3.2 → varcode-11.3.3}/tests/test_genome_sequence.py +8 -9
  5. {varcode-11.3.2 → varcode-11.3.3}/tests/test_public_somatic.py +20 -10
  6. {varcode-11.3.2 → varcode-11.3.3}/tests/test_reference.py +40 -17
  7. {varcode-11.3.2 → varcode-11.3.3}/tests/test_structural_variants.py +2 -1
  8. {varcode-11.3.2 → varcode-11.3.3}/tests/test_symbolic_alleles.py +10 -5
  9. {varcode-11.3.2 → varcode-11.3.3}/tests/test_vcf.py +19 -6
  10. {varcode-11.3.2 → varcode-11.3.3}/tests/test_vcf_output.py +13 -1
  11. {varcode-11.3.2 → varcode-11.3.3}/varcode/reference.py +10 -4
  12. varcode-11.3.3/varcode/version.py +1 -0
  13. {varcode-11.3.2 → varcode-11.3.3/varcode.egg-info}/PKG-INFO +1 -1
  14. varcode-11.3.2/varcode/version.py +0 -1
  15. {varcode-11.3.2 → varcode-11.3.3}/AGENTS.md +0 -0
  16. {varcode-11.3.2 → varcode-11.3.3}/CONTRIBUTING.md +0 -0
  17. {varcode-11.3.2 → varcode-11.3.3}/LICENSE +0 -0
  18. {varcode-11.3.2 → varcode-11.3.3}/MANIFEST.in +0 -0
  19. {varcode-11.3.2 → varcode-11.3.3}/README.md +0 -0
  20. {varcode-11.3.2 → varcode-11.3.3}/RELEASING.md +0 -0
  21. {varcode-11.3.2 → varcode-11.3.3}/deploy.sh +0 -0
  22. {varcode-11.3.2 → varcode-11.3.3}/develop.sh +0 -0
  23. {varcode-11.3.2 → varcode-11.3.3}/docs/annotator_contract.md +0 -0
  24. {varcode-11.3.2 → varcode-11.3.3}/docs/api.md +0 -0
  25. {varcode-11.3.2 → varcode-11.3.3}/docs/api_annotators.md +0 -0
  26. {varcode-11.3.2 → varcode-11.3.3}/docs/api_effects.md +0 -0
  27. {varcode-11.3.2 → varcode-11.3.3}/docs/api_orfs.md +0 -0
  28. {varcode-11.3.2 → varcode-11.3.3}/docs/api_phasing.md +0 -0
  29. {varcode-11.3.2 → varcode-11.3.3}/docs/api_rna.md +0 -0
  30. {varcode-11.3.2 → varcode-11.3.3}/docs/api_sample_identity.md +0 -0
  31. {varcode-11.3.2 → varcode-11.3.3}/docs/api_variants.md +0 -0
  32. {varcode-11.3.2 → varcode-11.3.3}/docs/changelog.md +0 -0
  33. {varcode-11.3.2 → varcode-11.3.3}/docs/conventions.md +0 -0
  34. {varcode-11.3.2 → varcode-11.3.3}/docs/created_orfs.md +0 -0
  35. {varcode-11.3.2 → varcode-11.3.3}/docs/csv.md +0 -0
  36. {varcode-11.3.2 → varcode-11.3.3}/docs/dev/api-quality.md +0 -0
  37. {varcode-11.3.2 → varcode-11.3.3}/docs/effect_annotation.md +0 -0
  38. {varcode-11.3.2 → varcode-11.3.3}/docs/effect_types.md +0 -0
  39. {varcode-11.3.2 → varcode-11.3.3}/docs/errors.md +0 -0
  40. {varcode-11.3.2 → varcode-11.3.3}/docs/experimental_annotators.md +0 -0
  41. {varcode-11.3.2 → varcode-11.3.3}/docs/genotype.md +0 -0
  42. {varcode-11.3.2 → varcode-11.3.3}/docs/germline.md +0 -0
  43. {varcode-11.3.2 → varcode-11.3.3}/docs/getting_started.md +0 -0
  44. {varcode-11.3.2 → varcode-11.3.3}/docs/index.md +0 -0
  45. {varcode-11.3.2 → varcode-11.3.3}/docs/library_roles.md +0 -0
  46. {varcode-11.3.2 → varcode-11.3.3}/docs/native_references.md +0 -0
  47. {varcode-11.3.2 → varcode-11.3.3}/docs/phasing.md +0 -0
  48. {varcode-11.3.2 → varcode-11.3.3}/docs/proteome.md +0 -0
  49. {varcode-11.3.2 → varcode-11.3.3}/docs/rna_structures.md +0 -0
  50. {varcode-11.3.2 → varcode-11.3.3}/docs/sample_identity.md +0 -0
  51. {varcode-11.3.2 → varcode-11.3.3}/docs/splice_variants.md +0 -0
  52. {varcode-11.3.2 → varcode-11.3.3}/docs/structural_variants.md +0 -0
  53. {varcode-11.3.2 → varcode-11.3.3}/docs/sv_comparison.md +0 -0
  54. {varcode-11.3.2 → varcode-11.3.3}/docs/sv_reference.md +0 -0
  55. {varcode-11.3.2 → varcode-11.3.3}/docs/transcript_models.md +0 -0
  56. {varcode-11.3.2 → varcode-11.3.3}/docs/transforms.md +0 -0
  57. {varcode-11.3.2 → varcode-11.3.3}/docs/uorf_annotations.md +0 -0
  58. {varcode-11.3.2 → varcode-11.3.3}/examples/benchmark_native_references.py +0 -0
  59. {varcode-11.3.2 → varcode-11.3.3}/examples/vcf_header_usage.py +0 -0
  60. {varcode-11.3.2 → varcode-11.3.3}/lint.sh +0 -0
  61. {varcode-11.3.2 → varcode-11.3.3}/mkdocs.yml +0 -0
  62. {varcode-11.3.2 → varcode-11.3.3}/requirements.txt +0 -0
  63. {varcode-11.3.2 → varcode-11.3.3}/setup.cfg +0 -0
  64. {varcode-11.3.2 → varcode-11.3.3}/test.sh +0 -0
  65. {varcode-11.3.2 → varcode-11.3.3}/tests/README.md +0 -0
  66. {varcode-11.3.2 → varcode-11.3.3}/tests/__init__.py +0 -0
  67. {varcode-11.3.2 → varcode-11.3.3}/tests/benchmark_vcf_load.py +0 -0
  68. {varcode-11.3.2 → varcode-11.3.3}/tests/collect_osteosarc_variants.py +0 -0
  69. {varcode-11.3.2 → varcode-11.3.3}/tests/common.py +0 -0
  70. {varcode-11.3.2 → varcode-11.3.3}/tests/conftest.py +0 -0
  71. {varcode-11.3.2 → varcode-11.3.3}/tests/data/README.md +0 -0
  72. {varcode-11.3.2 → varcode-11.3.3}/tests/data/SHA256SUMS +0 -0
  73. {varcode-11.3.2 → varcode-11.3.3}/tests/data/created_orfs/CDKN2A.json +0 -0
  74. {varcode-11.3.2 → varcode-11.3.3}/tests/data/created_orfs/README.md +0 -0
  75. {varcode-11.3.2 → varcode-11.3.3}/tests/data/dbnsfp_validation_set.csv +0 -0
  76. {varcode-11.3.2 → varcode-11.3.3}/tests/data/different-samples.1.vcf +0 -0
  77. {varcode-11.3.2 → varcode-11.3.3}/tests/data/different-samples.2.vcf +0 -0
  78. {varcode-11.3.2 → varcode-11.3.3}/tests/data/documentation/merged_phased.vcf +0 -0
  79. {varcode-11.3.2 → varcode-11.3.3}/tests/data/documentation/normal.vcf +0 -0
  80. {varcode-11.3.2 → varcode-11.3.3}/tests/data/documentation/structural_variants.vcf +0 -0
  81. {varcode-11.3.2 → varcode-11.3.3}/tests/data/documentation/variants.vcf +0 -0
  82. {varcode-11.3.2 → varcode-11.3.3}/tests/data/duplicate-id.1.vcf +0 -0
  83. {varcode-11.3.2 → varcode-11.3.3}/tests/data/duplicate-id.2.vcf +0 -0
  84. {varcode-11.3.2 → varcode-11.3.3}/tests/data/duplicates.maf +0 -0
  85. {varcode-11.3.2 → varcode-11.3.3}/tests/data/duplicates.vcf +0 -0
  86. {varcode-11.3.2 → varcode-11.3.3}/tests/data/mouse_vcf_dbsnp_chr1_partial.vcf +0 -0
  87. {varcode-11.3.2 → varcode-11.3.3}/tests/data/multiallelic.vcf +0 -0
  88. {varcode-11.3.2 → varcode-11.3.3}/tests/data/mutect-example-headerless.vcf +0 -0
  89. {varcode-11.3.2 → varcode-11.3.3}/tests/data/mutect-example.vcf +0 -0
  90. {varcode-11.3.2 → varcode-11.3.3}/tests/data/native_references/FOXI3-NP_001129118.1.fa +0 -0
  91. {varcode-11.3.2 → varcode-11.3.3}/tests/data/native_references/README.md +0 -0
  92. {varcode-11.3.2 → varcode-11.3.3}/tests/data/native_references/cases.json +0 -0
  93. {varcode-11.3.2 → varcode-11.3.3}/tests/data/native_references/chm13.cdna.fa.gz +0 -0
  94. {varcode-11.3.2 → varcode-11.3.3}/tests/data/native_references/chm13.gtf.gz +0 -0
  95. {varcode-11.3.2 → varcode-11.3.3}/tests/data/native_references/chm13.json +0 -0
  96. {varcode-11.3.2 → varcode-11.3.3}/tests/data/native_references/chm13.pep.fa.gz +0 -0
  97. {varcode-11.3.2 → varcode-11.3.3}/tests/data/native_references/dna-windows.json.gz +0 -0
  98. {varcode-11.3.2 → varcode-11.3.3}/tests/data/native_references/dog-mito.json +0 -0
  99. {varcode-11.3.2 → varcode-11.3.3}/tests/data/native_references/dog-tumour-source-audit.json +0 -0
  100. {varcode-11.3.2 → varcode-11.3.3}/tests/data/native_references/dog.cdna.fa.gz +0 -0
  101. {varcode-11.3.2 → varcode-11.3.3}/tests/data/native_references/dog.gtf.gz +0 -0
  102. {varcode-11.3.2 → varcode-11.3.3}/tests/data/native_references/dog.json +0 -0
  103. {varcode-11.3.2 → varcode-11.3.3}/tests/data/native_references/dog.pep.fa.gz +0 -0
  104. {varcode-11.3.2 → varcode-11.3.3}/tests/data/native_references/mouse.cdna.fa.gz +0 -0
  105. {varcode-11.3.2 → varcode-11.3.3}/tests/data/native_references/mouse.gtf.gz +0 -0
  106. {varcode-11.3.2 → varcode-11.3.3}/tests/data/native_references/mouse.json +0 -0
  107. {varcode-11.3.2 → varcode-11.3.3}/tests/data/native_references/mouse.pep.fa.gz +0 -0
  108. {varcode-11.3.2 → varcode-11.3.3}/tests/data/native_references/structural-cases.json +0 -0
  109. {varcode-11.3.2 → varcode-11.3.3}/tests/data/osteosarc_esvee_shared_svs.vcf +0 -0
  110. {varcode-11.3.2 → varcode-11.3.3}/tests/data/osteosarc_esvee_somatic.vcf +0 -0
  111. {varcode-11.3.2 → varcode-11.3.3}/tests/data/osteosarc_observed_junctions.json +0 -0
  112. {varcode-11.3.2 → varcode-11.3.3}/tests/data/osteosarc_snapshot_2026-09-18t.zip +0 -0
  113. {varcode-11.3.2 → varcode-11.3.3}/tests/data/osteosarc_variants.json +0 -0
  114. {varcode-11.3.2 → varcode-11.3.3}/tests/data/ov.wustle.subset5.maf +0 -0
  115. {varcode-11.3.2 → varcode-11.3.3}/tests/data/public_somatic/COLO829-SV-LICENSE.txt +0 -0
  116. {varcode-11.3.2 → varcode-11.3.3}/tests/data/public_somatic/LANCET2-LICENSE.txt +0 -0
  117. {varcode-11.3.2 → varcode-11.3.3}/tests/data/public_somatic/README.md +0 -0
  118. {varcode-11.3.2 → varcode-11.3.3}/tests/data/public_somatic/build_fixtures.py +0 -0
  119. {varcode-11.3.2 → varcode-11.3.3}/tests/data/public_somatic/canine-osa-vep99.tsv +0 -0
  120. {varcode-11.3.2 → varcode-11.3.3}/tests/data/public_somatic/canine-ros-native.json +0 -0
  121. {varcode-11.3.2 → varcode-11.3.3}/tests/data/public_somatic/canine-unresolved.json +0 -0
  122. {varcode-11.3.2 → varcode-11.3.3}/tests/data/public_somatic/check_ros_sources.py +0 -0
  123. {varcode-11.3.2 → varcode-11.3.3}/tests/data/public_somatic/colo829-lancet2-two-tech.vcf.gz +0 -0
  124. {varcode-11.3.2 → varcode-11.3.3}/tests/data/public_somatic/colo829-nygc-v6.vcf.gz +0 -0
  125. {varcode-11.3.2 → varcode-11.3.3}/tests/data/public_somatic/colo829-sv-truth.vcf +0 -0
  126. {varcode-11.3.2 → varcode-11.3.3}/tests/data/public_somatic/hcc1395-consensus-sv.tsv +0 -0
  127. {varcode-11.3.2 → varcode-11.3.3}/tests/data/public_somatic/hcc1395-lancet2-two-tech.vcf.gz +0 -0
  128. {varcode-11.3.2 → varcode-11.3.3}/tests/data/public_somatic/hcc1395-seqc2-indel.vcf.gz +0 -0
  129. {varcode-11.3.2 → varcode-11.3.3}/tests/data/public_somatic/hcc1395-seqc2-snv.vcf.gz +0 -0
  130. {varcode-11.3.2 → varcode-11.3.3}/tests/data/public_somatic/manifest.json +0 -0
  131. {varcode-11.3.2 → varcode-11.3.3}/tests/data/real_callers/README.md +0 -0
  132. {varcode-11.3.2 → varcode-11.3.3}/tests/data/real_callers/mutect2_example.vcf +0 -0
  133. {varcode-11.3.2 → varcode-11.3.3}/tests/data/real_callers/strelka2_somatic_snvs.vcf +0 -0
  134. {varcode-11.3.2 → varcode-11.3.3}/tests/data/real_callers/vep_annotated_csq.vcf +0 -0
  135. {varcode-11.3.2 → varcode-11.3.3}/tests/data/same-samples.1.vcf +0 -0
  136. {varcode-11.3.2 → varcode-11.3.3}/tests/data/same-samples.2.vcf +0 -0
  137. {varcode-11.3.2 → varcode-11.3.3}/tests/data/sid_rna_effect_references.json +0 -0
  138. {varcode-11.3.2 → varcode-11.3.3}/tests/data/simple.1.vcf +0 -0
  139. {varcode-11.3.2 → varcode-11.3.3}/tests/data/simple.2.vcf +0 -0
  140. {varcode-11.3.2 → varcode-11.3.3}/tests/data/somatic_hg19_14muts.space_in_sample_name.vcf +0 -0
  141. {varcode-11.3.2 → varcode-11.3.3}/tests/data/somatic_hg19_14muts.vcf +0 -0
  142. {varcode-11.3.2 → varcode-11.3.3}/tests/data/somatic_hg19_14muts.vcf.gz +0 -0
  143. {varcode-11.3.2 → varcode-11.3.3}/tests/data/spec_examples/README.md +0 -0
  144. {varcode-11.3.2 → varcode-11.3.3}/tests/data/spec_examples/vcf42_spec_trio.vcf +0 -0
  145. {varcode-11.3.2 → varcode-11.3.3}/tests/data/spec_examples/vcf43_spec_sv.vcf +0 -0
  146. {varcode-11.3.2 → varcode-11.3.3}/tests/data/strelka-example.vcf +0 -0
  147. {varcode-11.3.2 → varcode-11.3.3}/tests/data/tcga_ov.head.maf +0 -0
  148. {varcode-11.3.2 → varcode-11.3.3}/tests/data/tcga_ov.head.xychr.maf +0 -0
  149. {varcode-11.3.2 → varcode-11.3.3}/tests/data/transcript_orfs_ensembl115.json +0 -0
  150. {varcode-11.3.2 → varcode-11.3.3}/tests/data/transcript_orfs_ensembl115.md +0 -0
  151. {varcode-11.3.2 → varcode-11.3.3}/tests/data.py +0 -0
  152. {varcode-11.3.2 → varcode-11.3.3}/tests/native_reference_fixture.py +0 -0
  153. {varcode-11.3.2 → varcode-11.3.3}/tests/osteosarc_variants.py +0 -0
  154. {varcode-11.3.2 → varcode-11.3.3}/tests/public_somatic.py +0 -0
  155. {varcode-11.3.2 → varcode-11.3.3}/tests/test_annotator_divergence_scenarios.py +0 -0
  156. {varcode-11.3.2 → varcode-11.3.3}/tests/test_annotator_haplotypes.py +0 -0
  157. {varcode-11.3.2 → varcode-11.3.3}/tests/test_annotator_parity_adversarial.py +0 -0
  158. {varcode-11.3.2 → varcode-11.3.3}/tests/test_annotators.py +0 -0
  159. {varcode-11.3.2 → varcode-11.3.3}/tests/test_api_inputs.py +0 -0
  160. {varcode-11.3.2 → varcode-11.3.3}/tests/test_bnd_retained_segments.py +0 -0
  161. {varcode-11.3.2 → varcode-11.3.3}/tests/test_canine_ros.py +0 -0
  162. {varcode-11.3.2 → varcode-11.3.3}/tests/test_cli_effects.py +0 -0
  163. {varcode-11.3.2 → varcode-11.3.3}/tests/test_cli_genes.py +0 -0
  164. {varcode-11.3.2 → varcode-11.3.3}/tests/test_cli_records.py +0 -0
  165. {varcode-11.3.2 → varcode-11.3.3}/tests/test_cli_reference_orfs.py +0 -0
  166. {varcode-11.3.2 → varcode-11.3.3}/tests/test_cli_without_pkg_resources.py +0 -0
  167. {varcode-11.3.2 → varcode-11.3.3}/tests/test_collection_exact_equality.py +0 -0
  168. {varcode-11.3.2 → varcode-11.3.3}/tests/test_collection_filtering.py +0 -0
  169. {varcode-11.3.2 → varcode-11.3.3}/tests/test_collection_variants_attr_consistency.py +0 -0
  170. {varcode-11.3.2 → varcode-11.3.3}/tests/test_common.py +0 -0
  171. {varcode-11.3.2 → varcode-11.3.3}/tests/test_common_transcript_orfs.py +0 -0
  172. {varcode-11.3.2 → varcode-11.3.3}/tests/test_composed_transcript_sequences.py +0 -0
  173. {varcode-11.3.2 → varcode-11.3.3}/tests/test_composition_default.py +0 -0
  174. {varcode-11.3.2 → varcode-11.3.3}/tests/test_contig_resolution.py +0 -0
  175. {varcode-11.3.2 → varcode-11.3.3}/tests/test_cosmic_mutations.py +0 -0
  176. {varcode-11.3.2 → varcode-11.3.3}/tests/test_created_orfs.py +0 -0
  177. {varcode-11.3.2 → varcode-11.3.3}/tests/test_cryptic_exons.py +0 -0
  178. {varcode-11.3.2 → varcode-11.3.3}/tests/test_csv_roundtrip.py +0 -0
  179. {varcode-11.3.2 → varcode-11.3.3}/tests/test_dated_reference.py +0 -0
  180. {varcode-11.3.2 → varcode-11.3.3}/tests/test_dbnsfp_validation.py +0 -0
  181. {varcode-11.3.2 → varcode-11.3.3}/tests/test_default_structural_helpers.py +0 -0
  182. {varcode-11.3.2 → varcode-11.3.3}/tests/test_deletion_short_description.py +0 -0
  183. {varcode-11.3.2 → varcode-11.3.3}/tests/test_deploy_script.py +0 -0
  184. {varcode-11.3.2 → varcode-11.3.3}/tests/test_documentation_examples.py +0 -0
  185. {varcode-11.3.2 → varcode-11.3.3}/tests/test_effect_annotation_errors.py +0 -0
  186. {varcode-11.3.2 → varcode-11.3.3}/tests/test_effect_candidates.py +0 -0
  187. {varcode-11.3.2 → varcode-11.3.3}/tests/test_effect_classes.py +0 -0
  188. {varcode-11.3.2 → varcode-11.3.3}/tests/test_effect_collection.py +0 -0
  189. {varcode-11.3.2 → varcode-11.3.3}/tests/test_effect_collection_serialization.py +0 -0
  190. {varcode-11.3.2 → varcode-11.3.3}/tests/test_effect_collection_sort_order.py +0 -0
  191. {varcode-11.3.2 → varcode-11.3.3}/tests/test_effect_hypotheses.py +0 -0
  192. {varcode-11.3.2 → varcode-11.3.3}/tests/test_effect_summary_regressions.py +0 -0
  193. {varcode-11.3.2 → varcode-11.3.3}/tests/test_effect_traversal.py +0 -0
  194. {varcode-11.3.2 → varcode-11.3.3}/tests/test_effects_from_mutagenix_variants.py +0 -0
  195. {varcode-11.3.2 → varcode-11.3.3}/tests/test_exacto_fusions.py +0 -0
  196. {varcode-11.3.2 → varcode-11.3.3}/tests/test_exacto_reference_mapping.py +0 -0
  197. {varcode-11.3.2 → varcode-11.3.3}/tests/test_exonic_splice_site.py +0 -0
  198. {varcode-11.3.2 → varcode-11.3.3}/tests/test_extra_orfs.py +0 -0
  199. {varcode-11.3.2 → varcode-11.3.3}/tests/test_fast_path.py +0 -0
  200. {varcode-11.3.2 → varcode-11.3.3}/tests/test_frameshift_cterminus_regression.py +0 -0
  201. {varcode-11.3.2 → varcode-11.3.3}/tests/test_frameshift_helpers.py +0 -0
  202. {varcode-11.3.2 → varcode-11.3.3}/tests/test_fusion_insertions.py +0 -0
  203. {varcode-11.3.2 → varcode-11.3.3}/tests/test_fusion_partner_candidates.py +0 -0
  204. {varcode-11.3.2 → varcode-11.3.3}/tests/test_genome_contig_validation.py +0 -0
  205. {varcode-11.3.2 → varcode-11.3.3}/tests/test_genomic_layout.py +0 -0
  206. {varcode-11.3.2 → varcode-11.3.3}/tests/test_genotype.py +0 -0
  207. {varcode-11.3.2 → varcode-11.3.3}/tests/test_genotype_from_vcf.py +0 -0
  208. {varcode-11.3.2 → varcode-11.3.3}/tests/test_germline_context.py +0 -0
  209. {varcode-11.3.2 → varcode-11.3.3}/tests/test_germline_effects.py +0 -0
  210. {varcode-11.3.2 → varcode-11.3.3}/tests/test_germline_overlap.py +0 -0
  211. {varcode-11.3.2 → varcode-11.3.3}/tests/test_germline_start_loss.py +0 -0
  212. {varcode-11.3.2 → varcode-11.3.3}/tests/test_germline_unresolved.py +0 -0
  213. {varcode-11.3.2 → varcode-11.3.3}/tests/test_haplotype_effect.py +0 -0
  214. {varcode-11.3.2 → varcode-11.3.3}/tests/test_intragenic_breakends.py +0 -0
  215. {varcode-11.3.2 → varcode-11.3.3}/tests/test_local_sv_insertions.py +0 -0
  216. {varcode-11.3.2 → varcode-11.3.3}/tests/test_maf.py +0 -0
  217. {varcode-11.3.2 → varcode-11.3.3}/tests/test_mitochondrial.py +0 -0
  218. {varcode-11.3.2 → varcode-11.3.3}/tests/test_mixed_haplotypes.py +0 -0
  219. {varcode-11.3.2 → varcode-11.3.3}/tests/test_mm10_klf6_frameshift.py +0 -0
  220. {varcode-11.3.2 → varcode-11.3.3}/tests/test_mouse.py +0 -0
  221. {varcode-11.3.2 → varcode-11.3.3}/tests/test_mutant_transcript.py +0 -0
  222. {varcode-11.3.2 → varcode-11.3.3}/tests/test_mutate.py +0 -0
  223. {varcode-11.3.2 → varcode-11.3.3}/tests/test_native_animal_structural_mito.py +0 -0
  224. {varcode-11.3.2 → varcode-11.3.3}/tests/test_native_reference_consequences.py +0 -0
  225. {varcode-11.3.2 → varcode-11.3.3}/tests/test_native_reference_dna.py +0 -0
  226. {varcode-11.3.2 → varcode-11.3.3}/tests/test_native_reference_splicing.py +0 -0
  227. {varcode-11.3.2 → varcode-11.3.3}/tests/test_no_duplicate_variants.py +0 -0
  228. {varcode-11.3.2 → varcode-11.3.3}/tests/test_non_aug_orfs.py +0 -0
  229. {varcode-11.3.2 → varcode-11.3.3}/tests/test_nonlocal_layout.py +0 -0
  230. {varcode-11.3.2 → varcode-11.3.3}/tests/test_nonlocal_sv_transcripts.py +0 -0
  231. {varcode-11.3.2 → varcode-11.3.3}/tests/test_orf_common_effect_fields.py +0 -0
  232. {varcode-11.3.2 → varcode-11.3.3}/tests/test_orf_contig_normalization.py +0 -0
  233. {varcode-11.3.2 → varcode-11.3.3}/tests/test_orf_reference_dna.py +0 -0
  234. {varcode-11.3.2 → varcode-11.3.3}/tests/test_orf_serialization.py +0 -0
  235. {varcode-11.3.2 → varcode-11.3.3}/tests/test_osteosarc_dataset.py +0 -0
  236. {varcode-11.3.2 → varcode-11.3.3}/tests/test_osteosarc_fusions.py +0 -0
  237. {varcode-11.3.2 → varcode-11.3.3}/tests/test_osteosarc_rna_phasing.py +0 -0
  238. {varcode-11.3.2 → varcode-11.3.3}/tests/test_osteosarc_shared_fusions.py +0 -0
  239. {varcode-11.3.2 → varcode-11.3.3}/tests/test_osteosarc_shared_reads.py +0 -0
  240. {varcode-11.3.2 → varcode-11.3.3}/tests/test_osteosarc_shared_svs.py +0 -0
  241. {varcode-11.3.2 → varcode-11.3.3}/tests/test_osteosarc_shared_targets.py +0 -0
  242. {varcode-11.3.2 → varcode-11.3.3}/tests/test_osteosarc_variants.py +0 -0
  243. {varcode-11.3.2 → varcode-11.3.3}/tests/test_partial_annotators.py +0 -0
  244. {varcode-11.3.2 → varcode-11.3.3}/tests/test_premature_stop_short_description.py +0 -0
  245. {varcode-11.3.2 → varcode-11.3.3}/tests/test_problematic_variants.py +0 -0
  246. {varcode-11.3.2 → varcode-11.3.3}/tests/test_protein_diff_parity.py +0 -0
  247. {varcode-11.3.2 → varcode-11.3.3}/tests/test_proteome.py +0 -0
  248. {varcode-11.3.2 → varcode-11.3.3}/tests/test_read_phase_resolver.py +0 -0
  249. {varcode-11.3.2 → varcode-11.3.3}/tests/test_real_world_callers.py +0 -0
  250. {varcode-11.3.2 → varcode-11.3.3}/tests/test_reference_completion.py +0 -0
  251. {varcode-11.3.2 → varcode-11.3.3}/tests/test_reference_fixture.py +0 -0
  252. {varcode-11.3.2 → varcode-11.3.3}/tests/test_reference_identity_exports.py +0 -0
  253. {varcode-11.3.2 → varcode-11.3.3}/tests/test_reference_mismatch_error.py +0 -0
  254. {varcode-11.3.2 → varcode-11.3.3}/tests/test_reference_range_coverage.py +0 -0
  255. {varcode-11.3.2 → varcode-11.3.3}/tests/test_reference_segments.py +0 -0
  256. {varcode-11.3.2 → varcode-11.3.3}/tests/test_rna_evidence.py +0 -0
  257. {varcode-11.3.2 → varcode-11.3.3}/tests/test_rna_haplotype_sequences.py +0 -0
  258. {varcode-11.3.2 → varcode-11.3.3}/tests/test_rna_read_phasing_source.py +0 -0
  259. {varcode-11.3.2 → varcode-11.3.3}/tests/test_sample_identity.py +0 -0
  260. {varcode-11.3.2 → varcode-11.3.3}/tests/test_selenocysteine.py +0 -0
  261. {varcode-11.3.2 → varcode-11.3.3}/tests/test_selenocysteine_proteins.py +0 -0
  262. {varcode-11.3.2 → varcode-11.3.3}/tests/test_silent_aa_pos.py +0 -0
  263. {varcode-11.3.2 → varcode-11.3.3}/tests/test_silent_hgvs_description.py +0 -0
  264. {varcode-11.3.2 → varcode-11.3.3}/tests/test_source_distribution.py +0 -0
  265. {varcode-11.3.2 → varcode-11.3.3}/tests/test_species_genetic_codes.py +0 -0
  266. {varcode-11.3.2 → varcode-11.3.3}/tests/test_splice_graph.py +0 -0
  267. {varcode-11.3.2 → varcode-11.3.3}/tests/test_splice_outcomes.py +0 -0
  268. {varcode-11.3.2 → varcode-11.3.3}/tests/test_splice_site_effects.py +0 -0
  269. {varcode-11.3.2 → varcode-11.3.3}/tests/test_start_loss_details.py +0 -0
  270. {varcode-11.3.2 → varcode-11.3.3}/tests/test_stop_codon_classification_bugs.py +0 -0
  271. {varcode-11.3.2 → varcode-11.3.3}/tests/test_string_helpers.py +0 -0
  272. {varcode-11.3.2 → varcode-11.3.3}/tests/test_structural_serialization.py +0 -0
  273. {varcode-11.3.2 → varcode-11.3.3}/tests/test_structural_variant_annotator.py +0 -0
  274. {varcode-11.3.2 → varcode-11.3.3}/tests/test_sv_comparison.py +0 -0
  275. {varcode-11.3.2 → varcode-11.3.3}/tests/test_sv_consequences.py +0 -0
  276. {varcode-11.3.2 → varcode-11.3.3}/tests/test_sv_info_validation.py +0 -0
  277. {varcode-11.3.2 → varcode-11.3.3}/tests/test_sv_selenocysteine.py +0 -0
  278. {varcode-11.3.2 → varcode-11.3.3}/tests/test_sv_sequence_changes.py +0 -0
  279. {varcode-11.3.2 → varcode-11.3.3}/tests/test_sv_tabular_metadata.py +0 -0
  280. {varcode-11.3.2 → varcode-11.3.3}/tests/test_symbolic_sv_padding.py +0 -0
  281. {varcode-11.3.2 → varcode-11.3.3}/tests/test_test_script.py +0 -0
  282. {varcode-11.3.2 → varcode-11.3.3}/tests/test_timings.py +0 -0
  283. {varcode-11.3.2 → varcode-11.3.3}/tests/test_transcript_layout.py +0 -0
  284. {varcode-11.3.2 → varcode-11.3.3}/tests/test_transcript_model.py +0 -0
  285. {varcode-11.3.2 → varcode-11.3.3}/tests/test_transcript_model_rna.py +0 -0
  286. {varcode-11.3.2 → varcode-11.3.3}/tests/test_transcript_model_serialization.py +0 -0
  287. {varcode-11.3.2 → varcode-11.3.3}/tests/test_transcript_model_start_codons.py +0 -0
  288. {varcode-11.3.2 → varcode-11.3.3}/tests/test_transcript_selection.py +0 -0
  289. {varcode-11.3.2 → varcode-11.3.3}/tests/test_transforms_left_align.py +0 -0
  290. {varcode-11.3.2 → varcode-11.3.3}/tests/test_transforms_pair_breakends.py +0 -0
  291. {varcode-11.3.2 → varcode-11.3.3}/tests/test_uorf.py +0 -0
  292. {varcode-11.3.2 → varcode-11.3.3}/tests/test_upstream_fusion_partners.py +0 -0
  293. {varcode-11.3.2 → varcode-11.3.3}/tests/test_variant.py +0 -0
  294. {varcode-11.3.2 → varcode-11.3.3}/tests/test_variant_collection.py +0 -0
  295. {varcode-11.3.2 → varcode-11.3.3}/tests/test_vcf_export_integrity.py +0 -0
  296. {varcode-11.3.2 → varcode-11.3.3}/tests/test_vcf_limits.py +0 -0
  297. {varcode-11.3.2 → varcode-11.3.3}/tests/test_vcf_parsing.py +0 -0
  298. {varcode-11.3.2 → varcode-11.3.3}/tests/test_vcf_phase_resolver.py +0 -0
  299. {varcode-11.3.2 → varcode-11.3.3}/tests/test_vcf_spec_examples.py +0 -0
  300. {varcode-11.3.2 → varcode-11.3.3}/tests/transcript_orf_fixture.py +0 -0
  301. {varcode-11.3.2 → varcode-11.3.3}/tests/typing/api_inputs.py +0 -0
  302. {varcode-11.3.2 → varcode-11.3.3}/varcode/__init__.py +0 -0
  303. {varcode-11.3.2 → varcode-11.3.3}/varcode/_sample_vcf.py +0 -0
  304. {varcode-11.3.2 → varcode-11.3.3}/varcode/annotators/__init__.py +0 -0
  305. {varcode-11.3.2 → varcode-11.3.3}/varcode/annotators/fast.py +0 -0
  306. {varcode-11.3.2 → varcode-11.3.3}/varcode/annotators/protein_diff.py +0 -0
  307. {varcode-11.3.2 → varcode-11.3.3}/varcode/annotators/registry.py +0 -0
  308. {varcode-11.3.2 → varcode-11.3.3}/varcode/cli/__init__.py +0 -0
  309. {varcode-11.3.2 → varcode-11.3.3}/varcode/cli/effects_script.py +0 -0
  310. {varcode-11.3.2 → varcode-11.3.3}/varcode/cli/genes_script.py +0 -0
  311. {varcode-11.3.2 → varcode-11.3.3}/varcode/cli/logging.conf +0 -0
  312. {varcode-11.3.2 → varcode-11.3.3}/varcode/cli/main.py +0 -0
  313. {varcode-11.3.2 → varcode-11.3.3}/varcode/cli/sample_checks.py +0 -0
  314. {varcode-11.3.2 → varcode-11.3.3}/varcode/cli/variant_args.py +0 -0
  315. {varcode-11.3.2 → varcode-11.3.3}/varcode/cli/version_info.py +0 -0
  316. {varcode-11.3.2 → varcode-11.3.3}/varcode/common.py +0 -0
  317. {varcode-11.3.2 → varcode-11.3.3}/varcode/contigs.py +0 -0
  318. {varcode-11.3.2 → varcode-11.3.3}/varcode/cryptic_exons.py +0 -0
  319. {varcode-11.3.2 → varcode-11.3.3}/varcode/csv_helpers.py +0 -0
  320. {varcode-11.3.2 → varcode-11.3.3}/varcode/data/genetic_codes.json +0 -0
  321. {varcode-11.3.2 → varcode-11.3.3}/varcode/effect_candidates.py +0 -0
  322. {varcode-11.3.2 → varcode-11.3.3}/varcode/effect_hypotheses.py +0 -0
  323. {varcode-11.3.2 → varcode-11.3.3}/varcode/effect_traversal.py +0 -0
  324. {varcode-11.3.2 → varcode-11.3.3}/varcode/effects/__init__.py +0 -0
  325. {varcode-11.3.2 → varcode-11.3.3}/varcode/effects/classify.py +0 -0
  326. {varcode-11.3.2 → varcode-11.3.3}/varcode/effects/codon_tables.py +0 -0
  327. {varcode-11.3.2 → varcode-11.3.3}/varcode/effects/common.py +0 -0
  328. {varcode-11.3.2 → varcode-11.3.3}/varcode/effects/effect_classes.py +0 -0
  329. {varcode-11.3.2 → varcode-11.3.3}/varcode/effects/effect_collection.py +0 -0
  330. {varcode-11.3.2 → varcode-11.3.3}/varcode/effects/effect_helpers.py +0 -0
  331. {varcode-11.3.2 → varcode-11.3.3}/varcode/effects/effect_ordering.py +0 -0
  332. {varcode-11.3.2 → varcode-11.3.3}/varcode/effects/effect_prediction.py +0 -0
  333. {varcode-11.3.2 → varcode-11.3.3}/varcode/effects/effect_prediction_coding.py +0 -0
  334. {varcode-11.3.2 → varcode-11.3.3}/varcode/effects/effect_prediction_coding_frameshift.py +0 -0
  335. {varcode-11.3.2 → varcode-11.3.3}/varcode/effects/effect_prediction_coding_in_frame.py +0 -0
  336. {varcode-11.3.2 → varcode-11.3.3}/varcode/effects/fast_path.py +0 -0
  337. {varcode-11.3.2 → varcode-11.3.3}/varcode/effects/mutate.py +0 -0
  338. {varcode-11.3.2 → varcode-11.3.3}/varcode/effects/selenocysteine.py +0 -0
  339. {varcode-11.3.2 → varcode-11.3.3}/varcode/effects/sequence_change.py +0 -0
  340. {varcode-11.3.2 → varcode-11.3.3}/varcode/effects/start_loss.py +0 -0
  341. {varcode-11.3.2 → varcode-11.3.3}/varcode/effects/structural.py +0 -0
  342. {varcode-11.3.2 → varcode-11.3.3}/varcode/effects/structural_serialization.py +0 -0
  343. {varcode-11.3.2 → varcode-11.3.3}/varcode/effects/transcript_helpers.py +0 -0
  344. {varcode-11.3.2 → varcode-11.3.3}/varcode/effects/translate.py +0 -0
  345. {varcode-11.3.2 → varcode-11.3.3}/varcode/errors.py +0 -0
  346. {varcode-11.3.2 → varcode-11.3.3}/varcode/exacto.py +0 -0
  347. {varcode-11.3.2 → varcode-11.3.3}/varcode/extra_orfs.py +0 -0
  348. {varcode-11.3.2 → varcode-11.3.3}/varcode/genome.py +0 -0
  349. {varcode-11.3.2 → varcode-11.3.3}/varcode/genome_sequence.py +0 -0
  350. {varcode-11.3.2 → varcode-11.3.3}/varcode/genomic_layout.py +0 -0
  351. {varcode-11.3.2 → varcode-11.3.3}/varcode/genotype.py +0 -0
  352. {varcode-11.3.2 → varcode-11.3.3}/varcode/germline.py +0 -0
  353. {varcode-11.3.2 → varcode-11.3.3}/varcode/maf.py +0 -0
  354. {varcode-11.3.2 → varcode-11.3.3}/varcode/mutant_transcript.py +0 -0
  355. {varcode-11.3.2 → varcode-11.3.3}/varcode/nucleotides.py +0 -0
  356. {varcode-11.3.2 → varcode-11.3.3}/varcode/orf.py +0 -0
  357. {varcode-11.3.2 → varcode-11.3.3}/varcode/orf_discovery.py +0 -0
  358. {varcode-11.3.2 → varcode-11.3.3}/varcode/orf_serialization.py +0 -0
  359. {varcode-11.3.2 → varcode-11.3.3}/varcode/phasing.py +0 -0
  360. {varcode-11.3.2 → varcode-11.3.3}/varcode/proteome.py +0 -0
  361. {varcode-11.3.2 → varcode-11.3.3}/varcode/py.typed +0 -0
  362. {varcode-11.3.2 → varcode-11.3.3}/varcode/realized_effects.py +0 -0
  363. {varcode-11.3.2 → varcode-11.3.3}/varcode/reference_completion.py +0 -0
  364. {varcode-11.3.2 → varcode-11.3.3}/varcode/reference_metadata.py +0 -0
  365. {varcode-11.3.2 → varcode-11.3.3}/varcode/rna_evidence.py +0 -0
  366. {varcode-11.3.2 → varcode-11.3.3}/varcode/rna_read_phasing.py +0 -0
  367. {varcode-11.3.2 → varcode-11.3.3}/varcode/sample_identity.py +0 -0
  368. {varcode-11.3.2 → varcode-11.3.3}/varcode/splice_graph.py +0 -0
  369. {varcode-11.3.2 → varcode-11.3.3}/varcode/splice_outcomes.py +0 -0
  370. {varcode-11.3.2 → varcode-11.3.3}/varcode/string_helpers.py +0 -0
  371. {varcode-11.3.2 → varcode-11.3.3}/varcode/structural_variant.py +0 -0
  372. {varcode-11.3.2 → varcode-11.3.3}/varcode/sv_allele_parser.py +0 -0
  373. {varcode-11.3.2 → varcode-11.3.3}/varcode/sv_comparison.py +0 -0
  374. {varcode-11.3.2 → varcode-11.3.3}/varcode/transcript_layout.py +0 -0
  375. {varcode-11.3.2 → varcode-11.3.3}/varcode/transcript_model.py +0 -0
  376. {varcode-11.3.2 → varcode-11.3.3}/varcode/transforms/__init__.py +0 -0
  377. {varcode-11.3.2 → varcode-11.3.3}/varcode/ucsc_reference_names.py +0 -0
  378. {varcode-11.3.2 → varcode-11.3.3}/varcode/uorf.py +0 -0
  379. {varcode-11.3.2 → varcode-11.3.3}/varcode/util.py +0 -0
  380. {varcode-11.3.2 → varcode-11.3.3}/varcode/variant.py +0 -0
  381. {varcode-11.3.2 → varcode-11.3.3}/varcode/variant_collection.py +0 -0
  382. {varcode-11.3.2 → varcode-11.3.3}/varcode/vcf.py +0 -0
  383. {varcode-11.3.2 → varcode-11.3.3}/varcode/vcf_output.py +0 -0
  384. {varcode-11.3.2 → varcode-11.3.3}/varcode/vcf_parsing.py +0 -0
  385. {varcode-11.3.2 → varcode-11.3.3}/varcode.egg-info/SOURCES.txt +0 -0
  386. {varcode-11.3.2 → varcode-11.3.3}/varcode.egg-info/dependency_links.txt +0 -0
  387. {varcode-11.3.2 → varcode-11.3.3}/varcode.egg-info/entry_points.txt +0 -0
  388. {varcode-11.3.2 → varcode-11.3.3}/varcode.egg-info/requires.txt +0 -0
  389. {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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: varcode
3
- Version: 11.3.2
3
+ Version: 11.3.3
4
4
  Summary: Variant annotation in Python
5
5
  Author-email: Alex Rubinsteyn <alex.rubinsteyn@unc.edu>
6
6
  Project-URL: Homepage, https://github.com/openvax/varcode
@@ -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=1_000_000, sv_type="BND",
490
- alt="N]2:1000000]", mate_contig="2",
491
- mate_start=1_000_000, mate_orientation="]]",
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
- # Second call — even if first warned, second should NOT.
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
- # If the first call warned at all, the dedup flag should now be set.
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
- for row in rows:
102
- variant = hcc1395_structural_variant(row, genome)
103
- assert variant.info["published_consensus"] == row
104
- assert variant.alt_assembly is None
105
- if row["SV_type"] in ("BND", "TRA"):
106
- assert variant.mate_orientation is None
107
- assert variant.mate_start == int(row["Pos2"])
108
- effects = variant.effects(raise_on_error=True)
109
- assert effects, row["SV_id"]
110
- materialize_effects(effects)
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
- with warnings.catch_warnings(record=True) as w:
45
- for assembly_name, aliases in ensembl_reference_aliases.items():
46
- candidate_list = [assembly_name] + list(aliases)
47
- for candidate in candidate_list:
48
- yield (
49
- candidate,
50
- assembly_name
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
- with warnings.catch_warnings(record=True):
59
- for assembly_name, aliases in reference_test_cases.items():
60
- candidate_list = [assembly_name] + list(aliases)
61
- for candidate in candidate_list:
62
- yield (
63
- candidate,
64
- assembly_name
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
- eq_(infer_reference_name(candidate), assembly_name)
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
- vc = load_vcf(path, genome="GRCh38")
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
- vc = load_vcf(path, genome="GRCh37")
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
- vc = load_vcf(path, genome="GRCh37")
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
- vc = load_vcf(path, genome="GRCh37")
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
- vc = load_vcf(path, genome="GRCh37")
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
- vc = load_vcf(path, genome="GRCh37")
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
- variants = load_vcf(HG19_VCF_FILENAME)
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
- variants = load_vcf(HG19_VCF_FILENAME + ".gz")
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
- variants = load_vcf("file://%s" % HG19_VCF_FILENAME)
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
- variants = load_vcf("file://%s.gz" % HG19_VCF_FILENAME)
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
- variants = load_vcf("/%s" % HG19_VCF_FILENAME)
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
- variants = load_vcf(HG19_VCF_FILENAME)
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
- variant_collections.append(load_fn(filename)(data_path(filename)))
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
- warn(
277
- ('More than one reference ({}) matches path in header ({}); '
278
- 'the most recent one ({}) was used.').format(
279
- ','.join(file_name_matches), reference_name_or_path, match))
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,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: varcode
3
- Version: 11.3.2
3
+ Version: 11.3.3
4
4
  Summary: Variant annotation in Python
5
5
  Author-email: Alex Rubinsteyn <alex.rubinsteyn@unc.edu>
6
6
  Project-URL: Homepage, https://github.com/openvax/varcode
@@ -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