histoweave-spatial 0.1.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 (863) hide show
  1. histoweave_spatial-0.1.0/.dockerignore +47 -0
  2. histoweave_spatial-0.1.0/.gitattributes +7 -0
  3. histoweave_spatial-0.1.0/.github/CODEOWNERS +4 -0
  4. histoweave_spatial-0.1.0/.github/dependabot.yml +20 -0
  5. histoweave_spatial-0.1.0/.github/workflows/ci.yml +211 -0
  6. histoweave_spatial-0.1.0/.github/workflows/containers.yml +84 -0
  7. histoweave_spatial-0.1.0/.github/workflows/nextflow-smoke.yml +58 -0
  8. histoweave_spatial-0.1.0/.github/workflows/pages.yml +101 -0
  9. histoweave_spatial-0.1.0/.github/workflows/publish.yml +61 -0
  10. histoweave_spatial-0.1.0/.gitignore +124 -0
  11. histoweave_spatial-0.1.0/.zenodo.json +30 -0
  12. histoweave_spatial-0.1.0/5x10_dlpfc_benchmark/benchmark_long.csv +151 -0
  13. histoweave_spatial-0.1.0/5x10_dlpfc_benchmark/dataset_features.csv +6 -0
  14. histoweave_spatial-0.1.0/5x10_dlpfc_benchmark/experiment_5x10_dlpfc.py +333 -0
  15. histoweave_spatial-0.1.0/5x10_dlpfc_benchmark/figure_data.json +266 -0
  16. histoweave_spatial-0.1.0/5x10_dlpfc_benchmark/figures/fig1_performance_heatmap.png +0 -0
  17. histoweave_spatial-0.1.0/5x10_dlpfc_benchmark/figures/fig1_performance_heatmap.svg +493 -0
  18. histoweave_spatial-0.1.0/5x10_dlpfc_benchmark/figures/fig2_method_boxplot.png +0 -0
  19. histoweave_spatial-0.1.0/5x10_dlpfc_benchmark/figures/fig2_method_boxplot.svg +913 -0
  20. histoweave_spatial-0.1.0/5x10_dlpfc_benchmark/figures/fig3_landscape_embedding.png +0 -0
  21. histoweave_spatial-0.1.0/5x10_dlpfc_benchmark/figures/fig3_landscape_embedding.svg +380 -0
  22. histoweave_spatial-0.1.0/5x10_dlpfc_benchmark/figures/fig4_runtime.png +0 -0
  23. histoweave_spatial-0.1.0/5x10_dlpfc_benchmark/figures/fig4_runtime.svg +357 -0
  24. histoweave_spatial-0.1.0/5x10_dlpfc_benchmark/landscape.json +266 -0
  25. histoweave_spatial-0.1.0/5x10_dlpfc_benchmark/make_figures.py +151 -0
  26. histoweave_spatial-0.1.0/5x10_dlpfc_benchmark/manifest.json +50 -0
  27. histoweave_spatial-0.1.0/5x10_dlpfc_benchmark/performance_matrix_mean.csv +6 -0
  28. histoweave_spatial-0.1.0/5x10_dlpfc_benchmark/performance_matrix_std.csv +6 -0
  29. histoweave_spatial-0.1.0/5x10_dlpfc_benchmark/prepare_dlpfc.py +153 -0
  30. histoweave_spatial-0.1.0/5x10_dlpfc_benchmark/recommendation_loocv.csv +6 -0
  31. histoweave_spatial-0.1.0/5x10_dlpfc_benchmark/recommendation_loocv.json +156 -0
  32. histoweave_spatial-0.1.0/5x10_dlpfc_benchmark/report_5x10_dlpfc_benchmark.md +168 -0
  33. histoweave_spatial-0.1.0/5x10_dlpfc_benchmark/timings_mean.csv +51 -0
  34. histoweave_spatial-0.1.0/5x15_spatial_aware/SOTA_COMPARISON.md +53 -0
  35. histoweave_spatial-0.1.0/5x15_spatial_aware/adapters/__init__.py +17 -0
  36. histoweave_spatial-0.1.0/5x15_spatial_aware/adapters/_sota_common.py +87 -0
  37. histoweave_spatial-0.1.0/5x15_spatial_aware/adapters/banksy_py_adapter.py +91 -0
  38. histoweave_spatial-0.1.0/5x15_spatial_aware/adapters/bayesspace_adapter.py +81 -0
  39. histoweave_spatial-0.1.0/5x15_spatial_aware/adapters/graphst_adapter.py +57 -0
  40. histoweave_spatial-0.1.0/5x15_spatial_aware/adapters/harmony_adapter.py +90 -0
  41. histoweave_spatial-0.1.0/5x15_spatial_aware/adapters/moran_adapter.py +115 -0
  42. histoweave_spatial-0.1.0/5x15_spatial_aware/adapters/nnsvg_adapter.py +120 -0
  43. histoweave_spatial-0.1.0/5x15_spatial_aware/adapters/spagcn_adapter.py +87 -0
  44. histoweave_spatial-0.1.0/5x15_spatial_aware/adapters/spatialde_adapter.py +83 -0
  45. histoweave_spatial-0.1.0/5x15_spatial_aware/adapters/stagate_adapter.py +56 -0
  46. histoweave_spatial-0.1.0/5x15_spatial_aware/benchmark_long.csv +226 -0
  47. histoweave_spatial-0.1.0/5x15_spatial_aware/build_sota_and_merge.py +248 -0
  48. histoweave_spatial-0.1.0/5x15_spatial_aware/dataset_features.csv +6 -0
  49. histoweave_spatial-0.1.0/5x15_spatial_aware/env_locks/graphst_env.txt +123 -0
  50. histoweave_spatial-0.1.0/5x15_spatial_aware/env_locks/stagate_env.txt +125 -0
  51. histoweave_spatial-0.1.0/5x15_spatial_aware/experiment_5x15.py +379 -0
  52. histoweave_spatial-0.1.0/5x15_spatial_aware/experiment_5x15_methods.py +507 -0
  53. histoweave_spatial-0.1.0/5x15_spatial_aware/figure_data.json +309 -0
  54. histoweave_spatial-0.1.0/5x15_spatial_aware/figures/heatmap_5x15.png +0 -0
  55. histoweave_spatial-0.1.0/5x15_spatial_aware/figures/heatmap_5x15.svg +628 -0
  56. histoweave_spatial-0.1.0/5x15_spatial_aware/figures/spatial_weight_effect_5x15.png +0 -0
  57. histoweave_spatial-0.1.0/5x15_spatial_aware/figures/spatial_weight_effect_5x15.svg +408 -0
  58. histoweave_spatial-0.1.0/5x15_spatial_aware/heatmap_5x20.png +0 -0
  59. histoweave_spatial-0.1.0/5x15_spatial_aware/heatmap_5x20.svg +760 -0
  60. histoweave_spatial-0.1.0/5x15_spatial_aware/landscape.json +277 -0
  61. histoweave_spatial-0.1.0/5x15_spatial_aware/make_figures.py +100 -0
  62. histoweave_spatial-0.1.0/5x15_spatial_aware/make_heatmap.py +165 -0
  63. histoweave_spatial-0.1.0/5x15_spatial_aware/make_report.py +240 -0
  64. histoweave_spatial-0.1.0/5x15_spatial_aware/manifest.json +50 -0
  65. histoweave_spatial-0.1.0/5x15_spatial_aware/performance_matrix_mean.csv +6 -0
  66. histoweave_spatial-0.1.0/5x15_spatial_aware/performance_matrix_mean_full.csv +6 -0
  67. histoweave_spatial-0.1.0/5x15_spatial_aware/performance_matrix_std.csv +6 -0
  68. histoweave_spatial-0.1.0/5x15_spatial_aware/prepare_dlpfc.py +154 -0
  69. histoweave_spatial-0.1.0/5x15_spatial_aware/recommendation_loocv.csv +6 -0
  70. histoweave_spatial-0.1.0/5x15_spatial_aware/recommendation_loocv.json +156 -0
  71. histoweave_spatial-0.1.0/5x15_spatial_aware/report_5x15_spatial_aware.md +163 -0
  72. histoweave_spatial-0.1.0/5x15_spatial_aware/report_sota_5x20.md +101 -0
  73. histoweave_spatial-0.1.0/5x15_spatial_aware/run_bayesspace.R +59 -0
  74. histoweave_spatial-0.1.0/5x15_spatial_aware/run_method_slices.py +66 -0
  75. histoweave_spatial-0.1.0/5x15_spatial_aware/run_nnsvg.R +93 -0
  76. histoweave_spatial-0.1.0/5x15_spatial_aware/run_one_method.py +93 -0
  77. histoweave_spatial-0.1.0/5x15_spatial_aware/sota_benchmark_long.csv +46 -0
  78. histoweave_spatial-0.1.0/5x15_spatial_aware/sota_merge_manifest.json +68 -0
  79. histoweave_spatial-0.1.0/5x15_spatial_aware/sota_method_means.csv +4 -0
  80. histoweave_spatial-0.1.0/5x15_spatial_aware/sota_runner.py +92 -0
  81. histoweave_spatial-0.1.0/5x15_spatial_aware/svg_domain_pipeline.py +92 -0
  82. histoweave_spatial-0.1.0/5x15_spatial_aware/timings_mean.csv +76 -0
  83. histoweave_spatial-0.1.0/7x15_cross_platform/_prep_common.py +135 -0
  84. histoweave_spatial-0.1.0/7x15_cross_platform/benchmark_long.csv +361 -0
  85. histoweave_spatial-0.1.0/7x15_cross_platform/dataset_features.csv +9 -0
  86. histoweave_spatial-0.1.0/7x15_cross_platform/experiment_7x15.py +409 -0
  87. histoweave_spatial-0.1.0/7x15_cross_platform/figure_data.json +506 -0
  88. histoweave_spatial-0.1.0/7x15_cross_platform/figures/heatmap_7x15.png +0 -0
  89. histoweave_spatial-0.1.0/7x15_cross_platform/figures/heatmap_7x15.svg +783 -0
  90. histoweave_spatial-0.1.0/7x15_cross_platform/figures/platform_topography.png +0 -0
  91. histoweave_spatial-0.1.0/7x15_cross_platform/figures/platform_topography.svg +808 -0
  92. histoweave_spatial-0.1.0/7x15_cross_platform/figures/spatial_weight_by_platform_7x15.png +0 -0
  93. histoweave_spatial-0.1.0/7x15_cross_platform/figures/spatial_weight_by_platform_7x15.svg +372 -0
  94. histoweave_spatial-0.1.0/7x15_cross_platform/landscape.json +423 -0
  95. histoweave_spatial-0.1.0/7x15_cross_platform/make_figures_7x15.py +110 -0
  96. histoweave_spatial-0.1.0/7x15_cross_platform/manifest.json +50 -0
  97. histoweave_spatial-0.1.0/7x15_cross_platform/performance_matrix_mean.csv +9 -0
  98. histoweave_spatial-0.1.0/7x15_cross_platform/performance_matrix_std.csv +9 -0
  99. histoweave_spatial-0.1.0/7x15_cross_platform/platform_topography.csv +9 -0
  100. histoweave_spatial-0.1.0/7x15_cross_platform/platform_topography.json +251 -0
  101. histoweave_spatial-0.1.0/7x15_cross_platform/prep_merfish.py +20 -0
  102. histoweave_spatial-0.1.0/7x15_cross_platform/prep_slideseqv2.py +20 -0
  103. histoweave_spatial-0.1.0/7x15_cross_platform/prep_xenium.py +135 -0
  104. histoweave_spatial-0.1.0/7x15_cross_platform/recommendation_loocv.csv +9 -0
  105. histoweave_spatial-0.1.0/7x15_cross_platform/recommendation_loocv.json +272 -0
  106. histoweave_spatial-0.1.0/7x15_cross_platform/report_7x15_cross_platform.md +201 -0
  107. histoweave_spatial-0.1.0/7x15_cross_platform/timings_mean.csv +121 -0
  108. histoweave_spatial-0.1.0/7x15_cross_platform/topography_manifest.json +38 -0
  109. histoweave_spatial-0.1.0/CHANGELOG.md +449 -0
  110. histoweave_spatial-0.1.0/CITATION.cff +43 -0
  111. histoweave_spatial-0.1.0/CODE_OF_CONDUCT.md +134 -0
  112. histoweave_spatial-0.1.0/CONTRIBUTING.md +139 -0
  113. histoweave_spatial-0.1.0/LICENSE +29 -0
  114. histoweave_spatial-0.1.0/PKG-INFO +628 -0
  115. histoweave_spatial-0.1.0/README.md +498 -0
  116. histoweave_spatial-0.1.0/RELEASE_NOTES_v0.1.0.md +75 -0
  117. histoweave_spatial-0.1.0/ROADMAP.md +100 -0
  118. histoweave_spatial-0.1.0/SECURITY.md +20 -0
  119. histoweave_spatial-0.1.0/benchmark_cross_tissue/README.md +48 -0
  120. histoweave_spatial-0.1.0/benchmark_cross_tissue/experiment_7x19.py +320 -0
  121. histoweave_spatial-0.1.0/benchmark_cross_tissue/prepare_allen_abc_sections.py +188 -0
  122. histoweave_spatial-0.1.0/benchmark_cross_tissue/prepare_allen_mouse_brain.py +192 -0
  123. histoweave_spatial-0.1.0/benchmark_cross_tissue/prepare_human_lymph_node.py +389 -0
  124. histoweave_spatial-0.1.0/benchmark_crossplatform/build_topography.py +408 -0
  125. histoweave_spatial-0.1.0/benchmark_crossplatform/experiment_7x15.py +467 -0
  126. histoweave_spatial-0.1.0/benchmark_crossplatform/make_platform_topography.py +208 -0
  127. histoweave_spatial-0.1.0/benchmark_crossplatform/prepare_merfish.py +155 -0
  128. histoweave_spatial-0.1.0/benchmark_crossplatform/prepare_merfish_brain.py +117 -0
  129. histoweave_spatial-0.1.0/benchmark_crossplatform/prepare_slideseqv2.py +132 -0
  130. histoweave_spatial-0.1.0/benchmark_crossplatform/prepare_xenium.py +149 -0
  131. histoweave_spatial-0.1.0/benchmark_external_validation/README.md +189 -0
  132. histoweave_spatial-0.1.0/benchmark_external_validation/__init__.py +1 -0
  133. histoweave_spatial-0.1.0/benchmark_external_validation/_xenium_pathology_common.py +243 -0
  134. histoweave_spatial-0.1.0/benchmark_external_validation/benchmark_5x_external.json +90 -0
  135. histoweave_spatial-0.1.0/benchmark_external_validation/benchmark_long.csv +226 -0
  136. histoweave_spatial-0.1.0/benchmark_external_validation/bootstrap_ci.csv +76 -0
  137. histoweave_spatial-0.1.0/benchmark_external_validation/dataset_manifest.json +47 -0
  138. histoweave_spatial-0.1.0/benchmark_external_validation/decision_validation.json +33 -0
  139. histoweave_spatial-0.1.0/benchmark_external_validation/evaluate_banksy_lymph.py +139 -0
  140. histoweave_spatial-0.1.0/benchmark_external_validation/experiment_5x_external.py +429 -0
  141. histoweave_spatial-0.1.0/benchmark_external_validation/figures/fig1_performance_heatmap.png +0 -0
  142. histoweave_spatial-0.1.0/benchmark_external_validation/figures/fig1_performance_heatmap.svg +593 -0
  143. histoweave_spatial-0.1.0/benchmark_external_validation/figures/fig2_method_boxplot.png +0 -0
  144. histoweave_spatial-0.1.0/benchmark_external_validation/figures/fig2_method_boxplot.svg +742 -0
  145. histoweave_spatial-0.1.0/benchmark_external_validation/figures/fig3_landscape_embedding.png +0 -0
  146. histoweave_spatial-0.1.0/benchmark_external_validation/figures/fig3_landscape_embedding.svg +338 -0
  147. histoweave_spatial-0.1.0/benchmark_external_validation/figures/fig4_recommender_regret.png +0 -0
  148. histoweave_spatial-0.1.0/benchmark_external_validation/figures/fig4_recommender_regret.svg +395 -0
  149. histoweave_spatial-0.1.0/benchmark_external_validation/figures/selective_regret_coverage.png +0 -0
  150. histoweave_spatial-0.1.0/benchmark_external_validation/figures/selective_regret_coverage.svg +458 -0
  151. histoweave_spatial-0.1.0/benchmark_external_validation/independent_test_wu2021/README.md +24 -0
  152. histoweave_spatial-0.1.0/benchmark_external_validation/independent_test_wu2021/REPORT_independent_test_wu2021.md +46 -0
  153. histoweave_spatial-0.1.0/benchmark_external_validation/independent_test_wu2021/benchmark_long.csv +145 -0
  154. histoweave_spatial-0.1.0/benchmark_external_validation/independent_test_wu2021/dataset_manifest.json +95 -0
  155. histoweave_spatial-0.1.0/benchmark_external_validation/independent_test_wu2021/fig_independent_test_wu2021.png +0 -0
  156. histoweave_spatial-0.1.0/benchmark_external_validation/independent_test_wu2021/fig_independent_test_wu2021.svg +2747 -0
  157. histoweave_spatial-0.1.0/benchmark_external_validation/independent_test_wu2021/independence_audit.json +26 -0
  158. histoweave_spatial-0.1.0/benchmark_external_validation/independent_test_wu2021/independent_test_summary.json +95 -0
  159. histoweave_spatial-0.1.0/benchmark_external_validation/independent_test_wu2021/manifest.json +55 -0
  160. histoweave_spatial-0.1.0/benchmark_external_validation/independent_test_wu2021/preregistered_protocol.json +73 -0
  161. histoweave_spatial-0.1.0/benchmark_external_validation/independent_test_wu2021/run_independent_test.py +636 -0
  162. histoweave_spatial-0.1.0/benchmark_external_validation/independent_test_wu2021/sample_regret.csv +7 -0
  163. histoweave_spatial-0.1.0/benchmark_external_validation/make_figures.py +326 -0
  164. histoweave_spatial-0.1.0/benchmark_external_validation/n8_strict_region/build_n8_strict_loocv.py +614 -0
  165. histoweave_spatial-0.1.0/benchmark_external_validation/n8_strict_region/decision_validation.json +35 -0
  166. histoweave_spatial-0.1.0/benchmark_external_validation/n8_strict_region/fig_tissue_condition_flip.png +0 -0
  167. histoweave_spatial-0.1.0/benchmark_external_validation/n8_strict_region/fig_tissue_condition_flip.svg +668 -0
  168. histoweave_spatial-0.1.0/benchmark_external_validation/n8_strict_region/loocv_rows.csv +9 -0
  169. histoweave_spatial-0.1.0/benchmark_external_validation/n8_strict_region/loocv_rows.json +122 -0
  170. histoweave_spatial-0.1.0/benchmark_external_validation/n8_strict_region/loocv_summary.json +94 -0
  171. histoweave_spatial-0.1.0/benchmark_external_validation/n8_strict_region/manifest.json +51 -0
  172. histoweave_spatial-0.1.0/benchmark_external_validation/n8_strict_region/report_n8_strict_loocv.md +46 -0
  173. histoweave_spatial-0.1.0/benchmark_external_validation/n8_strict_region/tissue_condition_flip.csv +9 -0
  174. histoweave_spatial-0.1.0/benchmark_external_validation/n8_strict_region/tissue_condition_flip.json +54 -0
  175. histoweave_spatial-0.1.0/benchmark_external_validation/n8_strict_region/within_condition_loocv.csv +9 -0
  176. histoweave_spatial-0.1.0/benchmark_external_validation/performance_matrix_mean.csv +6 -0
  177. histoweave_spatial-0.1.0/benchmark_external_validation/performance_matrix_std.csv +6 -0
  178. histoweave_spatial-0.1.0/benchmark_external_validation/prepare_allen_merfish_brain_section.py +324 -0
  179. histoweave_spatial-0.1.0/benchmark_external_validation/prepare_visium_hd_crc.py +327 -0
  180. histoweave_spatial-0.1.0/benchmark_external_validation/prepare_visium_mouse_brain.py +190 -0
  181. histoweave_spatial-0.1.0/benchmark_external_validation/prepare_xenium_lung_cancer.py +69 -0
  182. histoweave_spatial-0.1.0/benchmark_external_validation/prepare_xenium_ovarian_cancer.py +60 -0
  183. histoweave_spatial-0.1.0/benchmark_external_validation/recommendation_loocv.csv +6 -0
  184. histoweave_spatial-0.1.0/benchmark_external_validation/recommendation_loocv.json +156 -0
  185. histoweave_spatial-0.1.0/benchmark_external_validation/recommender_loocv_external.py +248 -0
  186. histoweave_spatial-0.1.0/benchmark_external_validation/report_external_validation.md +162 -0
  187. histoweave_spatial-0.1.0/benchmark_external_validation/strict_external_panel_v2/REPORT_strict_external_panel_v2.md +50 -0
  188. histoweave_spatial-0.1.0/benchmark_external_validation/strict_external_panel_v2/banksy_lymph_long.csv +4 -0
  189. histoweave_spatial-0.1.0/benchmark_external_validation/strict_external_panel_v2/banksy_lymph_manifest.json +16 -0
  190. histoweave_spatial-0.1.0/benchmark_external_validation/strict_external_panel_v2/banksy_lymph_summary.json +44 -0
  191. histoweave_spatial-0.1.0/benchmark_external_validation/strict_external_panel_v2/build_strict_external_panel_v2.py +560 -0
  192. histoweave_spatial-0.1.0/benchmark_external_validation/strict_external_panel_v2/fig_strict_external_panel_v2.png +0 -0
  193. histoweave_spatial-0.1.0/benchmark_external_validation/strict_external_panel_v2/fig_strict_external_panel_v2.svg +2374 -0
  194. histoweave_spatial-0.1.0/benchmark_external_validation/strict_external_panel_v2/loocv_rows.csv +10 -0
  195. histoweave_spatial-0.1.0/benchmark_external_validation/strict_external_panel_v2/loocv_rows.json +137 -0
  196. histoweave_spatial-0.1.0/benchmark_external_validation/strict_external_panel_v2/loocv_summary.json +87 -0
  197. histoweave_spatial-0.1.0/benchmark_external_validation/strict_external_panel_v2/manifest.json +72 -0
  198. histoweave_spatial-0.1.0/benchmark_external_validation/strict_external_panel_v2/sota_coverage.csv +51 -0
  199. histoweave_spatial-0.1.0/benchmark_external_validation/strict_external_panel_v2/sota_coverage_summary.json +43 -0
  200. histoweave_spatial-0.1.0/benchmark_external_validation/strict_external_panel_v2/strict_external_units.csv +11 -0
  201. histoweave_spatial-0.1.0/benchmark_external_validation/strict_external_panel_v2/tls_two_dataset_summary.json +28 -0
  202. histoweave_spatial-0.1.0/case_study_dlpfc_consistency/build_uncertainty_case.py +352 -0
  203. histoweave_spatial-0.1.0/case_study_dlpfc_consistency/prepare.py +93 -0
  204. histoweave_spatial-0.1.0/case_study_dlpfc_consistency/report_case_study.md +139 -0
  205. histoweave_spatial-0.1.0/case_study_dlpfc_consistency/run_case_study.py +388 -0
  206. histoweave_spatial-0.1.0/conda-recipe/README.md +45 -0
  207. histoweave_spatial-0.1.0/conda-recipe/conda_build_config.yaml +10 -0
  208. histoweave_spatial-0.1.0/conda-recipe/meta.yaml +67 -0
  209. histoweave_spatial-0.1.0/docs/COMPILER_GAPS.md +6 -0
  210. histoweave_spatial-0.1.0/docs/PR_STREAMS.md +50 -0
  211. histoweave_spatial-0.1.0/docs/active-calibration.md +119 -0
  212. histoweave_spatial-0.1.0/docs/api.md +92 -0
  213. histoweave_spatial-0.1.0/docs/architecture.md +97 -0
  214. histoweave_spatial-0.1.0/docs/benchmark-comparison-reviewer-response.md +90 -0
  215. histoweave_spatial-0.1.0/docs/case-study-intercepted-recommendation.md +138 -0
  216. histoweave_spatial-0.1.0/docs/code-of-conduct.md +22 -0
  217. histoweave_spatial-0.1.0/docs/compiler.md +150 -0
  218. histoweave_spatial-0.1.0/docs/concepts.md +142 -0
  219. histoweave_spatial-0.1.0/docs/contributing.md +43 -0
  220. histoweave_spatial-0.1.0/docs/decision-protocol.md +233 -0
  221. histoweave_spatial-0.1.0/docs/digital-twin.md +112 -0
  222. histoweave_spatial-0.1.0/docs/failure-fingerprints.md +93 -0
  223. histoweave_spatial-0.1.0/docs/faq.md +96 -0
  224. histoweave_spatial-0.1.0/docs/index.md +45 -0
  225. histoweave_spatial-0.1.0/docs/method-lifecycle.md +87 -0
  226. histoweave_spatial-0.1.0/docs/method-selection.md +508 -0
  227. histoweave_spatial-0.1.0/docs/methods/banksy_py.md +29 -0
  228. histoweave_spatial-0.1.0/docs/methods/catalog.md +126 -0
  229. histoweave_spatial-0.1.0/docs/methods/categories/annotation.md +47 -0
  230. histoweave_spatial-0.1.0/docs/methods/categories/ccc.md +23 -0
  231. histoweave_spatial-0.1.0/docs/methods/categories/deconvolution.md +47 -0
  232. histoweave_spatial-0.1.0/docs/methods/categories/domain_detection.md +173 -0
  233. histoweave_spatial-0.1.0/docs/methods/categories/ingestion.md +64 -0
  234. histoweave_spatial-0.1.0/docs/methods/categories/integration.md +105 -0
  235. histoweave_spatial-0.1.0/docs/methods/categories/neighborhood.md +46 -0
  236. histoweave_spatial-0.1.0/docs/methods/categories/normalization.md +104 -0
  237. histoweave_spatial-0.1.0/docs/methods/categories/qc.md +67 -0
  238. histoweave_spatial-0.1.0/docs/methods/categories/segmentation.md +23 -0
  239. histoweave_spatial-0.1.0/docs/methods/categories/svg.md +91 -0
  240. histoweave_spatial-0.1.0/docs/methods/categories/virtual_st.md +33 -0
  241. histoweave_spatial-0.1.0/docs/methods/cell2location.md +30 -0
  242. histoweave_spatial-0.1.0/docs/methods/gaussian_mixture.md +25 -0
  243. histoweave_spatial-0.1.0/docs/methods/generated/agglomerative.md +49 -0
  244. histoweave_spatial-0.1.0/docs/methods/generated/arcsinh_transform.md +27 -0
  245. histoweave_spatial-0.1.0/docs/methods/generated/banksy.md +54 -0
  246. histoweave_spatial-0.1.0/docs/methods/generated/banksy_py.md +48 -0
  247. histoweave_spatial-0.1.0/docs/methods/generated/basic_qc.md +35 -0
  248. histoweave_spatial-0.1.0/docs/methods/generated/bayesspace.md +43 -0
  249. histoweave_spatial-0.1.0/docs/methods/generated/birch.md +51 -0
  250. histoweave_spatial-0.1.0/docs/methods/generated/bisecting_kmeans.md +40 -0
  251. histoweave_spatial-0.1.0/docs/methods/generated/cell2location.md +57 -0
  252. histoweave_spatial-0.1.0/docs/methods/generated/cellpose2.md +52 -0
  253. histoweave_spatial-0.1.0/docs/methods/generated/celltypist.md +43 -0
  254. histoweave_spatial-0.1.0/docs/methods/generated/clr_per_cell.md +27 -0
  255. histoweave_spatial-0.1.0/docs/methods/generated/combat.md +36 -0
  256. histoweave_spatial-0.1.0/docs/methods/generated/cosmx_reader.md +32 -0
  257. histoweave_spatial-0.1.0/docs/methods/generated/dbscan.md +40 -0
  258. histoweave_spatial-0.1.0/docs/methods/generated/denoising_spatial_autoencoder.md +45 -0
  259. histoweave_spatial-0.1.0/docs/methods/generated/gaussian_mixture.md +49 -0
  260. histoweave_spatial-0.1.0/docs/methods/generated/gearys_c.md +28 -0
  261. histoweave_spatial-0.1.0/docs/methods/generated/gene_complexity_qc.md +27 -0
  262. histoweave_spatial-0.1.0/docs/methods/generated/graph_expression_autoencoder.md +45 -0
  263. histoweave_spatial-0.1.0/docs/methods/generated/graphst.md +50 -0
  264. histoweave_spatial-0.1.0/docs/methods/generated/harmony.md +41 -0
  265. histoweave_spatial-0.1.0/docs/methods/generated/image_expression_attention.md +44 -0
  266. histoweave_spatial-0.1.0/docs/methods/generated/image_expression_autoencoder.md +44 -0
  267. histoweave_spatial-0.1.0/docs/methods/generated/image_expression_contrastive.md +44 -0
  268. histoweave_spatial-0.1.0/docs/methods/generated/kmeans.md +36 -0
  269. histoweave_spatial-0.1.0/docs/methods/generated/liana_plus.md +47 -0
  270. histoweave_spatial-0.1.0/docs/methods/generated/library_size_qc.md +27 -0
  271. histoweave_spatial-0.1.0/docs/methods/generated/library_size_scale.md +27 -0
  272. histoweave_spatial-0.1.0/docs/methods/generated/log1p_cp10k.md +31 -0
  273. histoweave_spatial-0.1.0/docs/methods/generated/marker_deconv.md +33 -0
  274. histoweave_spatial-0.1.0/docs/methods/generated/marker_score.md +30 -0
  275. histoweave_spatial-0.1.0/docs/methods/generated/mean_shift.md +39 -0
  276. histoweave_spatial-0.1.0/docs/methods/generated/merfish_reader.md +32 -0
  277. histoweave_spatial-0.1.0/docs/methods/generated/merscope_reader.md +32 -0
  278. histoweave_spatial-0.1.0/docs/methods/generated/minibatch_kmeans.md +50 -0
  279. histoweave_spatial-0.1.0/docs/methods/generated/mitochondrial_qc.md +28 -0
  280. histoweave_spatial-0.1.0/docs/methods/generated/morans_i.md +36 -0
  281. histoweave_spatial-0.1.0/docs/methods/generated/multimodal_graph_fusion.md +44 -0
  282. histoweave_spatial-0.1.0/docs/methods/generated/nnsvg.md +40 -0
  283. histoweave_spatial-0.1.0/docs/methods/generated/optics.md +39 -0
  284. histoweave_spatial-0.1.0/docs/methods/generated/r_lognorm.md +33 -0
  285. histoweave_spatial-0.1.0/docs/methods/generated/rctd.md +52 -0
  286. histoweave_spatial-0.1.0/docs/methods/generated/scanvi.md +50 -0
  287. histoweave_spatial-0.1.0/docs/methods/generated/sctransform.md +40 -0
  288. histoweave_spatial-0.1.0/docs/methods/generated/slideseq_reader.md +32 -0
  289. histoweave_spatial-0.1.0/docs/methods/generated/spagcn.md +52 -0
  290. histoweave_spatial-0.1.0/docs/methods/generated/spatial_autoencoder.md +45 -0
  291. histoweave_spatial-0.1.0/docs/methods/generated/spatial_graph.md +36 -0
  292. histoweave_spatial-0.1.0/docs/methods/generated/spatial_variance_ratio.md +28 -0
  293. histoweave_spatial-0.1.0/docs/methods/generated/spatialde.md +47 -0
  294. histoweave_spatial-0.1.0/docs/methods/generated/spectral.md +49 -0
  295. histoweave_spatial-0.1.0/docs/methods/generated/sqrt_transform.md +21 -0
  296. histoweave_spatial-0.1.0/docs/methods/generated/stagate.md +50 -0
  297. histoweave_spatial-0.1.0/docs/methods/generated/stereoseq_reader.md +32 -0
  298. histoweave_spatial-0.1.0/docs/methods/generated/tfidf_l2.md +21 -0
  299. histoweave_spatial-0.1.0/docs/methods/generated/variational_spatial_autoencoder.md +45 -0
  300. histoweave_spatial-0.1.0/docs/methods/generated/virtual_st_morphology.md +46 -0
  301. histoweave_spatial-0.1.0/docs/methods/generated/virtual_st_scellst.md +46 -0
  302. histoweave_spatial-0.1.0/docs/methods/generated/virtual_st_storm.md +46 -0
  303. histoweave_spatial-0.1.0/docs/methods/generated/visium_reader.md +28 -0
  304. histoweave_spatial-0.1.0/docs/methods/generated/weave_adaptive_radius_graph.md +33 -0
  305. histoweave_spatial-0.1.0/docs/methods/generated/weave_adaptive_saturation_qc.md +34 -0
  306. histoweave_spatial-0.1.0/docs/methods/generated/weave_anchor_residual_integrate.md +35 -0
  307. histoweave_spatial-0.1.0/docs/methods/generated/weave_anisotropy_svg.md +33 -0
  308. histoweave_spatial-0.1.0/docs/methods/generated/weave_bootstrap_robust_svg.md +36 -0
  309. histoweave_spatial-0.1.0/docs/methods/generated/weave_boundary_aware_domains.md +38 -0
  310. histoweave_spatial-0.1.0/docs/methods/generated/weave_boundary_svg.md +33 -0
  311. histoweave_spatial-0.1.0/docs/methods/generated/weave_expression_spatial_graph.md +34 -0
  312. histoweave_spatial-0.1.0/docs/methods/generated/weave_graph_diffusion_normalize.md +36 -0
  313. histoweave_spatial-0.1.0/docs/methods/generated/weave_hotspot_svg.md +33 -0
  314. histoweave_spatial-0.1.0/docs/methods/generated/weave_multiscale_consensus_domains.md +37 -0
  315. histoweave_spatial-0.1.0/docs/methods/generated/weave_multiscale_svg.md +34 -0
  316. histoweave_spatial-0.1.0/docs/methods/generated/weave_mutual_knn_graph.md +32 -0
  317. histoweave_spatial-0.1.0/docs/methods/generated/weave_neighbor_discordance_qc.md +36 -0
  318. histoweave_spatial-0.1.0/docs/methods/generated/weave_neighbor_marker_annotate.md +36 -0
  319. histoweave_spatial-0.1.0/docs/methods/generated/weave_rank_stabilize.md +32 -0
  320. histoweave_spatial-0.1.0/docs/methods/generated/weave_robust_pearson_residual.md +34 -0
  321. histoweave_spatial-0.1.0/docs/methods/generated/weave_spatial_entropy_qc.md +36 -0
  322. histoweave_spatial-0.1.0/docs/methods/generated/weave_spatial_median_normalize.md +35 -0
  323. histoweave_spatial-0.1.0/docs/methods/generated/weave_spatial_quantile_integrate.md +35 -0
  324. histoweave_spatial-0.1.0/docs/methods/generated/weave_spatial_simplex_deconv.md +36 -0
  325. histoweave_spatial-0.1.0/docs/methods/generated/weave_topology_regularized_domains.md +39 -0
  326. histoweave_spatial-0.1.0/docs/methods/generated/weave_uncertainty_domains.md +38 -0
  327. histoweave_spatial-0.1.0/docs/methods/generated/xenium_reader.md +29 -0
  328. histoweave_spatial-0.1.0/docs/methods/index.md +46 -0
  329. histoweave_spatial-0.1.0/docs/methods/spagcn.md +27 -0
  330. histoweave_spatial-0.1.0/docs/methods/spectral.md +26 -0
  331. histoweave_spatial-0.1.0/docs/methods/validation/agglomerative.md +113 -0
  332. histoweave_spatial-0.1.0/docs/methods/validation/banksy.md +60 -0
  333. histoweave_spatial-0.1.0/docs/methods/validation/banksy_py.md +29 -0
  334. histoweave_spatial-0.1.0/docs/methods/validation/birch.md +113 -0
  335. histoweave_spatial-0.1.0/docs/methods/validation/cell2location.md +150 -0
  336. histoweave_spatial-0.1.0/docs/methods/validation/gaussian_mixture.md +27 -0
  337. histoweave_spatial-0.1.0/docs/methods/validation/graphst.md +85 -0
  338. histoweave_spatial-0.1.0/docs/methods/validation/index.md +103 -0
  339. histoweave_spatial-0.1.0/docs/methods/validation/minibatch_kmeans.md +76 -0
  340. histoweave_spatial-0.1.0/docs/methods/validation/rctd.md +100 -0
  341. histoweave_spatial-0.1.0/docs/methods/validation/spagcn.md +111 -0
  342. histoweave_spatial-0.1.0/docs/methods/validation/spatialde.md +118 -0
  343. histoweave_spatial-0.1.0/docs/methods/validation/spectral.md +28 -0
  344. histoweave_spatial-0.1.0/docs/methods/validation/stagate.md +103 -0
  345. histoweave_spatial-0.1.0/docs/multimodal-virtual-st.md +224 -0
  346. histoweave_spatial-0.1.0/docs/parallel-experiment-table.md +49 -0
  347. histoweave_spatial-0.1.0/docs/phenomenology-benchmark.md +138 -0
  348. histoweave_spatial-0.1.0/docs/quickstart.md +305 -0
  349. histoweave_spatial-0.1.0/docs/reference-artefacts.md +156 -0
  350. histoweave_spatial-0.1.0/docs/research-methods.md +62 -0
  351. histoweave_spatial-0.1.0/docs/roadmap.md +12 -0
  352. histoweave_spatial-0.1.0/docs/sota-reproduction.md +78 -0
  353. histoweave_spatial-0.1.0/docs/spatial-automl.md +117 -0
  354. histoweave_spatial-0.1.0/docs/statistical-review.md +113 -0
  355. histoweave_spatial-0.1.0/docs/troubleshooting.md +175 -0
  356. histoweave_spatial-0.1.0/docs/tutorials/01_real_visium_dlpfc.md +177 -0
  357. histoweave_spatial-0.1.0/docs/tutorials/02_custom_plugin_development.md +168 -0
  358. histoweave_spatial-0.1.0/docs/tutorials/03_batch_effect_correction.md +155 -0
  359. histoweave_spatial-0.1.0/docs/tutorials/04_xenium_merfish.md +163 -0
  360. histoweave_spatial-0.1.0/docs/tutorials/05_large_imaging_scale.md +108 -0
  361. histoweave_spatial-0.1.0/docs/tutorials/06_virtual_st_he.md +150 -0
  362. histoweave_spatial-0.1.0/docs/vs-squidpy-spatialdata.md +122 -0
  363. histoweave_spatial-0.1.0/docs/zh/quickstart.md +311 -0
  364. histoweave_spatial-0.1.0/examples/README.md +43 -0
  365. histoweave_spatial-0.1.0/examples/case_study_intercepted_recommendation.py +487 -0
  366. histoweave_spatial-0.1.0/examples/quickstart.py +52 -0
  367. histoweave_spatial-0.1.0/examples/tutorial_batch_correction.py +105 -0
  368. histoweave_spatial-0.1.0/examples/tutorial_custom_plugin.py +96 -0
  369. histoweave_spatial-0.1.0/examples/tutorial_real_visium.py +85 -0
  370. histoweave_spatial-0.1.0/examples/workshop_30min.ipynb +312 -0
  371. histoweave_spatial-0.1.0/failure_boundary_mapping/failure_boundary.py +42 -0
  372. histoweave_spatial-0.1.0/failure_boundary_mapping/make_figures.py +234 -0
  373. histoweave_spatial-0.1.0/failure_boundary_mapping/report_failure_boundary_mapping.md +147 -0
  374. histoweave_spatial-0.1.0/failure_boundary_mapping/run_failure_mapping.py +68 -0
  375. histoweave_spatial-0.1.0/federation/CONTRIBUTING_EVIDENCE.md +157 -0
  376. histoweave_spatial-0.1.0/federation/PROTOCOL.md +216 -0
  377. histoweave_spatial-0.1.0/federation/bundles/histoweave-reference.json +1429 -0
  378. histoweave_spatial-0.1.0/federation/nodes/TEMPLATE.node.json +21 -0
  379. histoweave_spatial-0.1.0/federation/nodes/histoweave-reference.json +20 -0
  380. histoweave_spatial-0.1.0/federation/nodes/index.json +15 -0
  381. histoweave_spatial-0.1.0/figure3_results/benchmark_long.csv +31 -0
  382. histoweave_spatial-0.1.0/figure3_results/dataset_features.csv +4 -0
  383. histoweave_spatial-0.1.0/figure3_results/figure3_data.json +317 -0
  384. histoweave_spatial-0.1.0/figure3_results/landscape.json +189 -0
  385. histoweave_spatial-0.1.0/figure3_results/landscape_dlpfc_merged.json +460 -0
  386. histoweave_spatial-0.1.0/figure3_results/manifest.json +46 -0
  387. histoweave_spatial-0.1.0/figure3_results/performance_matrix.csv +4 -0
  388. histoweave_spatial-0.1.0/figure3_results/recommendation_loocv.csv +4 -0
  389. histoweave_spatial-0.1.0/figure3_results/recommendation_loocv.json +194 -0
  390. histoweave_spatial-0.1.0/figure3_results/validation.json +21 -0
  391. histoweave_spatial-0.1.0/independent_personalisation_results/README.md +33 -0
  392. histoweave_spatial-0.1.0/independent_personalisation_results/cross_lab_reproducibility.json +393 -0
  393. histoweave_spatial-0.1.0/independent_personalisation_results/independent_personalisation_report.md +44 -0
  394. histoweave_spatial-0.1.0/independent_personalisation_results/independent_personalisation_summary.json +55 -0
  395. histoweave_spatial-0.1.0/independent_personalisation_results/independent_unit_landscape.json +1035 -0
  396. histoweave_spatial-0.1.0/independent_personalisation_results/personalisation_policies.json +346 -0
  397. histoweave_spatial-0.1.0/independent_personalisation_results/real_independent_unit_landscape.json +722 -0
  398. histoweave_spatial-0.1.0/leaderboard/README.md +74 -0
  399. histoweave_spatial-0.1.0/leaderboard/SUBMISSION.md +109 -0
  400. histoweave_spatial-0.1.0/leaderboard/data.json +5620 -0
  401. histoweave_spatial-0.1.0/leaderboard/generate.py +473 -0
  402. histoweave_spatial-0.1.0/leaderboard/index.html +175 -0
  403. histoweave_spatial-0.1.0/leaderboard/main.js +567 -0
  404. histoweave_spatial-0.1.0/leaderboard/styles.css +321 -0
  405. histoweave_spatial-0.1.0/mkdocs.yml +127 -0
  406. histoweave_spatial-0.1.0/non_oracle_k_sota/README.md +34 -0
  407. histoweave_spatial-0.1.0/non_oracle_k_sota/benchmark_long.csv +41 -0
  408. histoweave_spatial-0.1.0/non_oracle_k_sota/benchmark_long.json +1922 -0
  409. histoweave_spatial-0.1.0/non_oracle_k_sota/dual_track_k.csv +16 -0
  410. histoweave_spatial-0.1.0/non_oracle_k_sota/dual_track_k.json +627 -0
  411. histoweave_spatial-0.1.0/non_oracle_k_sota/figures/non_oracle_k_ari_recovery.png +0 -0
  412. histoweave_spatial-0.1.0/non_oracle_k_sota/figures/non_oracle_k_ari_recovery.svg +1213 -0
  413. histoweave_spatial-0.1.0/non_oracle_k_sota/report_non_oracle_k_sota.md +115 -0
  414. histoweave_spatial-0.1.0/non_oracle_k_sota/run_non_oracle_k_sota.py +704 -0
  415. histoweave_spatial-0.1.0/non_oracle_k_sota/summary.json +119 -0
  416. histoweave_spatial-0.1.0/parallel_experiment_table/README.md +73 -0
  417. histoweave_spatial-0.1.0/parallel_experiment_table/build_parallel_table.py +603 -0
  418. histoweave_spatial-0.1.0/parallel_experiment_table/figures/parallel_heatmap.png +0 -0
  419. histoweave_spatial-0.1.0/parallel_experiment_table/figures/parallel_heatmap.svg +943 -0
  420. histoweave_spatial-0.1.0/parallel_experiment_table/make_heatmap.py +170 -0
  421. histoweave_spatial-0.1.0/parallel_experiment_table/method_meta.json +204 -0
  422. histoweave_spatial-0.1.0/parallel_experiment_table/parallel_experiment_matrix.csv +6 -0
  423. histoweave_spatial-0.1.0/parallel_experiment_table/parallel_experiment_summary.csv +34 -0
  424. histoweave_spatial-0.1.0/parallel_experiment_table/parallel_experiment_table.csv +166 -0
  425. histoweave_spatial-0.1.0/parallel_experiment_table/report_parallel_experiment.md +153 -0
  426. histoweave_spatial-0.1.0/pareto_isus_results/README.md +49 -0
  427. histoweave_spatial-0.1.0/pareto_isus_results/isus_calibration.json +47 -0
  428. histoweave_spatial-0.1.0/pareto_isus_results/isus_calibration.png +0 -0
  429. histoweave_spatial-0.1.0/pareto_isus_results/isus_calibration.svg +511 -0
  430. histoweave_spatial-0.1.0/pareto_isus_results/isus_calibration_table.csv +6 -0
  431. histoweave_spatial-0.1.0/pareto_isus_results/pareto_frontier_151669.png +0 -0
  432. histoweave_spatial-0.1.0/pareto_isus_results/pareto_frontier_151669.svg +127 -0
  433. histoweave_spatial-0.1.0/pareto_isus_results/pareto_frontier_151673.png +0 -0
  434. histoweave_spatial-0.1.0/pareto_isus_results/pareto_frontier_151673.svg +118 -0
  435. histoweave_spatial-0.1.0/pareto_isus_results/pareto_report.json +691 -0
  436. histoweave_spatial-0.1.0/phenomenology_benchmark/clean_pilot/capability_index.csv +236 -0
  437. histoweave_spatial-0.1.0/phenomenology_benchmark/clean_pilot/capability_matrix.csv +325 -0
  438. histoweave_spatial-0.1.0/phenomenology_benchmark/clean_pilot/coverage_summary.csv +55 -0
  439. histoweave_spatial-0.1.0/phenomenology_benchmark/clean_pilot/experiment_manifest.json +125 -0
  440. histoweave_spatial-0.1.0/phenomenology_benchmark/clean_pilot/method_manifest.json +1307 -0
  441. histoweave_spatial-0.1.0/phenomenology_benchmark/clean_pilot/pilot_summary.json +29 -0
  442. histoweave_spatial-0.1.0/phenomenology_benchmark/clean_pilot/status_by_category.csv +23 -0
  443. histoweave_spatial-0.1.0/phenomenology_benchmark/clean_pilot/status_by_method.csv +60 -0
  444. histoweave_spatial-0.1.0/plugin-template/README.md +45 -0
  445. histoweave_spatial-0.1.0/plugin-template/pyproject.toml +20 -0
  446. histoweave_spatial-0.1.0/plugin-template/src/histoweave_myplugin/__init__.py +11 -0
  447. histoweave_spatial-0.1.0/plugin-template/src/histoweave_myplugin/method.py +46 -0
  448. histoweave_spatial-0.1.0/protocol_endpoints_results/README.md +34 -0
  449. histoweave_spatial-0.1.0/protocol_endpoints_results/multisource_landscape.json +940 -0
  450. histoweave_spatial-0.1.0/protocol_endpoints_results/oracle_k_leakage.json +192 -0
  451. histoweave_spatial-0.1.0/protocol_endpoints_results/pareto_stability.json +178 -0
  452. histoweave_spatial-0.1.0/protocol_endpoints_results/protocol_endpoints_report.md +31 -0
  453. histoweave_spatial-0.1.0/protocol_endpoints_results/protocol_endpoints_summary.json +43 -0
  454. histoweave_spatial-0.1.0/protocol_endpoints_results/selective_regret_coverage.json +146 -0
  455. histoweave_spatial-0.1.0/protocol_endpoints_results/sota_unified_resource.json +595 -0
  456. histoweave_spatial-0.1.0/protocol_endpoints_results/study_grouped_20_recommendation.json +1789 -0
  457. histoweave_spatial-0.1.0/protocol_endpoints_results/study_grouped_20_report.md +39 -0
  458. histoweave_spatial-0.1.0/pyproject.toml +190 -0
  459. histoweave_spatial-0.1.0/reference_artefacts/MANIFEST.json +1137 -0
  460. histoweave_spatial-0.1.0/reference_artefacts/README.md +28 -0
  461. histoweave_spatial-0.1.0/research/cross_tissue_niches/DISCOVERY_REPORT.md +140 -0
  462. histoweave_spatial-0.1.0/research/cross_tissue_niches/FINAL_RESULTS_ADDENDUM.md +50 -0
  463. histoweave_spatial-0.1.0/research/cross_tissue_niches/audit_h5ad.py +178 -0
  464. histoweave_spatial-0.1.0/research/cross_tissue_niches/dlpfc_sct_scvi/README.md +31 -0
  465. histoweave_spatial-0.1.0/research/cross_tissue_niches/dlpfc_sct_scvi/RESULTS_README.md +129 -0
  466. histoweave_spatial-0.1.0/research/cross_tissue_niches/dlpfc_sct_scvi/plot_scvi_only.py +132 -0
  467. histoweave_spatial-0.1.0/research/cross_tissue_niches/dlpfc_sct_scvi/run_dlpfc_sct_scvi.py +1232 -0
  468. histoweave_spatial-0.1.0/research/cross_tissue_niches/dlpfc_sct_scvi/run_sct_scores.R +121 -0
  469. histoweave_spatial-0.1.0/research/cross_tissue_niches/pilot_gei.py +991 -0
  470. histoweave_spatial-0.1.0/research/cross_tissue_niches/scale_hierarchy/README.md +29 -0
  471. histoweave_spatial-0.1.0/research/cross_tissue_niches/scale_hierarchy/run_scale_hierarchy.py +1038 -0
  472. histoweave_spatial-0.1.0/research/cross_tissue_niches/scp815_manifest.json +1 -0
  473. histoweave_spatial-0.1.0/research/cross_tissue_niches/slideseq_raw/README.md +35 -0
  474. histoweave_spatial-0.1.0/research/cross_tissue_niches/slideseq_raw/RESULTS_README.md +78 -0
  475. histoweave_spatial-0.1.0/research/cross_tissue_niches/slideseq_raw/export_raw_rdata.R +105 -0
  476. histoweave_spatial-0.1.0/research/cross_tissue_niches/slideseq_raw/run_raw_recovery.py +905 -0
  477. histoweave_spatial-0.1.0/research/cross_tissue_niches/slideseq_raw/run_sct_pilot.R +94 -0
  478. histoweave_spatial-0.1.0/research/cross_tissue_niches/slideseq_raw/run_scvi_smoke.py +438 -0
  479. histoweave_spatial-0.1.0/research/cross_tissue_niches/slideseq_raw/run_scvi_smoke_repro.py +28 -0
  480. histoweave_spatial-0.1.0/research/cross_tissue_niches/slideseq_raw/run_vascular_external_hypothesis.py +424 -0
  481. histoweave_spatial-0.1.0/research/discovery_uncertainty_niches/BIOLOGICAL_STORY.md +243 -0
  482. histoweave_spatial-0.1.0/research/discovery_uncertainty_niches/CLAIM_LADDER.md +73 -0
  483. histoweave_spatial-0.1.0/research/discovery_uncertainty_niches/COHORT_META_REPORT.md +69 -0
  484. histoweave_spatial-0.1.0/research/discovery_uncertainty_niches/COMPONENT_COMPARISON.md +112 -0
  485. histoweave_spatial-0.1.0/research/discovery_uncertainty_niches/COMPONENT_REPORT_dlpfc_151508.md +85 -0
  486. histoweave_spatial-0.1.0/research/discovery_uncertainty_niches/COMPONENT_REPORT_dlpfc_151508_rank1_n138.md +92 -0
  487. histoweave_spatial-0.1.0/research/discovery_uncertainty_niches/COMPONENT_REPORT_dlpfc_151669.md +80 -0
  488. histoweave_spatial-0.1.0/research/discovery_uncertainty_niches/COMPONENT_REPORT_dlpfc_151669_rank0_n137.md +80 -0
  489. histoweave_spatial-0.1.0/research/discovery_uncertainty_niches/COMPONENT_REPORT_dlpfc_151673.md +86 -0
  490. histoweave_spatial-0.1.0/research/discovery_uncertainty_niches/COMPONENT_REPORT_dlpfc_151673_rank0_n47.md +86 -0
  491. histoweave_spatial-0.1.0/research/discovery_uncertainty_niches/COMPONENT_REPORT_dlpfc_151673_rank1_n24.md +62 -0
  492. histoweave_spatial-0.1.0/research/discovery_uncertainty_niches/DISCOVERY_REPORT.md +76 -0
  493. histoweave_spatial-0.1.0/research/discovery_uncertainty_niches/DONOR_BOOTSTRAP_L3.md +38 -0
  494. histoweave_spatial-0.1.0/research/discovery_uncertainty_niches/FUNCTIONAL_EXPERIMENTS.md +340 -0
  495. histoweave_spatial-0.1.0/research/discovery_uncertainty_niches/FUNCTIONAL_VALIDATION.md +351 -0
  496. histoweave_spatial-0.1.0/research/discovery_uncertainty_niches/IF_LAB_BRIEF.md +70 -0
  497. histoweave_spatial-0.1.0/research/discovery_uncertainty_niches/IF_PROTOCOL.md +73 -0
  498. histoweave_spatial-0.1.0/research/discovery_uncertainty_niches/PANEL_VALIDATION_REPORT.md +121 -0
  499. histoweave_spatial-0.1.0/research/discovery_uncertainty_niches/PROJECT_STATUS.md +106 -0
  500. histoweave_spatial-0.1.0/research/discovery_uncertainty_niches/README.md +125 -0
  501. histoweave_spatial-0.1.0/research/discovery_uncertainty_niches/VALIDATED_BIOLOGY_REPORT.md +44 -0
  502. histoweave_spatial-0.1.0/research/discovery_uncertainty_niches/analyze_functional_return.py +582 -0
  503. histoweave_spatial-0.1.0/research/discovery_uncertainty_niches/analyze_if_return.py +525 -0
  504. histoweave_spatial-0.1.0/research/discovery_uncertainty_niches/analyze_largest_component.py +626 -0
  505. histoweave_spatial-0.1.0/research/discovery_uncertainty_niches/compose_biological_story.py +655 -0
  506. histoweave_spatial-0.1.0/research/discovery_uncertainty_niches/functional_experiments.py +421 -0
  507. histoweave_spatial-0.1.0/research/discovery_uncertainty_niches/functional_modules.py +327 -0
  508. histoweave_spatial-0.1.0/research/discovery_uncertainty_niches/prepare_functional_experiment_package.py +405 -0
  509. histoweave_spatial-0.1.0/research/discovery_uncertainty_niches/prepare_if_lab_package.py +576 -0
  510. histoweave_spatial-0.1.0/research/discovery_uncertainty_niches/run_cohort_panel.py +503 -0
  511. histoweave_spatial-0.1.0/research/discovery_uncertainty_niches/run_discovery.py +638 -0
  512. histoweave_spatial-0.1.0/research/discovery_uncertainty_niches/run_donor_bootstrap.py +144 -0
  513. histoweave_spatial-0.1.0/research/discovery_uncertainty_niches/run_functional_validation.py +933 -0
  514. histoweave_spatial-0.1.0/research/discovery_uncertainty_niches/validate_panel_and_rois.py +686 -0
  515. histoweave_spatial-0.1.0/research/discovery_xenium_lymph/GC_DEEP_DIVE_REPORT.md +32 -0
  516. histoweave_spatial-0.1.0/research/discovery_xenium_lymph/KCNN4_ORAI3_NEIGHBORHOOD.md +255 -0
  517. histoweave_spatial-0.1.0/research/discovery_xenium_lymph/LYMPH_DISCOVERY_REPORT.md +58 -0
  518. histoweave_spatial-0.1.0/research/discovery_xenium_lymph/OFFICIAL_SWAP_COMPARISON.md +95 -0
  519. histoweave_spatial-0.1.0/research/discovery_xenium_lymph/README.md +80 -0
  520. histoweave_spatial-0.1.0/research/discovery_xenium_lymph/analyze_ca2_niche_neighborhood.py +710 -0
  521. histoweave_spatial-0.1.0/research/discovery_xenium_lymph/analyze_gc_components.py +741 -0
  522. histoweave_spatial-0.1.0/research/discovery_xenium_lymph/prepare_bundle.py +470 -0
  523. histoweave_spatial-0.1.0/research/discovery_xenium_lymph/run_discovery_ln.py +393 -0
  524. histoweave_spatial-0.1.0/research/discovery_xenium_lymph/swap_and_rerun.py +242 -0
  525. histoweave_spatial-0.1.0/research/method_validation/GRAPHST_STAGATE_REAL_ARI.md +37 -0
  526. histoweave_spatial-0.1.0/research/method_validation/PROTOCOL.md +73 -0
  527. histoweave_spatial-0.1.0/research/method_validation/README.md +47 -0
  528. histoweave_spatial-0.1.0/research/method_validation/compile_validation_evidence.py +775 -0
  529. histoweave_spatial-0.1.0/research/method_validation/merge_real_ari_checkpoints.py +103 -0
  530. histoweave_spatial-0.1.0/research/method_validation/run_cell2location_multidataset.py +315 -0
  531. histoweave_spatial-0.1.0/research/method_validation/run_real_graphst_stagate_ari.py +279 -0
  532. histoweave_spatial-0.1.0/research/method_validation/run_sota_batch_multidataset.py +580 -0
  533. histoweave_spatial-0.1.0/research/phaseB_tls_consensus/DISCOVERY_tls_niche_under_resolution.md +101 -0
  534. histoweave_spatial-0.1.0/research/phaseB_tls_consensus/analyze_tls_consensus.py +329 -0
  535. histoweave_spatial-0.1.0/research/phaseB_tls_consensus/analyze_tls_second_dataset.py +303 -0
  536. histoweave_spatial-0.1.0/research/phaseB_tls_consensus/figures/fig1_tls_niche_spatial.png +0 -0
  537. histoweave_spatial-0.1.0/research/phaseB_tls_consensus/figures/fig1_tls_niche_spatial.svg +13310 -0
  538. histoweave_spatial-0.1.0/research/phaseB_tls_consensus/figures/fig2_resolution_sensitivity.png +0 -0
  539. histoweave_spatial-0.1.0/research/phaseB_tls_consensus/figures/fig2_resolution_sensitivity.svg +908 -0
  540. histoweave_spatial-0.1.0/research/phaseB_tls_consensus/figures/fig3_marker_validation.png +0 -0
  541. histoweave_spatial-0.1.0/research/phaseB_tls_consensus/figures/fig3_marker_validation.svg +841 -0
  542. histoweave_spatial-0.1.0/research/phaseB_tls_consensus/run_bc_method_labels.py +134 -0
  543. histoweave_spatial-0.1.0/research/phaseB_tls_consensus/second_dataset_xenium_lymph/REPORT_tls_second_dataset.md +37 -0
  544. histoweave_spatial-0.1.0/research/phaseB_tls_consensus/second_dataset_xenium_lymph/manifest.json +21 -0
  545. histoweave_spatial-0.1.0/research/phaseB_tls_consensus/second_dataset_xenium_lymph/tls_second_dataset_summary.json +71 -0
  546. histoweave_spatial-0.1.0/research/phaseB_tls_consensus/tables/discovery_summary.json +62 -0
  547. histoweave_spatial-0.1.0/research/phaseB_tls_consensus/tables/recovery_metrics.csv +7 -0
  548. histoweave_spatial-0.1.0/research/phaseB_tls_consensus/tables/resolution_sensitivity.csv +21 -0
  549. histoweave_spatial-0.1.0/research/phaseB_tls_consensus/tables/resolution_sensitivity_summary.json +31 -0
  550. histoweave_spatial-0.1.0/scalability_proof/complexity_fits.csv +31 -0
  551. histoweave_spatial-0.1.0/scalability_proof/figures/fig1_time_vs_cells.png +0 -0
  552. histoweave_spatial-0.1.0/scalability_proof/figures/fig1_time_vs_cells.svg +4342 -0
  553. histoweave_spatial-0.1.0/scalability_proof/figures/fig2_memory_vs_cells.png +0 -0
  554. histoweave_spatial-0.1.0/scalability_proof/figures/fig2_memory_vs_cells.svg +3540 -0
  555. histoweave_spatial-0.1.0/scalability_proof/figures/fig3_throughput_vs_cells.png +0 -0
  556. histoweave_spatial-0.1.0/scalability_proof/figures/fig3_throughput_vs_cells.svg +3412 -0
  557. histoweave_spatial-0.1.0/scalability_proof/figures/fig4_complexity_exponents.png +0 -0
  558. histoweave_spatial-0.1.0/scalability_proof/figures/fig4_complexity_exponents.svg +646 -0
  559. histoweave_spatial-0.1.0/scalability_proof/figures/fig5_status_matrix.png +0 -0
  560. histoweave_spatial-0.1.0/scalability_proof/figures/fig5_status_matrix.svg +686 -0
  561. histoweave_spatial-0.1.0/scalability_proof/report_scalability_proof.md +190 -0
  562. histoweave_spatial-0.1.0/scalability_proof/scaling_metrics.csv +151 -0
  563. histoweave_spatial-0.1.0/scalability_proof/scaling_summary.json +48 -0
  564. histoweave_spatial-0.1.0/scripts/__init__.py +1 -0
  565. histoweave_spatial-0.1.0/scripts/_clean_unused_ignores.py +51 -0
  566. histoweave_spatial-0.1.0/scripts/build_dlpfc_bundles.py +287 -0
  567. histoweave_spatial-0.1.0/scripts/build_merged_landscape.py +63 -0
  568. histoweave_spatial-0.1.0/scripts/build_reference_artefact_manifest.py +221 -0
  569. histoweave_spatial-0.1.0/scripts/dlpfc_cell2location_reference.py +282 -0
  570. histoweave_spatial-0.1.0/scripts/expand_real_independent_studies.py +666 -0
  571. histoweave_spatial-0.1.0/scripts/generate_method_docs.py +430 -0
  572. histoweave_spatial-0.1.0/scripts/prepare_visium_hne_virtual_st.py +147 -0
  573. histoweave_spatial-0.1.0/scripts/run_independent_personalisation.py +208 -0
  574. histoweave_spatial-0.1.0/scripts/run_protocol_endpoints.py +653 -0
  575. histoweave_spatial-0.1.0/scripts/run_sota_dlpfc.py +110 -0
  576. histoweave_spatial-0.1.0/scripts/scientific_figure_pro.py +155 -0
  577. histoweave_spatial-0.1.0/src/histoweave/__init__.py +67 -0
  578. histoweave_spatial-0.1.0/src/histoweave/__main__.py +8 -0
  579. histoweave_spatial-0.1.0/src/histoweave/_math.py +186 -0
  580. histoweave_spatial-0.1.0/src/histoweave/automl/__init__.py +36 -0
  581. histoweave_spatial-0.1.0/src/histoweave/automl/compiler.py +710 -0
  582. histoweave_spatial-0.1.0/src/histoweave/automl/report.py +290 -0
  583. histoweave_spatial-0.1.0/src/histoweave/benchmark/__init__.py +481 -0
  584. histoweave_spatial-0.1.0/src/histoweave/benchmark/active_calibration.py +401 -0
  585. histoweave_spatial-0.1.0/src/histoweave/benchmark/causal.py +529 -0
  586. histoweave_spatial-0.1.0/src/histoweave/benchmark/complexity.py +40 -0
  587. histoweave_spatial-0.1.0/src/histoweave/benchmark/decision.py +674 -0
  588. histoweave_spatial-0.1.0/src/histoweave/benchmark/digital_twin.py +260 -0
  589. histoweave_spatial-0.1.0/src/histoweave/benchmark/digital_twin_report.py +217 -0
  590. histoweave_spatial-0.1.0/src/histoweave/benchmark/donor_bootstrap.py +262 -0
  591. histoweave_spatial-0.1.0/src/histoweave/benchmark/failure_boundary.py +990 -0
  592. histoweave_spatial-0.1.0/src/histoweave/benchmark/failure_fingerprint.py +596 -0
  593. histoweave_spatial-0.1.0/src/histoweave/benchmark/features.py +449 -0
  594. histoweave_spatial-0.1.0/src/histoweave/benchmark/figure3.py +554 -0
  595. histoweave_spatial-0.1.0/src/histoweave/benchmark/harness.py +482 -0
  596. histoweave_spatial-0.1.0/src/histoweave/benchmark/independent_personalisation.py +996 -0
  597. histoweave_spatial-0.1.0/src/histoweave/benchmark/isus.py +1195 -0
  598. histoweave_spatial-0.1.0/src/histoweave/benchmark/k_selection.py +1073 -0
  599. histoweave_spatial-0.1.0/src/histoweave/benchmark/landscape.py +592 -0
  600. histoweave_spatial-0.1.0/src/histoweave/benchmark/landscape_io.py +436 -0
  601. histoweave_spatial-0.1.0/src/histoweave/benchmark/multiple_testing.py +158 -0
  602. histoweave_spatial-0.1.0/src/histoweave/benchmark/pareto.py +505 -0
  603. histoweave_spatial-0.1.0/src/histoweave/benchmark/pareto_io.py +243 -0
  604. histoweave_spatial-0.1.0/src/histoweave/benchmark/phenomenology_contracts.py +406 -0
  605. histoweave_spatial-0.1.0/src/histoweave/benchmark/phenomenology_metrics.py +555 -0
  606. histoweave_spatial-0.1.0/src/histoweave/benchmark/phenomenology_runner.py +580 -0
  607. histoweave_spatial-0.1.0/src/histoweave/benchmark/phenomenology_statistics.py +293 -0
  608. histoweave_spatial-0.1.0/src/histoweave/benchmark/phenomenology_suite.py +238 -0
  609. histoweave_spatial-0.1.0/src/histoweave/benchmark/protocol_endpoints.py +1258 -0
  610. histoweave_spatial-0.1.0/src/histoweave/benchmark/real_data.py +433 -0
  611. histoweave_spatial-0.1.0/src/histoweave/benchmark/recommend.py +871 -0
  612. histoweave_spatial-0.1.0/src/histoweave/benchmark/scaling.py +301 -0
  613. histoweave_spatial-0.1.0/src/histoweave/benchmark/sota_pipeline.py +646 -0
  614. histoweave_spatial-0.1.0/src/histoweave/benchmark/stats_review.py +382 -0
  615. histoweave_spatial-0.1.0/src/histoweave/benchmark/study_grouped.py +322 -0
  616. histoweave_spatial-0.1.0/src/histoweave/benchmark/task_contract.py +519 -0
  617. histoweave_spatial-0.1.0/src/histoweave/benchmark/uncertainty.py +230 -0
  618. histoweave_spatial-0.1.0/src/histoweave/cli.py +2664 -0
  619. histoweave_spatial-0.1.0/src/histoweave/compiler/__init__.py +208 -0
  620. histoweave_spatial-0.1.0/src/histoweave/compiler/catalog.py +28 -0
  621. histoweave_spatial-0.1.0/src/histoweave/compiler/executor.py +173 -0
  622. histoweave_spatial-0.1.0/src/histoweave/compiler/gaps.py +29 -0
  623. histoweave_spatial-0.1.0/src/histoweave/compiler/llm.py +86 -0
  624. histoweave_spatial-0.1.0/src/histoweave/compiler/prompts.py +78 -0
  625. histoweave_spatial-0.1.0/src/histoweave/compiler/schema.py +320 -0
  626. histoweave_spatial-0.1.0/src/histoweave/compiler/serialization.py +167 -0
  627. histoweave_spatial-0.1.0/src/histoweave/compiler/templates.py +195 -0
  628. histoweave_spatial-0.1.0/src/histoweave/compiler/validate.py +88 -0
  629. histoweave_spatial-0.1.0/src/histoweave/data/__init__.py +7 -0
  630. histoweave_spatial-0.1.0/src/histoweave/data/model.py +651 -0
  631. histoweave_spatial-0.1.0/src/histoweave/datasets/__init__.py +94 -0
  632. histoweave_spatial-0.1.0/src/histoweave/datasets/digital_twin.py +574 -0
  633. histoweave_spatial-0.1.0/src/histoweave/datasets/domain_mappings.json +159 -0
  634. histoweave_spatial-0.1.0/src/histoweave/datasets/histology.py +471 -0
  635. histoweave_spatial-0.1.0/src/histoweave/datasets/pathology_domains.py +184 -0
  636. histoweave_spatial-0.1.0/src/histoweave/datasets/phenomenology.py +625 -0
  637. histoweave_spatial-0.1.0/src/histoweave/datasets/real.py +942 -0
  638. histoweave_spatial-0.1.0/src/histoweave/datasets/scale_contract.py +150 -0
  639. histoweave_spatial-0.1.0/src/histoweave/datasets/synthetic.py +739 -0
  640. histoweave_spatial-0.1.0/src/histoweave/datasets/vendor.py +179 -0
  641. histoweave_spatial-0.1.0/src/histoweave/decision.py +146 -0
  642. histoweave_spatial-0.1.0/src/histoweave/federation/__init__.py +135 -0
  643. histoweave_spatial-0.1.0/src/histoweave/federation/cli_fed.py +544 -0
  644. histoweave_spatial-0.1.0/src/histoweave/federation/consensus.py +348 -0
  645. histoweave_spatial-0.1.0/src/histoweave/federation/landscape_bridge.py +162 -0
  646. histoweave_spatial-0.1.0/src/histoweave/federation/registry.py +290 -0
  647. histoweave_spatial-0.1.0/src/histoweave/federation/schema.py +538 -0
  648. histoweave_spatial-0.1.0/src/histoweave/federation/signing.py +355 -0
  649. histoweave_spatial-0.1.0/src/histoweave/federation/store.py +264 -0
  650. histoweave_spatial-0.1.0/src/histoweave/io/__init__.py +31 -0
  651. histoweave_spatial-0.1.0/src/histoweave/io/_tenx.py +164 -0
  652. histoweave_spatial-0.1.0/src/histoweave/io/base.py +36 -0
  653. histoweave_spatial-0.1.0/src/histoweave/io/bundle.py +510 -0
  654. histoweave_spatial-0.1.0/src/histoweave/io/readers.py +308 -0
  655. histoweave_spatial-0.1.0/src/histoweave/logging.py +174 -0
  656. histoweave_spatial-0.1.0/src/histoweave/plugins/__init__.py +59 -0
  657. histoweave_spatial-0.1.0/src/histoweave/plugins/builtin/__init__.py +49 -0
  658. histoweave_spatial-0.1.0/src/histoweave/plugins/builtin/_markers.py +111 -0
  659. histoweave_spatial-0.1.0/src/histoweave/plugins/builtin/_r_base.py +169 -0
  660. histoweave_spatial-0.1.0/src/histoweave/plugins/builtin/_sklearn_base.py +280 -0
  661. histoweave_spatial-0.1.0/src/histoweave/plugins/builtin/_sota_common.py +113 -0
  662. histoweave_spatial-0.1.0/src/histoweave/plugins/builtin/_validation.py +82 -0
  663. histoweave_spatial-0.1.0/src/histoweave/plugins/builtin/annotate.py +51 -0
  664. histoweave_spatial-0.1.0/src/histoweave/plugins/builtin/banksy.py +110 -0
  665. histoweave_spatial-0.1.0/src/histoweave/plugins/builtin/banksy_py.py +145 -0
  666. histoweave_spatial-0.1.0/src/histoweave/plugins/builtin/cell2location.py +241 -0
  667. histoweave_spatial-0.1.0/src/histoweave/plugins/builtin/cellpose2.py +183 -0
  668. histoweave_spatial-0.1.0/src/histoweave/plugins/builtin/celltypist.py +146 -0
  669. histoweave_spatial-0.1.0/src/histoweave/plugins/builtin/deconv.py +71 -0
  670. histoweave_spatial-0.1.0/src/histoweave/plugins/builtin/deep_learning.py +335 -0
  671. histoweave_spatial-0.1.0/src/histoweave/plugins/builtin/domains.py +72 -0
  672. histoweave_spatial-0.1.0/src/histoweave/plugins/builtin/extended_native.py +280 -0
  673. histoweave_spatial-0.1.0/src/histoweave/plugins/builtin/ingestion.py +237 -0
  674. histoweave_spatial-0.1.0/src/histoweave/plugins/builtin/integration.py +389 -0
  675. histoweave_spatial-0.1.0/src/histoweave/plugins/builtin/liana_plus.py +133 -0
  676. histoweave_spatial-0.1.0/src/histoweave/plugins/builtin/nnsvg.py +96 -0
  677. histoweave_spatial-0.1.0/src/histoweave/plugins/builtin/normalize.py +71 -0
  678. histoweave_spatial-0.1.0/src/histoweave/plugins/builtin/qc.py +100 -0
  679. histoweave_spatial-0.1.0/src/histoweave/plugins/builtin/r_demo.py +74 -0
  680. histoweave_spatial-0.1.0/src/histoweave/plugins/builtin/real_methods.py +8 -0
  681. histoweave_spatial-0.1.0/src/histoweave/plugins/builtin/release_manifest.py +409 -0
  682. histoweave_spatial-0.1.0/src/histoweave/plugins/builtin/research_context.py +734 -0
  683. histoweave_spatial-0.1.0/src/histoweave/plugins/builtin/research_preprocessing.py +443 -0
  684. histoweave_spatial-0.1.0/src/histoweave/plugins/builtin/research_spatial.py +506 -0
  685. histoweave_spatial-0.1.0/src/histoweave/plugins/builtin/scanvi.py +185 -0
  686. histoweave_spatial-0.1.0/src/histoweave/plugins/builtin/sctransform.py +110 -0
  687. histoweave_spatial-0.1.0/src/histoweave/plugins/builtin/sklearn_clustering.py +268 -0
  688. histoweave_spatial-0.1.0/src/histoweave/plugins/builtin/sota_domains.py +693 -0
  689. histoweave_spatial-0.1.0/src/histoweave/plugins/builtin/spatial_graph.py +126 -0
  690. histoweave_spatial-0.1.0/src/histoweave/plugins/builtin/spatial_svg.py +157 -0
  691. histoweave_spatial-0.1.0/src/histoweave/plugins/builtin/spatialde.py +184 -0
  692. histoweave_spatial-0.1.0/src/histoweave/plugins/builtin/virtual_st.py +497 -0
  693. histoweave_spatial-0.1.0/src/histoweave/plugins/coverage.py +196 -0
  694. histoweave_spatial-0.1.0/src/histoweave/plugins/experimental/__init__.py +1 -0
  695. histoweave_spatial-0.1.0/src/histoweave/plugins/experimental/banksy_py.py +11 -0
  696. histoweave_spatial-0.1.0/src/histoweave/plugins/interfaces.py +437 -0
  697. histoweave_spatial-0.1.0/src/histoweave/plugins/registry.py +383 -0
  698. histoweave_spatial-0.1.0/src/histoweave/report/__init__.py +14 -0
  699. histoweave_spatial-0.1.0/src/histoweave/report/report.py +208 -0
  700. histoweave_spatial-0.1.0/src/histoweave/report/svg.py +178 -0
  701. histoweave_spatial-0.1.0/src/histoweave/report/templates/report.html.j2 +289 -0
  702. histoweave_spatial-0.1.0/src/histoweave/report/vitessce_data.py +326 -0
  703. histoweave_spatial-0.1.0/src/histoweave/workflow/__init__.py +23 -0
  704. histoweave_spatial-0.1.0/src/histoweave/workflow/pipeline.py +310 -0
  705. histoweave_spatial-0.1.0/study_grouped_5slice_results/study_grouped_landscape.json +356 -0
  706. histoweave_spatial-0.1.0/study_grouped_5slice_results/study_grouped_recommendation.json +296 -0
  707. histoweave_spatial-0.1.0/study_grouped_5slice_results/study_grouped_report.md +20 -0
  708. histoweave_spatial-0.1.0/study_grouped_phaseb_results/landscape.json +447 -0
  709. histoweave_spatial-0.1.0/study_grouped_results/study_grouped_landscape.json +280 -0
  710. histoweave_spatial-0.1.0/study_grouped_results/study_grouped_recommendation.json +187 -0
  711. histoweave_spatial-0.1.0/study_grouped_results/study_grouped_report.md +21 -0
  712. histoweave_spatial-0.1.0/submission_freeze_v1/DATA_CODE_AVAILABILITY.md +135 -0
  713. histoweave_spatial-0.1.0/submission_freeze_v1/README.md +62 -0
  714. histoweave_spatial-0.1.0/submission_freeze_v1/main_figures.lock.json +120 -0
  715. histoweave_spatial-0.1.0/submission_freeze_v1/reproduce_submission_freeze.py +424 -0
  716. histoweave_spatial-0.1.0/submission_freeze_v1/submission_freeze_manifest.json +99 -0
  717. histoweave_spatial-0.1.0/submission_freeze_v1/supplement_benchmark_table.csv +7 -0
  718. histoweave_spatial-0.1.0/tests/conftest.py +38 -0
  719. histoweave_spatial-0.1.0/tests/federation_helpers.py +118 -0
  720. histoweave_spatial-0.1.0/tests/perf_baselines.json +33 -0
  721. histoweave_spatial-0.1.0/tests/test_active_calibration.py +127 -0
  722. histoweave_spatial-0.1.0/tests/test_allen_mouse_brain_preparer.py +59 -0
  723. histoweave_spatial-0.1.0/tests/test_annotate_graph_smoke.py +20 -0
  724. histoweave_spatial-0.1.0/tests/test_banksy_spatialde.py +113 -0
  725. histoweave_spatial-0.1.0/tests/test_benchmark.py +59 -0
  726. histoweave_spatial-0.1.0/tests/test_benchmark_extended.py +322 -0
  727. histoweave_spatial-0.1.0/tests/test_boundary_uncertainty.py +80 -0
  728. histoweave_spatial-0.1.0/tests/test_bundle.py +129 -0
  729. histoweave_spatial-0.1.0/tests/test_case_study_intercepted_recommendation.py +79 -0
  730. histoweave_spatial-0.1.0/tests/test_causal.py +102 -0
  731. histoweave_spatial-0.1.0/tests/test_cli.py +126 -0
  732. histoweave_spatial-0.1.0/tests/test_cli_stats_and_discovery.py +85 -0
  733. histoweave_spatial-0.1.0/tests/test_compiler.py +568 -0
  734. histoweave_spatial-0.1.0/tests/test_complexity_unit.py +16 -0
  735. histoweave_spatial-0.1.0/tests/test_core_real_method_contracts.py +209 -0
  736. histoweave_spatial-0.1.0/tests/test_cross_tissue_validation.py +81 -0
  737. histoweave_spatial-0.1.0/tests/test_data_model.py +166 -0
  738. histoweave_spatial-0.1.0/tests/test_dataset_registry.py +218 -0
  739. histoweave_spatial-0.1.0/tests/test_decision.py +325 -0
  740. histoweave_spatial-0.1.0/tests/test_digital_twin.py +97 -0
  741. histoweave_spatial-0.1.0/tests/test_dlpfc_cell2location.py +219 -0
  742. histoweave_spatial-0.1.0/tests/test_dlpfc_real.py +166 -0
  743. histoweave_spatial-0.1.0/tests/test_domains_deconv_smoke.py +27 -0
  744. histoweave_spatial-0.1.0/tests/test_donor_bootstrap.py +161 -0
  745. histoweave_spatial-0.1.0/tests/test_env_contract_unit.py +10 -0
  746. histoweave_spatial-0.1.0/tests/test_external_validation_preparers.py +428 -0
  747. histoweave_spatial-0.1.0/tests/test_failure_boundary.py +168 -0
  748. histoweave_spatial-0.1.0/tests/test_failure_fingerprint.py +97 -0
  749. histoweave_spatial-0.1.0/tests/test_features_unit.py +34 -0
  750. histoweave_spatial-0.1.0/tests/test_federation_cli.py +347 -0
  751. histoweave_spatial-0.1.0/tests/test_federation_consensus.py +133 -0
  752. histoweave_spatial-0.1.0/tests/test_federation_properties.py +76 -0
  753. histoweave_spatial-0.1.0/tests/test_federation_registry_loading.py +185 -0
  754. histoweave_spatial-0.1.0/tests/test_federation_registry_sim.py +201 -0
  755. histoweave_spatial-0.1.0/tests/test_federation_schema_signing.py +294 -0
  756. histoweave_spatial-0.1.0/tests/test_figure3.py +72 -0
  757. histoweave_spatial-0.1.0/tests/test_harmony_integration.py +99 -0
  758. histoweave_spatial-0.1.0/tests/test_harness_defaults_unit.py +16 -0
  759. histoweave_spatial-0.1.0/tests/test_harness_stats_and_k.py +60 -0
  760. histoweave_spatial-0.1.0/tests/test_histology_virtual_st_real.py +200 -0
  761. histoweave_spatial-0.1.0/tests/test_independent_personalisation.py +131 -0
  762. histoweave_spatial-0.1.0/tests/test_independent_test_wu2021.py +62 -0
  763. histoweave_spatial-0.1.0/tests/test_ingestion_methods.py +80 -0
  764. histoweave_spatial-0.1.0/tests/test_interfaces_unit.py +33 -0
  765. histoweave_spatial-0.1.0/tests/test_io_readers.py +82 -0
  766. histoweave_spatial-0.1.0/tests/test_isus.py +257 -0
  767. histoweave_spatial-0.1.0/tests/test_k_selection.py +206 -0
  768. histoweave_spatial-0.1.0/tests/test_logging_contract.py +94 -0
  769. histoweave_spatial-0.1.0/tests/test_logging_helpers_unit.py +13 -0
  770. histoweave_spatial-0.1.0/tests/test_math.py +237 -0
  771. histoweave_spatial-0.1.0/tests/test_method_coverage_expansion.py +90 -0
  772. histoweave_spatial-0.1.0/tests/test_method_docs_coverage.py +76 -0
  773. histoweave_spatial-0.1.0/tests/test_method_lifecycle.py +129 -0
  774. histoweave_spatial-0.1.0/tests/test_method_maturity_policies_unit.py +11 -0
  775. histoweave_spatial-0.1.0/tests/test_method_validation_evidence.py +135 -0
  776. histoweave_spatial-0.1.0/tests/test_methods.py +114 -0
  777. histoweave_spatial-0.1.0/tests/test_multimodal_tasks_virtual_st.py +292 -0
  778. histoweave_spatial-0.1.0/tests/test_n8_external_validation.py +41 -0
  779. histoweave_spatial-0.1.0/tests/test_nextflow_contract.py +124 -0
  780. histoweave_spatial-0.1.0/tests/test_nnsvg.py +84 -0
  781. histoweave_spatial-0.1.0/tests/test_p0_platform_hardening.py +227 -0
  782. histoweave_spatial-0.1.0/tests/test_p1_landscape_and_registry.py +171 -0
  783. histoweave_spatial-0.1.0/tests/test_p2_sota_and_scale.py +137 -0
  784. histoweave_spatial-0.1.0/tests/test_pareto.py +79 -0
  785. histoweave_spatial-0.1.0/tests/test_performance_regression.py +102 -0
  786. histoweave_spatial-0.1.0/tests/test_phenomenology_cli.py +101 -0
  787. histoweave_spatial-0.1.0/tests/test_phenomenology_contracts.py +112 -0
  788. histoweave_spatial-0.1.0/tests/test_phenomenology_metrics.py +198 -0
  789. histoweave_spatial-0.1.0/tests/test_phenomenology_runner.py +225 -0
  790. histoweave_spatial-0.1.0/tests/test_phenomenology_statistics.py +130 -0
  791. histoweave_spatial-0.1.0/tests/test_phenomenology_suite.py +87 -0
  792. histoweave_spatial-0.1.0/tests/test_phenomenology_synthetic.py +158 -0
  793. histoweave_spatial-0.1.0/tests/test_pipeline_and_report.py +132 -0
  794. histoweave_spatial-0.1.0/tests/test_pipeline_defaults_unit.py +13 -0
  795. histoweave_spatial-0.1.0/tests/test_production_wrappers.py +296 -0
  796. histoweave_spatial-0.1.0/tests/test_properties_math.py +110 -0
  797. histoweave_spatial-0.1.0/tests/test_properties_task_and_data.py +89 -0
  798. histoweave_spatial-0.1.0/tests/test_protocol_endpoints.py +298 -0
  799. histoweave_spatial-0.1.0/tests/test_provenance_unit.py +18 -0
  800. histoweave_spatial-0.1.0/tests/test_qc_normalize_smoke.py +36 -0
  801. histoweave_spatial-0.1.0/tests/test_quality_inventory.py +69 -0
  802. histoweave_spatial-0.1.0/tests/test_r_bridge.py +73 -0
  803. histoweave_spatial-0.1.0/tests/test_real_data.py +354 -0
  804. histoweave_spatial-0.1.0/tests/test_real_methods.py +193 -0
  805. histoweave_spatial-0.1.0/tests/test_recommend.py +189 -0
  806. histoweave_spatial-0.1.0/tests/test_reference_artefacts_present.py +63 -0
  807. histoweave_spatial-0.1.0/tests/test_registry.py +90 -0
  808. histoweave_spatial-0.1.0/tests/test_release_docs_and_container_contracts.py +169 -0
  809. histoweave_spatial-0.1.0/tests/test_release_manifest_unit.py +26 -0
  810. histoweave_spatial-0.1.0/tests/test_report_svg_unit.py +21 -0
  811. histoweave_spatial-0.1.0/tests/test_research_context.py +299 -0
  812. histoweave_spatial-0.1.0/tests/test_research_method_inventory.py +50 -0
  813. histoweave_spatial-0.1.0/tests/test_research_preprocessing.py +178 -0
  814. histoweave_spatial-0.1.0/tests/test_research_spatial.py +140 -0
  815. histoweave_spatial-0.1.0/tests/test_scalability.py +98 -0
  816. histoweave_spatial-0.1.0/tests/test_scale_contract_unit.py +26 -0
  817. histoweave_spatial-0.1.0/tests/test_scientific_contracts.py +48 -0
  818. histoweave_spatial-0.1.0/tests/test_selective_regret_figure.py +32 -0
  819. histoweave_spatial-0.1.0/tests/test_sota_benchmark_adapters.py +79 -0
  820. histoweave_spatial-0.1.0/tests/test_sota_common_unit.py +39 -0
  821. histoweave_spatial-0.1.0/tests/test_spatial_automl.py +169 -0
  822. histoweave_spatial-0.1.0/tests/test_spatialdata_bridge.py +87 -0
  823. histoweave_spatial-0.1.0/tests/test_stats_review.py +140 -0
  824. histoweave_spatial-0.1.0/tests/test_strict_external_panel_v2.py +58 -0
  825. histoweave_spatial-0.1.0/tests/test_study_grouped.py +90 -0
  826. histoweave_spatial-0.1.0/tests/test_submission_freeze_v1.py +57 -0
  827. histoweave_spatial-0.1.0/tests/test_svg_methods_smoke.py +15 -0
  828. histoweave_spatial-0.1.0/tests/test_svg_report.py +71 -0
  829. histoweave_spatial-0.1.0/tests/test_synthetic_generators_unit.py +24 -0
  830. histoweave_spatial-0.1.0/tests/test_task_contract_unit.py +70 -0
  831. histoweave_spatial-0.1.0/tests/test_vendor_fixtures_unit.py +20 -0
  832. histoweave_spatial-0.1.0/tests/test_vitessce_report.py +184 -0
  833. histoweave_spatial-0.1.0/tmp/maturity-cli.patch +24 -0
  834. histoweave_spatial-0.1.0/tmp/maturity-contract.patch +168 -0
  835. histoweave_spatial-0.1.0/tmp/maturity-enum.patch +59 -0
  836. histoweave_spatial-0.1.0/tmp/maturity-enum2.patch +59 -0
  837. histoweave_spatial-0.1.0/tmp/maturity-exports.patch +26 -0
  838. histoweave_spatial-0.1.0/tmp/maturity-interfaces.patch +80 -0
  839. histoweave_spatial-0.1.0/tmp/maturity-interfaces2.patch +80 -0
  840. histoweave_spatial-0.1.0/tmp/maturity-methodspec.patch +11 -0
  841. histoweave_spatial-0.1.0/tmp/maturity-registry.patch +33 -0
  842. histoweave_spatial-0.1.0/tmp/production-wrappers-wiring.patch +34 -0
  843. histoweave_spatial-0.1.0/tmp/production-wrappers-wiring2.patch +34 -0
  844. histoweave_spatial-0.1.0/tmp/recommend-smoke/knowledge.json +112 -0
  845. histoweave_spatial-0.1.0/tmp/recommend-smoke/query.ttab/X.npy +0 -0
  846. histoweave_spatial-0.1.0/tmp/recommend-smoke/query.ttab/bundle.json +49 -0
  847. histoweave_spatial-0.1.0/tmp/recommend-smoke/query.ttab/obs.parquet +0 -0
  848. histoweave_spatial-0.1.0/tmp/recommend-smoke/query.ttab/obsm/k-c3BhdGlhbA.npy +0 -0
  849. histoweave_spatial-0.1.0/tmp/recommend-smoke/query.ttab/uns.json +45 -0
  850. histoweave_spatial-0.1.0/tmp/recommend-smoke/query.ttab/var.parquet +0 -0
  851. histoweave_spatial-0.1.0/tmp/recommend-smoke/recommendation.json +93 -0
  852. histoweave_spatial-0.1.0/variance_decomposition/report_variance.md +92 -0
  853. histoweave_spatial-0.1.0/variance_decomposition/run_variance_experiment.py +268 -0
  854. histoweave_spatial-0.1.0/workflows/containers/histoweave-python/Dockerfile +48 -0
  855. histoweave_spatial-0.1.0/workflows/containers/histoweave-r/Dockerfile +49 -0
  856. histoweave_spatial-0.1.0/workflows/containers/histoweave-r/histoweave-banksy.R +103 -0
  857. histoweave_spatial-0.1.0/workflows/containers/histoweave-r/histoweave-nnsvg.R +114 -0
  858. histoweave_spatial-0.1.0/workflows/containers/histoweave-r/histoweave-r-lognorm.R +64 -0
  859. histoweave_spatial-0.1.0/workflows/containers/histoweave-r/histoweave-sctransform.R +95 -0
  860. histoweave_spatial-0.1.0/workflows/nextflow/main.nf +397 -0
  861. histoweave_spatial-0.1.0/workflows/nextflow/nextflow.config +118 -0
  862. histoweave_spatial-0.1.0/workflows/nextflow/sota.nf +139 -0
  863. histoweave_spatial-0.1.0/workflows/sota/env_contract.yaml +52 -0
