mehari 0.41.0__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.
- mehari-0.41.0/Cargo.toml +24 -0
- mehari-0.41.0/LICENSE.txt +21 -0
- mehari-0.41.0/PKG-INFO +100 -0
- mehari-0.41.0/README.md +81 -0
- mehari-0.41.0/mehari/CHANGELOG.md +8 -0
- mehari-0.41.0/mehari/Cargo.toml +111 -0
- mehari-0.41.0/mehari/README.md +38 -0
- mehari-0.41.0/mehari/__init__.py +96 -0
- mehari-0.41.0/mehari/build.rs +64 -0
- mehari-0.41.0/mehari/protos/mehari/server.proto +29 -0
- mehari-0.41.0/mehari/protos/mehari/txs.proto +208 -0
- mehari-0.41.0/mehari/py.typed +0 -0
- mehari-0.41.0/mehari/src/annotate/cli.rs +191 -0
- mehari-0.41.0/mehari/src/annotate/mod.rs +44 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/ann.rs +1645 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/binning.rs +30 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/csq.rs +2857 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/mod.rs +2646 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/provider.rs +960 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/reference.rs +308 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_del_opa1_csqs@3-193311167-ATGT-T.snap +39 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_del_opa1_csqs@3-193311170-TGGC-C.snap +40 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_del_opa1_csqs@3-193311170-TGGCG-G.snap +41 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_del_opa1_csqs@3-193311180-GTCG-G.snap +40 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_del_opa1_csqs@3-193409910-GAAA-G.snap +40 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_del_opa1_csqs@3-193409913-ATAA-A.snap +42 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_brca1_csq@17-41197820-G-T.snap +35 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_brca1_csq@17-41197821-A-C.snap +35 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_brca1_csq@17-41197822-C-A.snap +36 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_brca1_csq@17-41197823-C-A.snap +36 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_brca1_csq@17-41197824-T-G.snap +36 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_brca1_csq@17-41197825-C-A.snap +36 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_brca1_csq@17-41197835-T-G.snap +35 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_brca1_csq@17-41197836-G-A.snap +35 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_brca1_csq@17-41197837-G-A.snap +34 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_brca1_csq@17-41199651-C-A.snap +34 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_brca1_csq@17-41199652-G-T.snap +35 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_brca1_csq@17-41199653-T-G.snap +35 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_brca1_csq@17-41199654-G-T.snap +36 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_brca1_csq@17-41199655-G-T.snap +37 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_brca1_csq@17-41199656-A-C.snap +36 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_brca1_csq@17-41199657-G-T.snap +36 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_brca1_csq@17-41199658-T-G.snap +35 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_brca1_csq@17-41199659-G-T.snap +35 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_brca1_csq@17-41199660-G-T.snap +41 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_brca1_one_variant@17-41196309-G-C.snap +136 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_brca1_one_variant@17-41196310-G-C.snap +136 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_brca1_one_variant@17-41196311-G-C.snap +136 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_brca1_one_variant@17-41196312-G-C.snap +166 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_brca1_one_variant@17-41196313-G-C.snap +166 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_brca1_one_variant@17-41197701-G-C.snap +174 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_brca1_one_variant@17-41197818-G-C.snap +181 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_brca1_one_variant@17-41197819-G-C.snap +181 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_brca1_one_variant@17-41197820-G-C.snap +151 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_brca1_one_variant@17-41197821-G-C.snap +151 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_brca1_one_variant@17-41197822-G-C.snap +156 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_brca1_one_variant@17-41197823-G-C.snap +156 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_brca1_one_variant@17-41277379-A-C.snap +160 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_brca1_one_variant@17-41277380-G-C.snap +160 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_brca1_one_variant@17-41277381-G-T.snap +160 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_brca1_one_variant@17-41277382-G-C.snap +136 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_brca1_one_variant@17-41277383-A-C.snap +136 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_brca1_one_variant@17-41277384-G-C.snap +136 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_brca1_transcript_picking_reporting@17-41197701-G-C-false-false.snap +40 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_brca1_transcript_picking_reporting@17-41197701-G-C-false-true.snap +174 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_brca1_transcript_picking_reporting@17-41197701-G-C-true-false.snap +40 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_brca1_transcript_picking_reporting@17-41197701-G-C-true-true.snap +40 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_opa1_csq@3-193332503-T-A.snap +35 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_opa1_csq@3-193332504-T-C.snap +36 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_opa1_csq@3-193332505-C-G.snap +36 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_opa1_csq@3-193332506-T-C.snap +36 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_opa1_csq@3-193332507-T-C.snap +36 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_opa1_csq@3-193332508-T-C.snap +36 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_opa1_csq@3-193332509-C-T.snap +36 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_opa1_csq@3-193332510-A-G.snap +35 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_opa1_csq@3-193332511-G-T.snap +35 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_opa1_csq@3-193332512-T-G.snap +41 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_opa1_csq@3-193332831-G-T.snap +35 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_opa1_csq@3-193332832-T-C.snap +35 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_opa1_csq@3-193332833-G-A.snap +36 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_opa1_csq@3-193332834-A-C.snap +36 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_opa1_csq@3-193332835-A-T.snap +37 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_opa1_csq@3-193332836-C-A.snap +36 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_opa1_csq@3-193332837-T-G.snap +35 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_opa1_csq@3-193332838-T-G.snap +35 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_opa1_csq@3-193332839-G-A.snap +34 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_opa1_csq@3-193332846-A-G.snap +34 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_opa1_csq@3-193332847-G-A.snap +34 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_opa1_csq@3-193332848-T-A.snap +34 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_ttn_transcript_picking_reporting@2-179393094-C-T-false-false.snap +36 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_ttn_transcript_picking_reporting@2-179393094-C-T-false-true.snap +186 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_ttn_transcript_picking_reporting@2-179393094-C-T-true-false.snap +36 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_ttn_transcript_picking_reporting@2-179631246-G-A-false-false.snap +40 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_ttn_transcript_picking_reporting@2-179631246-G-A-false-true.snap +244 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_ttn_transcript_picking_reporting@2-179631246-G-A-true-false.snap +40 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__annotate_snv_ttn_transcript_picking_reporting@2-179631246-G-A-true-true.snap +40 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__vep_disagreement_cases_output.snap +64 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__test__smoke_test_output_tsv.snap +6 -0
- mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__test__smoke_test_output_vcf.snap +141 -0
- mehari-0.41.0/mehari/src/annotate/strucvars/csq.rs +472 -0
- mehari-0.41.0/mehari/src/annotate/strucvars/maelstrom.rs +211 -0
- mehari-0.41.0/mehari/src/annotate/strucvars/mod.rs +4412 -0
- mehari-0.41.0/mehari/src/annotate/strucvars/snapshots/mehari__annotate__strucvars__test__guess_sv_caller_clincnv.snap +7 -0
- mehari-0.41.0/mehari/src/annotate/strucvars/snapshots/mehari__annotate__strucvars__test__guess_sv_caller_delly.snap +7 -0
- mehari-0.41.0/mehari/src/annotate/strucvars/snapshots/mehari__annotate__strucvars__test__guess_sv_caller_dragen_cnv.snap +7 -0
- mehari-0.41.0/mehari/src/annotate/strucvars/snapshots/mehari__annotate__strucvars__test__guess_sv_caller_dragen_sv.snap +7 -0
- mehari-0.41.0/mehari/src/annotate/strucvars/snapshots/mehari__annotate__strucvars__test__guess_sv_caller_gcnv.snap +7 -0
- mehari-0.41.0/mehari/src/annotate/strucvars/snapshots/mehari__annotate__strucvars__test__guess_sv_caller_manta.snap +7 -0
- mehari-0.41.0/mehari/src/annotate/strucvars/snapshots/mehari__annotate__strucvars__test__guess_sv_caller_melt.snap +7 -0
- mehari-0.41.0/mehari/src/annotate/strucvars/snapshots/mehari__annotate__strucvars__test__guess_sv_caller_popdel.snap +7 -0
- mehari-0.41.0/mehari/src/annotate/strucvars/snapshots/mehari__annotate__strucvars__test__parse_bnd-2.snap +12 -0
- mehari-0.41.0/mehari/src/annotate/strucvars/snapshots/mehari__annotate__strucvars__test__parse_bnd-3.snap +12 -0
- mehari-0.41.0/mehari/src/annotate/strucvars/snapshots/mehari__annotate__strucvars__test__parse_bnd-4.snap +12 -0
- mehari-0.41.0/mehari/src/annotate/strucvars/snapshots/mehari__annotate__strucvars__test__parse_bnd-5.snap +12 -0
- mehari-0.41.0/mehari/src/annotate/strucvars/snapshots/mehari__annotate__strucvars__test__parse_bnd-6.snap +12 -0
- mehari-0.41.0/mehari/src/annotate/strucvars/snapshots/mehari__annotate__strucvars__test__parse_bnd.snap +12 -0
- mehari-0.41.0/mehari/src/common/contig.rs +229 -0
- mehari-0.41.0/mehari/src/common/io/mod.rs +4 -0
- mehari-0.41.0/mehari/src/common/io/snapshots/mehari__common__io__std__test__open_read_maybe_gz@14kb.txt.bgz.snap +3005 -0
- mehari-0.41.0/mehari/src/common/io/snapshots/mehari__common__io__std__test__open_read_maybe_gz@14kb.txt.gz.snap +3005 -0
- mehari-0.41.0/mehari/src/common/io/snapshots/mehari__common__io__std__test__open_read_maybe_gz@14kb.txt.snap +3005 -0
- mehari-0.41.0/mehari/src/common/io/snapshots/mehari__common__io__std__test__open_write_maybe_bgzf@14kb.txt.bgz.snap +872 -0
- mehari-0.41.0/mehari/src/common/io/snapshots/mehari__common__io__std__test__open_write_maybe_bgzf@14kb.txt.gz.snap +363 -0
- mehari-0.41.0/mehari/src/common/io/snapshots/mehari__common__io__std__test__open_write_maybe_bgzf@14kb.txt.snap +872 -0
- mehari-0.41.0/mehari/src/common/io/snapshots/mehari__common__io__std__test__open_write_maybe_gz@false.snap +5 -0
- mehari-0.41.0/mehari/src/common/io/snapshots/mehari__common__io__std__test__open_write_maybe_gz@true.snap +5 -0
- mehari-0.41.0/mehari/src/common/io/snapshots/mehari__common__io__std__test__read_lines.snap +8 -0
- mehari-0.41.0/mehari/src/common/io/snapshots/mehari__common__io__tokio__test__open_read_maybe_gz@14kb.txt.bgz.snap +3005 -0
- mehari-0.41.0/mehari/src/common/io/snapshots/mehari__common__io__tokio__test__open_read_maybe_gz@14kb.txt.gz.snap +3005 -0
- mehari-0.41.0/mehari/src/common/io/snapshots/mehari__common__io__tokio__test__open_read_maybe_gz@14kb.txt.snap +3005 -0
- mehari-0.41.0/mehari/src/common/io/snapshots/mehari__common__io__tokio__test__open_write_maybe_bgzf@14kb.txt.bgz.snap +401 -0
- mehari-0.41.0/mehari/src/common/io/snapshots/mehari__common__io__tokio__test__open_write_maybe_bgzf@14kb.txt.gz.snap +401 -0
- mehari-0.41.0/mehari/src/common/io/snapshots/mehari__common__io__tokio__test__open_write_maybe_bgzf@14kb.txt.snap +872 -0
- mehari-0.41.0/mehari/src/common/io/std.rs +164 -0
- mehari-0.41.0/mehari/src/common/io/tokio.rs +172 -0
- mehari-0.41.0/mehari/src/common/mod.rs +328 -0
- mehari-0.41.0/mehari/src/common/noodles.rs +188 -0
- mehari-0.41.0/mehari/src/db/check/mod.rs +896 -0
- mehari-0.41.0/mehari/src/db/create/mod.rs +2199 -0
- mehari-0.41.0/mehari/src/db/create/snapshots/mehari__db__create__test__filter_transcripts_brca1-2.snap +10 -0
- mehari-0.41.0/mehari/src/db/create/snapshots/mehari__db__create__test__filter_transcripts_brca1-3.snap +5 -0
- mehari-0.41.0/mehari/src/db/create/snapshots/mehari__db__create__test__filter_transcripts_brca1.snap +10 -0
- mehari-0.41.0/mehari/src/db/create/snapshots/mehari__db__create__test__run_smoke_brca1_opa1@grch37.snap +3005 -0
- mehari-0.41.0/mehari/src/db/create/snapshots/mehari__db__create__test__run_smoke_brca1_opa1@grch38.snap +4737 -0
- mehari-0.41.0/mehari/src/db/create/snapshots/mehari__db__create__test__run_smoke_mitochondrial.snap +1002 -0
- mehari-0.41.0/mehari/src/db/create/snapshots/mehari__db__create__test__run_smoke_selenoproteins.snap +197 -0
- mehari-0.41.0/mehari/src/db/dump/mod.rs +38 -0
- mehari-0.41.0/mehari/src/db/merge.rs +128 -0
- mehari-0.41.0/mehari/src/db/mod.rs +34 -0
- mehari-0.41.0/mehari/src/db/subset/mod.rs +326 -0
- mehari-0.41.0/mehari/src/db/subset/snapshots/mehari__db__subset__tests__subset_tx_db.snap +9804 -0
- mehari-0.41.0/mehari/src/lib.rs +33 -0
- mehari-0.41.0/mehari/src/main.rs +249 -0
- mehari-0.41.0/mehari/src/pbs/mod.rs +4 -0
- mehari-0.41.0/mehari/src/pbs/server.rs +6 -0
- mehari-0.41.0/mehari/src/pbs/txs.rs +6 -0
- mehari-0.41.0/mehari/src/ped.rs +265 -0
- mehari-0.41.0/mehari/src/server/mod.rs +2 -0
- mehari-0.41.0/mehari/src/server/run/actix_server/gene_txs.rs +398 -0
- mehari-0.41.0/mehari/src/server/run/actix_server/mod.rs +92 -0
- mehari-0.41.0/mehari/src/server/run/actix_server/seqvars_clinvar.rs +132 -0
- mehari-0.41.0/mehari/src/server/run/actix_server/seqvars_csq.rs +230 -0
- mehari-0.41.0/mehari/src/server/run/actix_server/seqvars_frequencies.rs +180 -0
- mehari-0.41.0/mehari/src/server/run/actix_server/strucvars_csq.rs +217 -0
- mehari-0.41.0/mehari/src/server/run/actix_server/versions.rs +171 -0
- mehari-0.41.0/mehari/src/server/run/mod.rs +469 -0
- mehari-0.41.0/mehari/src/server/schema.rs +51 -0
- mehari-0.41.0/mehari/src/snapshots/mehari__common__test__open_read_maybe_gz@false.snap +6 -0
- mehari-0.41.0/mehari/src/snapshots/mehari__common__test__open_read_maybe_gz@true.snap +6 -0
- mehari-0.41.0/mehari/src/verify/mod.rs +3 -0
- mehari-0.41.0/mehari/src/verify/seqvars.rs +350 -0
- mehari-0.41.0/mehari/tests/common/io/14kb.txt +3000 -0
- mehari-0.41.0/mehari/tests/common/io/14kb.txt.bgz +0 -0
- mehari-0.41.0/mehari/tests/common/io/14kb.txt.gz +0 -0
- mehari-0.41.0/mehari/tests/common/io/bootstrap.sh +13 -0
- mehari-0.41.0/mehari/tests/common/io/lines.txt +3 -0
- mehari-0.41.0/mehari/tests/common/io/test.txt +1 -0
- mehari-0.41.0/mehari/tests/common/io/test.txt.gz +0 -0
- mehari-0.41.0/mehari/tests/data/annotate/db/bootstrap.sh +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/db/grch37/seqvars/clinvar/000010.sst +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/db/grch37/seqvars/clinvar/000012.sst +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/db/grch37/seqvars/clinvar/CURRENT +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/db/grch37/seqvars/clinvar/IDENTITY +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/db/grch37/seqvars/clinvar/LOCK +0 -0
- mehari-0.41.0/mehari/tests/data/annotate/db/grch37/seqvars/clinvar/LOG +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/db/grch37/seqvars/clinvar/MANIFEST-000005 +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/db/grch37/seqvars/clinvar/OPTIONS-000007 +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/db/grch37/seqvars/freqs/000018.sst +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/db/grch37/seqvars/freqs/000020.sst +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/db/grch37/seqvars/freqs/CURRENT +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/db/grch37/seqvars/freqs/IDENTITY +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/db/grch37/seqvars/freqs/LOCK +0 -0
- mehari-0.41.0/mehari/tests/data/annotate/db/grch37/seqvars/freqs/LOG +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/db/grch37/seqvars/freqs/MANIFEST-000005 +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/db/grch37/seqvars/freqs/OPTIONS-000013 +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/db/grch37/seqvars/freqs/OPTIONS-000015 +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/db/grch37/txs.bin.zst +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/db/grch38/GRCh38-ensembl.disagreement-subset.txs.bin.zst +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/db/grch38/seqvars/clinvar/000010.sst +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/db/grch38/seqvars/clinvar/000012.sst +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/db/grch38/seqvars/clinvar/CURRENT +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/db/grch38/seqvars/clinvar/IDENTITY +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/db/grch38/seqvars/clinvar/LOCK +0 -0
- mehari-0.41.0/mehari/tests/data/annotate/db/grch38/seqvars/clinvar/LOG +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/db/grch38/seqvars/clinvar/MANIFEST-000005 +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/db/grch38/seqvars/clinvar/OPTIONS-000007 +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/db/grch38/seqvars/freqs/000018.sst +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/db/grch38/seqvars/freqs/000020.sst +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/db/grch38/seqvars/freqs/CURRENT +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/db/grch38/seqvars/freqs/IDENTITY +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/db/grch38/seqvars/freqs/LOCK +0 -0
- mehari-0.41.0/mehari/tests/data/annotate/db/grch38/seqvars/freqs/LOG +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/db/grch38/seqvars/freqs/MANIFEST-000005 +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/db/grch38/seqvars/freqs/OPTIONS-000013 +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/db/grch38/seqvars/freqs/OPTIONS-000015 +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/db/grch38/txs.bin.zst +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/db/hgnc.tsv +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/seqvars/badly_formed_vcf_entry.ped +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/seqvars/badly_formed_vcf_entry.tsv +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/seqvars/badly_formed_vcf_entry.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/seqvars/bootstrap.sh +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/seqvars/brca1.examples.ped +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/seqvars/brca1.examples.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/seqvars/brca1.hand_picked.tsv +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/seqvars/brca2_zar1l/brca2_zar1l.ped +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/seqvars/brca2_zar1l/brca2_zar1l.tsv +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/seqvars/brca2_zar1l/brca2_zar1l.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/seqvars/clair3-glnexus-min.multiallelic.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/seqvars/clair3-glnexus-min.ped +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/seqvars/clair3-glnexus-min.tsv +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/seqvars/clair3-glnexus-min.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/seqvars/clinvar.excerpt.snpeff.brca1.tsv +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/seqvars/clinvar.excerpt.snpeff.opa1.tsv +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/seqvars/clinvar.excerpt.snpeff.vcf.gz +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/seqvars/clinvar.excerpt.snpeff.vcf.gz.tbi +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/seqvars/clinvar.excerpt.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/seqvars/clinvar.excerpt.vcf.gz +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/seqvars/clinvar.excerpt.vcf.gz.tbi +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/seqvars/clinvar.excerpt.vep.brca1.tsv +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/seqvars/clinvar.excerpt.vep.opa1.tsv +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/seqvars/clinvar.excerpt.vep.vcf.gz +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/seqvars/clinvar.excerpt.vep.vcf.gz.tbi +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/seqvars/mitochondrial_variants.ped +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/seqvars/mitochondrial_variants.tsv +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/seqvars/mitochondrial_variants.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/seqvars/opa1.hand_picked.tsv +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/seqvars/postproc-snpeff.sh +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/seqvars/postproc-vep.sh +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/seqvars/vep.disagreement-cases.expected.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/seqvars/vep.disagreement-cases.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/strucvars/clincnv-min.out.jsonl +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/strucvars/clincnv-min.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/strucvars/delly2-min.out.jsonl +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/strucvars/delly2-min.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/strucvars/dragen-cnv-min.out.jsonl +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/strucvars/dragen-cnv-min.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/strucvars/dragen-sv-min.out.jsonl +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/strucvars/dragen-sv-min.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/strucvars/example-grch38.tsv +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/strucvars/example-grch38.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/strucvars/gcnv-min.out.jsonl +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/strucvars/gcnv-min.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/strucvars/header-grch37-noped.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/strucvars/header-grch37-trio.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/strucvars/header-grch38-noped.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/strucvars/maelstrom/delly2-min-with-maelstrom.tsv +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/strucvars/maelstrom/delly2-min-with-maelstrom.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/strucvars/maelstrom/delly2-min.ped +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/strucvars/maelstrom/delly2-min.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/strucvars/maelstrom/example.SAMPLE.cov.vcf.gz +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/strucvars/maelstrom/example.SAMPLE.cov.vcf.gz.tbi +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/strucvars/manta-min.out.jsonl +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/strucvars/manta-min.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/strucvars/melt-min.out.jsonl +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/strucvars/melt-min.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/strucvars/popdel-min.out.jsonl +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/strucvars/popdel-min.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/strucvars/sniffles2-min.out.jsonl +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/strucvars/sniffles2-min.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/strucvars/test.order.expected.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/strucvars/test.order.ped +3 -0
- mehari-0.41.0/mehari/tests/data/annotate/strucvars/test.order.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/mitochondrial/cdot-0.2.23.ensembl.chrMT.grch37.gff3.json +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/mitochondrial/latest/aliases.sqlite3 +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/mitochondrial/latest/sequences/2024/0305/1050/1709635806.4821885.fa.bgz +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/mitochondrial/latest/sequences/2024/0305/1050/1709635806.4821885.fa.bgz.fai +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/mitochondrial/latest/sequences/2024/0305/1050/1709635806.4821885.fa.bgz.gzi +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/mitochondrial/latest/sequences/db.sqlite3 +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seleonoproteins/cdot-0.2.22.refseq.grch38.selenon.fasta +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seleonoproteins/cdot-0.2.22.refseq.grch38.selenon.json +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seleonoproteins/latest/aliases.sqlite3 +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seleonoproteins/latest/sequences/2023/1118/2012/1700338324.6475816.fa.bgz +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seleonoproteins/latest/sequences/2023/1118/2012/1700338324.6475816.fa.bgz.fai +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seleonoproteins/latest/sequences/2023/1118/2012/1700338324.6475816.fa.bgz.gzi +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seleonoproteins/latest/sequences/db.sqlite3 +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/12-37/gnomad.exomes.r2.1.1.sites.chr1-rs1263393206.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/12-37/gnomad.exomes.r2.1.1.sites.chr1-rs1263393206.vcf.gz +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/12-37/gnomad.exomes.r2.1.1.sites.chr1-rs1263393206.vcf.gz.tbi +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/12-37/gnomad.exomes.r2.1.1.sites.chr1.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/12-37/gnomad.exomes.r2.1.1.sites.chr2.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/12-37/gnomad.genomes.r2.1.1.sites.chr1-rs1263393206.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/12-37/gnomad.genomes.r2.1.1.sites.chr1-rs1263393206.vcf.gz +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/12-37/gnomad.genomes.r2.1.1.sites.chr1-rs1263393206.vcf.gz.tbi +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/12-37/gnomad.genomes.r2.1.1.sites.chr1.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/12-37/gnomad.genomes.r2.1.1.sites.chr2.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/12-38/gnomad.exomes.r2.1.1.sites.chr1.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/12-38/gnomad.exomes.r2.1.1.sites.chr2.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/12-38/gnomad.genomes.r2.1.1.sites.chr1.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/12-38/gnomad.genomes.r2.1.1.sites.chr2.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/12-38/gnomad.genomes.r3.1.1.sites.chr1.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/12-38/gnomad.genomes.r3.1.1.sites.chr2.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/db-rs1263393206/info.sh +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/db-rs1263393206/input.ped +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/db-rs1263393206/input.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/db-rs1263393206/output.tsv +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/db-rs1263393206/output.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/db-rs1263393206/seqvars/freqs/000018.sst +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/db-rs1263393206/seqvars/freqs/000020.sst +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/db-rs1263393206/seqvars/freqs/CURRENT +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/db-rs1263393206/seqvars/freqs/IDENTITY +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/db-rs1263393206/seqvars/freqs/LOCK +0 -0
- mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/db-rs1263393206/seqvars/freqs/LOG +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/db-rs1263393206/seqvars/freqs/MANIFEST-000005 +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/db-rs1263393206/seqvars/freqs/OPTIONS-000013 +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/db-rs1263393206/seqvars/freqs/OPTIONS-000015 +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/mt/gnomad.chrM.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/mt/helix.chrM.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/xy-37/gnomad.exomes.r2.1.1.sites.chrX.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/xy-37/gnomad.exomes.r2.1.1.sites.chrY.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/xy-37/gnomad.genomes.r2.1.1.sites.chrX.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/xy-38/gnomad.exomes.r2.1.1.sites.chrX.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/xy-38/gnomad.exomes.r2.1.1.sites.chrY.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/xy-38/gnomad.genomes.r3.1.1.sites.chrX.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/xy-38/gnomad.genomes.r3.1.1.sites.chrY.vcf +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/txs/bootstrap.sh +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/txs/brca1.fasta +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/txs/cdot-0.2.22.refseq.grch37.brca1_opa1.json +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/txs/cdot-0.2.22.refseq.grch37.brca1_opa1.json.gz +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/txs/cdot-0.2.22.refseq.grch37_grch38.brca1_opa1.json +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/txs/cdot-0.2.22.refseq.grch37_grch38.brca1_opa1.json.gz +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/txs/cdot-0.2.22.refseq.grch38.brca1_opa1.json +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/txs/cdot-0.2.22.refseq.grch38.brca1_opa1.json.gz +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/txs/latest/aliases.sqlite3 +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/txs/latest/sequences/2023/1108/0919/1699435149.8201442.fa.bgz +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/txs/latest/sequences/2023/1108/0919/1699435149.8201442.fa.bgz.fai +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/txs/latest/sequences/2023/1108/0919/1699435149.8201442.fa.bgz.gzi +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/txs/latest/sequences/2023/1108/0919/1699435152.474355.fa.bgz +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/txs/latest/sequences/2023/1108/0919/1699435152.474355.fa.bgz.fai +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/txs/latest/sequences/2023/1108/0919/1699435152.474355.fa.bgz.gzi +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/txs/latest/sequences/db.sqlite3 +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/txs/opa1.fasta +3 -0
- mehari-0.41.0/mehari/tests/data/db/create/txs/txs_main.tsv +3 -0
- mehari-0.41.0/mehari/tests/data/ped/family.ped +3 -0
- mehari-0.41.0/mehari-python/CHANGELOG.md +8 -0
- mehari-0.41.0/mehari-python/Cargo.lock +5873 -0
- mehari-0.41.0/mehari-python/Cargo.toml +21 -0
- mehari-0.41.0/mehari-python/LICENSE.txt +21 -0
- mehari-0.41.0/mehari-python/README.md +81 -0
- mehari-0.41.0/mehari-python/src/lib.rs +294 -0
- mehari-0.41.0/mehari-python/tests/__init__.py +0 -0
- mehari-0.41.0/mehari-python/tests/test_annotator.py +132 -0
- mehari-0.41.0/mehari-python/uv.lock +158 -0
- mehari-0.41.0/pyproject.toml +43 -0
mehari-0.41.0/Cargo.toml
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
[workspace]
|
|
2
|
+
resolver = "3"
|
|
3
|
+
members = ["mehari"] # do not include mehari-python here to avoid pulling in jemalloc for python bindings
|
|
4
|
+
|
|
5
|
+
# Compile insta with full optimization.
|
|
6
|
+
[profile.dev.package.insta]
|
|
7
|
+
opt-level = 3
|
|
8
|
+
[profile.dev.package.similar]
|
|
9
|
+
opt-level = 3
|
|
10
|
+
|
|
11
|
+
[profile.release]
|
|
12
|
+
debug = false
|
|
13
|
+
lto = "fat"
|
|
14
|
+
codegen-units = 1
|
|
15
|
+
|
|
16
|
+
[profile.dev]
|
|
17
|
+
debug = true
|
|
18
|
+
lto = false
|
|
19
|
+
codegen-units = 128
|
|
20
|
+
opt-level = 3
|
|
21
|
+
|
|
22
|
+
[profile.profiling]
|
|
23
|
+
inherits = "release"
|
|
24
|
+
debug = true
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Till Hartmann, Berlin Institute of Health
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
mehari-0.41.0/PKG-INFO
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: mehari
|
|
3
|
+
Version: 0.41.0
|
|
4
|
+
Classifier: Programming Language :: Rust
|
|
5
|
+
Classifier: Programming Language :: Python :: 3
|
|
6
|
+
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
7
|
+
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
8
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
9
|
+
License-File: LICENSE.txt
|
|
10
|
+
Summary: Python bindings for the mehari variant annotator
|
|
11
|
+
Keywords: bioinformatics,genomics,variants,annotation,vcf
|
|
12
|
+
Author-email: Till Hartmann <till.hartmann@bih-charite.de>
|
|
13
|
+
Requires-Python: >=3.12
|
|
14
|
+
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
|
|
15
|
+
Project-URL: Documentation, https://github.com/varfish-org/mehari/tree/main/docs
|
|
16
|
+
Project-URL: Homepage, https://github.com/varfish-org/mehari
|
|
17
|
+
Project-URL: Repository, https://github.com/varfish-org/mehari.git
|
|
18
|
+
|
|
19
|
+
# mehari
|
|
20
|
+
|
|
21
|
+
Python bindings for the [`mehari`](https://github.com/varfish-org/mehari) Rust library.
|
|
22
|
+
|
|
23
|
+
## Features
|
|
24
|
+
|
|
25
|
+
* **Single variants:** Annotate a single variant using a format string (`chr:pos:ref:alt`) or keyword arguments.
|
|
26
|
+
* **DataFrames:** Process batches of variants by passing a `polars.DataFrame`.
|
|
27
|
+
* **LazyFrames:** Support for `polars.LazyFrame` to process large datasets (like Parquet files) without loading everything into memory.
|
|
28
|
+
|
|
29
|
+
## Usage
|
|
30
|
+
|
|
31
|
+
Initialize `SeqvarsAnnotator` with your transcript database (see [`mehari-data-tx`](https://github.com/varfish-org/mehari-data-tx/releases)) and a reference genome (FASTA, uncompressed, with index).
|
|
32
|
+
|
|
33
|
+
```python
|
|
34
|
+
from mehari import SeqvarsAnnotator
|
|
35
|
+
|
|
36
|
+
annotator = SeqvarsAnnotator(
|
|
37
|
+
transcript_db_paths=["path/to/txs.bin.zst"],
|
|
38
|
+
reference_path="path/to/reference.fa"
|
|
39
|
+
)
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
To annotate a single variant either use colon separated format string or keyword arguments:
|
|
43
|
+
```python
|
|
44
|
+
result1 = annotator.annotate("17:41197701:G:C")
|
|
45
|
+
result2 = annotator.annotate(chromosome="3", position=193332511, reference="G", alternative="T")
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
To annotate a batch of variants, pass a `polars.DataFrame` or `polars.LazyFrame`.
|
|
49
|
+
```python
|
|
50
|
+
import polars as pl
|
|
51
|
+
|
|
52
|
+
df = pl.DataFrame(
|
|
53
|
+
{
|
|
54
|
+
"chromosome": ["17", "3"],
|
|
55
|
+
"position": [41197701, 193332511],
|
|
56
|
+
"reference": ["G", "G"],
|
|
57
|
+
"alternative": ["C", "T"],
|
|
58
|
+
},
|
|
59
|
+
schema={
|
|
60
|
+
"chromosome": pl.Categorical, "position": pl.Int32,
|
|
61
|
+
"reference": pl.String, "alternative": pl.String
|
|
62
|
+
}
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
annotated_df = annotator.annotate(df)
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Schemas and types
|
|
69
|
+
|
|
70
|
+
### Enums
|
|
71
|
+
Mehari exports its internal enums to Python so you can use them for filtering or comparisons:
|
|
72
|
+
```python
|
|
73
|
+
from mehari import ConsequenceEnum, ImpactEnum
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### DataFrame Schema
|
|
77
|
+
|
|
78
|
+
When annotating a DataFrame or LazyFrame, mehari appends an "annotation" column.
|
|
79
|
+
This column is a polars `List(Struct)` with the following fields:
|
|
80
|
+
- `allele`: `String`
|
|
81
|
+
- `consequences`: `List(ConsequenceEnum)`
|
|
82
|
+
- `putative_impact`: `ImpactEnum`
|
|
83
|
+
- `gene_symbol`: `String`
|
|
84
|
+
- `gene_id`: `String`
|
|
85
|
+
- `feature_type`: `String`
|
|
86
|
+
- `feature_id`: `String`
|
|
87
|
+
- `feature_biotype`: `List(String)`
|
|
88
|
+
- `feature_tags`: `List(String)`
|
|
89
|
+
- `rank`: `Struct(ord: Int32, total: Int32)`
|
|
90
|
+
- `cdna_pos`: `Struct(ord: Int32, total: Int32)`
|
|
91
|
+
- `cds_pos`: `Struct(ord: Int32, total: Int32)`
|
|
92
|
+
- `protein_pos`: `Struct(ord: Int32, total: Int32)`
|
|
93
|
+
- `hgvs_g`: `String`
|
|
94
|
+
- `hgvs_n`: `String`
|
|
95
|
+
- `hgvs_c`: `String`
|
|
96
|
+
- `hgvs_p`: `String`
|
|
97
|
+
- `distance`: `Int32`
|
|
98
|
+
- `strand`: `Int32`
|
|
99
|
+
- `messages`: `List(String)`
|
|
100
|
+
|
mehari-0.41.0/README.md
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# mehari
|
|
2
|
+
|
|
3
|
+
Python bindings for the [`mehari`](https://github.com/varfish-org/mehari) Rust library.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
* **Single variants:** Annotate a single variant using a format string (`chr:pos:ref:alt`) or keyword arguments.
|
|
8
|
+
* **DataFrames:** Process batches of variants by passing a `polars.DataFrame`.
|
|
9
|
+
* **LazyFrames:** Support for `polars.LazyFrame` to process large datasets (like Parquet files) without loading everything into memory.
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
Initialize `SeqvarsAnnotator` with your transcript database (see [`mehari-data-tx`](https://github.com/varfish-org/mehari-data-tx/releases)) and a reference genome (FASTA, uncompressed, with index).
|
|
14
|
+
|
|
15
|
+
```python
|
|
16
|
+
from mehari import SeqvarsAnnotator
|
|
17
|
+
|
|
18
|
+
annotator = SeqvarsAnnotator(
|
|
19
|
+
transcript_db_paths=["path/to/txs.bin.zst"],
|
|
20
|
+
reference_path="path/to/reference.fa"
|
|
21
|
+
)
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
To annotate a single variant either use colon separated format string or keyword arguments:
|
|
25
|
+
```python
|
|
26
|
+
result1 = annotator.annotate("17:41197701:G:C")
|
|
27
|
+
result2 = annotator.annotate(chromosome="3", position=193332511, reference="G", alternative="T")
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
To annotate a batch of variants, pass a `polars.DataFrame` or `polars.LazyFrame`.
|
|
31
|
+
```python
|
|
32
|
+
import polars as pl
|
|
33
|
+
|
|
34
|
+
df = pl.DataFrame(
|
|
35
|
+
{
|
|
36
|
+
"chromosome": ["17", "3"],
|
|
37
|
+
"position": [41197701, 193332511],
|
|
38
|
+
"reference": ["G", "G"],
|
|
39
|
+
"alternative": ["C", "T"],
|
|
40
|
+
},
|
|
41
|
+
schema={
|
|
42
|
+
"chromosome": pl.Categorical, "position": pl.Int32,
|
|
43
|
+
"reference": pl.String, "alternative": pl.String
|
|
44
|
+
}
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
annotated_df = annotator.annotate(df)
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Schemas and types
|
|
51
|
+
|
|
52
|
+
### Enums
|
|
53
|
+
Mehari exports its internal enums to Python so you can use them for filtering or comparisons:
|
|
54
|
+
```python
|
|
55
|
+
from mehari import ConsequenceEnum, ImpactEnum
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### DataFrame Schema
|
|
59
|
+
|
|
60
|
+
When annotating a DataFrame or LazyFrame, mehari appends an "annotation" column.
|
|
61
|
+
This column is a polars `List(Struct)` with the following fields:
|
|
62
|
+
- `allele`: `String`
|
|
63
|
+
- `consequences`: `List(ConsequenceEnum)`
|
|
64
|
+
- `putative_impact`: `ImpactEnum`
|
|
65
|
+
- `gene_symbol`: `String`
|
|
66
|
+
- `gene_id`: `String`
|
|
67
|
+
- `feature_type`: `String`
|
|
68
|
+
- `feature_id`: `String`
|
|
69
|
+
- `feature_biotype`: `List(String)`
|
|
70
|
+
- `feature_tags`: `List(String)`
|
|
71
|
+
- `rank`: `Struct(ord: Int32, total: Int32)`
|
|
72
|
+
- `cdna_pos`: `Struct(ord: Int32, total: Int32)`
|
|
73
|
+
- `cds_pos`: `Struct(ord: Int32, total: Int32)`
|
|
74
|
+
- `protein_pos`: `Struct(ord: Int32, total: Int32)`
|
|
75
|
+
- `hgvs_g`: `String`
|
|
76
|
+
- `hgvs_n`: `String`
|
|
77
|
+
- `hgvs_c`: `String`
|
|
78
|
+
- `hgvs_p`: `String`
|
|
79
|
+
- `distance`: `Int32`
|
|
80
|
+
- `strand`: `Int32`
|
|
81
|
+
- `messages`: `List(String)`
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## [0.41.0](https://github.com/varfish-org/mehari/compare/v0.40.0...v0.41.0) (2026-03-21)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* Add python bindings via pyO3 ([#959](https://github.com/varfish-org/mehari/issues/959)) ([b2450be](https://github.com/varfish-org/mehari/commit/b2450be38bdf65aa0c21c5b77ea6770910bd46a5))
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
[package]
|
|
2
|
+
name = "mehari"
|
|
3
|
+
version = "0.41.0"
|
|
4
|
+
edition = "2021"
|
|
5
|
+
authors = ["Manuel Holtgrewe <manuel.holtgrewe@bih-charite.de>"]
|
|
6
|
+
description = "Variant effect prediction all in Rust"
|
|
7
|
+
license = "MIT"
|
|
8
|
+
repository = "https://github.com/varfish-org/mehari"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
rust-version = "1.75.0"
|
|
11
|
+
|
|
12
|
+
[features]
|
|
13
|
+
default = ["jemalloc"]
|
|
14
|
+
jemalloc = ["dep:tikv-jemallocator", "rocksdb/jemalloc", "annonars/jemalloc"]
|
|
15
|
+
dhat-heap = ["dep:dhat"] # for heap profiling with dhats
|
|
16
|
+
documentation = []
|
|
17
|
+
|
|
18
|
+
[package.metadata.docs.rs]
|
|
19
|
+
all-features = true
|
|
20
|
+
|
|
21
|
+
[lib]
|
|
22
|
+
name = "mehari"
|
|
23
|
+
path = "src/lib.rs"
|
|
24
|
+
|
|
25
|
+
[[bin]]
|
|
26
|
+
name = "mehari"
|
|
27
|
+
path = "src/main.rs"
|
|
28
|
+
|
|
29
|
+
[dependencies]
|
|
30
|
+
actix-web = "4.12"
|
|
31
|
+
annonars = { version = "0.44.1", default-features = false }
|
|
32
|
+
anyhow = "1.0"
|
|
33
|
+
async-compression = { version = "0.4", features = ["tokio", "gzip"] }
|
|
34
|
+
bio = "3.0.0"
|
|
35
|
+
biocommons-bioutils = "0.1.5"
|
|
36
|
+
built = { version = "0.8", features = ["chrono", "semver"] }
|
|
37
|
+
byte-unit = "5.2"
|
|
38
|
+
chrono = "0.4"
|
|
39
|
+
clap-verbosity-flag = "3.0"
|
|
40
|
+
clap = { version = "4.6", features = ["derive"] }
|
|
41
|
+
csv = "1.4"
|
|
42
|
+
derivative = "2.2"
|
|
43
|
+
derive_builder = { version = "0.20", features = ["clippy"] }
|
|
44
|
+
derive-new = "0.7.0"
|
|
45
|
+
enumflags2 = { version = "0.7.11", features = ["serde"] }
|
|
46
|
+
env_logger = "0.11"
|
|
47
|
+
flate2 = "1.1"
|
|
48
|
+
futures = "0.3"
|
|
49
|
+
hgvs = "0.20.1"
|
|
50
|
+
indexmap = { version = "2.13", features = ["serde"] }
|
|
51
|
+
itertools = "0.14"
|
|
52
|
+
jsonl = "4.0"
|
|
53
|
+
log = "0.4"
|
|
54
|
+
nom = "8.0"
|
|
55
|
+
nutype = { version = "0.6.2", features = ["serde"] }
|
|
56
|
+
once_cell = "1.21.4"
|
|
57
|
+
parse-display = "0.10"
|
|
58
|
+
pbjson = "0.9"
|
|
59
|
+
percent-encoding = "2.3"
|
|
60
|
+
procfs = "0.18"
|
|
61
|
+
prost = "0.14.3"
|
|
62
|
+
quick_cache = "0.6.18"
|
|
63
|
+
rand = "0.10"
|
|
64
|
+
rayon = "1.11.0"
|
|
65
|
+
rocksdb = { version = "0.24.0", features = ["multi-threaded-cf"] }
|
|
66
|
+
rustc-hash = "2.1.0"
|
|
67
|
+
seqrepo = { version = "0.10.2", features = ["cached"] }
|
|
68
|
+
serde_json = "1.0"
|
|
69
|
+
serde = { version = "1.0", features = ["derive"] }
|
|
70
|
+
serde_with = { version = "3.16", features = ["alloc", "macros", "indexmap_2"], default-features = false }
|
|
71
|
+
serde_yaml = "0.9"
|
|
72
|
+
strum = { version = "0.28", features = ["derive"] }
|
|
73
|
+
tempfile = "3"
|
|
74
|
+
thousands = "0.2"
|
|
75
|
+
tokio = { version = "1.50", features = ["rt-multi-thread", "macros"] }
|
|
76
|
+
tracing-subscriber = "0.3"
|
|
77
|
+
tracing = { version = "0.1", features = ["log"] }
|
|
78
|
+
uuid = { version = "1.22", features = ["fast-rng", "serde"] }
|
|
79
|
+
zstd = "0.13"
|
|
80
|
+
utoipa = { version = "5.4.0", features = ["actix_extras", "chrono", "indexmap", "openapi_extensions", "preserve_order", "yaml"] }
|
|
81
|
+
utoipa-swagger-ui = { version = "9.0.2", features = ["actix-web"] }
|
|
82
|
+
memmap2 = "0.9.10"
|
|
83
|
+
serde-aux = "4.7.0"
|
|
84
|
+
|
|
85
|
+
[dependencies.noodles]
|
|
86
|
+
version = "0.97.0"
|
|
87
|
+
features = ["async", "bgzf", "core", "vcf", "bcf", "csi", "fasta", "tabix"]
|
|
88
|
+
|
|
89
|
+
[target.'cfg(not(target_env = "msvc"))'.dependencies]
|
|
90
|
+
tikv-jemallocator = { version = "0.6", optional = true }
|
|
91
|
+
|
|
92
|
+
[dependencies.dhat]
|
|
93
|
+
version = "0.3.3"
|
|
94
|
+
optional = true
|
|
95
|
+
|
|
96
|
+
[build-dependencies]
|
|
97
|
+
anyhow = "1.0"
|
|
98
|
+
built = { version = "0.8", features = ["cargo-lock", "dependency-tree", "git2", "chrono", "semver"] }
|
|
99
|
+
pbjson-build = "0.9.0"
|
|
100
|
+
prost-build = "0.14.3"
|
|
101
|
+
|
|
102
|
+
[dev-dependencies]
|
|
103
|
+
csv = "1.4"
|
|
104
|
+
hxdmp = "0.2"
|
|
105
|
+
insta = { version = "1.46", features = ["yaml"] }
|
|
106
|
+
pretty_assertions = "1.4"
|
|
107
|
+
rstest = "0.26"
|
|
108
|
+
temp_testdir = "0.2"
|
|
109
|
+
tracing-test = "0.2"
|
|
110
|
+
criterion = { version = "0.8.2", features = ["async_tokio"] }
|
|
111
|
+
pprof = { version = "0.15.0", features = ["flamegraph"] }
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
[](https://crates.io/crates/mehari)
|
|
2
|
+
[](https://crates.io/crates/mehari)
|
|
3
|
+
[](https://crates.io/crates/mehari)
|
|
4
|
+
[](https://github.com/varfish-org/mehari/actions/workflows/rust.yml)
|
|
5
|
+
[](https://codecov.io/gh/varfish-org/mehari)
|
|
6
|
+
[](https://zenodo.org/badge/latestdoi/609124150)
|
|
7
|
+
|
|
8
|
+
# Mehari
|
|
9
|
+
|
|
10
|
+
<img style="float: right" width="200" height="200" src="misc/camel.jpeg" alt="a camel">
|
|
11
|
+
|
|
12
|
+
Mehari is a software package for annotating VCF files with variant effect/consequence.
|
|
13
|
+
The program uses [hgvs-rs](https://crates.io/crates/hgvs) for projecting genomic variants to transcripts and proteins and thus has high prediction quality.
|
|
14
|
+
|
|
15
|
+
Other popular tools offering variant effect/consequence prediction include:
|
|
16
|
+
|
|
17
|
+
- [SnpEff](http://pcingola.github.io/SnpEff/)
|
|
18
|
+
- [VEP (Variant Effect Predictor)](https://www.ensembl.org/info/docs/tools/vep/index.html)
|
|
19
|
+
|
|
20
|
+
Mehari offers HGVS predictions that aim to mirror VariantValidator, the gold standard for HGVS variant descriptions, and consequence predictions compatible with VEP.
|
|
21
|
+
Further, it is written in the Rust programming language and can be used as a library for users' Rust software.
|
|
22
|
+
|
|
23
|
+
## Usage
|
|
24
|
+
To annotate variant consequences, gnomAD frequencies and clinVar information for sequence variants:
|
|
25
|
+
```sh
|
|
26
|
+
mehari annotate seqvars \
|
|
27
|
+
--transcripts resources/transcript_db \
|
|
28
|
+
--frequencies resources/gnomad_db \
|
|
29
|
+
--clinvar resources/clinvar_db \
|
|
30
|
+
--path-input-vcf input.vcf \
|
|
31
|
+
--path-output-vcf output.vcf
|
|
32
|
+
```
|
|
33
|
+
The corresponding database builds can be obtained from:
|
|
34
|
+
- transcripts: [github.com/varfish-org/mehari-data-tx/releases](https://github.com/varfish-org/mehari-data-tx/releases)
|
|
35
|
+
- gnomAD frequencies: TODO
|
|
36
|
+
- clinVar: [github.com/varfish-org/annonars-data-clinvar/releases](https://github.com/varfish-org/annonars-data-clinvar/releases)
|
|
37
|
+
|
|
38
|
+
See [Getting Started](docs/getting_started.md) for more information on usage, and [Development Setup](docs/development.md) for more information on how to build mehari and its databases from scratch.
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import typing
|
|
2
|
+
import polars as pl
|
|
3
|
+
import pyarrow as pa
|
|
4
|
+
from ._mehari import SeqvarsAnnotator as _SeqvarsAnnotator
|
|
5
|
+
from ._mehari import consequence_variants, putative_impact_variants
|
|
6
|
+
|
|
7
|
+
ConsequenceEnum = pl.Enum(consequence_variants())
|
|
8
|
+
ImpactEnum = pl.Enum(putative_impact_variants())
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class SeqvarsAnnotator:
|
|
12
|
+
def __init__(
|
|
13
|
+
self, transcript_db_paths: str | list[str], reference_path: str | None = None
|
|
14
|
+
):
|
|
15
|
+
if isinstance(transcript_db_paths, str):
|
|
16
|
+
transcript_db_paths = [transcript_db_paths]
|
|
17
|
+
self._annotator = _SeqvarsAnnotator(transcript_db_paths, reference_path)
|
|
18
|
+
|
|
19
|
+
def _process_dataframe(self, df: pl.DataFrame) -> pl.DataFrame:
|
|
20
|
+
"""Internal helper to stream Arrow RecordBatches to Rust."""
|
|
21
|
+
pa_table = df.to_arrow()
|
|
22
|
+
batches = pa_table.to_batches()
|
|
23
|
+
|
|
24
|
+
if not batches:
|
|
25
|
+
batches = [pa.RecordBatch.from_pylist([], schema=pa_table.schema)]
|
|
26
|
+
|
|
27
|
+
result_batches = [self._annotator.annotate_batch(b) for b in batches]
|
|
28
|
+
res_df = pl.from_arrow(pa.Table.from_batches(result_batches))
|
|
29
|
+
return df.with_columns(
|
|
30
|
+
res_df.get_column("annotation")
|
|
31
|
+
.list.eval(
|
|
32
|
+
pl.element().struct.with_fields(
|
|
33
|
+
pl.element().struct.field("putative_impact").cast(ImpactEnum),
|
|
34
|
+
pl.element()
|
|
35
|
+
.struct.field("consequences")
|
|
36
|
+
.cast(pl.List(ConsequenceEnum)),
|
|
37
|
+
)
|
|
38
|
+
)
|
|
39
|
+
.alias("annotation")
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
@typing.overload
|
|
43
|
+
def annotate(self, data: str) -> dict[str, typing.Any]: ...
|
|
44
|
+
|
|
45
|
+
@typing.overload
|
|
46
|
+
def annotate(self, data: pl.DataFrame) -> pl.DataFrame: ...
|
|
47
|
+
|
|
48
|
+
@typing.overload
|
|
49
|
+
def annotate(self, data: pl.LazyFrame) -> pl.LazyFrame: ...
|
|
50
|
+
|
|
51
|
+
@typing.overload
|
|
52
|
+
def annotate(
|
|
53
|
+
self, *, chromosome: str, position: int, reference: str, alternative: str
|
|
54
|
+
) -> dict[str, typing.Any]: ...
|
|
55
|
+
|
|
56
|
+
def annotate(
|
|
57
|
+
self,
|
|
58
|
+
data: str | pl.DataFrame | pl.LazyFrame | None = None,
|
|
59
|
+
*,
|
|
60
|
+
chromosome: str | None = None,
|
|
61
|
+
position: int | None = None,
|
|
62
|
+
reference: str | None = None,
|
|
63
|
+
alternative: str | None = None,
|
|
64
|
+
) -> typing.Any:
|
|
65
|
+
"""
|
|
66
|
+
Annotates genetic variants.
|
|
67
|
+
Supports Polars DataFrames/LazyFrames, 'chr:pos:ref:alt' strings, or explicit kwargs.
|
|
68
|
+
"""
|
|
69
|
+
|
|
70
|
+
if isinstance(data, pl.DataFrame):
|
|
71
|
+
return self._process_dataframe(data)
|
|
72
|
+
|
|
73
|
+
if isinstance(data, pl.LazyFrame):
|
|
74
|
+
in_schema = data.collect_schema()
|
|
75
|
+
empty_df = pl.DataFrame(schema=in_schema)
|
|
76
|
+
out_schema = self._process_dataframe(empty_df).schema
|
|
77
|
+
return data.map_batches(self._process_dataframe, schema=out_schema)
|
|
78
|
+
|
|
79
|
+
if isinstance(data, str):
|
|
80
|
+
try:
|
|
81
|
+
c, p, r, a = data.split(":")
|
|
82
|
+
return self._annotator.annotate(c, int(p), r, a)
|
|
83
|
+
except ValueError:
|
|
84
|
+
raise ValueError(
|
|
85
|
+
f"Invalid format '{data}'. Expected 'chr:pos:ref:alt' (e.g., '17:41197701:G:C')"
|
|
86
|
+
)
|
|
87
|
+
|
|
88
|
+
if all(v is not None for v in (chromosome, position, reference, alternative)):
|
|
89
|
+
return self._annotator.annotate(
|
|
90
|
+
str(chromosome), int(position), str(reference), str(alternative)
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
raise ValueError(
|
|
94
|
+
"Invalid input. Provide a Polars DataFrame/LazyFrame, a variant string ('chr:pos:ref:alt'), "
|
|
95
|
+
"or explicit kwargs (chromosome=..., position=..., reference=..., alternative=...)."
|
|
96
|
+
)
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
// The custom build script, used to (1) generate the Rust classes for the
|
|
2
|
+
// protobuf implementation and (2) use pbjson for proto3 JSON serialization.
|
|
3
|
+
|
|
4
|
+
use std::io::Write;
|
|
5
|
+
use std::{env, path::PathBuf};
|
|
6
|
+
|
|
7
|
+
fn main() -> Result<(), anyhow::Error> {
|
|
8
|
+
// Integration of `prost-build` and `pbjson-build`.
|
|
9
|
+
let root = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("protos");
|
|
10
|
+
let proto_files = ["mehari/txs.proto", "mehari/server.proto"]
|
|
11
|
+
.iter()
|
|
12
|
+
.map(|f| root.join(f))
|
|
13
|
+
.collect::<Vec<_>>();
|
|
14
|
+
|
|
15
|
+
// Tell cargo to recompile if any of these proto files are changed
|
|
16
|
+
for proto_file in &proto_files {
|
|
17
|
+
println!("cargo:rerun-if-changed={}", proto_file.display());
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
let descriptor_path: PathBuf =
|
|
21
|
+
PathBuf::from(env::var("OUT_DIR").unwrap()).join("proto_descriptor.bin");
|
|
22
|
+
|
|
23
|
+
prost_build::Config::new()
|
|
24
|
+
// Save descriptors to file
|
|
25
|
+
.file_descriptor_set_path(&descriptor_path)
|
|
26
|
+
// Override prost-types with pbjson-types
|
|
27
|
+
.compile_well_known_types()
|
|
28
|
+
.extern_path(".google.protobuf", "::pbjson_types")
|
|
29
|
+
// Define the protobuf files to compile.
|
|
30
|
+
.compile_protos(&proto_files, &[root])?;
|
|
31
|
+
|
|
32
|
+
let descriptor_set = std::fs::read(descriptor_path).unwrap();
|
|
33
|
+
pbjson_build::Builder::new()
|
|
34
|
+
.register_descriptors(&descriptor_set)?
|
|
35
|
+
.build(&[".mehari"])?;
|
|
36
|
+
|
|
37
|
+
// Integration of `built`. Workaround for python bindings via maturin in mehari-python
|
|
38
|
+
let src = env::var("CARGO_MANIFEST_DIR").unwrap();
|
|
39
|
+
let dst = PathBuf::from(env::var("OUT_DIR").unwrap()).join("built.rs");
|
|
40
|
+
let manifest_path = std::path::Path::new(&src);
|
|
41
|
+
|
|
42
|
+
if let Err(e) = built::write_built_file_with_opts(Some(manifest_path), &dst) {
|
|
43
|
+
println!(
|
|
44
|
+
"cargo:warning=Failed to write built file with manifest: {}",
|
|
45
|
+
e
|
|
46
|
+
);
|
|
47
|
+
println!("cargo:warning=Falling back to building without manifest (likely Python sdist)");
|
|
48
|
+
|
|
49
|
+
built::write_built_file_with_opts(None, &dst)
|
|
50
|
+
.map_err(|e| anyhow::anyhow!("Failed to write built file: {}", e))?;
|
|
51
|
+
|
|
52
|
+
let mut file = std::fs::OpenOptions::new()
|
|
53
|
+
.append(true)
|
|
54
|
+
.open(&dst)
|
|
55
|
+
.expect("Failed to open built.rs for appending");
|
|
56
|
+
writeln!(
|
|
57
|
+
file,
|
|
58
|
+
"pub const DEPENDENCIES: [(&str, &str); 1] = [(\"hgvs\", \"unknown-sdist\")];"
|
|
59
|
+
)
|
|
60
|
+
.expect("Failed to append dummy dependencies");
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
Ok(())
|
|
64
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// Protobuf messages for the server.
|
|
2
|
+
|
|
3
|
+
syntax = "proto3";
|
|
4
|
+
|
|
5
|
+
package mehari.server;
|
|
6
|
+
|
|
7
|
+
import "mehari/txs.proto";
|
|
8
|
+
|
|
9
|
+
// Query for transcripts of a certain gene.
|
|
10
|
+
message GeneTranscriptsQuery {
|
|
11
|
+
// Gene identifier to query for.
|
|
12
|
+
optional string hgnc_id = 1;
|
|
13
|
+
// Genome build to use.
|
|
14
|
+
optional mehari.txs.GenomeBuild genome_build = 2;
|
|
15
|
+
|
|
16
|
+
// The number of entries to return per page.
|
|
17
|
+
optional int32 page_size = 3;
|
|
18
|
+
// The token to continue from a previous query.
|
|
19
|
+
optional string next_page_token = 4;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// Container for a response to `GeneTranscriptsQuery`.
|
|
23
|
+
message GeneTranscriptsResponse {
|
|
24
|
+
// The transcripts for the gene.
|
|
25
|
+
repeated mehari.txs.Transcript transcripts = 1;
|
|
26
|
+
|
|
27
|
+
// The token to continue from a previous query.
|
|
28
|
+
optional string next_page_token = 2;
|
|
29
|
+
}
|