bindsight 0.3.5__tar.gz → 0.3.6__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 (398) hide show
  1. {bindsight-0.3.5 → bindsight-0.3.6}/.github/ISSUE_TEMPLATE/bug_report.yml +2 -1
  2. {bindsight-0.3.5 → bindsight-0.3.6}/.github/workflows/docs.yml +3 -2
  3. {bindsight-0.3.5 → bindsight-0.3.6}/.github/workflows/release-artifacts.yml +15 -10
  4. {bindsight-0.3.5 → bindsight-0.3.6}/CHANGELOG.md +78 -0
  5. {bindsight-0.3.5 → bindsight-0.3.6}/CITATION.cff +1 -1
  6. {bindsight-0.3.5 → bindsight-0.3.6}/PKG-INFO +42 -42
  7. {bindsight-0.3.5 → bindsight-0.3.6}/README.md +41 -41
  8. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/report/web/templates/try.html.j2 +1 -1
  9. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/report/web/templates/your_data.html.j2 +1 -1
  10. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/runners/local_docker.py +7 -1
  11. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/runners/modal_runner.py +5 -5
  12. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/runners/notebook_content.py +1 -1
  13. {bindsight-0.3.5 → bindsight-0.3.6}/codemeta.json +2 -2
  14. {bindsight-0.3.5 → bindsight-0.3.6}/docs/how-to-use.md +8 -2
  15. {bindsight-0.3.5 → bindsight-0.3.6}/docs/index.md +1 -1
  16. {bindsight-0.3.5 → bindsight-0.3.6}/docs/positioning.md +2 -2
  17. {bindsight-0.3.5 → bindsight-0.3.6}/paper/README.md +1 -1
  18. {bindsight-0.3.5 → bindsight-0.3.6}/paper/biorxiv/manuscript.tex +2 -2
  19. {bindsight-0.3.5 → bindsight-0.3.6}/paper/paper.bib +1 -1
  20. {bindsight-0.3.5 → bindsight-0.3.6}/paper/paper.md +3 -3
  21. {bindsight-0.3.5 → bindsight-0.3.6}/pyproject.toml +1 -1
  22. {bindsight-0.3.5 → bindsight-0.3.6}/scripts/README.md +9 -0
  23. bindsight-0.3.6/scripts/pypi_readme.py +116 -0
  24. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_packaging_pins.py +39 -0
  25. bindsight-0.3.6/tests/test_pypi_readme.py +109 -0
  26. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_web_ui.py +84 -0
  27. {bindsight-0.3.5 → bindsight-0.3.6}/.dockerignore +0 -0
  28. {bindsight-0.3.5 → bindsight-0.3.6}/.editorconfig +0 -0
  29. {bindsight-0.3.5 → bindsight-0.3.6}/.gitattributes +0 -0
  30. {bindsight-0.3.5 → bindsight-0.3.6}/.github/CODEOWNERS +0 -0
  31. {bindsight-0.3.5 → bindsight-0.3.6}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  32. {bindsight-0.3.5 → bindsight-0.3.6}/.github/ISSUE_TEMPLATE/reproducibility.yml +0 -0
  33. {bindsight-0.3.5 → bindsight-0.3.6}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  34. {bindsight-0.3.5 → bindsight-0.3.6}/.github/dependabot.yml +0 -0
  35. {bindsight-0.3.5 → bindsight-0.3.6}/.github/workflows/ci.yml +0 -0
  36. {bindsight-0.3.5 → bindsight-0.3.6}/.github/workflows/docker.yml +0 -0
  37. {bindsight-0.3.5 → bindsight-0.3.6}/.github/workflows/draft-pdf.yml +0 -0
  38. {bindsight-0.3.5 → bindsight-0.3.6}/.github/workflows/manuscript-pdf.yml +0 -0
  39. {bindsight-0.3.5 → bindsight-0.3.6}/.gitignore +0 -0
  40. {bindsight-0.3.5 → bindsight-0.3.6}/ARCHITECTURE.md +0 -0
  41. {bindsight-0.3.5 → bindsight-0.3.6}/CODE_OF_CONDUCT.md +0 -0
  42. {bindsight-0.3.5 → bindsight-0.3.6}/CONTRIBUTING.md +0 -0
  43. {bindsight-0.3.5 → bindsight-0.3.6}/COPYRIGHT +0 -0
  44. {bindsight-0.3.5 → bindsight-0.3.6}/Dockerfile +0 -0
  45. {bindsight-0.3.5 → bindsight-0.3.6}/LICENSE +0 -0
  46. {bindsight-0.3.5 → bindsight-0.3.6}/LICENSING.md +0 -0
  47. {bindsight-0.3.5 → bindsight-0.3.6}/SECURITY.md +0 -0
  48. {bindsight-0.3.5 → bindsight-0.3.6}/SUPPORT.md +0 -0
  49. {bindsight-0.3.5 → bindsight-0.3.6}/Snakefile +0 -0
  50. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/PROVENANCE.md +0 -0
  51. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/README.md +0 -0
  52. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/RUN_ON_KAGGLE.md +0 -0
  53. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/binders.fasta +0 -0
  54. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/binders.tsv +0 -0
  55. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/build_eval_set.py +0 -0
  56. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/calibration/CALIBRATION.md +0 -0
  57. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/calibration/PRECISION.md +0 -0
  58. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/calibration/README.md +0 -0
  59. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/calibration/RESULTS.json +0 -0
  60. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/calibration/analyse.py +0 -0
  61. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/calibration/prepare_decoy_target.py +0 -0
  62. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/calibration/stage_scrambles.py +0 -0
  63. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/calibration/submit_calibration.py +0 -0
  64. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/calibration/target/Q96NY8_ig_v.pdb +0 -0
  65. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/DESIGNER_BENCHMARK.md +0 -0
  66. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/README.md +0 -0
  67. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/RESULTS.md +0 -0
  68. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/RUN_FREE_GPU.md +0 -0
  69. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/P04626_binder_0_seq0.fasta +0 -0
  70. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/P04626_binder_0_seq0_complex.cif +0 -0
  71. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/P04626_binder_0_seq1.fasta +0 -0
  72. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/P04626_binder_0_seq1_complex.cif +0 -0
  73. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/P04626_binder_1_seq0.fasta +0 -0
  74. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/P04626_binder_1_seq0_complex.cif +0 -0
  75. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/P04626_binder_1_seq1.fasta +0 -0
  76. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/P04626_binder_1_seq1_complex.cif +0 -0
  77. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/P04626_binder_2_seq0.fasta +0 -0
  78. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/P04626_binder_2_seq0_complex.cif +0 -0
  79. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/P04626_binder_2_seq1.fasta +0 -0
  80. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/P04626_binder_2_seq1_complex.cif +0 -0
  81. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/P04626_binder_3_seq0.fasta +0 -0
  82. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/P04626_binder_3_seq0_complex.cif +0 -0
  83. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/P04626_binder_3_seq1.fasta +0 -0
  84. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/P04626_binder_3_seq1_complex.cif +0 -0
  85. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/P04626_binder_4_seq0.fasta +0 -0
  86. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/P04626_binder_4_seq0_complex.cif +0 -0
  87. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/P04626_binder_4_seq1.fasta +0 -0
  88. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/P04626_binder_4_seq1_complex.cif +0 -0
  89. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/P04626_binder_5_seq0.fasta +0 -0
  90. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/P04626_binder_5_seq0_complex.cif +0 -0
  91. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/P04626_binder_5_seq1.fasta +0 -0
  92. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/P04626_binder_5_seq1_complex.cif +0 -0
  93. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/P04626_binder_6_seq0.fasta +0 -0
  94. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/P04626_binder_6_seq0_complex.cif +0 -0
  95. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/P04626_binder_6_seq1.fasta +0 -0
  96. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/P04626_binder_6_seq1_complex.cif +0 -0
  97. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/P04626_binder_7_seq0.fasta +0 -0
  98. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/P04626_binder_7_seq0_complex.cif +0 -0
  99. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/P04626_binder_7_seq1.fasta +0 -0
  100. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/P04626_binder_7_seq1_complex.cif +0 -0
  101. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/P04626_binder_8_seq0.fasta +0 -0
  102. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/P04626_binder_8_seq0_complex.cif +0 -0
  103. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/P04626_binder_8_seq1.fasta +0 -0
  104. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/P04626_binder_8_seq1_complex.cif +0 -0
  105. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/P04626_binder_9_seq0.fasta +0 -0
  106. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/P04626_binder_9_seq0_complex.cif +0 -0
  107. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/P04626_binder_9_seq1.fasta +0 -0
  108. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/P04626_binder_9_seq1_complex.cif +0 -0
  109. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/developability.tsv +0 -0
  110. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/embedding_coords.tsv +0 -0
  111. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/embedding_space.png +0 -0
  112. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/binders/metrics.jsonl +0 -0
  113. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/embed_binders.py +0 -0
  114. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/prepare_erbb2_target.py +0 -0
  115. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/results.json +0 -0
  116. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/score_developability.py +0 -0
  117. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/score_run.py +0 -0
  118. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/designer_benchmark/target/P04626_domain_IV.pdb +0 -0
  119. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/gpu_capacity/README.md +0 -0
  120. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/gpu_capacity/t4-ca9-377aa.log +0 -0
  121. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/known.tsv +0 -0
  122. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/provenance_join/README.md +0 -0
  123. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/provenance_join/SHA256SUMS +0 -0
  124. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/provenance_join/ro-crate-metadata.json +0 -0
  125. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/provenance_join/run_manifest.jsonld +0 -0
  126. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/run_designer_benchmark.py +0 -0
  127. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/run_study.py +0 -0
  128. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/sources.json +0 -0
  129. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/study/README.md +0 -0
  130. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/study/RESULTS.md +0 -0
  131. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/study/figures/outcome_classes.png +0 -0
  132. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/study/figures/surfaced_ranks.png +0 -0
  133. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/study/results.json +0 -0
  134. {bindsight-0.3.5 → bindsight-0.3.6}/benchmarks/study/run_log.json +0 -0
  135. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/README.md +0 -0
  136. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/__init__.py +0 -0
  137. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/benchmark/__init__.py +0 -0
  138. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/benchmark/core.py +0 -0
  139. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/benchmark/defaults.py +0 -0
  140. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/benchmark/designer_bench.py +0 -0
  141. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/benchmark/outcomes.py +0 -0
  142. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/benchmark/panel.py +0 -0
  143. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/benchmark/rediscovery.py +0 -0
  144. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/benchmark/statistics.py +0 -0
  145. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/benchmark/study.py +0 -0
  146. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/benchmark/study_figures.py +0 -0
  147. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/benchmark/study_report.py +0 -0
  148. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/cli.py +0 -0
  149. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/config.py +0 -0
  150. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/cost.py +0 -0
  151. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/deg/__init__.py +0 -0
  152. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/deg/pydeseq2_runner.py +0 -0
  153. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/design/__init__.py +0 -0
  154. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/design/_common.py +0 -0
  155. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/design/bindcraft.py +0 -0
  156. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/design/boltzgen.py +0 -0
  157. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/design/developability.py +0 -0
  158. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/design/embeddings.py +0 -0
  159. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/design/prescreen.py +0 -0
  160. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/design/protocol.py +0 -0
  161. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/design/rfdiff_mpnn.py +0 -0
  162. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/epitopes/__init__.py +0 -0
  163. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/epitopes/surface_bind.py +0 -0
  164. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/export/__init__.py +0 -0
  165. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/export/ro_crate.py +0 -0
  166. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/io/__init__.py +0 -0
  167. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/io/cbioportal.py +0 -0
  168. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/io/gdc.py +0 -0
  169. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/io/paths.py +0 -0
  170. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/pipelines/__init__.py +0 -0
  171. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/pipelines/caveats.py +0 -0
  172. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/pipelines/discover.py +0 -0
  173. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/pipelines/full_run.py +0 -0
  174. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/plugins.py +0 -0
  175. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/provenance/__init__.py +0 -0
  176. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/provenance/append.py +0 -0
  177. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/provenance/fragments.py +0 -0
  178. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/provenance/manifest.py +0 -0
  179. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/rank/__init__.py +0 -0
  180. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/rank/scoring.py +0 -0
  181. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/report/__init__.py +0 -0
  182. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/report/format.py +0 -0
  183. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/report/html.py +0 -0
  184. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/report/showcase.py +0 -0
  185. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/report/templates/report.css +0 -0
  186. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/report/templates/report.html.j2 +0 -0
  187. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/report/theme.py +0 -0
  188. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/report/web/__init__.py +0 -0
  189. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/report/web/app.py +0 -0
  190. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/report/web/static/binder_viewer.js +0 -0
  191. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/report/web/static/bindsight.css +0 -0
  192. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/report/web/static/charts.js +0 -0
  193. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/report/web/static/vendor/3Dmol-min.js +0 -0
  194. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/report/web/static/vendor/3Dmol.LICENSE +0 -0
  195. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/report/web/static/your_data_check.js +0 -0
  196. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/report/web/templates/base.html.j2 +0 -0
  197. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/report/web/templates/evidence.html.j2 +0 -0
  198. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/report/web/templates/overview.html.j2 +0 -0
  199. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/report/web/templates/runs.html.j2 +0 -0
  200. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/runners/__init__.py +0 -0
  201. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/runners/colab.py +0 -0
  202. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/runners/job_exec.py +0 -0
  203. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/runners/kaggle.py +0 -0
  204. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/runners/kaggle_kernel.py +0 -0
  205. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/runners/mock.py +0 -0
  206. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/runners/notebook.py +0 -0
  207. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/runners/protocol.py +0 -0
  208. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/runners/source_wheel.py +0 -0
  209. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/runners/tools.py +0 -0
  210. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/structures/__init__.py +0 -0
  211. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/structures/alphafolddb.py +0 -0
  212. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/structures/plddt.py +0 -0
  213. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/structures/topology.py +0 -0
  214. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/surfaceome/__init__.py +0 -0
  215. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/surfaceome/data/surfaceome_extended.tsv +0 -0
  216. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/surfaceome/data/surfy_offline.txt +0 -0
  217. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/surfaceome/data/surfy_v1.ensembl.tsv +0 -0
  218. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/surfaceome/data/surfy_v1.uniprot.txt +0 -0
  219. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/surfaceome/surfy.py +0 -0
  220. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/targets/__init__.py +0 -0
  221. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/targets/ensembl_uniprot.py +0 -0
  222. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/targets/gtex.py +0 -0
  223. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/targets/open_targets.py +0 -0
  224. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/validate/__init__.py +0 -0
  225. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/validate/af2_ig.py +0 -0
  226. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/validate/boltz2.py +0 -0
  227. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/validate/chai1r.py +0 -0
  228. {bindsight-0.3.5 → bindsight-0.3.6}/bindsight/validate/protocol.py +0 -0
  229. {bindsight-0.3.5 → bindsight-0.3.6}/data/surface_bind/README.md +0 -0
  230. {bindsight-0.3.5 → bindsight-0.3.6}/docs/README.md +0 -0
  231. {bindsight-0.3.5 → bindsight-0.3.6}/docs/assets/favicon.svg +0 -0
  232. {bindsight-0.3.5 → bindsight-0.3.6}/docs/assets/figures/outcome_classes.png +0 -0
  233. {bindsight-0.3.5 → bindsight-0.3.6}/docs/assets/figures/surfaced_ranks.png +0 -0
  234. {bindsight-0.3.5 → bindsight-0.3.6}/docs/assets/js/binder_viewer.js +0 -0
  235. {bindsight-0.3.5 → bindsight-0.3.6}/docs/assets/js/your_data_check.js +0 -0
  236. {bindsight-0.3.5 → bindsight-0.3.6}/docs/assets/logo.svg +0 -0
  237. {bindsight-0.3.5 → bindsight-0.3.6}/docs/assets/og-image.png +0 -0
  238. {bindsight-0.3.5 → bindsight-0.3.6}/docs/assets/structures/P04626_binder_0_seq0_complex.cif +0 -0
  239. {bindsight-0.3.5 → bindsight-0.3.6}/docs/assets/structures/P04626_binder_0_seq1_complex.cif +0 -0
  240. {bindsight-0.3.5 → bindsight-0.3.6}/docs/assets/structures/P04626_binder_1_seq0_complex.cif +0 -0
  241. {bindsight-0.3.5 → bindsight-0.3.6}/docs/assets/structures/P04626_binder_1_seq1_complex.cif +0 -0
  242. {bindsight-0.3.5 → bindsight-0.3.6}/docs/assets/structures/P04626_binder_2_seq0_complex.cif +0 -0
  243. {bindsight-0.3.5 → bindsight-0.3.6}/docs/assets/structures/P04626_binder_2_seq1_complex.cif +0 -0
  244. {bindsight-0.3.5 → bindsight-0.3.6}/docs/assets/structures/P04626_binder_3_seq0_complex.cif +0 -0
  245. {bindsight-0.3.5 → bindsight-0.3.6}/docs/assets/structures/P04626_binder_3_seq1_complex.cif +0 -0
  246. {bindsight-0.3.5 → bindsight-0.3.6}/docs/assets/structures/P04626_binder_4_seq0_complex.cif +0 -0
  247. {bindsight-0.3.5 → bindsight-0.3.6}/docs/assets/structures/P04626_binder_4_seq1_complex.cif +0 -0
  248. {bindsight-0.3.5 → bindsight-0.3.6}/docs/assets/structures/P04626_binder_5_seq0_complex.cif +0 -0
  249. {bindsight-0.3.5 → bindsight-0.3.6}/docs/assets/structures/P04626_binder_5_seq1_complex.cif +0 -0
  250. {bindsight-0.3.5 → bindsight-0.3.6}/docs/assets/structures/P04626_binder_6_seq0_complex.cif +0 -0
  251. {bindsight-0.3.5 → bindsight-0.3.6}/docs/assets/structures/P04626_binder_6_seq1_complex.cif +0 -0
  252. {bindsight-0.3.5 → bindsight-0.3.6}/docs/assets/structures/P04626_binder_7_seq0_complex.cif +0 -0
  253. {bindsight-0.3.5 → bindsight-0.3.6}/docs/assets/structures/P04626_binder_7_seq1_complex.cif +0 -0
  254. {bindsight-0.3.5 → bindsight-0.3.6}/docs/assets/structures/P04626_binder_8_seq0_complex.cif +0 -0
  255. {bindsight-0.3.5 → bindsight-0.3.6}/docs/assets/structures/P04626_binder_8_seq1_complex.cif +0 -0
  256. {bindsight-0.3.5 → bindsight-0.3.6}/docs/assets/structures/P04626_binder_9_seq0_complex.cif +0 -0
  257. {bindsight-0.3.5 → bindsight-0.3.6}/docs/assets/structures/P04626_binder_9_seq1_complex.cif +0 -0
  258. {bindsight-0.3.5 → bindsight-0.3.6}/docs/assets/vendor/3Dmol-min.js +0 -0
  259. {bindsight-0.3.5 → bindsight-0.3.6}/docs/assets/vendor/3Dmol.LICENSE +0 -0
  260. {bindsight-0.3.5 → bindsight-0.3.6}/docs/colab-design-howto.md +0 -0
  261. {bindsight-0.3.5 → bindsight-0.3.6}/docs/glossary.md +0 -0
  262. {bindsight-0.3.5 → bindsight-0.3.6}/docs/results.md +0 -0
  263. {bindsight-0.3.5 → bindsight-0.3.6}/docs/robots.txt +0 -0
  264. {bindsight-0.3.5 → bindsight-0.3.6}/docs/stylesheets/extra.css +0 -0
  265. {bindsight-0.3.5 → bindsight-0.3.6}/docs/try-your-data.md +0 -0
  266. {bindsight-0.3.5 → bindsight-0.3.6}/docs/use-cases.md +0 -0
  267. {bindsight-0.3.5 → bindsight-0.3.6}/docs/what-is-bindsight.md +0 -0
  268. {bindsight-0.3.5 → bindsight-0.3.6}/envs/README.md +0 -0
  269. {bindsight-0.3.5 → bindsight-0.3.6}/envs/constraints.txt +0 -0
  270. {bindsight-0.3.5 → bindsight-0.3.6}/envs/discover.yaml +0 -0
  271. {bindsight-0.3.5 → bindsight-0.3.6}/examples/README.md +0 -0
  272. {bindsight-0.3.5 → bindsight-0.3.6}/examples/benchmark_held_out.yaml +0 -0
  273. {bindsight-0.3.5 → bindsight-0.3.6}/examples/demo/config.yaml +0 -0
  274. {bindsight-0.3.5 → bindsight-0.3.6}/examples/provenance_join.yaml +0 -0
  275. {bindsight-0.3.5 → bindsight-0.3.6}/examples/tcga_luad.yaml +0 -0
  276. {bindsight-0.3.5 → bindsight-0.3.6}/mkdocs.yml +0 -0
  277. {bindsight-0.3.5 → bindsight-0.3.6}/overrides/main.html +0 -0
  278. {bindsight-0.3.5 → bindsight-0.3.6}/paper/LICENSE +0 -0
  279. {bindsight-0.3.5 → bindsight-0.3.6}/paper/validation/manuscript.md +0 -0
  280. {bindsight-0.3.5 → bindsight-0.3.6}/requirements.txt +0 -0
  281. {bindsight-0.3.5 → bindsight-0.3.6}/scripts/assemble_manifest.py +0 -0
  282. {bindsight-0.3.5 → bindsight-0.3.6}/scripts/build_docs_results.py +0 -0
  283. {bindsight-0.3.5 → bindsight-0.3.6}/scripts/build_surfaceome_extension.py +0 -0
  284. {bindsight-0.3.5 → bindsight-0.3.6}/scripts/build_surfy_gene_map.py +0 -0
  285. {bindsight-0.3.5 → bindsight-0.3.6}/scripts/build_surfy_list.py +0 -0
  286. {bindsight-0.3.5 → bindsight-0.3.6}/scripts/check_pinned_environment.py +0 -0
  287. {bindsight-0.3.5 → bindsight-0.3.6}/scripts/make_og_image.py +0 -0
  288. {bindsight-0.3.5 → bindsight-0.3.6}/scripts/run_deg.py +0 -0
  289. {bindsight-0.3.5 → bindsight-0.3.6}/scripts/run_design.py +0 -0
  290. {bindsight-0.3.5 → bindsight-0.3.6}/scripts/run_discover.py +0 -0
  291. {bindsight-0.3.5 → bindsight-0.3.6}/scripts/run_rank.py +0 -0
  292. {bindsight-0.3.5 → bindsight-0.3.6}/scripts/run_report.py +0 -0
  293. {bindsight-0.3.5 → bindsight-0.3.6}/scripts/run_validate.py +0 -0
  294. {bindsight-0.3.5 → bindsight-0.3.6}/tests/README.md +0 -0
  295. {bindsight-0.3.5 → bindsight-0.3.6}/tests/__init__.py +0 -0
  296. {bindsight-0.3.5 → bindsight-0.3.6}/tests/conftest.py +0 -0
  297. {bindsight-0.3.5 → bindsight-0.3.6}/tests/fixtures/embeddings/binders_esm2_t6.npy +0 -0
  298. {bindsight-0.3.5 → bindsight-0.3.6}/tests/fixtures/gtex/gtex_median_subset.gct +0 -0
  299. {bindsight-0.3.5 → bindsight-0.3.6}/tests/fixtures/plddt/AF-TEST1-F1-model_v6.cif +0 -0
  300. {bindsight-0.3.5 → bindsight-0.3.6}/tests/fixtures/surface_bind/.commit_sha +0 -0
  301. {bindsight-0.3.5 → bindsight-0.3.6}/tests/fixtures/surface_bind/sites/P04626/sites.json +0 -0
  302. {bindsight-0.3.5 → bindsight-0.3.6}/tests/fixtures/tiny_counts.tsv +0 -0
  303. {bindsight-0.3.5 → bindsight-0.3.6}/tests/fixtures/tiny_design.tsv +0 -0
  304. {bindsight-0.3.5 → bindsight-0.3.6}/tests/fixtures/topology/P04626.topology.json +0 -0
  305. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_alphafolddb_client.py +0 -0
  306. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_assemble_manifest.py +0 -0
  307. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_author_metadata_agrees.py +0 -0
  308. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_backend_capability.py +0 -0
  309. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_bare_install.py +0 -0
  310. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_benchmark.py +0 -0
  311. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_benchmark_indication.py +0 -0
  312. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_benchmark_outcomes.py +0 -0
  313. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_benchmark_panel.py +0 -0
  314. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_benchmark_statistics.py +0 -0
  315. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_benchmark_study.py +0 -0
  316. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_cache_key_scope.py +0 -0
  317. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_calibration_analysis.py +0 -0
  318. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_calibration_staging.py +0 -0
  319. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_caveats.py +0 -0
  320. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_cbioportal.py +0 -0
  321. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_cheap_profile.py +0 -0
  322. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_check_pinned_environment.py +0 -0
  323. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_cli.py +0 -0
  324. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_cli_demo_and_report.py +0 -0
  325. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_cli_doctor.py +0 -0
  326. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_config.py +0 -0
  327. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_contrast.py +0 -0
  328. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_correctness_regressions.py +0 -0
  329. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_cost.py +0 -0
  330. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_counted_self_claims.py +0 -0
  331. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_css_cascade.py +0 -0
  332. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_deg_input_validation.py +0 -0
  333. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_deg_runner.py +0 -0
  334. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_demo_e2e.py +0 -0
  335. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_design_target_chain.py +0 -0
  336. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_designer_bench.py +0 -0
  337. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_designers_validators.py +0 -0
  338. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_developability.py +0 -0
  339. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_docs_binder_viewer.py +0 -0
  340. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_docs_claims.py +0 -0
  341. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_docs_results.py +0 -0
  342. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_docs_results_generator.py +0 -0
  343. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_documented_commands.py +0 -0
  344. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_embeddings.py +0 -0
  345. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_empty_is_not_absent.py +0 -0
  346. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_ensembl_uniprot.py +0 -0
  347. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_enumerations_match_their_source.py +0 -0
  348. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_eval_set.py +0 -0
  349. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_export_ro_crate.py +0 -0
  350. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_failure_taxonomy.py +0 -0
  351. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_gdc.py +0 -0
  352. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_gpu_capacity_claim.py +0 -0
  353. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_gtex.py +0 -0
  354. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_job_exec.py +0 -0
  355. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_job_exec_retention.py +0 -0
  356. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_join_end_to_end.py +0 -0
  357. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_joss_paper_sections.py +0 -0
  358. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_kaggle_kernel.py +0 -0
  359. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_licensing_review.py +0 -0
  360. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_manifest.py +0 -0
  361. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_manuscript_pdf_workflow.py +0 -0
  362. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_manuscript_typesets.py +0 -0
  363. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_no_hosted_space.py +0 -0
  364. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_no_streamlit.py +0 -0
  365. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_no_zenodo.py +0 -0
  366. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_non_cancer_cohort.py +0 -0
  367. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_notebook_helpers.py +0 -0
  368. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_open_targets_client.py +0 -0
  369. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_package_imports.py +0 -0
  370. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_pipelines_discover.py +0 -0
  371. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_pipelines_full_run.py +0 -0
  372. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_plddt.py +0 -0
  373. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_provenance_join_artifact.py +0 -0
  374. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_published_numbers_match_artifacts.py +0 -0
  375. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_rank.py +0 -0
  376. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_rediscovery.py +0 -0
  377. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_remote_job_durability.py +0 -0
  378. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_report_failed_run.py +0 -0
  379. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_report_html.py +0 -0
  380. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_report_lazy_import.py +0 -0
  381. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_requirements_mirror.py +0 -0
  382. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_run_self_contained.py +0 -0
  383. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_runners_colab.py +0 -0
  384. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_runners_mock.py +0 -0
  385. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_runners_modal_local.py +0 -0
  386. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_runners_tools.py +0 -0
  387. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_showcase.py +0 -0
  388. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_silent_success.py +0 -0
  389. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_snakemake_dag.py +0 -0
  390. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_study_nulls.py +0 -0
  391. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_surface_bind.py +0 -0
  392. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_surfy_offline.py +0 -0
  393. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_surfy_vendored.py +0 -0
  394. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_target_chain_artifact.py +0 -0
  395. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_third_party_plugins.py +0 -0
  396. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_topology.py +0 -0
  397. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_topology_gpi.py +0 -0
  398. {bindsight-0.3.5 → bindsight-0.3.6}/tests/test_untested_ready_rows.py +0 -0
