multimodars 0.7.2__tar.gz → 0.7.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. {multimodars-0.7.2 → multimodars-0.7.3}/CHANGELOG.md +46 -1
  2. {multimodars-0.7.2 → multimodars-0.7.3}/Cargo.lock +1 -1
  3. {multimodars-0.7.2 → multimodars-0.7.3}/Cargo.toml +1 -1
  4. {multimodars-0.7.2 → multimodars-0.7.3}/PKG-INFO +2 -2
  5. {multimodars-0.7.2 → multimodars-0.7.3}/README.md +1 -1
  6. {multimodars-0.7.2 → multimodars-0.7.3}/multimodars/ccta/stitching/boundary.py +337 -168
  7. {multimodars-0.7.2 → multimodars-0.7.3}/multimodars/ccta/stitching/core.py +148 -94
  8. {multimodars-0.7.2 → multimodars-0.7.3}/multimodars/io/read_geometrical.py +9 -25
  9. {multimodars-0.7.2 → multimodars-0.7.3}/tests/test_ccta.py +369 -29
  10. multimodars-0.7.3/uv.lock +4004 -0
  11. multimodars-0.7.2/.claude/debug_meshes/stitched_after_fix.stl +0 -0
  12. {multimodars-0.7.2 → multimodars-0.7.3}/.gitattributes +0 -0
  13. {multimodars-0.7.2 → multimodars-0.7.3}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  14. {multimodars-0.7.2 → multimodars-0.7.3}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  15. {multimodars-0.7.2 → multimodars-0.7.3}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  16. {multimodars-0.7.2 → multimodars-0.7.3}/.github/workflows/CI.yml +0 -0
  17. {multimodars-0.7.2 → multimodars-0.7.3}/.gitignore +0 -0
  18. {multimodars-0.7.2 → multimodars-0.7.3}/.pre-commit-config.yaml +0 -0
  19. {multimodars-0.7.2 → multimodars-0.7.3}/.readthedocs.yaml +0 -0
  20. {multimodars-0.7.2 → multimodars-0.7.3}/CITATION.cff +0 -0
  21. {multimodars-0.7.2 → multimodars-0.7.3}/CONTRIBUTING.md +0 -0
  22. {multimodars-0.7.2 → multimodars-0.7.3}/LICENSE +0 -0
  23. {multimodars-0.7.2 → multimodars-0.7.3}/ROADMAP.MD +0 -0
  24. {multimodars-0.7.2 → multimodars-0.7.3}/benchmarks/BENCHMARK_PLAN.md +0 -0
  25. {multimodars-0.7.2 → multimodars-0.7.3}/benchmarks/benchmark_bruteforce_stepsize.py +0 -0
  26. {multimodars-0.7.2 → multimodars-0.7.3}/benchmarks/benchmark_cpu_scaling.py +0 -0
  27. {multimodars-0.7.2 → multimodars-0.7.3}/benchmarks/results/bruteforce_stepsize.png +0 -0
  28. {multimodars-0.7.2 → multimodars-0.7.3}/benchmarks/results/cpu_scaling.png +0 -0
  29. {multimodars-0.7.2 → multimodars-0.7.3}/data/fixtures/idealized_geometry/branch_diastolic_contours.csv +0 -0
  30. {multimodars-0.7.2 → multimodars-0.7.3}/data/fixtures/idealized_geometry/branch_systolic_contours.csv +0 -0
  31. {multimodars-0.7.2 → multimodars-0.7.3}/data/fixtures/idealized_geometry/calcium_diastolic_contours.csv +0 -0
  32. {multimodars-0.7.2 → multimodars-0.7.3}/data/fixtures/idealized_geometry/calcium_systolic_contours.csv +0 -0
  33. {multimodars-0.7.2 → multimodars-0.7.3}/data/fixtures/idealized_geometry/diastolic_contours.csv +0 -0
  34. {multimodars-0.7.2 → multimodars-0.7.3}/data/fixtures/idealized_geometry/diastolic_reference_points.csv +0 -0
  35. {multimodars-0.7.2 → multimodars-0.7.3}/data/fixtures/idealized_geometry/eem_diastolic_contours.csv +0 -0
  36. {multimodars-0.7.2 → multimodars-0.7.3}/data/fixtures/idealized_geometry/eem_systolic_contours.csv +0 -0
  37. {multimodars-0.7.2 → multimodars-0.7.3}/data/fixtures/idealized_geometry/systolic_contours.csv +0 -0
  38. {multimodars-0.7.2 → multimodars-0.7.3}/data/fixtures/idealized_geometry/systolic_reference_points.csv +0 -0
  39. {multimodars-0.7.2 → multimodars-0.7.3}/data/fixtures/ivus_full/branch_diastolic_contours.csv +0 -0
  40. {multimodars-0.7.2 → multimodars-0.7.3}/data/fixtures/ivus_full/branch_systolic_contours.csv +0 -0
  41. {multimodars-0.7.2 → multimodars-0.7.3}/data/fixtures/ivus_full/calcium_diastolic_contours.csv +0 -0
  42. {multimodars-0.7.2 → multimodars-0.7.3}/data/fixtures/ivus_full/calcium_systolic_contours.csv +0 -0
  43. {multimodars-0.7.2 → multimodars-0.7.3}/data/fixtures/ivus_full/diastolic_contours.csv +0 -0
  44. {multimodars-0.7.2 → multimodars-0.7.3}/data/fixtures/ivus_full/diastolic_reference_points.csv +0 -0
  45. {multimodars-0.7.2 → multimodars-0.7.3}/data/fixtures/ivus_full/eem_diastolic_contours.csv +0 -0
  46. {multimodars-0.7.2 → multimodars-0.7.3}/data/fixtures/ivus_full/eem_systolic_contours.csv +0 -0
  47. {multimodars-0.7.2 → multimodars-0.7.3}/data/fixtures/ivus_full/systolic_contours.csv +0 -0
  48. {multimodars-0.7.2 → multimodars-0.7.3}/data/fixtures/ivus_full/systolic_reference_points.csv +0 -0
  49. {multimodars-0.7.2 → multimodars-0.7.3}/data/fixtures/ivus_rest/combined_sorted_manual.csv +0 -0
  50. {multimodars-0.7.2 → multimodars-0.7.3}/data/fixtures/ivus_rest/diastolic_contours.csv +0 -0
  51. {multimodars-0.7.2 → multimodars-0.7.3}/data/fixtures/ivus_rest/diastolic_reference_points.csv +0 -0
  52. {multimodars-0.7.2 → multimodars-0.7.3}/data/fixtures/ivus_rest/systolic_contours.csv +0 -0
  53. {multimodars-0.7.2 → multimodars-0.7.3}/data/fixtures/ivus_rest/systolic_reference_points.csv +0 -0
  54. {multimodars-0.7.2 → multimodars-0.7.3}/data/fixtures/ivus_stress/combined_sorted_manual.csv +0 -0
  55. {multimodars-0.7.2 → multimodars-0.7.3}/data/fixtures/ivus_stress/diastolic_contours.csv +0 -0
  56. {multimodars-0.7.2 → multimodars-0.7.3}/data/fixtures/ivus_stress/diastolic_reference_points.csv +0 -0
  57. {multimodars-0.7.2 → multimodars-0.7.3}/data/fixtures/ivus_stress/systolic_contours.csv +0 -0
  58. {multimodars-0.7.2 → multimodars-0.7.3}/data/fixtures/ivus_stress/systolic_reference_points.csv +0 -0
  59. {multimodars-0.7.2 → multimodars-0.7.3}/media/coronary_artery_disease.jpg +0 -0
  60. {multimodars-0.7.2 → multimodars-0.7.3}/media/dynamic_lumen_changes.png +0 -0
  61. {multimodars-0.7.2 → multimodars-0.7.3}/media/multimoda-rs.jpg +0 -0
  62. {multimodars-0.7.2 → multimodars-0.7.3}/multimodars/__init__.py +0 -0
  63. {multimodars-0.7.2 → multimodars-0.7.3}/multimodars/_converters.py +0 -0
  64. {multimodars-0.7.2 → multimodars-0.7.3}/multimodars/_processing.py +0 -0
  65. {multimodars-0.7.2 → multimodars-0.7.3}/multimodars/ccta/__init__.py +0 -0
  66. {multimodars-0.7.2 → multimodars-0.7.3}/multimodars/ccta/centerline_prep.py +0 -0
  67. {multimodars-0.7.2 → multimodars-0.7.3}/multimodars/ccta/debug_plots.py +0 -0
  68. {multimodars-0.7.2 → multimodars-0.7.3}/multimodars/ccta/discretization_map.py +0 -0
  69. {multimodars-0.7.2 → multimodars-0.7.3}/multimodars/ccta/labeling/__init__.py +0 -0
  70. {multimodars-0.7.2 → multimodars-0.7.3}/multimodars/ccta/labeling/core.py +0 -0
  71. {multimodars-0.7.2 → multimodars-0.7.3}/multimodars/ccta/labeling/helpers.py +0 -0
  72. {multimodars-0.7.2 → multimodars-0.7.3}/multimodars/ccta/mesh_regions.py +0 -0
  73. {multimodars-0.7.2 → multimodars-0.7.3}/multimodars/ccta/postprocessing.py +0 -0
  74. {multimodars-0.7.2 → multimodars-0.7.3}/multimodars/ccta/scaling.py +0 -0
  75. {multimodars-0.7.2 → multimodars-0.7.3}/multimodars/ccta/scaling_helpers.py +0 -0
  76. {multimodars-0.7.2 → multimodars-0.7.3}/multimodars/ccta/stitching/__init__.py +0 -0
  77. {multimodars-0.7.2 → multimodars-0.7.3}/multimodars/ccta/stitching/helpers.py +0 -0
  78. {multimodars-0.7.2 → multimodars-0.7.3}/multimodars/io/__init__.py +0 -0
  79. {multimodars-0.7.2 → multimodars-0.7.3}/multimodars/io/write_geometries.py +0 -0
  80. {multimodars-0.7.2 → multimodars-0.7.3}/multimodars/multimodars.pyi +0 -0
  81. {multimodars-0.7.2 → multimodars-0.7.3}/multimodars/py.typed +0 -0
  82. {multimodars-0.7.2 → multimodars-0.7.3}/paper/REVIEWER1.md +0 -0
  83. {multimodars-0.7.2 → multimodars-0.7.3}/paper/REVIEWER2.md +0 -0
  84. {multimodars-0.7.2 → multimodars-0.7.3}/paper/bibliography.bib +0 -0
  85. {multimodars-0.7.2 → multimodars-0.7.3}/paper/figures/Figure1.jpg +0 -0
  86. {multimodars-0.7.2 → multimodars-0.7.3}/paper/figures/Figure2.jpg +0 -0
  87. {multimodars-0.7.2 → multimodars-0.7.3}/paper/figures/Figure3.png +0 -0
  88. {multimodars-0.7.2 → multimodars-0.7.3}/paper/figures/Figure4.jpg +0 -0
  89. {multimodars-0.7.2 → multimodars-0.7.3}/paper/paper.md +0 -0
  90. {multimodars-0.7.2 → multimodars-0.7.3}/pyproject.toml +0 -0
  91. {multimodars-0.7.2 → multimodars-0.7.3}/src/ccta/adjust_mesh/label_coronary.rs +0 -0
  92. {multimodars-0.7.2 → multimodars-0.7.3}/src/ccta/adjust_mesh/scale_coronary.rs +0 -0
  93. {multimodars-0.7.2 → multimodars-0.7.3}/src/ccta/adjust_mesh.rs +0 -0
  94. {multimodars-0.7.2 → multimodars-0.7.3}/src/ccta/binding/ccta_py.rs +0 -0
  95. {multimodars-0.7.2 → multimodars-0.7.3}/src/ccta/binding.rs +0 -0
  96. {multimodars-0.7.2 → multimodars-0.7.3}/src/ccta/discretizing/plan.md +0 -0
  97. {multimodars-0.7.2 → multimodars-0.7.3}/src/ccta/discretizing/projecting.rs +0 -0
  98. {multimodars-0.7.2 → multimodars-0.7.3}/src/ccta/discretizing/resampling.rs +0 -0
  99. {multimodars-0.7.2 → multimodars-0.7.3}/src/ccta/discretizing/vessel_tree.rs +0 -0
  100. {multimodars-0.7.2 → multimodars-0.7.3}/src/ccta/discretizing.rs +0 -0
  101. {multimodars-0.7.2 → multimodars-0.7.3}/src/ccta.rs +0 -0
  102. {multimodars-0.7.2 → multimodars-0.7.3}/src/intravascular/binding/align.rs +0 -0
  103. {multimodars-0.7.2 → multimodars-0.7.3}/src/intravascular/binding/entry.rs +0 -0
  104. {multimodars-0.7.2 → multimodars-0.7.3}/src/intravascular/binding/functions.rs +0 -0
  105. {multimodars-0.7.2 → multimodars-0.7.3}/src/intravascular/binding.rs +0 -0
  106. {multimodars-0.7.2 → multimodars-0.7.3}/src/intravascular/centerline_align/align.rs +0 -0
  107. {multimodars-0.7.2 → multimodars-0.7.3}/src/intravascular/centerline_align/align_algorithms.rs +0 -0
  108. {multimodars-0.7.2 → multimodars-0.7.3}/src/intravascular/centerline_align/preprocessing.rs +0 -0
  109. {multimodars-0.7.2 → multimodars-0.7.3}/src/intravascular/centerline_align.rs +0 -0
  110. {multimodars-0.7.2 → multimodars-0.7.3}/src/intravascular/io/build.rs +0 -0
  111. {multimodars-0.7.2 → multimodars-0.7.3}/src/intravascular/io/input.rs +0 -0
  112. {multimodars-0.7.2 → multimodars-0.7.3}/src/intravascular/io/integrity_check.rs +0 -0
  113. {multimodars-0.7.2 → multimodars-0.7.3}/src/intravascular/io/output.rs +0 -0
  114. {multimodars-0.7.2 → multimodars-0.7.3}/src/intravascular/io.rs +0 -0
  115. {multimodars-0.7.2 → multimodars-0.7.3}/src/intravascular/processing/align_between.rs +0 -0
  116. {multimodars-0.7.2 → multimodars-0.7.3}/src/intravascular/processing/align_within.rs +0 -0
  117. {multimodars-0.7.2 → multimodars-0.7.3}/src/intravascular/processing/postprocessing.rs +0 -0
  118. {multimodars-0.7.2 → multimodars-0.7.3}/src/intravascular/processing/preprocessing.rs +0 -0
  119. {multimodars-0.7.2 → multimodars-0.7.3}/src/intravascular/processing/process_utils.rs +0 -0
  120. {multimodars-0.7.2 → multimodars-0.7.3}/src/intravascular/processing/wall.rs +0 -0
  121. {multimodars-0.7.2 → multimodars-0.7.3}/src/intravascular/processing.rs +0 -0
  122. {multimodars-0.7.2 → multimodars-0.7.3}/src/intravascular/to_object/interpolation.rs +0 -0
  123. {multimodars-0.7.2 → multimodars-0.7.3}/src/intravascular/to_object/process.rs +0 -0
  124. {multimodars-0.7.2 → multimodars-0.7.3}/src/intravascular/to_object/texture.rs +0 -0
  125. {multimodars-0.7.2 → multimodars-0.7.3}/src/intravascular/to_object/write_mtl.rs +0 -0
  126. {multimodars-0.7.2 → multimodars-0.7.3}/src/intravascular/to_object.rs +0 -0
  127. {multimodars-0.7.2 → multimodars-0.7.3}/src/intravascular/utils/general_utils.rs +0 -0
  128. {multimodars-0.7.2 → multimodars-0.7.3}/src/intravascular/utils/test_utils.rs +0 -0
  129. {multimodars-0.7.2 → multimodars-0.7.3}/src/intravascular/utils.rs +0 -0
  130. {multimodars-0.7.2 → multimodars-0.7.3}/src/intravascular.rs +0 -0
  131. {multimodars-0.7.2 → multimodars-0.7.3}/src/lib.rs +0 -0
  132. {multimodars-0.7.2 → multimodars-0.7.3}/src/types/binding/py_centerline.rs +0 -0
  133. {multimodars-0.7.2 → multimodars-0.7.3}/src/types/binding/py_centerline_point.rs +0 -0
  134. {multimodars-0.7.2 → multimodars-0.7.3}/src/types/binding/py_contour.rs +0 -0
  135. {multimodars-0.7.2 → multimodars-0.7.3}/src/types/binding/py_contour_point.rs +0 -0
  136. {multimodars-0.7.2 → multimodars-0.7.3}/src/types/binding/py_discretized_vessel_tree.rs +0 -0
  137. {multimodars-0.7.2 → multimodars-0.7.3}/src/types/binding/py_frame.rs +0 -0
  138. {multimodars-0.7.2 → multimodars-0.7.3}/src/types/binding/py_geometry.rs +0 -0
  139. {multimodars-0.7.2 → multimodars-0.7.3}/src/types/binding/py_geometry_pair.rs +0 -0
  140. {multimodars-0.7.2 → multimodars-0.7.3}/src/types/binding/py_input_data.rs +0 -0
  141. {multimodars-0.7.2 → multimodars-0.7.3}/src/types/binding/py_record.rs +0 -0
  142. {multimodars-0.7.2 → multimodars-0.7.3}/src/types/binding.rs +0 -0
  143. {multimodars-0.7.2 → multimodars-0.7.3}/src/types/native/centerline.rs +0 -0
  144. {multimodars-0.7.2 → multimodars-0.7.3}/src/types/native/centerline_point.rs +0 -0
  145. {multimodars-0.7.2 → multimodars-0.7.3}/src/types/native/contour.rs +0 -0
  146. {multimodars-0.7.2 → multimodars-0.7.3}/src/types/native/contour_point.rs +0 -0
  147. {multimodars-0.7.2 → multimodars-0.7.3}/src/types/native/discretized_tree.rs +0 -0
  148. {multimodars-0.7.2 → multimodars-0.7.3}/src/types/native/frame.rs +0 -0
  149. {multimodars-0.7.2 → multimodars-0.7.3}/src/types/native/geometry.rs +0 -0
  150. {multimodars-0.7.2 → multimodars-0.7.3}/src/types/native/geometry_pair.rs +0 -0
  151. {multimodars-0.7.2 → multimodars-0.7.3}/src/types/native/record.rs +0 -0
  152. {multimodars-0.7.2 → multimodars-0.7.3}/src/types/native.rs +0 -0
  153. {multimodars-0.7.2 → multimodars-0.7.3}/src/types.rs +0 -0
  154. {multimodars-0.7.2 → multimodars-0.7.3}/tests/conftest.py +0 -0
  155. {multimodars-0.7.2 → multimodars-0.7.3}/tests/test_converters.py +0 -0
  156. {multimodars-0.7.2 → multimodars-0.7.3}/tests/test_core.py +0 -0
  157. {multimodars-0.7.2 → multimodars-0.7.3}/tests/test_intravascular.py +0 -0
  158. {multimodars-0.7.2 → multimodars-0.7.3}/tests/test_wrappers.py +0 -0
  159. {multimodars-0.7.2 → multimodars-0.7.3}/tests/tests_todo.md +0 -0
