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.
Files changed (363) hide show
  1. mehari-0.41.0/Cargo.toml +24 -0
  2. mehari-0.41.0/LICENSE.txt +21 -0
  3. mehari-0.41.0/PKG-INFO +100 -0
  4. mehari-0.41.0/README.md +81 -0
  5. mehari-0.41.0/mehari/CHANGELOG.md +8 -0
  6. mehari-0.41.0/mehari/Cargo.toml +111 -0
  7. mehari-0.41.0/mehari/README.md +38 -0
  8. mehari-0.41.0/mehari/__init__.py +96 -0
  9. mehari-0.41.0/mehari/build.rs +64 -0
  10. mehari-0.41.0/mehari/protos/mehari/server.proto +29 -0
  11. mehari-0.41.0/mehari/protos/mehari/txs.proto +208 -0
  12. mehari-0.41.0/mehari/py.typed +0 -0
  13. mehari-0.41.0/mehari/src/annotate/cli.rs +191 -0
  14. mehari-0.41.0/mehari/src/annotate/mod.rs +44 -0
  15. mehari-0.41.0/mehari/src/annotate/seqvars/ann.rs +1645 -0
  16. mehari-0.41.0/mehari/src/annotate/seqvars/binning.rs +30 -0
  17. mehari-0.41.0/mehari/src/annotate/seqvars/csq.rs +2857 -0
  18. mehari-0.41.0/mehari/src/annotate/seqvars/mod.rs +2646 -0
  19. mehari-0.41.0/mehari/src/annotate/seqvars/provider.rs +960 -0
  20. mehari-0.41.0/mehari/src/annotate/seqvars/reference.rs +308 -0
  21. 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
  22. 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
  23. 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
  24. 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
  25. 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
  26. 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
  27. 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
  28. 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
  29. 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
  30. 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
  31. 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
  32. 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
  33. 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
  34. 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
  35. 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
  36. 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
  37. 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
  38. 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
  39. 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
  40. 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
  41. 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
  42. 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
  43. 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
  44. 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
  45. 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
  46. 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
  47. 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
  48. 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
  49. 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
  50. 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
  51. 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
  52. 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
  53. 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
  54. 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
  55. 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
  56. 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
  57. 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
  58. 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
  59. 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
  60. 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
  61. 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
  62. 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
  63. 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
  64. 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
  65. 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
  66. 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
  67. 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
  68. 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
  69. 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
  70. 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
  71. 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
  72. 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
  73. 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
  74. 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
  75. 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
  76. 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
  77. 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
  78. 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
  79. 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
  80. 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
  81. 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
  82. 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
  83. 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
  84. 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
  85. 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
  86. 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
  87. 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
  88. 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
  89. 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
  90. 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
  91. 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
  92. 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
  93. 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
  94. 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
  95. 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
  96. 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
  97. mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__csq__test__vep_disagreement_cases_output.snap +64 -0
  98. mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__test__smoke_test_output_tsv.snap +6 -0
  99. mehari-0.41.0/mehari/src/annotate/seqvars/snapshots/mehari__annotate__seqvars__test__smoke_test_output_vcf.snap +141 -0
  100. mehari-0.41.0/mehari/src/annotate/strucvars/csq.rs +472 -0
  101. mehari-0.41.0/mehari/src/annotate/strucvars/maelstrom.rs +211 -0
  102. mehari-0.41.0/mehari/src/annotate/strucvars/mod.rs +4412 -0
  103. mehari-0.41.0/mehari/src/annotate/strucvars/snapshots/mehari__annotate__strucvars__test__guess_sv_caller_clincnv.snap +7 -0
  104. mehari-0.41.0/mehari/src/annotate/strucvars/snapshots/mehari__annotate__strucvars__test__guess_sv_caller_delly.snap +7 -0
  105. mehari-0.41.0/mehari/src/annotate/strucvars/snapshots/mehari__annotate__strucvars__test__guess_sv_caller_dragen_cnv.snap +7 -0
  106. mehari-0.41.0/mehari/src/annotate/strucvars/snapshots/mehari__annotate__strucvars__test__guess_sv_caller_dragen_sv.snap +7 -0
  107. mehari-0.41.0/mehari/src/annotate/strucvars/snapshots/mehari__annotate__strucvars__test__guess_sv_caller_gcnv.snap +7 -0
  108. mehari-0.41.0/mehari/src/annotate/strucvars/snapshots/mehari__annotate__strucvars__test__guess_sv_caller_manta.snap +7 -0
  109. mehari-0.41.0/mehari/src/annotate/strucvars/snapshots/mehari__annotate__strucvars__test__guess_sv_caller_melt.snap +7 -0
  110. mehari-0.41.0/mehari/src/annotate/strucvars/snapshots/mehari__annotate__strucvars__test__guess_sv_caller_popdel.snap +7 -0
  111. mehari-0.41.0/mehari/src/annotate/strucvars/snapshots/mehari__annotate__strucvars__test__parse_bnd-2.snap +12 -0
  112. mehari-0.41.0/mehari/src/annotate/strucvars/snapshots/mehari__annotate__strucvars__test__parse_bnd-3.snap +12 -0
  113. mehari-0.41.0/mehari/src/annotate/strucvars/snapshots/mehari__annotate__strucvars__test__parse_bnd-4.snap +12 -0
  114. mehari-0.41.0/mehari/src/annotate/strucvars/snapshots/mehari__annotate__strucvars__test__parse_bnd-5.snap +12 -0
  115. mehari-0.41.0/mehari/src/annotate/strucvars/snapshots/mehari__annotate__strucvars__test__parse_bnd-6.snap +12 -0
  116. mehari-0.41.0/mehari/src/annotate/strucvars/snapshots/mehari__annotate__strucvars__test__parse_bnd.snap +12 -0
  117. mehari-0.41.0/mehari/src/common/contig.rs +229 -0
  118. mehari-0.41.0/mehari/src/common/io/mod.rs +4 -0
  119. mehari-0.41.0/mehari/src/common/io/snapshots/mehari__common__io__std__test__open_read_maybe_gz@14kb.txt.bgz.snap +3005 -0
  120. mehari-0.41.0/mehari/src/common/io/snapshots/mehari__common__io__std__test__open_read_maybe_gz@14kb.txt.gz.snap +3005 -0
  121. mehari-0.41.0/mehari/src/common/io/snapshots/mehari__common__io__std__test__open_read_maybe_gz@14kb.txt.snap +3005 -0
  122. mehari-0.41.0/mehari/src/common/io/snapshots/mehari__common__io__std__test__open_write_maybe_bgzf@14kb.txt.bgz.snap +872 -0
  123. mehari-0.41.0/mehari/src/common/io/snapshots/mehari__common__io__std__test__open_write_maybe_bgzf@14kb.txt.gz.snap +363 -0
  124. mehari-0.41.0/mehari/src/common/io/snapshots/mehari__common__io__std__test__open_write_maybe_bgzf@14kb.txt.snap +872 -0
  125. mehari-0.41.0/mehari/src/common/io/snapshots/mehari__common__io__std__test__open_write_maybe_gz@false.snap +5 -0
  126. mehari-0.41.0/mehari/src/common/io/snapshots/mehari__common__io__std__test__open_write_maybe_gz@true.snap +5 -0
  127. mehari-0.41.0/mehari/src/common/io/snapshots/mehari__common__io__std__test__read_lines.snap +8 -0
  128. mehari-0.41.0/mehari/src/common/io/snapshots/mehari__common__io__tokio__test__open_read_maybe_gz@14kb.txt.bgz.snap +3005 -0
  129. mehari-0.41.0/mehari/src/common/io/snapshots/mehari__common__io__tokio__test__open_read_maybe_gz@14kb.txt.gz.snap +3005 -0
  130. mehari-0.41.0/mehari/src/common/io/snapshots/mehari__common__io__tokio__test__open_read_maybe_gz@14kb.txt.snap +3005 -0
  131. mehari-0.41.0/mehari/src/common/io/snapshots/mehari__common__io__tokio__test__open_write_maybe_bgzf@14kb.txt.bgz.snap +401 -0
  132. mehari-0.41.0/mehari/src/common/io/snapshots/mehari__common__io__tokio__test__open_write_maybe_bgzf@14kb.txt.gz.snap +401 -0
  133. mehari-0.41.0/mehari/src/common/io/snapshots/mehari__common__io__tokio__test__open_write_maybe_bgzf@14kb.txt.snap +872 -0
  134. mehari-0.41.0/mehari/src/common/io/std.rs +164 -0
  135. mehari-0.41.0/mehari/src/common/io/tokio.rs +172 -0
  136. mehari-0.41.0/mehari/src/common/mod.rs +328 -0
  137. mehari-0.41.0/mehari/src/common/noodles.rs +188 -0
  138. mehari-0.41.0/mehari/src/db/check/mod.rs +896 -0
  139. mehari-0.41.0/mehari/src/db/create/mod.rs +2199 -0
  140. mehari-0.41.0/mehari/src/db/create/snapshots/mehari__db__create__test__filter_transcripts_brca1-2.snap +10 -0
  141. mehari-0.41.0/mehari/src/db/create/snapshots/mehari__db__create__test__filter_transcripts_brca1-3.snap +5 -0
  142. mehari-0.41.0/mehari/src/db/create/snapshots/mehari__db__create__test__filter_transcripts_brca1.snap +10 -0
  143. mehari-0.41.0/mehari/src/db/create/snapshots/mehari__db__create__test__run_smoke_brca1_opa1@grch37.snap +3005 -0
  144. mehari-0.41.0/mehari/src/db/create/snapshots/mehari__db__create__test__run_smoke_brca1_opa1@grch38.snap +4737 -0
  145. mehari-0.41.0/mehari/src/db/create/snapshots/mehari__db__create__test__run_smoke_mitochondrial.snap +1002 -0
  146. mehari-0.41.0/mehari/src/db/create/snapshots/mehari__db__create__test__run_smoke_selenoproteins.snap +197 -0
  147. mehari-0.41.0/mehari/src/db/dump/mod.rs +38 -0
  148. mehari-0.41.0/mehari/src/db/merge.rs +128 -0
  149. mehari-0.41.0/mehari/src/db/mod.rs +34 -0
  150. mehari-0.41.0/mehari/src/db/subset/mod.rs +326 -0
  151. mehari-0.41.0/mehari/src/db/subset/snapshots/mehari__db__subset__tests__subset_tx_db.snap +9804 -0
  152. mehari-0.41.0/mehari/src/lib.rs +33 -0
  153. mehari-0.41.0/mehari/src/main.rs +249 -0
  154. mehari-0.41.0/mehari/src/pbs/mod.rs +4 -0
  155. mehari-0.41.0/mehari/src/pbs/server.rs +6 -0
  156. mehari-0.41.0/mehari/src/pbs/txs.rs +6 -0
  157. mehari-0.41.0/mehari/src/ped.rs +265 -0
  158. mehari-0.41.0/mehari/src/server/mod.rs +2 -0
  159. mehari-0.41.0/mehari/src/server/run/actix_server/gene_txs.rs +398 -0
  160. mehari-0.41.0/mehari/src/server/run/actix_server/mod.rs +92 -0
  161. mehari-0.41.0/mehari/src/server/run/actix_server/seqvars_clinvar.rs +132 -0
  162. mehari-0.41.0/mehari/src/server/run/actix_server/seqvars_csq.rs +230 -0
  163. mehari-0.41.0/mehari/src/server/run/actix_server/seqvars_frequencies.rs +180 -0
  164. mehari-0.41.0/mehari/src/server/run/actix_server/strucvars_csq.rs +217 -0
  165. mehari-0.41.0/mehari/src/server/run/actix_server/versions.rs +171 -0
  166. mehari-0.41.0/mehari/src/server/run/mod.rs +469 -0
  167. mehari-0.41.0/mehari/src/server/schema.rs +51 -0
  168. mehari-0.41.0/mehari/src/snapshots/mehari__common__test__open_read_maybe_gz@false.snap +6 -0
  169. mehari-0.41.0/mehari/src/snapshots/mehari__common__test__open_read_maybe_gz@true.snap +6 -0
  170. mehari-0.41.0/mehari/src/verify/mod.rs +3 -0
  171. mehari-0.41.0/mehari/src/verify/seqvars.rs +350 -0
  172. mehari-0.41.0/mehari/tests/common/io/14kb.txt +3000 -0
  173. mehari-0.41.0/mehari/tests/common/io/14kb.txt.bgz +0 -0
  174. mehari-0.41.0/mehari/tests/common/io/14kb.txt.gz +0 -0
  175. mehari-0.41.0/mehari/tests/common/io/bootstrap.sh +13 -0
  176. mehari-0.41.0/mehari/tests/common/io/lines.txt +3 -0
  177. mehari-0.41.0/mehari/tests/common/io/test.txt +1 -0
  178. mehari-0.41.0/mehari/tests/common/io/test.txt.gz +0 -0
  179. mehari-0.41.0/mehari/tests/data/annotate/db/bootstrap.sh +3 -0
  180. mehari-0.41.0/mehari/tests/data/annotate/db/grch37/seqvars/clinvar/000010.sst +3 -0
  181. mehari-0.41.0/mehari/tests/data/annotate/db/grch37/seqvars/clinvar/000012.sst +3 -0
  182. mehari-0.41.0/mehari/tests/data/annotate/db/grch37/seqvars/clinvar/CURRENT +3 -0
  183. mehari-0.41.0/mehari/tests/data/annotate/db/grch37/seqvars/clinvar/IDENTITY +3 -0
  184. mehari-0.41.0/mehari/tests/data/annotate/db/grch37/seqvars/clinvar/LOCK +0 -0
  185. mehari-0.41.0/mehari/tests/data/annotate/db/grch37/seqvars/clinvar/LOG +3 -0
  186. mehari-0.41.0/mehari/tests/data/annotate/db/grch37/seqvars/clinvar/MANIFEST-000005 +3 -0
  187. mehari-0.41.0/mehari/tests/data/annotate/db/grch37/seqvars/clinvar/OPTIONS-000007 +3 -0
  188. mehari-0.41.0/mehari/tests/data/annotate/db/grch37/seqvars/freqs/000018.sst +3 -0
  189. mehari-0.41.0/mehari/tests/data/annotate/db/grch37/seqvars/freqs/000020.sst +3 -0
  190. mehari-0.41.0/mehari/tests/data/annotate/db/grch37/seqvars/freqs/CURRENT +3 -0
  191. mehari-0.41.0/mehari/tests/data/annotate/db/grch37/seqvars/freqs/IDENTITY +3 -0
  192. mehari-0.41.0/mehari/tests/data/annotate/db/grch37/seqvars/freqs/LOCK +0 -0
  193. mehari-0.41.0/mehari/tests/data/annotate/db/grch37/seqvars/freqs/LOG +3 -0
  194. mehari-0.41.0/mehari/tests/data/annotate/db/grch37/seqvars/freqs/MANIFEST-000005 +3 -0
  195. mehari-0.41.0/mehari/tests/data/annotate/db/grch37/seqvars/freqs/OPTIONS-000013 +3 -0
  196. mehari-0.41.0/mehari/tests/data/annotate/db/grch37/seqvars/freqs/OPTIONS-000015 +3 -0
  197. mehari-0.41.0/mehari/tests/data/annotate/db/grch37/txs.bin.zst +3 -0
  198. mehari-0.41.0/mehari/tests/data/annotate/db/grch38/GRCh38-ensembl.disagreement-subset.txs.bin.zst +3 -0
  199. mehari-0.41.0/mehari/tests/data/annotate/db/grch38/seqvars/clinvar/000010.sst +3 -0
  200. mehari-0.41.0/mehari/tests/data/annotate/db/grch38/seqvars/clinvar/000012.sst +3 -0
  201. mehari-0.41.0/mehari/tests/data/annotate/db/grch38/seqvars/clinvar/CURRENT +3 -0
  202. mehari-0.41.0/mehari/tests/data/annotate/db/grch38/seqvars/clinvar/IDENTITY +3 -0
  203. mehari-0.41.0/mehari/tests/data/annotate/db/grch38/seqvars/clinvar/LOCK +0 -0
  204. mehari-0.41.0/mehari/tests/data/annotate/db/grch38/seqvars/clinvar/LOG +3 -0
  205. mehari-0.41.0/mehari/tests/data/annotate/db/grch38/seqvars/clinvar/MANIFEST-000005 +3 -0
  206. mehari-0.41.0/mehari/tests/data/annotate/db/grch38/seqvars/clinvar/OPTIONS-000007 +3 -0
  207. mehari-0.41.0/mehari/tests/data/annotate/db/grch38/seqvars/freqs/000018.sst +3 -0
  208. mehari-0.41.0/mehari/tests/data/annotate/db/grch38/seqvars/freqs/000020.sst +3 -0
  209. mehari-0.41.0/mehari/tests/data/annotate/db/grch38/seqvars/freqs/CURRENT +3 -0
  210. mehari-0.41.0/mehari/tests/data/annotate/db/grch38/seqvars/freqs/IDENTITY +3 -0
  211. mehari-0.41.0/mehari/tests/data/annotate/db/grch38/seqvars/freqs/LOCK +0 -0
  212. mehari-0.41.0/mehari/tests/data/annotate/db/grch38/seqvars/freqs/LOG +3 -0
  213. mehari-0.41.0/mehari/tests/data/annotate/db/grch38/seqvars/freqs/MANIFEST-000005 +3 -0
  214. mehari-0.41.0/mehari/tests/data/annotate/db/grch38/seqvars/freqs/OPTIONS-000013 +3 -0
  215. mehari-0.41.0/mehari/tests/data/annotate/db/grch38/seqvars/freqs/OPTIONS-000015 +3 -0
  216. mehari-0.41.0/mehari/tests/data/annotate/db/grch38/txs.bin.zst +3 -0
  217. mehari-0.41.0/mehari/tests/data/annotate/db/hgnc.tsv +3 -0
  218. mehari-0.41.0/mehari/tests/data/annotate/seqvars/badly_formed_vcf_entry.ped +3 -0
  219. mehari-0.41.0/mehari/tests/data/annotate/seqvars/badly_formed_vcf_entry.tsv +3 -0
  220. mehari-0.41.0/mehari/tests/data/annotate/seqvars/badly_formed_vcf_entry.vcf +3 -0
  221. mehari-0.41.0/mehari/tests/data/annotate/seqvars/bootstrap.sh +3 -0
  222. mehari-0.41.0/mehari/tests/data/annotate/seqvars/brca1.examples.ped +3 -0
  223. mehari-0.41.0/mehari/tests/data/annotate/seqvars/brca1.examples.vcf +3 -0
  224. mehari-0.41.0/mehari/tests/data/annotate/seqvars/brca1.hand_picked.tsv +3 -0
  225. mehari-0.41.0/mehari/tests/data/annotate/seqvars/brca2_zar1l/brca2_zar1l.ped +3 -0
  226. mehari-0.41.0/mehari/tests/data/annotate/seqvars/brca2_zar1l/brca2_zar1l.tsv +3 -0
  227. mehari-0.41.0/mehari/tests/data/annotate/seqvars/brca2_zar1l/brca2_zar1l.vcf +3 -0
  228. mehari-0.41.0/mehari/tests/data/annotate/seqvars/clair3-glnexus-min.multiallelic.vcf +3 -0
  229. mehari-0.41.0/mehari/tests/data/annotate/seqvars/clair3-glnexus-min.ped +3 -0
  230. mehari-0.41.0/mehari/tests/data/annotate/seqvars/clair3-glnexus-min.tsv +3 -0
  231. mehari-0.41.0/mehari/tests/data/annotate/seqvars/clair3-glnexus-min.vcf +3 -0
  232. mehari-0.41.0/mehari/tests/data/annotate/seqvars/clinvar.excerpt.snpeff.brca1.tsv +3 -0
  233. mehari-0.41.0/mehari/tests/data/annotate/seqvars/clinvar.excerpt.snpeff.opa1.tsv +3 -0
  234. mehari-0.41.0/mehari/tests/data/annotate/seqvars/clinvar.excerpt.snpeff.vcf.gz +3 -0
  235. mehari-0.41.0/mehari/tests/data/annotate/seqvars/clinvar.excerpt.snpeff.vcf.gz.tbi +3 -0
  236. mehari-0.41.0/mehari/tests/data/annotate/seqvars/clinvar.excerpt.vcf +3 -0
  237. mehari-0.41.0/mehari/tests/data/annotate/seqvars/clinvar.excerpt.vcf.gz +3 -0
  238. mehari-0.41.0/mehari/tests/data/annotate/seqvars/clinvar.excerpt.vcf.gz.tbi +3 -0
  239. mehari-0.41.0/mehari/tests/data/annotate/seqvars/clinvar.excerpt.vep.brca1.tsv +3 -0
  240. mehari-0.41.0/mehari/tests/data/annotate/seqvars/clinvar.excerpt.vep.opa1.tsv +3 -0
  241. mehari-0.41.0/mehari/tests/data/annotate/seqvars/clinvar.excerpt.vep.vcf.gz +3 -0
  242. mehari-0.41.0/mehari/tests/data/annotate/seqvars/clinvar.excerpt.vep.vcf.gz.tbi +3 -0
  243. mehari-0.41.0/mehari/tests/data/annotate/seqvars/mitochondrial_variants.ped +3 -0
  244. mehari-0.41.0/mehari/tests/data/annotate/seqvars/mitochondrial_variants.tsv +3 -0
  245. mehari-0.41.0/mehari/tests/data/annotate/seqvars/mitochondrial_variants.vcf +3 -0
  246. mehari-0.41.0/mehari/tests/data/annotate/seqvars/opa1.hand_picked.tsv +3 -0
  247. mehari-0.41.0/mehari/tests/data/annotate/seqvars/postproc-snpeff.sh +3 -0
  248. mehari-0.41.0/mehari/tests/data/annotate/seqvars/postproc-vep.sh +3 -0
  249. mehari-0.41.0/mehari/tests/data/annotate/seqvars/vep.disagreement-cases.expected.vcf +3 -0
  250. mehari-0.41.0/mehari/tests/data/annotate/seqvars/vep.disagreement-cases.vcf +3 -0
  251. mehari-0.41.0/mehari/tests/data/annotate/strucvars/clincnv-min.out.jsonl +3 -0
  252. mehari-0.41.0/mehari/tests/data/annotate/strucvars/clincnv-min.vcf +3 -0
  253. mehari-0.41.0/mehari/tests/data/annotate/strucvars/delly2-min.out.jsonl +3 -0
  254. mehari-0.41.0/mehari/tests/data/annotate/strucvars/delly2-min.vcf +3 -0
  255. mehari-0.41.0/mehari/tests/data/annotate/strucvars/dragen-cnv-min.out.jsonl +3 -0
  256. mehari-0.41.0/mehari/tests/data/annotate/strucvars/dragen-cnv-min.vcf +3 -0
  257. mehari-0.41.0/mehari/tests/data/annotate/strucvars/dragen-sv-min.out.jsonl +3 -0
  258. mehari-0.41.0/mehari/tests/data/annotate/strucvars/dragen-sv-min.vcf +3 -0
  259. mehari-0.41.0/mehari/tests/data/annotate/strucvars/example-grch38.tsv +3 -0
  260. mehari-0.41.0/mehari/tests/data/annotate/strucvars/example-grch38.vcf +3 -0
  261. mehari-0.41.0/mehari/tests/data/annotate/strucvars/gcnv-min.out.jsonl +3 -0
  262. mehari-0.41.0/mehari/tests/data/annotate/strucvars/gcnv-min.vcf +3 -0
  263. mehari-0.41.0/mehari/tests/data/annotate/strucvars/header-grch37-noped.vcf +3 -0
  264. mehari-0.41.0/mehari/tests/data/annotate/strucvars/header-grch37-trio.vcf +3 -0
  265. mehari-0.41.0/mehari/tests/data/annotate/strucvars/header-grch38-noped.vcf +3 -0
  266. mehari-0.41.0/mehari/tests/data/annotate/strucvars/maelstrom/delly2-min-with-maelstrom.tsv +3 -0
  267. mehari-0.41.0/mehari/tests/data/annotate/strucvars/maelstrom/delly2-min-with-maelstrom.vcf +3 -0
  268. mehari-0.41.0/mehari/tests/data/annotate/strucvars/maelstrom/delly2-min.ped +3 -0
  269. mehari-0.41.0/mehari/tests/data/annotate/strucvars/maelstrom/delly2-min.vcf +3 -0
  270. mehari-0.41.0/mehari/tests/data/annotate/strucvars/maelstrom/example.SAMPLE.cov.vcf.gz +3 -0
  271. mehari-0.41.0/mehari/tests/data/annotate/strucvars/maelstrom/example.SAMPLE.cov.vcf.gz.tbi +3 -0
  272. mehari-0.41.0/mehari/tests/data/annotate/strucvars/manta-min.out.jsonl +3 -0
  273. mehari-0.41.0/mehari/tests/data/annotate/strucvars/manta-min.vcf +3 -0
  274. mehari-0.41.0/mehari/tests/data/annotate/strucvars/melt-min.out.jsonl +3 -0
  275. mehari-0.41.0/mehari/tests/data/annotate/strucvars/melt-min.vcf +3 -0
  276. mehari-0.41.0/mehari/tests/data/annotate/strucvars/popdel-min.out.jsonl +3 -0
  277. mehari-0.41.0/mehari/tests/data/annotate/strucvars/popdel-min.vcf +3 -0
  278. mehari-0.41.0/mehari/tests/data/annotate/strucvars/sniffles2-min.out.jsonl +3 -0
  279. mehari-0.41.0/mehari/tests/data/annotate/strucvars/sniffles2-min.vcf +3 -0
  280. mehari-0.41.0/mehari/tests/data/annotate/strucvars/test.order.expected.vcf +3 -0
  281. mehari-0.41.0/mehari/tests/data/annotate/strucvars/test.order.ped +3 -0
  282. mehari-0.41.0/mehari/tests/data/annotate/strucvars/test.order.vcf +3 -0
  283. mehari-0.41.0/mehari/tests/data/db/create/mitochondrial/cdot-0.2.23.ensembl.chrMT.grch37.gff3.json +3 -0
  284. mehari-0.41.0/mehari/tests/data/db/create/mitochondrial/latest/aliases.sqlite3 +3 -0
  285. mehari-0.41.0/mehari/tests/data/db/create/mitochondrial/latest/sequences/2024/0305/1050/1709635806.4821885.fa.bgz +3 -0
  286. mehari-0.41.0/mehari/tests/data/db/create/mitochondrial/latest/sequences/2024/0305/1050/1709635806.4821885.fa.bgz.fai +3 -0
  287. mehari-0.41.0/mehari/tests/data/db/create/mitochondrial/latest/sequences/2024/0305/1050/1709635806.4821885.fa.bgz.gzi +3 -0
  288. mehari-0.41.0/mehari/tests/data/db/create/mitochondrial/latest/sequences/db.sqlite3 +3 -0
  289. mehari-0.41.0/mehari/tests/data/db/create/seleonoproteins/cdot-0.2.22.refseq.grch38.selenon.fasta +3 -0
  290. mehari-0.41.0/mehari/tests/data/db/create/seleonoproteins/cdot-0.2.22.refseq.grch38.selenon.json +3 -0
  291. mehari-0.41.0/mehari/tests/data/db/create/seleonoproteins/latest/aliases.sqlite3 +3 -0
  292. mehari-0.41.0/mehari/tests/data/db/create/seleonoproteins/latest/sequences/2023/1118/2012/1700338324.6475816.fa.bgz +3 -0
  293. mehari-0.41.0/mehari/tests/data/db/create/seleonoproteins/latest/sequences/2023/1118/2012/1700338324.6475816.fa.bgz.fai +3 -0
  294. mehari-0.41.0/mehari/tests/data/db/create/seleonoproteins/latest/sequences/2023/1118/2012/1700338324.6475816.fa.bgz.gzi +3 -0
  295. mehari-0.41.0/mehari/tests/data/db/create/seleonoproteins/latest/sequences/db.sqlite3 +3 -0
  296. mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/12-37/gnomad.exomes.r2.1.1.sites.chr1-rs1263393206.vcf +3 -0
  297. 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
  298. 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
  299. mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/12-37/gnomad.exomes.r2.1.1.sites.chr1.vcf +3 -0
  300. mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/12-37/gnomad.exomes.r2.1.1.sites.chr2.vcf +3 -0
  301. mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/12-37/gnomad.genomes.r2.1.1.sites.chr1-rs1263393206.vcf +3 -0
  302. 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
  303. 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
  304. mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/12-37/gnomad.genomes.r2.1.1.sites.chr1.vcf +3 -0
  305. mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/12-37/gnomad.genomes.r2.1.1.sites.chr2.vcf +3 -0
  306. mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/12-38/gnomad.exomes.r2.1.1.sites.chr1.vcf +3 -0
  307. mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/12-38/gnomad.exomes.r2.1.1.sites.chr2.vcf +3 -0
  308. mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/12-38/gnomad.genomes.r2.1.1.sites.chr1.vcf +3 -0
  309. mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/12-38/gnomad.genomes.r2.1.1.sites.chr2.vcf +3 -0
  310. mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/12-38/gnomad.genomes.r3.1.1.sites.chr1.vcf +3 -0
  311. mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/12-38/gnomad.genomes.r3.1.1.sites.chr2.vcf +3 -0
  312. mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/db-rs1263393206/info.sh +3 -0
  313. mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/db-rs1263393206/input.ped +3 -0
  314. mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/db-rs1263393206/input.vcf +3 -0
  315. mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/db-rs1263393206/output.tsv +3 -0
  316. mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/db-rs1263393206/output.vcf +3 -0
  317. mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/db-rs1263393206/seqvars/freqs/000018.sst +3 -0
  318. mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/db-rs1263393206/seqvars/freqs/000020.sst +3 -0
  319. mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/db-rs1263393206/seqvars/freqs/CURRENT +3 -0
  320. mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/db-rs1263393206/seqvars/freqs/IDENTITY +3 -0
  321. mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/db-rs1263393206/seqvars/freqs/LOCK +0 -0
  322. mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/db-rs1263393206/seqvars/freqs/LOG +3 -0
  323. mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/db-rs1263393206/seqvars/freqs/MANIFEST-000005 +3 -0
  324. mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/db-rs1263393206/seqvars/freqs/OPTIONS-000013 +3 -0
  325. mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/db-rs1263393206/seqvars/freqs/OPTIONS-000015 +3 -0
  326. mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/mt/gnomad.chrM.vcf +3 -0
  327. mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/mt/helix.chrM.vcf +3 -0
  328. mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/xy-37/gnomad.exomes.r2.1.1.sites.chrX.vcf +3 -0
  329. mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/xy-37/gnomad.exomes.r2.1.1.sites.chrY.vcf +3 -0
  330. mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/xy-37/gnomad.genomes.r2.1.1.sites.chrX.vcf +3 -0
  331. mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/xy-38/gnomad.exomes.r2.1.1.sites.chrX.vcf +3 -0
  332. mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/xy-38/gnomad.exomes.r2.1.1.sites.chrY.vcf +3 -0
  333. mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/xy-38/gnomad.genomes.r3.1.1.sites.chrX.vcf +3 -0
  334. mehari-0.41.0/mehari/tests/data/db/create/seqvar_freqs/xy-38/gnomad.genomes.r3.1.1.sites.chrY.vcf +3 -0
  335. mehari-0.41.0/mehari/tests/data/db/create/txs/bootstrap.sh +3 -0
  336. mehari-0.41.0/mehari/tests/data/db/create/txs/brca1.fasta +3 -0
  337. mehari-0.41.0/mehari/tests/data/db/create/txs/cdot-0.2.22.refseq.grch37.brca1_opa1.json +3 -0
  338. mehari-0.41.0/mehari/tests/data/db/create/txs/cdot-0.2.22.refseq.grch37.brca1_opa1.json.gz +3 -0
  339. mehari-0.41.0/mehari/tests/data/db/create/txs/cdot-0.2.22.refseq.grch37_grch38.brca1_opa1.json +3 -0
  340. mehari-0.41.0/mehari/tests/data/db/create/txs/cdot-0.2.22.refseq.grch37_grch38.brca1_opa1.json.gz +3 -0
  341. mehari-0.41.0/mehari/tests/data/db/create/txs/cdot-0.2.22.refseq.grch38.brca1_opa1.json +3 -0
  342. mehari-0.41.0/mehari/tests/data/db/create/txs/cdot-0.2.22.refseq.grch38.brca1_opa1.json.gz +3 -0
  343. mehari-0.41.0/mehari/tests/data/db/create/txs/latest/aliases.sqlite3 +3 -0
  344. mehari-0.41.0/mehari/tests/data/db/create/txs/latest/sequences/2023/1108/0919/1699435149.8201442.fa.bgz +3 -0
  345. mehari-0.41.0/mehari/tests/data/db/create/txs/latest/sequences/2023/1108/0919/1699435149.8201442.fa.bgz.fai +3 -0
  346. mehari-0.41.0/mehari/tests/data/db/create/txs/latest/sequences/2023/1108/0919/1699435149.8201442.fa.bgz.gzi +3 -0
  347. mehari-0.41.0/mehari/tests/data/db/create/txs/latest/sequences/2023/1108/0919/1699435152.474355.fa.bgz +3 -0
  348. mehari-0.41.0/mehari/tests/data/db/create/txs/latest/sequences/2023/1108/0919/1699435152.474355.fa.bgz.fai +3 -0
  349. mehari-0.41.0/mehari/tests/data/db/create/txs/latest/sequences/2023/1108/0919/1699435152.474355.fa.bgz.gzi +3 -0
  350. mehari-0.41.0/mehari/tests/data/db/create/txs/latest/sequences/db.sqlite3 +3 -0
  351. mehari-0.41.0/mehari/tests/data/db/create/txs/opa1.fasta +3 -0
  352. mehari-0.41.0/mehari/tests/data/db/create/txs/txs_main.tsv +3 -0
  353. mehari-0.41.0/mehari/tests/data/ped/family.ped +3 -0
  354. mehari-0.41.0/mehari-python/CHANGELOG.md +8 -0
  355. mehari-0.41.0/mehari-python/Cargo.lock +5873 -0
  356. mehari-0.41.0/mehari-python/Cargo.toml +21 -0
  357. mehari-0.41.0/mehari-python/LICENSE.txt +21 -0
  358. mehari-0.41.0/mehari-python/README.md +81 -0
  359. mehari-0.41.0/mehari-python/src/lib.rs +294 -0
  360. mehari-0.41.0/mehari-python/tests/__init__.py +0 -0
  361. mehari-0.41.0/mehari-python/tests/test_annotator.py +132 -0
  362. mehari-0.41.0/mehari-python/uv.lock +158 -0
  363. mehari-0.41.0/pyproject.toml +43 -0
@@ -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
+
@@ -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
+ [![Crates.io](https://img.shields.io/crates/d/mehari.svg)](https://crates.io/crates/mehari)
2
+ [![Crates.io](https://img.shields.io/crates/v/mehari.svg)](https://crates.io/crates/mehari)
3
+ [![Crates.io](https://img.shields.io/crates/l/mehari.svg)](https://crates.io/crates/mehari)
4
+ [![CI](https://github.com/varfish-org/mehari/actions/workflows/rust.yml/badge.svg)](https://github.com/varfish-org/mehari/actions/workflows/rust.yml)
5
+ [![codecov](https://codecov.io/gh/varfish-org/mehari/branch/main/graph/badge.svg?token=B1dfb7N2n8)](https://codecov.io/gh/varfish-org/mehari)
6
+ [![DOI](https://zenodo.org/badge/609124150.svg)](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
+ }