@@ -41,7 +41,7 @@ body:
41
41
  attributes:
42
42
  label: Version
43
43
  description: "Output of `bindsight --version`."
44
- placeholder: "0.3.5"
44
+ placeholder: "0.3.6"
45
45
  validations:
46
46
  required: true
47
47
 
@@ -59,6 +59,7 @@ body:
59
59
  attributes:
60
60
  label: How you installed it
61
61
  options:
62
+ - "pip install bindsight (PyPI)"
62
63
  - "git clone + pip install -e"
63
64
  - "conda/mamba from envs/discover.yaml"
64
65
  - "Docker"
@@ -1,7 +1,8 @@
1
1
  name: Docs
2
2
 
3
- # Build the mkdocs-material site and publish it to GitHub Pages.
4
- # Enable once in repo Settings → Pages → Source: "GitHub Actions".
3
+ # Build the mkdocs-material site and publish it to GitHub Pages. Pages is
4
+ # served from GitHub Actions (Settings → Pages → Source: "GitHub Actions"),
5
+ # which is what lets this deploy without a gh-pages branch.
5
6
 
6
7
  on:
7
8
  push:
@@ -1,17 +1,17 @@
1
1
  name: Release artifacts
2
2
 
3
3
  # Attach a wheel, an sdist and their SHA-256 checksums to every published