@@ -3,6 +3,51 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  This project adheres to [Semantic Versioning](https://semver.org/).
5
5
 
6
+ ## [0.7.3] - 2026-09-28
7
+ Smoother anomalous ostium. The two halves of the ostial ring now meet in smooth arcs instead of
8
+ sharp kinks, the ring's correction is faded into the aortic mesh all the way round, and the fillet
9
+ only rounds the aorta-facing half - towards the aorta rather than back into the vessel. On
10
+ `examples/data` the raw stitched mesh goes from 220 to 81 self-intersecting faces at the ostium
11
+ (235 to 47 after `fix_and_remesh_stitched_mesh`). Still to do: most of the rest sit at one tip of
12
+ the slit-like ostium, where the aortic wall touches the first millimetres of the intravascular tube.
13
+
14
+ ### Added
15
+ - `stitch_ccta_to_intravascular` gained `seam_points_a` / `seam_points_b` (default 2 / 4). At both
16
+ seams where the ostium's aorta-facing Half A meets its coronary-facing Half B, that many Half A /
17
+ Half B points are replaced by a smooth arc that follows each half's own direction. Everything
18
+ outside those ranges stays exactly in place, so Half A's mid-section keeps its wall-thickness
19
+ offset from the intravascular ostium. The counts are points on the CCTA ring as cut from the
20
+ mesh, before it is densified; more than a half can give are reduced with a warning. Only used
21
+ with `prox_start_mode="highest_z"` and `proximal_is_ostium=True`.
22
+
23
+ ### Changed
24
+ - `fillet_bulge` now only rounds the ostium's Half A, fading out along the seam arcs; Half B and
25
+ the distal seam stay direct strips (0.7.2 rounded every strut of both seams). It needs
26
+ `prox_start_mode="highest_z"` with `proximal_is_ostium=True`, otherwise a warning is printed and
27
+ the direct strip is used.
28
+ - The two-half ostium's IV-plane clamp now runs before the seam arcs are built, so it cannot
29
+ flatten them back into a kink. What triggers it (ring and IV plane at least 45° apart) is
30
+ unchanged.
31
+
32
+ ### Fixed
33
+ - The fillet's arcs bulged away from the combined centroid of both rings, which on an anomalous
34
+ ostium sent many of them back into the vessel (47 of 100 on `examples/data`). They now bulge
35
+ away from the intravascular geometry, along the ostial frame's outward normal.
36
+ - Only Half A's displacement was faded into the surrounding aortic mesh, so the faces behind
37
+ Half B's moved rim folded through the intravascular tube. The whole ring's displacement is now
38
+ faded in.
39
+ - A zero-length strut no longer misaligns the fillet's intermediate rings.
40
+
41
+ ### Internal
42
+ - `_redistribute_ring_evenly`'s arc-length sampling moved into `_even_arclength_samples`, so
43
+ per-point values (the Half A weights) resample with the points.
44
+ - `_condition_ostium_ring_two_half` and `_prepare_prox_dist_boundary_pts` also return the Half A
45
+ weights; `_carry_ring_weights` keeps them with their points through densification, start-point
46
+ rotation and winding fixes.
47
+ - `_bulge_arc_points` is replaced by the vectorised `_fillet_arc_layers`.
48
+ `_taper_ring_displacement` lost `protected_pts` / `seam_damping`, which fading the whole ring
49
+ no longer needs.
50
+
6
51
  ## [0.7.2] - 2026-09-19
7
52
  More anatomical approach in creating the anomalous ostium. Takes the wall measurement to create
8
53
  and offset. This ensures that the ostium is represented like the ostium from the intravascular
@@ -162,7 +207,7 @@ kind of a dome on top of this plane.
162
207
  ### Fixed
163
208
  - `align_manual` no explicitly states `rotation_angle_deg` instead of `rotation_angle`
164
209
 
165
- ## Changed
210
+ ### Changed
166
211
  - `align_manual`, `align_combined` and `align_three_points` all return their rotation angle now.
167
212
 
168
213
  ## [0.5.4] - 2026-08-03 Hotfix
@@ -696,7 +696,7 @@ dependencies = [
696
696
 
697
697
  [[package]]
698
698
  name = "multimodars"
699
- version = "0.7.2"
699
+ version = "0.7.3"
700
700
  dependencies = [
701
701
  "anyhow",
702
702
  "approx",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "multimodars"
3
- version = "0.7.2"
3
+ version = "0.7.3"
4
4
  edition = "2021"
5
5
  license = "MIT"
6
6
  readme = "README.md"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: multimodars
3
- Version: 0.7.2
3
+ Version: 0.7.3
4
4
  Classifier: Programming Language :: Rust
5
5
  Classifier: Programming Language :: Python :: Implementation :: CPython
6
6
  Classifier: Programming Language :: Python :: Implementation :: PyPy
@@ -36,7 +36,7 @@ Project-URL: Issues, https://github.com/yungselm/multimoda-rs/issues
36
36
  > Brace for breaking changes!
37
37
 
38
38
  [![PyPI](https://img.shields.io/pypi/v/multimodars.svg)](https://pypi.org/project/multimodars)
39
- [![Downloads](https://static.pepy.tech/badge/multimodars)](https://pepy.tech/project/multimodars)
39
+ <!-- [![Downloads](https://static.pepy.tech/badge/multimodars)](https://pepy.tech/project/multimodars) -->
40
40
  [![License](https://img.shields.io/pypi/l/multimodars.svg)](LICENSE)
41
41
  [![Docs](https://img.shields.io/readthedocs/multimoda-rs)](https://multimoda-rs.readthedocs.io)
42
42
  [![Tests and Build](https://github.com/yungselm/multimoda-rs/actions/workflows/CI.yml/badge.svg)](https://github.com/yungselm/multimoda-rs/actions/workflows/CI.yml)
@@ -12,7 +12,7 @@
12
12
  > Brace for breaking changes!
13
13
 
14
14
  [![PyPI](https://img.shields.io/pypi/v/multimodars.svg)](https://pypi.org/project/multimodars)
15
- [![Downloads](https://static.pepy.tech/badge/multimodars)](https://pepy.tech/project/multimodars)
15
+ <!-- [![Downloads](https://static.pepy.tech/badge/multimodars)](https://pepy.tech/project/multimodars) -->
16
16
  [![License](https://img.shields.io/pypi/l/multimodars.svg)](LICENSE)
17
17
  [![Docs](https://img.shields.io/readthedocs/multimoda-rs)](https://multimoda-rs.readthedocs.io)
18
18
  [![Tests and Build](https://github.com/yungselm/multimoda-rs/actions/workflows/CI.yml/badge.svg)](https://github.com/yungselm/multimoda-rs/actions/workflows/CI.yml)