@@ -0,0 +1,47 @@
1
+ # Git
2
+ .git
3
+ .gitattributes
4
+ .gitignore
5
+
6
+ # Python cache & build
7
+ __pycache__
8
+ *.pyc
9
+ *.pyo
10
+ *.egg-info
11
+ dist/
12
+ build/
13
+
14
+ # Tests, benchmarks, and generated results
15
+ .pytest_cache/
16
+ .pytest_tmp/
17
+ .tox/
18
+ htmlcov/
19
+ .coverage
20
+ 5x10_dlpfc_benchmark/
21
+ figure3_results/
22
+ study_grouped_5slice_results/
23
+ study_grouped_phaseb_results/
24
+ study_grouped_results/
25
+ work/
26
+ tmp/
27
+
28
+ # Documentation output
29
+ docs/_build/
30
+ docs/site/
31
+ site/
32
+
33
+ # IDE and local tools
34
+ .vscode/
35
+ .idea/
36
+ .claude/
37
+ .playwright-cli/
38
+ output/
39
+
40
+ # OS
41
+ .DS_Store
42
+ Thumbs.db
43
+
44
+ # Environment
45
+ .venv/
46
+ venv/
47
+ .env
@@ -0,0 +1,7 @@
1
+ * text=auto
2
+ *.svg text eol=lf
3
+ 7x15_cross_platform/dataset_features.csv text eol=lf
4
+ 7x15_cross_platform/performance_matrix_mean.csv text eol=lf
5
+ 7x15_cross_platform/platform_topography.csv text eol=lf
6
+ 7x15_cross_platform/platform_topography.json text eol=lf
7
+ 7x15_cross_platform/topography_manifest.json text eol=lf
@@ -0,0 +1,4 @@
1
+ # HistoWeave code owners — automatically assign reviewers via GitHub.
2
+ # Last match wins; global catch-all at the bottom.
3
+
4
+ * @histoweave-spatial/core
@@ -0,0 +1,20 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: pip
4
+ directory: "/"
5
+ schedule:
6
+ interval: weekly
7
+ groups:
8
+ python-dependencies:
9
+ patterns:
10
+ - "*"
11
+
12
+ - package-ecosystem: github-actions
13
+ directory: "/"
14
+ schedule:
15
+ interval: weekly
16
+
17
+ - package-ecosystem: docker
18
+ directory: "/workflows/containers"
19
+ schedule:
20
+ interval: weekly
@@ -0,0 +1,211 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ workflow_dispatch:
8
+
9
+ permissions:
10
+ contents: read
11
+
12
+ jobs:
13
+ quality_build:
14
+ name: quality and build gate
15
+ runs-on: ubuntu-latest
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+
19
+ - name: Set up Python
20
+ uses: actions/setup-python@v5
21
+ with:
22
+ python-version: "3.12"
23
+
24
+ - name: Install quality and build dependencies
25
+ run: |
26
+ python -m pip install --upgrade pip
27
+ python -m pip install -e ".[dev,docs]"
28
+ python -m pip install pip-audit
29
+
30
+ - name: Audit Python dependencies
31
+ run: python -m pip_audit
32
+
33
+ - name: Build documentation
34
+ run: mkdocs build --strict
35
+
36
+ - name: Lint
37
+ run: ruff check .
38
+
39
+ - name: Type-check
40
+ run: mypy src
41
+
42
+ - name: Quality inventory (mypy strength + test/src ratio)
43
+ run: pytest tests/test_quality_inventory.py -q
44
+
45
+ - name: Method docs cover every registered method
46
+ run: |
47
+ python scripts/generate_method_docs.py
48
+ pytest tests/test_method_docs_coverage.py tests/test_method_coverage_expansion.py -q
49
+
50
+ - name: Build distributions
51
+ run: python -m build
52
+
53
+ - name: Validate built wheel dependencies
54
+ run: |
55
+ python -m pip install --force-reinstall dist/*.whl
56
+ python -m pip check
57
+
58
+ test:
59
+ needs: quality_build
60
+ name: test (py${{ matrix.python-version }} on ${{ matrix.os }})
61
+ runs-on: ${{ matrix.os }}
62
+ strategy:
63
+ fail-fast: false
64
+ matrix:
65
+ os: [ubuntu-latest, windows-latest, macos-latest]
66
+ python-version: ["3.11", "3.12", "3.13"]
67
+ steps:
68
+ - uses: actions/checkout@v4
69
+
70
+ - name: Set up Python
71
+ uses: actions/setup-python@v5
72
+ with:
73
+ python-version: ${{ matrix.python-version }}
74
+
75
+ - name: Clean stale pytest temp dirs (Windows)
76
+ if: runner.os == 'Windows'
77
+ shell: pwsh
78
+ run: |
79
+ $toRemove = Get-ChildItem -Path "$env:USERPROFILE\AppData\Local\Temp" -Filter "pytest-*" -Directory -ErrorAction SilentlyContinue
80
+ if ($toRemove) {
81
+ $toRemove | ForEach-Object { Remove-Item -Recurse -Force $_.FullName -ErrorAction SilentlyContinue }
82
+ Write-Host "Cleaned $($toRemove.Count) stale pytest temp dir(s)"
83
+ } else {
84
+ Write-Host "No stale pytest temp dirs found"
85
+ }
86
+
87
+ - name: Install
88
+ run: |
89
+ python -m pip install --upgrade pip
90
+ python -m pip install -e ".[dev]"
91
+
92
+ - name: Test
93
+ run: pytest -m "not property and not perf" --cov=histoweave --cov-report=term-missing --cov-fail-under=79
94
+
95
+ - name: Property-based tests
96
+ run: pytest -m property -q
97
+
98
+
99
+ federation:
100
+ name: federated evidence network gate
101
+ runs-on: ubuntu-latest
102
+ needs: test
103
+ steps:
104
+ - uses: actions/checkout@v4
105
+ - uses: actions/setup-python@v5
106
+ with:
107
+ python-version: "3.12"
108
+ - name: Install federation + dev dependencies
109
+ run: |
110
+ python -m pip install --upgrade pip
111
+ python -m pip install -e ".[federation,dev]"
112
+
113
+ # 1. Federation unit + integration + property tests (isolated view).
114
+ - name: Federation test suite
115
+ run: pytest tests/test_federation_*.py -q
116
+
117
+ # 2. Every committed node registry entry must parse + validate, and the
118
+ # generated index must build. (Skeleton/index files are auto-skipped.)
119
+ - name: Validate node registry
120
+ run: |
121
+ python - <<'PY'
122
+ from histoweave.federation import load_registry, build_index
123
+ entries = load_registry("federation/nodes")
124
+ print(f"validated {len(entries)} node(s): {[e.node_id for e in entries]}")
125
+ for e in entries:
126
+ e.validate()
127
+ build_index(entries)
128
+ PY
129
+
130
+ # 3. Every committed evidence bundle must offline-verify against the registry.
131
+ - name: Verify committed evidence bundles
132
+ run: |
133
+ shopt -s nullglob
134
+ bundles=(federation/bundles/*.json)
135
+ if [ ${#bundles[@]} -eq 0 ]; then
136
+ echo "no committed bundles to verify"; exit 0
137
+ fi
138
+ for b in "${bundles[@]}"; do
139
+ echo "::group::verify $b"
140
+ histoweave fed verify "$b" --nodes-dir federation/nodes
141
+ echo "::endgroup::"
142
+ done
143
+
144
+ # 4. End-to-end dogfood: pull committed bundles -> consensus -> landscape check.
145
+ - name: Pull + consensus dry run
146
+ run: |
147
+ histoweave fed pull \
148
+ --nodes-dir federation/nodes \
149
+ --store "$RUNNER_TEMP/evidence_store.jsonl"
150
+ histoweave fed consensus \
151
+ --store "$RUNNER_TEMP/evidence_store.jsonl" \
152
+ --out "$RUNNER_TEMP/consensus.json" \
153
+ --check-landscape
154
+ histoweave fed status \
155
+ --store "$RUNNER_TEMP/evidence_store.jsonl" \
156
+ --nodes-dir federation/nodes
157
+
158
+ benchmark:
159
+ name: scientific + performance regression gates
160
+ runs-on: ubuntu-latest
161
+ needs: test
162
+ steps:
163
+ - uses: actions/checkout@v4
164
+ - uses: actions/setup-python@v5
165
+ with:
166
+ python-version: "3.12"
167
+ - name: Install benchmark dependencies
168
+ run: |
169
+ python -m pip install --upgrade pip
170
+ python -m pip install -e ".[dev]"
171
+ # Scientific accuracy gate (ARI / leaderboard).
172
+ # Oracle-K is explicit here: this gate checks method capacity when K is known.
173
+ # The default scientific protocol uses k_policy=estimate (non-oracle).
174
+ - name: Domain-detection leaderboard (oracle-K capacity gate)
175
+ run: >
176
+ histoweave benchmark --min-score 0.90 --fail-on-error
177
+ --k-policy oracle --allow-oracle-k
178
+ --out benchmark.json
179
+ - name: Non-oracle K + statistical review smoke
180
+ run: >
181
+ histoweave benchmark --k-policy estimate --stats --n-boot 50
182
+ --out benchmark_estimate_stats.json
183
+ - name: Stats review + K-selection unit tests
184
+ run: pytest tests/test_stats_review.py tests/test_k_selection.py tests/test_harness_stats_and_k.py -q
185
+ # Computational performance gate (kNN / zscore / PCA / features).
186
+ - name: Micro-benchmark performance ceilings
187
+ run: pytest -m perf -q --tb=line
188
+
189
+ - name: Freeze phenomenology capability plan
190
+ run: |
191
+ histoweave benchmark --suite phenomenology --dry-run \
192
+ --out-dir phenomenology_plan
193
+
194
+ - name: Run dependency-light phenomenology smoke
195
+ run: |
196
+ histoweave benchmark --suite phenomenology --tiny \
197
+ --phenomena compartment --conditions clean \
198
+ --methods basic_qc,log1p_cp10k,kmeans \
199
+ --fail-on-error --out-dir phenomenology_smoke
200
+
201
+ - name: Upload benchmark artifacts
202
+ if: always()
203
+ uses: actions/upload-artifact@v4
204
+ with:
205
+ name: benchmark-regression-artifacts
206
+ path: |
207
+ benchmark.json
208
+ benchmark_estimate_stats.json
209
+ phenomenology_plan/
210
+ phenomenology_smoke/
211
+ if-no-files-found: warn
@@ -0,0 +1,84 @@
1
+ name: Publish containers
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ tags: ["v*"]
7
+ paths:
8
+ - "src/**"
9
+ - "pyproject.toml"
10
+ - "workflows/containers/**"
11
+ - ".github/workflows/containers.yml"
12
+ pull_request:
13
+ paths:
14
+ - "src/**"
15
+ - "pyproject.toml"
16
+ - "workflows/containers/**"
17
+ - ".github/workflows/containers.yml"
18
+ workflow_dispatch:
19
+
20
+ permissions:
21
+ contents: read
22
+
23
+ jobs:
24
+ build-and-push:
25
+ name: Build and push ${{ matrix.name }}
26
+ runs-on: ubuntu-latest
27
+ permissions:
28
+ contents: read
29
+ packages: write
30
+ strategy:
31
+ fail-fast: false
32
+ matrix:
33
+ include:
34
+ - name: histoweave-python
35
+ context: .
36
+ dockerfile: workflows/containers/histoweave-python/Dockerfile
37
+ - name: histoweave-r
38
+ context: .
39
+ dockerfile: workflows/containers/histoweave-r/Dockerfile
40
+ steps:
41
+ - uses: actions/checkout@v4
42
+
43
+ - name: Set up Docker Buildx
44
+ uses: docker/setup-buildx-action@v3
45
+
46
+ - name: Log in to GHCR
47
+ if: github.event_name != 'pull_request'
48
+ uses: docker/login-action@v3
49
+ with:
50
+ registry: ghcr.io
51
+ username: ${{ github.actor }}
52
+ password: ${{ secrets.GITHUB_TOKEN }}
53
+
54
+ - name: Extract image metadata
55
+ id: meta
56
+ uses: docker/metadata-action@v5
57
+ with:
58
+ images: ghcr.io/${{ github.repository_owner }}/${{ matrix.name }}
59
+ tags: |
60
+ type=raw,value=latest,enable={{is_default_branch}}
61
+ type=ref,event=branch
62
+ type=ref,event=tag
63
+ type=semver,pattern={{version}}
64
+ type=semver,pattern={{major}}.{{minor}}
65
+ type=sha,prefix=sha-
66
+ labels: |
67
+ org.opencontainers.image.title=${{ matrix.name }}
68
+ org.opencontainers.image.description=HistoWeave spatial transcriptomics ${{ matrix.name }} container
69
+
70
+ - name: Build and push
71
+ uses: docker/build-push-action@v6
72
+ with:
73
+ context: ${{ matrix.context }}
74
+ file: ${{ matrix.dockerfile }}
75
+ push: ${{ github.event_name != 'pull_request' }}
76
+ tags: ${{ steps.meta.outputs.tags }}
77
+ labels: ${{ steps.meta.outputs.labels }}
78
+ build-args: |
79
+ VERSION=${{ steps.meta.outputs.version }}
80
+ REVISION=${{ github.sha }}
81
+ cache-from: type=gha,scope=${{ matrix.name }}
82
+ cache-to: type=gha,mode=max,scope=${{ matrix.name }}
83
+ provenance: mode=max
84
+ sbom: true
@@ -0,0 +1,58 @@
1
+ name: Nextflow smoke test
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ paths:
7
+ - "src/**"
8
+ - "workflows/nextflow/**"
9
+ - "pyproject.toml"
10
+ - ".github/workflows/nextflow-smoke.yml"
11
+ pull_request:
12
+ paths:
13
+ - "src/**"
14
+ - "workflows/nextflow/**"
15
+ - "pyproject.toml"
16
+ - ".github/workflows/nextflow-smoke.yml"
17
+ workflow_dispatch:
18
+
19
+ permissions:
20
+ contents: read
21
+
22
+ jobs:
23
+ smoke:
24
+ runs-on: ubuntu-latest
25
+ timeout-minutes: 20
26
+ steps:
27
+ - uses: actions/checkout@v4
28
+
29
+ - uses: actions/setup-python@v5
30
+ with:
31
+ python-version: "3.12"
32
+
33
+ - name: Install HistoWeave
34
+ run: |
35
+ python -m pip install --upgrade pip
36
+ python -m pip install -e ".[dev]"
37
+
38
+ - name: Install Nextflow
39
+ uses: nf-core/setup-nextflow@v3
40
+ with:
41
+ version: "26.04.4"
42
+
43
+ - name: Run demo pipeline
44
+ run: |
45
+ nextflow run workflows/nextflow/main.nf -profile local,test --outdir nf-smoke
46
+ test -s nf-smoke/pipeline_trace.tsv
47
+ grep -q "COMPLETED" nf-smoke/pipeline_trace.tsv
48
+ find nf-smoke -maxdepth 1 -name "*_report.html" -size +0 | grep -q .
49
+
50
+ - name: Upload smoke-test diagnostics
51
+ if: always()
52
+ uses: actions/upload-artifact@v4
53
+ with:
54
+ name: nextflow-smoke-diagnostics
55
+ path: |
56
+ .nextflow.log*
57
+ nf-smoke/
58
+ if-no-files-found: warn
@@ -0,0 +1,101 @@
1
+ name: Deploy leaderboard to GitHub Pages
2
+
3
+ on:
4
+ # Rebuild whenever anything the site depends on changes.
5
+ push:
6
+ branches: [main]
7
+ paths:
8
+ - "leaderboard/**"
9
+ - "5x15_spatial_aware/benchmark_long.csv"
10
+ - "5x10_dlpfc_benchmark/benchmark_long.csv"
11
+ - "benchmark_crossplatform/benchmark_long.csv"
12
+ - "benchmark_crossplatform/dataset_manifest.json"
13
+ # Federated evidence: refresh the site when nodes or their signed bundles change.
14
+ - "federation/nodes/**"
15
+ - "federation/bundles/**"
16
+ - "federation/consensus.json"
17
+ - ".github/workflows/pages.yml"
18
+ # Manual trigger from the Actions tab.
19
+ workflow_dispatch:
20
+
21
+ # GH Pages: one deployment in flight at a time; skip queued duplicates.
22
+ concurrency:
23
+ group: pages
24
+ cancel-in-progress: true
25
+
26
+ permissions:
27
+ contents: read
28
+ pages: write
29
+ id-token: write
30
+
31
+ jobs:
32
+ build:
33
+ runs-on: ubuntu-latest
34
+ steps:
35
+ - uses: actions/checkout@v4
36
+
37
+ - name: Set up Python
38
+ uses: actions/setup-python@v5
39
+ with:
40
+ python-version: "3.11"
41
+
42
+ # generate.py has no external dependencies beyond the stdlib + optional
43
+ # h5py; we don't install h5py here because CI has no h5ad files anyway
44
+ # and the script gracefully degrades.
45
+
46
+ # Rebuild the derived consensus view from the committed, signed evidence
47
+ # bundles so the site shows current federation status. consensus.json is
48
+ # not committed (derived, regenerable); if there are no nodes/bundles this
49
+ # is a no-op and generate.py emits the plain v2 feed.
50
+ - name: Rebuild federation consensus (if any evidence is registered)
51
+ run: |
52
+ if compgen -G "federation/bundles/*.json" > /dev/null && \
53
+ compgen -G "federation/nodes/*.json" > /dev/null; then
54
+ python -m pip install --upgrade pip
55
+ python -m pip install -e ".[federation]"
56
+ histoweave fed pull \
57
+ --nodes-dir federation/nodes \
58
+ --store "$RUNNER_TEMP/evidence_store.jsonl"
59
+ histoweave fed consensus \
60
+ --store "$RUNNER_TEMP/evidence_store.jsonl" \
61
+ --out federation/consensus.json
62
+ else
63
+ echo "no registered evidence; skipping consensus rebuild"
64
+ fi
65
+
66
+ - name: Regenerate data.json
67
+ run: python leaderboard/generate.py
68
+
69
+ - name: Prepare pages artifact
70
+ run: |
71
+ required_files=(
72
+ leaderboard/index.html
73
+ leaderboard/styles.css
74
+ leaderboard/main.js
75
+ leaderboard/data.json
76
+ leaderboard/README.md
77
+ )
78
+ for file in "${required_files[@]}"; do
79
+ if [[ ! -f "$file" ]]; then
80
+ echo "::error file=$file::Required GitHub Pages asset is missing"
81
+ exit 1
82
+ fi
83
+ done
84
+
85
+ install -d _site
86
+ cp "${required_files[@]}" _site/
87
+
88
+ - name: Upload artifact
89
+ uses: actions/upload-pages-artifact@v3
90
+ with:
91
+ path: _site
92
+
93
+ deploy:
94
+ needs: build
95
+ runs-on: ubuntu-latest
96
+ environment:
97
+ name: github-pages
98
+ url: ${{ steps.deployment.outputs.page_url }}
99
+ steps:
100
+ - id: deployment
101
+ uses: actions/deploy-pages@v4
@@ -0,0 +1,61 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+
7
+ permissions:
8
+ contents: read
9
+
10
+ jobs:
11
+ build:
12
+ name: Build distributions
13
+ runs-on: ubuntu-latest
14
+ steps:
15
+ - uses: actions/checkout@v4
16
+
17
+ - uses: actions/setup-python@v5
18
+ with:
19
+ python-version: "3.12"
20
+
21
+ - name: Verify release tag matches package version
22
+ shell: bash
23
+ run: |
24
+ package_version="$(python -c 'from pathlib import Path; import re; text=Path("src/histoweave/__init__.py").read_text(); print(re.search(r"__version__\s*=\s*\"([^\"]+)\"", text).group(1))')"
25
+ release_version="${GITHUB_REF_NAME#v}"
26
+ if [[ "$package_version" != "$release_version" ]]; then
27
+ echo "::error::Release tag $GITHUB_REF_NAME does not match package version $package_version"
28
+ exit 1
29
+ fi
30
+
31
+ - name: Build and validate distributions
32
+ run: |
33
+ python -m pip install --upgrade build twine
34
+ python -m build
35
+ python -m twine check dist/*
36
+
37
+ - name: Upload distributions
38
+ uses: actions/upload-artifact@v4
39
+ with:
40
+ name: python-package-distributions
41
+ path: dist/
42
+ if-no-files-found: error
43
+
44
+ publish:
45
+ name: Publish distributions to PyPI
46
+ needs: build
47
+ runs-on: ubuntu-latest
48
+ environment:
49
+ name: pypi
50
+ url: https://pypi.org/p/histoweave-spatial
51
+ permissions:
52
+ id-token: write
53
+ steps:
54
+ - name: Download distributions
55
+ uses: actions/download-artifact@v4
56
+ with:
57
+ name: python-package-distributions
58
+ path: dist/
59
+
60
+ - name: Publish with Trusted Publishing
61
+ uses: pypa/gh-action-pypi-publish@release/v1