4
- # release, and — once PyPI trusted publishing is configured — upload the same
5
- # artifacts to PyPI.
4
+ # release, and upload the same two files to PyPI.
6
5
  #
7
6
  # The attach job always runs, so a release is installable without PyPI:
8
7
  # pip install https://github.com/mikhaeelatefrizk/bindsight/releases/download/<tag>/bindsight-<version>-py3-none-any.whl
9
8
  #
10
- # The PyPI job is dormant until the project is registered as a trusted publisher
11
- # (pypi.org → project → Publishing → add GitHub as a publisher with this
12
- # repository, workflow `release-artifacts.yml` and environment `pypi`). It uses
13
- # OIDC, so no API token is ever stored in this repository. Until the
14
- # `pypi` environment exists the job is skipped rather than failing.
9
+ # The PyPI job runs when the `PYPI_TRUSTED_PUBLISHING` repository variable is
10
+ # `true` and the `pypi` environment exists -- both since 0.3.5, the first
11
+ # release published there. The project is registered on PyPI as a trusted
12
+ # publisher of this repository, workflow `release-artifacts.yml`, environment
13
+ # `pypi`, so the upload is authorised by OIDC and no API token is ever stored
14
+ # in this repository. Without the variable the job is skipped, not failed.
15
15
 
16
16
  on:
17
17
  release:
@@ -31,6 +31,11 @@ jobs:
31
31
  with:
32
32
  python-version: "3.12"
33
33
  - run: python -m pip install --quiet build twine
34
+ - name: Point the README's relative links at this tag for PyPI
35
+ # PyPI renders the long description with no base URL, so every
36
+ # relative link in README.md is dead there. The checkout is rewritten
37
+ # (never committed) so the sdist and wheel carry absolute links.
38
+ run: python scripts/pypi_readme.py --write --ref "${{ github.event.release.tag_name || github.ref_name }}"
34
39
  - run: python -m build
35
40
  - name: Check metadata
36
41
  run: python -m twine check dist/*
@@ -82,7 +87,7 @@ jobs:
82
87
  # a statement of intent; a branch is not.
83
88
  #
84
89
  # This SHA is what `release/v1` points at today and what the `v1.14.2`
85
- # tag dereferences to, so pinning changes nothing now. The job is dormant
86
- # until `vars.PYPI_TRUSTED_PUBLISHING` is set, which makes now the
87
- # cheapest possible moment.
90
+ # tag dereferences to, so pinning changed nothing at the time. The job
91
+ # was dormant until `vars.PYPI_TRUSTED_PUBLISHING` was set for 0.3.5,
92
+ # which made that the cheapest possible moment.
88
93
  - uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
@@ -6,6 +6,84 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and
6
6
 
7
7
  ---
8
8
 
9
+ ## [0.3.6] - 2026-09-20
10
+
11
+ 0.3.5 published this project to PyPI for the first time, and PyPI renders a
12
+ package's long description with no base URL. Every relative link in
13
+ `README.md` is therefore dead on that project page, and PyPI does not let a
14
+ description be edited after upload. The rewrite that fixes it landed on `main`
15
+ an hour after the tag, so only a release can carry it to the page a reader
16
+ actually lands on. That is what this one is for.
17
+
18
+ ### Fixed — the local GPU runner pulled an image nothing publishes
19
+
20
+ `LocalDockerRunner` defaulted to `ghcr.io/mikhaeelatefrizk/bindsight:dev`.
21
+ No workflow has ever pushed a `:dev` tag: `docker.yml` publishes `latest`,
22
+ one tag per commit SHA, and one per release. `docs/how-to-use.md` lists
23
+ `local_docker` beside `modal` and `kaggle` as a backend a reader can pick,
24
+ so following the documentation into Docker mode ended at a pull that could
25
+ not succeed — and had never been able to.
26
+
27
+ It defaults to `:latest` now, which is the only tag always published. A
28
+ moving tag is safe here in a way it is not for a CI action: the image carries
29
+ its own bindsight and runs it, and `pipelines.full_run._container_ref`
30
+ records the resolved *digest* in the manifest rather than the tag, for exactly
31
+ this reason — "a manifest must not claim an image identity it could not
32
+ verify, and a tag is not one". The published tags are now read out of the
33
+ workflow by a test rather than repeated in one, so renaming one fails loudly.
34
+
35
+ ### Fixed — two headings that closed a tag they did not open
36
+
37
+ `try.html.j2` and `your_data.html.j2` opened `<h2 class="card__title">` and
38
+ closed `</h3>`. The `h2` was itself a fix: both pages had gone from `<h1>`
39
+ straight to `<h3>`, which tells a screen reader a section was skipped, and the
40
+ level had been chosen by what the class made it look like rather than by where
41
+ it sat. The repair changed the opening tag and left the closing one, which
42
+ every browser silently puts right -- so the rendered document was correct, the
43
+ markup was not, and nothing failed either way.
44
+
45
+ Several modules already parse these templates: for inline scripts, for
46
+ colours, for chart specifications. None looked at heading structure, which is
47
+ why the skip got in and why the mismatch that replaced it got in too. Two
48
+ rules now do, over every `.j2` under `bindsight/report/` found by globbing
49
+ rather than by a list: a heading closes the tag it opened, and no page jumps a
50
+ level. Shown red three ways -- the closing tag drifted back, the title demoted
51
+ to recreate the original skip, and the glob pointed at an empty directory to
52
+ prove the sweep is reading anything at all.
53
+
54
+ ### Changed — installed from PyPI
55
+
56
+ 0.3.5 is the first release published to PyPI. `release-artifacts.yml`'s `pypi`
57
+ job ran on the `release: published` event under trusted publishing, and the
58
+ two files it uploaded are the wheel and sdist attached to the release: PyPI's
59
+ SHA-256 digests equal the release's `SHA256SUMS`. The install instructions
60
+ say `pip install` now, with the checkout form kept for development. The
61
+ runners that install bindsight into a remote image or a generated notebook
62
+ keep installing from this repository, so a remote runs the caller's checkout
63
+ rather than the last published release; their comments say that instead of
64
+ "not on PyPI".
65
+
66
+ ### Fixed — what a thirteen-way visitor sweep found
67
+
68
+ Thirteen readers went through the tree, the release page, PyPI, the container
69
+ registry and the documentation site as a visiting department head would, with
70
+ two skeptics refuting each finding. Four stood. PyPI renders a package's long
71
+ description with no base URL, so all 65 relative links in `README.md` are
72
+ dead on the 0.3.5 project page; `scripts/pypi_readme.py` now points them at
73
+ the release tag on GitHub before `release-artifacts.yml` builds the wheel and
74
+ sdist, the tree's README keeps its relative links so GitHub renders them, and
75
+ `tests/test_pypi_readme.py` holds both halves and the step order. The 0.3.5
76
+ page itself cannot be re-rendered: PyPI does not let a description be edited
77
+ after upload. `docs.yml` said Pages had yet to be enabled, three months after
78
+ it was. `paper.md` names Modal and now cites it; the 0.3.5 entry said the
79
+ `Modal` bibliography entry stayed uncited on purpose, and this reverses that.
80
+ And that entry omitted one change the release carried: `bindsight/io/gdc.py`'s
81
+ docstring pointed at a TCGA publication-guidelines page that no longer
82
+ exists, and 14d2bf1 replaced it with the current one. A PyPI badge joins the
83
+ README's badge row.
84
+
85
+ ---
86
+
9
87
  ## [0.3.5] - 2026-09-20
10
88
 
11
89
  0.3.4 is the current release, and its web interface renders every page with
@@ -38,5 +38,5 @@ keywords:
38
38
  - RO-Crate
39
39
  - target-discovery
40
40
  - cancer-immunotherapy
41
- version: 0.3.5
41
+ version: 0.3.6
42
42
  date-released: "2026-09-20"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: bindsight
3
- Version: 0.3.5
3
+ Version: 0.3.6
4
4
  Summary: A reproducible bridge from RNA-seq to de novo protein binder design, with end-to-end provenance.
5
5
  Project-URL: Homepage, https://mikhaeelatefrizk.github.io/bindsight/
6
6
  Project-URL: Documentation, https://mikhaeelatefrizk.github.io/bindsight/
@@ -94,7 +94,8 @@ Description-Content-Type: text/markdown
94
94
  > it came from.
95
95
 
96
96
  [![CI](https://github.com/mikhaeelatefrizk/bindsight/actions/workflows/ci.yml/badge.svg)](https://github.com/mikhaeelatefrizk/bindsight/actions/workflows/ci.yml)
97
- [![License: AGPL v3](https://img.shields.io/badge/License-AGPL_v3-blue.svg)](LICENSE)
97
+ [![PyPI](https://img.shields.io/pypi/v/bindsight.svg)](https://pypi.org/project/bindsight/)
98
+ [![License: AGPL v3](https://img.shields.io/badge/License-AGPL_v3-blue.svg)](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/LICENSE)
98
99
  [![Python: 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
99
100
  [![Workflow: Snakemake](https://img.shields.io/badge/workflow-Snakemake-brightgreen.svg)](https://snakemake.github.io/)
100
101
 
@@ -115,15 +116,15 @@ an account, or a GPU to read.
115
116
  | **Run it in five minutes** | [Install](#install), then `bindsight demo` |
116
117
  | **See what it has and has not shown** | [What the evidence says](#what-the-evidence-says) |
117
118
  | **Reproduce a published number** | [Reproducing the results](#reproducing-the-results) |
118
- | **Understand how it works** | [ARCHITECTURE.md](ARCHITECTURE.md) |
119
- | **Read the study** | [`benchmarks/study/`](benchmarks/study/) · [write-up](paper/validation/manuscript.md) |
120
- | **Read the control that withdrew a headline** | [`benchmarks/calibration/`](benchmarks/calibration/) |
121
- | **See the provenance chain, run end to end** | [`benchmarks/provenance_join/`](benchmarks/provenance_join/) |
119
+ | **Understand how it works** | [ARCHITECTURE.md](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/ARCHITECTURE.md) |
120
+ | **Read the study** | [`benchmarks/study/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/benchmarks/study) · [write-up](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/paper/validation/manuscript.md) |
121
+ | **Read the control that withdrew a headline** | [`benchmarks/calibration/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/benchmarks/calibration) |
122
+ | **See the provenance chain, run end to end** | [`benchmarks/provenance_join/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/benchmarks/provenance_join) |
122
123
  | **Find your way around the code** | [Repository map](#repository-map) |
123
124
  | **Use your own data** | [Scope — what it accepts](#scope--what-it-accepts) |
124
- | **Design binders on a free GPU** | [`RUN_FREE_GPU.md`](benchmarks/designer_benchmark/RUN_FREE_GPU.md) |
125
- | **Look up a term** (PROV-O, RO-Crate, ipTM, PAE-int…) | [Glossary](docs/glossary.md) |
126
- | **Contribute** | [CONTRIBUTING.md](CONTRIBUTING.md) |
125
+ | **Design binders on a free GPU** | [`RUN_FREE_GPU.md`](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/benchmarks/designer_benchmark/RUN_FREE_GPU.md) |
126
+ | **Look up a term** (PROV-O, RO-Crate, ipTM, PAE-int…) | [Glossary](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/docs/glossary.md) |
127
+ | **Contribute** | [CONTRIBUTING.md](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/CONTRIBUTING.md) |
127
128
  | **Cite it** | [Citation](#citation) |
128
129
 
129
130
  ---
@@ -133,12 +134,11 @@ an account, or a GPU to read.
133
134
  One command, one way. Python 3.11+, Windows / macOS / Linux, CPU only.
134
135
 
135
136
  ```bash
136
- git clone https://github.com/mikhaeelatefrizk/bindsight.git
137
- cd bindsight
138
- pip install -e ".[discover,report]"
137
+ pip install "bindsight[discover,report]"
139
138
  ```
140
139
 
141
- Add `dev` if you intend to run the tests (`pip install -e ".[dev,discover,report]"`),
140
+ From a checkout, `pip install -e ".[discover,report]"` instead. Add `dev` if you
141
+ intend to run the tests (`pip install -e ".[dev,discover,report]"`),
142
142
  and `runners` if you intend to send work to a GPU backend. Conda users can build the
143
143
  same dependency set first with `mamba env create -f envs/discover.yaml`.
144
144
 
@@ -208,7 +208,7 @@ stated as such: at rank 20 it is 1 of 17 on approved-agent antigens (95% CI
208
208
  0.01–0.27). Most clinically validated antigens are simply not significantly
209
209
  over-expressed in an unstratified bulk contrast.
210
210
 
211
- → [`benchmarks/study/RESULTS.md`](benchmarks/study/RESULTS.md) · [write-up](paper/validation/manuscript.md)
211
+ → [`benchmarks/study/RESULTS.md`](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/benchmarks/study/RESULTS.md) · [write-up](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/paper/validation/manuscript.md)
212
212
 
213
213
  ### The design half
214
214
 
@@ -227,7 +227,7 @@ page does not quote it as one. The ipTM values are real Boltz-2 outputs; what do
227
227
  not follow is that the rate measures the designs. The control's predictions were
228
228
  written down before its data arrived.
229
229
 
230
- → [`benchmarks/calibration/`](benchmarks/calibration/) · [`benchmarks/designer_benchmark/`](benchmarks/designer_benchmark/)
230
+ → [`benchmarks/calibration/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/benchmarks/calibration) · [`benchmarks/designer_benchmark/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/benchmarks/designer_benchmark)
231
231
 
232
232
  ### The join
233
233
 
@@ -238,7 +238,7 @@ carried through to 40 designs and a walkable PROV-O graph. The committed manifes
238
238
  lets you verify the first three steps of that walk from this clone; the rest needs
239
239
  the crate rebuilt, and that directory says so precisely.
240
240
 
241
- → [`benchmarks/provenance_join/`](benchmarks/provenance_join/)
241
+ → [`benchmarks/provenance_join/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/benchmarks/provenance_join)
242
242
 
243
243
  ### What has not been done
244
244
 
@@ -256,7 +256,7 @@ the crate rebuilt, and that directory says so precisely.
256
256
  The pipeline takes a **counts matrix** and a **sample design table** naming a
257
257
  two-level factor, and contrasts those two levels. Nothing on that path knows about
258
258
  cancer. `tumor` and `normal` are values you supply, not values the code expects:
259
- [`tests/test_non_cancer_cohort.py`](tests/test_non_cancer_cohort.py) drives the whole
259
+ [`tests/test_non_cancer_cohort.py`](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/tests/test_non_cancer_cohort.py) drives the whole
260
260
  documented path on a drug-versus-vehicle experiment paired within donor, with no
261
261
  oncology vocabulary anywhere, and asserts that none leaks into the provenance
262
262
  manifest.
@@ -372,7 +372,7 @@ python benchmarks/run_study.py --score-only # re-scores what is already on d
372
372
 
373
373
  `score_run.py` is a scorer, not a runner: it consumes the archive a GPU run
374
374
  produces. The full chain is in
375
- [`RUN_FREE_GPU.md`](benchmarks/designer_benchmark/RUN_FREE_GPU.md), which runs on a
375
+ [`RUN_FREE_GPU.md`](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/benchmarks/designer_benchmark/RUN_FREE_GPU.md), which runs on a
376
376
  free Kaggle T4.
377
377
 
378
378
  ```bash
@@ -390,32 +390,32 @@ python benchmarks/designer_benchmark/score_run.py <out_dir>/<id>.tar.gz \
390
390
  ## Repository map
391
391
 
392
392
  Each top-level area carries its own `README.md` explaining what is in it and
393
- why — [`bindsight/`](bindsight/), [`tests/`](tests/), [`scripts/`](scripts/),
394
- [`benchmarks/`](benchmarks/) and each benchmark under it, [`docs/`](docs/),
395
- [`examples/`](examples/), [`envs/`](envs/) and [`paper/`](paper/). Package
393
+ why — [`bindsight/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/bindsight), [`tests/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/tests), [`scripts/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/scripts),
394
+ [`benchmarks/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/benchmarks) and each benchmark under it, [`docs/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/docs),
395
+ [`examples/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/examples), [`envs/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/envs) and [`paper/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/paper). Package
396
396
  subdirectories are documented in the table below rather than individually.
397
397
 
398
398
  | Path | What it holds |
399
399
  |---|---|
400
- | [`bindsight/`](bindsight/) | The Python package — [`io`](bindsight/io/), [`deg`](bindsight/deg/), [`targets`](bindsight/targets/), [`surfaceome`](bindsight/surfaceome/), [`structures`](bindsight/structures/), [`epitopes`](bindsight/epitopes/), [`design`](bindsight/design/), [`runners`](bindsight/runners/), [`validate`](bindsight/validate/), [`rank`](bindsight/rank/), [`benchmark`](bindsight/benchmark/), [`pipelines`](bindsight/pipelines/), [`provenance`](bindsight/provenance/), [`export`](bindsight/export/), [`report`](bindsight/report/) |
401
- | [`benchmarks/`](benchmarks/) | All the evidence — the [study](benchmarks/study/), the [calibration control](benchmarks/calibration/), the [designer benchmark](benchmarks/designer_benchmark/), the [provenance join](benchmarks/provenance_join/), and the held-out antigen set |
402
- | [`tests/`](tests/) | 2,000+ tests. Many are guards on published claims, not on code |
403
- | [`paper/`](paper/) | JOSS and bioRxiv manuscripts, and the validation write-up |
404
- | [`docs/`](docs/) | Long-form documentation (mkdocs-material source) |
405
- | [`examples/`](examples/) | Runnable pipeline configs |
406
- | [`envs/`](envs/) | Conda environment for the discovery half, with pinned constraints |
407
- | [`scripts/`](scripts/) | Generators for vendored data and published pages |
408
- | [`.github/workflows/`](.github/workflows/) | CI, docs, docker, release artifacts, and the two paper PDFs |
400
+ | [`bindsight/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/bindsight) | The Python package — [`io`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/bindsight/io), [`deg`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/bindsight/deg), [`targets`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/bindsight/targets), [`surfaceome`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/bindsight/surfaceome), [`structures`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/bindsight/structures), [`epitopes`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/bindsight/epitopes), [`design`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/bindsight/design), [`runners`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/bindsight/runners), [`validate`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/bindsight/validate), [`rank`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/bindsight/rank), [`benchmark`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/bindsight/benchmark), [`pipelines`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/bindsight/pipelines), [`provenance`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/bindsight/provenance), [`export`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/bindsight/export), [`report`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/bindsight/report) |
401
+ | [`benchmarks/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/benchmarks) | All the evidence — the [study](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/benchmarks/study), the [calibration control](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/benchmarks/calibration), the [designer benchmark](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/benchmarks/designer_benchmark), the [provenance join](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/benchmarks/provenance_join), and the held-out antigen set |
402
+ | [`tests/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/tests) | 2,000+ tests. Many are guards on published claims, not on code |
403
+ | [`paper/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/paper) | JOSS and bioRxiv manuscripts, and the validation write-up |
404
+ | [`docs/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/docs) | Long-form documentation (mkdocs-material source) |
405
+ | [`examples/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/examples) | Runnable pipeline configs |
406
+ | [`envs/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/envs) | Conda environment for the discovery half, with pinned constraints |
407
+ | [`scripts/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/scripts) | Generators for vendored data and published pages |
408
+ | [`.github/workflows/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/.github/workflows) | CI, docs, docker, release artifacts, and the two paper PDFs |
409
409
 
410
410
  | File | What it is |
411
411
  |---|---|
412
- | [ARCHITECTURE.md](ARCHITECTURE.md) | The architectural source of truth |
413
- | [CHANGELOG.md](CHANGELOG.md) | Per-version changes |
414
- | [CONTRIBUTING.md](CONTRIBUTING.md) | Dev setup, testing, commit conventions |
415
- | [LICENSING.md](LICENSING.md) | Per-dependency licence inventory and commercial-use guidance |
416
- | [SECURITY.md](SECURITY.md) | How to report a vulnerability |
417
- | [CITATION.cff](CITATION.cff) | Citation metadata |
418
- | [Snakefile](Snakefile) | The Snakemake DAG front-end |
412
+ | [ARCHITECTURE.md](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/ARCHITECTURE.md) | The architectural source of truth |
413
+ | [CHANGELOG.md](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/CHANGELOG.md) | Per-version changes |
414
+ | [CONTRIBUTING.md](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/CONTRIBUTING.md) | Dev setup, testing, commit conventions |
415
+ | [LICENSING.md](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/LICENSING.md) | Per-dependency licence inventory and commercial-use guidance |
416
+ | [SECURITY.md](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/SECURITY.md) | How to report a vulnerability |
417
+ | [CITATION.cff](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/CITATION.cff) | Citation metadata |
418
+ | [Snakefile](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/Snakefile) | The Snakemake DAG front-end |
419
419
 
420
420
  ---
421
421
 
@@ -441,14 +441,14 @@ subdirectories are documented in the table below rather than individually.
441
441
  | Citability | Code dump | Tagged releases with SHA-256 checksums, JSON-Schema-validated outputs |
442
442
 
443
443
  For the full landscape comparison, see
444
- [ARCHITECTURE.md § 8](ARCHITECTURE.md#8-comparison-vs-existing-tools).
444
+ [ARCHITECTURE.md § 8](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/ARCHITECTURE.md#8-comparison-vs-existing-tools).
445
445
 
446
446
  ---
447
447
 
448
448
  ## Acknowledgments
449
449
 
450
450
  bindsight is an opinionated wrapper. Real intellectual credit belongs to the upstream
451
- tool authors. See [LICENSING.md](LICENSING.md) for the full inventory; the work this
451
+ tool authors. See [LICENSING.md](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/LICENSING.md) for the full inventory; the work this
452
452
  builds on most directly:
453
453
 
454
454
  - [SURFACE-Bind](https://github.com/hamedkhakzad/SURFACE-Bind) (Balbi et al., PNAS 2026) — the targetable-sites catalog that makes the bridge tractable
@@ -468,7 +468,7 @@ and the checksums attached to the release, plus the author:
468
468
  > novo protein binder design* (version X.Y.Z).
469
469
  > <https://github.com/mikhaeelatefrizk/bindsight>
470
470
 
471
- Citation metadata also lives in [CITATION.cff](CITATION.cff); GitHub's "Cite this
471
+ Citation metadata also lives in [CITATION.cff](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/CITATION.cff); GitHub's "Cite this
472
472
  repository" button generates BibTeX and APA from it. Every release attaches a
473
473
  wheel, an sdist and a `SHA256SUMS` file, and every image is digest-pinned, so
474
474
  the artifacts behind a version are checkable even though the version has no
@@ -487,9 +487,9 @@ independent researcher in Cairo, Egypt.
487
487
 
488
488
  ## License
489
489
 
490
- - **Code:** [GNU AGPL-3.0-or-later](LICENSE) — copyright notice in [COPYRIGHT](COPYRIGHT). You may use, study, modify, and
490
+ - **Code:** [GNU AGPL-3.0-or-later](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/LICENSE) — copyright notice in [COPYRIGHT](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/COPYRIGHT). You may use, study, modify, and
491
491
  redistribute bindsight freely; if you distribute a modified version **or run it as
492
492
  a network service**, you must make your source available under the same licence,
493
- with attribution preserved. See [LICENSING.md](LICENSING.md) for component-level
493
+ with attribution preserved. See [LICENSING.md](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/LICENSING.md) for component-level
494
494
  details — bindsight orchestrates external tools that keep their own licences, and
495
495
  some carry non-commercial terms.
@@ -6,7 +6,8 @@
6
6
  > it came from.
7
7
 
8
8
  [![CI](https://github.com/mikhaeelatefrizk/bindsight/actions/workflows/ci.yml/badge.svg)](https://github.com/mikhaeelatefrizk/bindsight/actions/workflows/ci.yml)
9
- [![License: AGPL v3](https://img.shields.io/badge/License-AGPL_v3-blue.svg)](LICENSE)
9
+ [![PyPI](https://img.shields.io/pypi/v/bindsight.svg)](https://pypi.org/project/bindsight/)
10
+ [![License: AGPL v3](https://img.shields.io/badge/License-AGPL_v3-blue.svg)](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/LICENSE)
10
11
  [![Python: 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
11
12
  [![Workflow: Snakemake](https://img.shields.io/badge/workflow-Snakemake-brightgreen.svg)](https://snakemake.github.io/)
12
13
 
@@ -27,15 +28,15 @@ an account, or a GPU to read.
27
28
  | **Run it in five minutes** | [Install](#install), then `bindsight demo` |
28
29
  | **See what it has and has not shown** | [What the evidence says](#what-the-evidence-says) |
29
30
  | **Reproduce a published number** | [Reproducing the results](#reproducing-the-results) |
30
- | **Understand how it works** | [ARCHITECTURE.md](ARCHITECTURE.md) |
31
- | **Read the study** | [`benchmarks/study/`](benchmarks/study/) · [write-up](paper/validation/manuscript.md) |
32
- | **Read the control that withdrew a headline** | [`benchmarks/calibration/`](benchmarks/calibration/) |
33
- | **See the provenance chain, run end to end** | [`benchmarks/provenance_join/`](benchmarks/provenance_join/) |
31
+ | **Understand how it works** | [ARCHITECTURE.md](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/ARCHITECTURE.md) |
32
+ | **Read the study** | [`benchmarks/study/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/benchmarks/study) · [write-up](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/paper/validation/manuscript.md) |
33
+ | **Read the control that withdrew a headline** | [`benchmarks/calibration/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/benchmarks/calibration) |
34
+ | **See the provenance chain, run end to end** | [`benchmarks/provenance_join/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/benchmarks/provenance_join) |
34
35
  | **Find your way around the code** | [Repository map](#repository-map) |
35
36
  | **Use your own data** | [Scope — what it accepts](#scope--what-it-accepts) |
36
- | **Design binders on a free GPU** | [`RUN_FREE_GPU.md`](benchmarks/designer_benchmark/RUN_FREE_GPU.md) |
37
- | **Look up a term** (PROV-O, RO-Crate, ipTM, PAE-int…) | [Glossary](docs/glossary.md) |
38
- | **Contribute** | [CONTRIBUTING.md](CONTRIBUTING.md) |
37
+ | **Design binders on a free GPU** | [`RUN_FREE_GPU.md`](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/benchmarks/designer_benchmark/RUN_FREE_GPU.md) |
38
+ | **Look up a term** (PROV-O, RO-Crate, ipTM, PAE-int…) | [Glossary](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/docs/glossary.md) |
39
+ | **Contribute** | [CONTRIBUTING.md](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/CONTRIBUTING.md) |
39
40
  | **Cite it** | [Citation](#citation) |
40
41
 
41
42
  ---
@@ -45,12 +46,11 @@ an account, or a GPU to read.
45
46
  One command, one way. Python 3.11+, Windows / macOS / Linux, CPU only.
46
47
 
47
48
  ```bash
48
- git clone https://github.com/mikhaeelatefrizk/bindsight.git
49
- cd bindsight
50
- pip install -e ".[discover,report]"
49
+ pip install "bindsight[discover,report]"
51
50
  ```
52
51
 
53
- Add `dev` if you intend to run the tests (`pip install -e ".[dev,discover,report]"`),
52
+ From a checkout, `pip install -e ".[discover,report]"` instead. Add `dev` if you
53
+ intend to run the tests (`pip install -e ".[dev,discover,report]"`),
54
54
  and `runners` if you intend to send work to a GPU backend. Conda users can build the
55
55
  same dependency set first with `mamba env create -f envs/discover.yaml`.
56
56
 
@@ -120,7 +120,7 @@ stated as such: at rank 20 it is 1 of 17 on approved-agent antigens (95% CI
120
120
  0.01–0.27). Most clinically validated antigens are simply not significantly
121
121
  over-expressed in an unstratified bulk contrast.
122
122
 
123
- → [`benchmarks/study/RESULTS.md`](benchmarks/study/RESULTS.md) · [write-up](paper/validation/manuscript.md)
123
+ → [`benchmarks/study/RESULTS.md`](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/benchmarks/study/RESULTS.md) · [write-up](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/paper/validation/manuscript.md)
124
124
 
125
125
  ### The design half
126
126
 
@@ -139,7 +139,7 @@ page does not quote it as one. The ipTM values are real Boltz-2 outputs; what do
139
139
  not follow is that the rate measures the designs. The control's predictions were
140
140
  written down before its data arrived.
141
141
 
142
- → [`benchmarks/calibration/`](benchmarks/calibration/) · [`benchmarks/designer_benchmark/`](benchmarks/designer_benchmark/)
142
+ → [`benchmarks/calibration/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/benchmarks/calibration) · [`benchmarks/designer_benchmark/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/benchmarks/designer_benchmark)
143
143
 
144
144
  ### The join
145
145
 
@@ -150,7 +150,7 @@ carried through to 40 designs and a walkable PROV-O graph. The committed manifes
150
150
  lets you verify the first three steps of that walk from this clone; the rest needs
151
151
  the crate rebuilt, and that directory says so precisely.
152
152
 
153
- → [`benchmarks/provenance_join/`](benchmarks/provenance_join/)
153
+ → [`benchmarks/provenance_join/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/benchmarks/provenance_join)
154
154
 
155
155
  ### What has not been done
156
156
 
@@ -168,7 +168,7 @@ the crate rebuilt, and that directory says so precisely.
168
168
  The pipeline takes a **counts matrix** and a **sample design table** naming a
169
169
  two-level factor, and contrasts those two levels. Nothing on that path knows about
170
170
  cancer. `tumor` and `normal` are values you supply, not values the code expects:
171
- [`tests/test_non_cancer_cohort.py`](tests/test_non_cancer_cohort.py) drives the whole
171
+ [`tests/test_non_cancer_cohort.py`](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/tests/test_non_cancer_cohort.py) drives the whole
172
172
  documented path on a drug-versus-vehicle experiment paired within donor, with no
173
173
  oncology vocabulary anywhere, and asserts that none leaks into the provenance
174
174
  manifest.
@@ -284,7 +284,7 @@ python benchmarks/run_study.py --score-only # re-scores what is already on d
284
284
 
285
285
  `score_run.py` is a scorer, not a runner: it consumes the archive a GPU run
286
286
  produces. The full chain is in
287
- [`RUN_FREE_GPU.md`](benchmarks/designer_benchmark/RUN_FREE_GPU.md), which runs on a
287
+ [`RUN_FREE_GPU.md`](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/benchmarks/designer_benchmark/RUN_FREE_GPU.md), which runs on a
288
288
  free Kaggle T4.
289
289
 
290
290
  ```bash
@@ -302,32 +302,32 @@ python benchmarks/designer_benchmark/score_run.py <out_dir>/<id>.tar.gz \
302
302
  ## Repository map
303
303
 
304
304
  Each top-level area carries its own `README.md` explaining what is in it and
305
- why — [`bindsight/`](bindsight/), [`tests/`](tests/), [`scripts/`](scripts/),
306
- [`benchmarks/`](benchmarks/) and each benchmark under it, [`docs/`](docs/),
307
- [`examples/`](examples/), [`envs/`](envs/) and [`paper/`](paper/). Package
305
+ why — [`bindsight/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/bindsight), [`tests/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/tests), [`scripts/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/scripts),
306
+ [`benchmarks/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/benchmarks) and each benchmark under it, [`docs/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/docs),
307
+ [`examples/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/examples), [`envs/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/envs) and [`paper/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/paper). Package
308
308
  subdirectories are documented in the table below rather than individually.
309
309
 
310
310
  | Path | What it holds |
311
311
  |---|---|
312
- | [`bindsight/`](bindsight/) | The Python package — [`io`](bindsight/io/), [`deg`](bindsight/deg/), [`targets`](bindsight/targets/), [`surfaceome`](bindsight/surfaceome/), [`structures`](bindsight/structures/), [`epitopes`](bindsight/epitopes/), [`design`](bindsight/design/), [`runners`](bindsight/runners/), [`validate`](bindsight/validate/), [`rank`](bindsight/rank/), [`benchmark`](bindsight/benchmark/), [`pipelines`](bindsight/pipelines/), [`provenance`](bindsight/provenance/), [`export`](bindsight/export/), [`report`](bindsight/report/) |
313
- | [`benchmarks/`](benchmarks/) | All the evidence — the [study](benchmarks/study/), the [calibration control](benchmarks/calibration/), the [designer benchmark](benchmarks/designer_benchmark/), the [provenance join](benchmarks/provenance_join/), and the held-out antigen set |
314
- | [`tests/`](tests/) | 2,000+ tests. Many are guards on published claims, not on code |
315
- | [`paper/`](paper/) | JOSS and bioRxiv manuscripts, and the validation write-up |
316
- | [`docs/`](docs/) | Long-form documentation (mkdocs-material source) |
317
- | [`examples/`](examples/) | Runnable pipeline configs |
318
- | [`envs/`](envs/) | Conda environment for the discovery half, with pinned constraints |
319
- | [`scripts/`](scripts/) | Generators for vendored data and published pages |
320
- | [`.github/workflows/`](.github/workflows/) | CI, docs, docker, release artifacts, and the two paper PDFs |
312
+ | [`bindsight/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/bindsight) | The Python package — [`io`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/bindsight/io), [`deg`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/bindsight/deg), [`targets`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/bindsight/targets), [`surfaceome`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/bindsight/surfaceome), [`structures`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/bindsight/structures), [`epitopes`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/bindsight/epitopes), [`design`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/bindsight/design), [`runners`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/bindsight/runners), [`validate`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/bindsight/validate), [`rank`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/bindsight/rank), [`benchmark`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/bindsight/benchmark), [`pipelines`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/bindsight/pipelines), [`provenance`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/bindsight/provenance), [`export`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/bindsight/export), [`report`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/bindsight/report) |
313
+ | [`benchmarks/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/benchmarks) | All the evidence — the [study](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/benchmarks/study), the [calibration control](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/benchmarks/calibration), the [designer benchmark](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/benchmarks/designer_benchmark), the [provenance join](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/benchmarks/provenance_join), and the held-out antigen set |
314
+ | [`tests/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/tests) | 2,000+ tests. Many are guards on published claims, not on code |
315
+ | [`paper/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/paper) | JOSS and bioRxiv manuscripts, and the validation write-up |
316
+ | [`docs/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/docs) | Long-form documentation (mkdocs-material source) |
317
+ | [`examples/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/examples) | Runnable pipeline configs |
318
+ | [`envs/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/envs) | Conda environment for the discovery half, with pinned constraints |
319
+ | [`scripts/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/scripts) | Generators for vendored data and published pages |
320
+ | [`.github/workflows/`](https://github.com/mikhaeelatefrizk/bindsight/tree/v0.3.6/.github/workflows) | CI, docs, docker, release artifacts, and the two paper PDFs |
321
321
 
322
322
  | File | What it is |
323
323
  |---|---|
324
- | [ARCHITECTURE.md](ARCHITECTURE.md) | The architectural source of truth |
325
- | [CHANGELOG.md](CHANGELOG.md) | Per-version changes |
326
- | [CONTRIBUTING.md](CONTRIBUTING.md) | Dev setup, testing, commit conventions |
327
- | [LICENSING.md](LICENSING.md) | Per-dependency licence inventory and commercial-use guidance |
328
- | [SECURITY.md](SECURITY.md) | How to report a vulnerability |
329
- | [CITATION.cff](CITATION.cff) | Citation metadata |
330
- | [Snakefile](Snakefile) | The Snakemake DAG front-end |
324
+ | [ARCHITECTURE.md](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/ARCHITECTURE.md) | The architectural source of truth |
325
+ | [CHANGELOG.md](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/CHANGELOG.md) | Per-version changes |
326
+ | [CONTRIBUTING.md](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/CONTRIBUTING.md) | Dev setup, testing, commit conventions |
327
+ | [LICENSING.md](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/LICENSING.md) | Per-dependency licence inventory and commercial-use guidance |
328
+ | [SECURITY.md](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/SECURITY.md) | How to report a vulnerability |
329
+ | [CITATION.cff](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/CITATION.cff) | Citation metadata |
330
+ | [Snakefile](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/Snakefile) | The Snakemake DAG front-end |
331
331
 
332
332
  ---
333
333
 
@@ -353,14 +353,14 @@ subdirectories are documented in the table below rather than individually.
353
353
  | Citability | Code dump | Tagged releases with SHA-256 checksums, JSON-Schema-validated outputs |
354
354
 
355
355
  For the full landscape comparison, see
356
- [ARCHITECTURE.md § 8](ARCHITECTURE.md#8-comparison-vs-existing-tools).
356
+ [ARCHITECTURE.md § 8](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/ARCHITECTURE.md#8-comparison-vs-existing-tools).
357
357
 
358
358
  ---
359
359
 
360
360
  ## Acknowledgments
361
361
 
362
362
  bindsight is an opinionated wrapper. Real intellectual credit belongs to the upstream
363
- tool authors. See [LICENSING.md](LICENSING.md) for the full inventory; the work this
363
+ tool authors. See [LICENSING.md](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/LICENSING.md) for the full inventory; the work this
364
364
  builds on most directly:
365
365
 
366
366
  - [SURFACE-Bind](https://github.com/hamedkhakzad/SURFACE-Bind) (Balbi et al., PNAS 2026) — the targetable-sites catalog that makes the bridge tractable
@@ -380,7 +380,7 @@ and the checksums attached to the release, plus the author:
380
380
  > novo protein binder design* (version X.Y.Z).
381
381
  > <https://github.com/mikhaeelatefrizk/bindsight>
382
382
 
383
- Citation metadata also lives in [CITATION.cff](CITATION.cff); GitHub's "Cite this
383
+ Citation metadata also lives in [CITATION.cff](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/CITATION.cff); GitHub's "Cite this
384
384
  repository" button generates BibTeX and APA from it. Every release attaches a
385
385
  wheel, an sdist and a `SHA256SUMS` file, and every image is digest-pinned, so
386
386
  the artifacts behind a version are checkable even though the version has no
@@ -399,9 +399,9 @@ independent researcher in Cairo, Egypt.
399
399
 
400
400
  ## License
401
401
 
402
- - **Code:** [GNU AGPL-3.0-or-later](LICENSE) — copyright notice in [COPYRIGHT](COPYRIGHT). You may use, study, modify, and
402
+ - **Code:** [GNU AGPL-3.0-or-later](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/LICENSE) — copyright notice in [COPYRIGHT](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/COPYRIGHT). You may use, study, modify, and
403
403
  redistribute bindsight freely; if you distribute a modified version **or run it as
404
404
  a network service**, you must make your source available under the same licence,
405
- with attribution preserved. See [LICENSING.md](LICENSING.md) for component-level
405
+ with attribution preserved. See [LICENSING.md](https://github.com/mikhaeelatefrizk/bindsight/blob/v0.3.6/LICENSING.md) for component-level
406
406
  details — bindsight orchestrates external tools that keep their own licences, and
407
407
  some carry non-commercial terms.
@@ -9,7 +9,7 @@
9
9
  </p>
10
10
 
11
11
  <div class="card">
12
- <h2 class="card__title">What this runs</h3>
12
+ <h2 class="card__title">What this runs</h2>
13
13
  <div class="grid grid--2">
14
14
  {#- `.fact`, not `.stat`. A `.stat` is a measurement and must carry its
15
15
  denominator or interval; these are descriptions, and borrowing the
@@ -10,7 +10,7 @@
10
10
  </p>
11
11
 
12
12
  <div class="card">
13
- <h2 class="card__title">Files</h3>
13
+ <h2 class="card__title">Files</h2>
14
14
  <div class="field">
15
15
  <label for="counts">Counts matrix <span class="muted">(.tsv, .txt, .gz)</span></label>
16
16
  <input type="file" id="counts" accept=".tsv,.txt,.gz">
@@ -48,7 +48,13 @@ class LocalDockerRunner:
48
48
  designer: str = "rfdiff_mpnn",
49
49
  n_units_per_target: int = 50,
50
50
  gpu_type: str = "A100-40GB",
51
- image: str = "ghcr.io/mikhaeelatefrizk/bindsight:dev",
51
+ # `:latest` because it is the only tag `docker.yml` always publishes:
52
+ # the others are the commit SHA and, on a tag push, the release. There
53
+ # has never been a `:dev`. A moving tag is safe here in a way it is not
54
+ # for a CI action -- the image carries its own bindsight and runs it, and
55
+ # `pipelines.full_run._container_ref` records the resolved *digest* in the
56
+ # manifest, never the tag, for exactly this reason.
57
+ image: str = "ghcr.io/mikhaeelatefrizk/bindsight:latest",
52
58
  native: bool | None = None,
53
59
  ) -> None:
54
60
  self.designer = designer