pen-stack 4.5.0__tar.gz → 4.5.1__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 (292) hide show
  1. {pen_stack-4.5.0 → pen_stack-4.5.1}/CHANGELOG.md +11 -0
  2. {pen_stack-4.5.0 → pen_stack-4.5.1}/CITATION.cff +1 -1
  3. {pen_stack-4.5.0 → pen_stack-4.5.1}/PKG-INFO +2 -2
  4. {pen_stack-4.5.0 → pen_stack-4.5.1}/README.md +1 -1
  5. {pen_stack-4.5.0 → pen_stack-4.5.1}/configs/cell_types.yaml +2 -2
  6. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/__init__.py +1 -1
  7. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/graph/build.py +2 -2
  8. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack.egg-info/PKG-INFO +2 -2
  9. {pen_stack-4.5.0 → pen_stack-4.5.1}/pyproject.toml +1 -1
  10. {pen_stack-4.5.0 → pen_stack-4.5.1}/LICENSE +0 -0
  11. {pen_stack-4.5.0 → pen_stack-4.5.1}/MANIFEST.in +0 -0
  12. {pen_stack-4.5.0 → pen_stack-4.5.1}/bench/run.py +0 -0
  13. {pen_stack-4.5.0 → pen_stack-4.5.1}/benchmarks/genome_writing_bench/LEADERBOARD.md +0 -0
  14. {pen_stack-4.5.0 → pen_stack-4.5.1}/benchmarks/genome_writing_bench/README.md +0 -0
  15. {pen_stack-4.5.0 → pen_stack-4.5.1}/benchmarks/genome_writing_bench/SHA256SUMS +0 -0
  16. {pen_stack-4.5.0 → pen_stack-4.5.1}/benchmarks/genome_writing_bench/SUBMISSIONS.md +0 -0
  17. {pen_stack-4.5.0 → pen_stack-4.5.1}/benchmarks/genome_writing_bench/tasks.yaml +0 -0
  18. {pen_stack-4.5.0 → pen_stack-4.5.1}/configs/atlas_families.yaml +0 -0
  19. {pen_stack-4.5.0 → pen_stack-4.5.1}/configs/bridge_offtarget_profile.yaml +0 -0
  20. {pen_stack-4.5.0 → pen_stack-4.5.1}/configs/cargo_polish.yaml +0 -0
  21. {pen_stack-4.5.0 → pen_stack-4.5.1}/configs/datasets.yaml +0 -0
  22. {pen_stack-4.5.0 → pen_stack-4.5.1}/configs/delivery_constraints.yaml +0 -0
  23. {pen_stack-4.5.0 → pen_stack-4.5.1}/configs/delivery_rules.yaml +0 -0
  24. {pen_stack-4.5.0 → pen_stack-4.5.1}/configs/delivery_vehicles.yaml +0 -0
  25. {pen_stack-4.5.0 → pen_stack-4.5.1}/configs/gates_v3.yaml +0 -0
  26. {pen_stack-4.5.0 → pen_stack-4.5.1}/configs/gsh_validated_heldout.yaml +0 -0
  27. {pen_stack-4.5.0 → pen_stack-4.5.1}/configs/intent_weights.yaml +0 -0
  28. {pen_stack-4.5.0 → pen_stack-4.5.1}/configs/known_unknowns.yaml +0 -0
  29. {pen_stack-4.5.0 → pen_stack-4.5.1}/configs/llm.yaml +0 -0
  30. {pen_stack-4.5.0 → pen_stack-4.5.1}/configs/monitor_queries.yaml +0 -0
  31. {pen_stack-4.5.0 → pen_stack-4.5.1}/configs/oracles/scope_cards.yaml +0 -0
  32. {pen_stack-4.5.0 → pen_stack-4.5.1}/configs/rules/delivery.yaml +0 -0
  33. {pen_stack-4.5.0 → pen_stack-4.5.1}/configs/rules/fold.yaml +0 -0
  34. {pen_stack-4.5.0 → pen_stack-4.5.1}/configs/rules/multiplex.yaml +0 -0
  35. {pen_stack-4.5.0 → pen_stack-4.5.1}/configs/rules/payload.yaml +0 -0
  36. {pen_stack-4.5.0 → pen_stack-4.5.1}/configs/rules/reachability.yaml +0 -0
  37. {pen_stack-4.5.0 → pen_stack-4.5.1}/configs/score_axes.yaml +0 -0
  38. {pen_stack-4.5.0 → pen_stack-4.5.1}/configs/target_sites.yaml +0 -0
  39. {pen_stack-4.5.0 → pen_stack-4.5.1}/configs/universe_crosswalk.yaml +0 -0
  40. {pen_stack-4.5.0 → pen_stack-4.5.1}/configs/write_types.yaml +0 -0
  41. {pen_stack-4.5.0 → pen_stack-4.5.1}/configs/wtkb_curated.yaml +0 -0
  42. {pen_stack-4.5.0 → pen_stack-4.5.1}/data/curated/bridge_offtarget_energetics.json +0 -0
  43. {pen_stack-4.5.0 → pen_stack-4.5.1}/data/curated/bridge_offtarget_profile_measured.parquet +0 -0
  44. {pen_stack-4.5.0 → pen_stack-4.5.1}/data/curated/gene_coords.parquet +0 -0
  45. {pen_stack-4.5.0 → pen_stack-4.5.1}/data/curated/unified_editor_universe.parquet +0 -0
  46. {pen_stack-4.5.0 → pen_stack-4.5.1}/docs/BACKLOG.md +0 -0
  47. {pen_stack-4.5.0 → pen_stack-4.5.1}/docs/DEPLOY.md +0 -0
  48. {pen_stack-4.5.0 → pen_stack-4.5.1}/docs/INFRA.md +0 -0
  49. {pen_stack-4.5.0 → pen_stack-4.5.1}/docs/MCP.md +0 -0
  50. {pen_stack-4.5.0 → pen_stack-4.5.1}/docs/RELEASING.md +0 -0
  51. {pen_stack-4.5.0 → pen_stack-4.5.1}/docs/REPRO.md +0 -0
  52. {pen_stack-4.5.0 → pen_stack-4.5.1}/docs/agent.md +0 -0
  53. {pen_stack-4.5.0 → pen_stack-4.5.1}/docs/alphagenome_feasibility.md +0 -0
  54. {pen_stack-4.5.0 → pen_stack-4.5.1}/docs/benchmark_circularity.md +0 -0
  55. {pen_stack-4.5.0 → pen_stack-4.5.1}/docs/cards/atlas.md +0 -0
  56. {pen_stack-4.5.0 → pen_stack-4.5.1}/docs/cards/durability.md +0 -0
  57. {pen_stack-4.5.0 → pen_stack-4.5.1}/docs/cards/safety.md +0 -0
  58. {pen_stack-4.5.0 → pen_stack-4.5.1}/docs/delivery.md +0 -0
  59. {pen_stack-4.5.0 → pen_stack-4.5.1}/docs/dissemination.md +0 -0
  60. {pen_stack-4.5.0 → pen_stack-4.5.1}/docs/environment.md +0 -0
  61. {pen_stack-4.5.0 → pen_stack-4.5.1}/docs/index.md +0 -0
  62. {pen_stack-4.5.0 → pen_stack-4.5.1}/docs/mechanistic_constraints.md +0 -0
  63. {pen_stack-4.5.0 → pen_stack-4.5.1}/docs/oracles.md +0 -0
  64. {pen_stack-4.5.0 → pen_stack-4.5.1}/docs/positioning.md +0 -0
  65. {pen_stack-4.5.0 → pen_stack-4.5.1}/docs/private_data_formats.md +0 -0
  66. {pen_stack-4.5.0 → pen_stack-4.5.1}/docs/quickstart.md +0 -0
  67. {pen_stack-4.5.0 → pen_stack-4.5.1}/docs/rules.md +0 -0
  68. {pen_stack-4.5.0 → pen_stack-4.5.1}/docs/scope.md +0 -0
  69. {pen_stack-4.5.0 → pen_stack-4.5.1}/docs/scorecard.md +0 -0
  70. {pen_stack-4.5.0 → pen_stack-4.5.1}/docs/tutorials/compare-families.md +0 -0
  71. {pen_stack-4.5.0 → pen_stack-4.5.1}/docs/tutorials/score-deliverability.md +0 -0
  72. {pen_stack-4.5.0 → pen_stack-4.5.1}/docs/tutorials/where-can-i-write.md +0 -0
  73. {pen_stack-4.5.0 → pen_stack-4.5.1}/docs/tutorials/which-writer-reaches-locus.md +0 -0
  74. {pen_stack-4.5.0 → pen_stack-4.5.1}/docs/uncertainty.md +0 -0
  75. {pen_stack-4.5.0 → pen_stack-4.5.1}/docs/verify.md +0 -0
  76. {pen_stack-4.5.0 → pen_stack-4.5.1}/docs/world_model.md +0 -0
  77. {pen_stack-4.5.0 → pen_stack-4.5.1}/docs/writer_verification.md +0 -0
  78. {pen_stack-4.5.0 → pen_stack-4.5.1}/docs/wtkb.md +0 -0
  79. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/_resources.py +0 -0
  80. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/adapt/__init__.py +0 -0
  81. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/adapt/finetune.py +0 -0
  82. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/adapt/ingest.py +0 -0
  83. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/adapt/pipeline.py +0 -0
  84. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/adapt/recalibrate.py +0 -0
  85. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/adapt/report.py +0 -0
  86. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/agent/__init__.py +0 -0
  87. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/agent/epistemic.py +0 -0
  88. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/agent/guardrails.py +0 -0
  89. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/agent/mcp_server.py +0 -0
  90. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/agent/orchestrator.py +0 -0
  91. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/agent/pen_agent.py +0 -0
  92. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/agent/scope.py +0 -0
  93. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/agent/tools.py +0 -0
  94. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/atlas/__init__.py +0 -0
  95. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/atlas/build_wtkb.py +0 -0
  96. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/atlas/crosslink.py +0 -0
  97. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/atlas/expand.py +0 -0
  98. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/atlas/schema.py +0 -0
  99. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/atlas/scorecard.py +0 -0
  100. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/atlas/universe.py +0 -0
  101. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/atlas/variant_propose.py +0 -0
  102. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/atlas/writer_verify.py +0 -0
  103. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/bridge/__init__.py +0 -0
  104. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/bridge/activity.py +0 -0
  105. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/bridge/cli.py +0 -0
  106. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/bridge/fold_qc.py +0 -0
  107. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/bridge/guide_qc.py +0 -0
  108. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/bridge/ingest.py +0 -0
  109. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/bridge/offtarget.py +0 -0
  110. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/bridge/offtarget_energetics.py +0 -0
  111. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/bridge/ortholog_screen.py +0 -0
  112. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/bridge/pipeline.py +0 -0
  113. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/cli.py +0 -0
  114. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/data/__init__.py +0 -0
  115. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/data/encode.py +0 -0
  116. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/data/genome.py +0 -0
  117. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/data/ingest_chromatin.py +0 -0
  118. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/data/ingest_integration.py +0 -0
  119. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/data/ingest_safety_annot.py +0 -0
  120. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/data/ingest_trip.py +0 -0
  121. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/env/__init__.py +0 -0
  122. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/env/genome_writing_env.py +0 -0
  123. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/env/policies.py +0 -0
  124. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/graph/__init__.py +0 -0
  125. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/graph/cell_types.py +0 -0
  126. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/graph/ingest.py +0 -0
  127. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/graph/query.py +0 -0
  128. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/graph/schema.py +0 -0
  129. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/mech/__init__.py +0 -0
  130. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/mech/classify_atlas.py +0 -0
  131. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/mech/whitelist.py +0 -0
  132. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/monitor/__init__.py +0 -0
  133. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/monitor/europepmc.py +0 -0
  134. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/monitor/run.py +0 -0
  135. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/monitor/triage.py +0 -0
  136. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/oracles/__init__.py +0 -0
  137. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/oracles/cache.py +0 -0
  138. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/oracles/energetics.py +0 -0
  139. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/oracles/genome.py +0 -0
  140. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/oracles/protein_design.py +0 -0
  141. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/oracles/rna.py +0 -0
  142. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/oracles/schema.py +0 -0
  143. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/oracles/structure.py +0 -0
  144. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/planner/__init__.py +0 -0
  145. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/planner/cargo.py +0 -0
  146. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/planner/cargo_polish.py +0 -0
  147. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/planner/delivery.py +0 -0
  148. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/planner/delivery_constraints.py +0 -0
  149. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/planner/delivery_vehicles.py +0 -0
  150. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/planner/multiplex.py +0 -0
  151. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/planner/optimize.py +0 -0
  152. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/planner/pipeline.py +0 -0
  153. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/planner/report.py +0 -0
  154. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/planner/router.py +0 -0
  155. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/planner/target_site.py +0 -0
  156. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/rag/__init__.py +0 -0
  157. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/rag/index.py +0 -0
  158. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/rag/llm.py +0 -0
  159. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/rag/qa.py +0 -0
  160. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/rules/__init__.py +0 -0
  161. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/rules/evaluators.py +0 -0
  162. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/rules/loader.py +0 -0
  163. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/rules/schema.py +0 -0
  164. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/rules/solver.py +0 -0
  165. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/score/__init__.py +0 -0
  166. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/score/recalibrate.py +0 -0
  167. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/score/therapeutic.py +0 -0
  168. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/server/__init__.py +0 -0
  169. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/server/api.py +0 -0
  170. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/ui/__init__.py +0 -0
  171. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/ui/app.py +0 -0
  172. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/validate/__init__.py +0 -0
  173. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/validate/adapt_demo.py +0 -0
  174. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/validate/agent_eval.py +0 -0
  175. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/validate/bench_adversarial_tasks.py +0 -0
  176. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/validate/bench_graph_tasks.py +0 -0
  177. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/validate/bench_rule_tasks.py +0 -0
  178. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/validate/bench_trust_tasks.py +0 -0
  179. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/validate/bench_writetype_tasks.py +0 -0
  180. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/validate/blind_gsh_discovery.py +0 -0
  181. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/validate/cargo_directionality.py +0 -0
  182. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/validate/durability_baselines.py +0 -0
  183. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/validate/forward_hypotheses.py +0 -0
  184. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/validate/guide_qc_demo.py +0 -0
  185. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/validate/intent_specification.py +0 -0
  186. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/validate/offtarget_energetics_eval.py +0 -0
  187. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/validate/out_of_scope_refusal.py +0 -0
  188. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/validate/outcome_calibration.py +0 -0
  189. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/validate/paper3_benchmark.py +0 -0
  190. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/validate/paper4_real_validation.py +0 -0
  191. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/validate/paper4_validation.py +0 -0
  192. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/validate/selective_prediction.py +0 -0
  193. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/validate/seq_vs_measured.py +0 -0
  194. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/validate/target_site_controls.py +0 -0
  195. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/validate/uncertainty_eval.py +0 -0
  196. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/validate/ungrounded_baseline.py +0 -0
  197. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/validate/within_locus_ranking.py +0 -0
  198. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/validate/writer_recovery.py +0 -0
  199. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/verify/__init__.py +0 -0
  200. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/verify/schema.py +0 -0
  201. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/verify/service.py +0 -0
  202. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/wgenome/__init__.py +0 -0
  203. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/wgenome/chromatin_seq.py +0 -0
  204. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/wgenome/durability.py +0 -0
  205. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/wgenome/export_tracks.py +0 -0
  206. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/wgenome/features.py +0 -0
  207. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/wgenome/gsh_baseline.py +0 -0
  208. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/wgenome/mesh_features.py +0 -0
  209. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/wgenome/ood.py +0 -0
  210. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/wgenome/providers.py +0 -0
  211. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/wgenome/safety.py +0 -0
  212. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/wgenome/structure3d.py +0 -0
  213. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/wgenome/uncertainty.py +0 -0
  214. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack/wgenome/writability.py +0 -0
  215. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack.egg-info/SOURCES.txt +0 -0
  216. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack.egg-info/dependency_links.txt +0 -0
  217. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack.egg-info/entry_points.txt +0 -0
  218. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack.egg-info/requires.txt +0 -0
  219. {pen_stack-4.5.0 → pen_stack-4.5.1}/pen_stack.egg-info/top_level.txt +0 -0
  220. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/SHA256_LOCK_phase0.json +0 -0
  221. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/SHA256_LOCK_phase1_5.json +0 -0
  222. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/SHA256_LOCK_phase2.json +0 -0
  223. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/SHA256_LOCK_phase3.json +0 -0
  224. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/SHA256_LOCK_ws_a.json +0 -0
  225. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/SHA256_LOCK_ws_atlas.json +0 -0
  226. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/SHA256_LOCK_ws_b.json +0 -0
  227. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/SHA256_LOCK_ws_ba.json +0 -0
  228. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/SHA256_LOCK_ws_ba_v33.json +0 -0
  229. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/SHA256_LOCK_ws_ba_v45.json +0 -0
  230. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/SHA256_LOCK_ws_bench.json +0 -0
  231. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/SHA256_LOCK_ws_c.json +0 -0
  232. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/SHA256_LOCK_ws_cal.json +0 -0
  233. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/SHA256_LOCK_ws_ct.json +0 -0
  234. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/SHA256_LOCK_ws_d.json +0 -0
  235. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/SHA256_LOCK_ws_e.json +0 -0
  236. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/SHA256_LOCK_ws_env.json +0 -0
  237. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/SHA256_LOCK_ws_ep.json +0 -0
  238. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/SHA256_LOCK_ws_f.json +0 -0
  239. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/SHA256_LOCK_ws_g.json +0 -0
  240. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/SHA256_LOCK_ws_graph.json +0 -0
  241. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/SHA256_LOCK_ws_h.json +0 -0
  242. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/SHA256_LOCK_ws_mc.json +0 -0
  243. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/SHA256_LOCK_ws_mon.json +0 -0
  244. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/SHA256_LOCK_ws_o.json +0 -0
  245. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/SHA256_LOCK_ws_r.json +0 -0
  246. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/SHA256_LOCK_ws_route.json +0 -0
  247. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/SHA256_LOCK_ws_uq.json +0 -0
  248. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/SHA256_LOCK_ws_v.json +0 -0
  249. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/SHA256_LOCK_ws_wv.json +0 -0
  250. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/paper1.yaml +0 -0
  251. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/paper2.yaml +0 -0
  252. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/paper3.yaml +0 -0
  253. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/paper4.yaml +0 -0
  254. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/phase0.yaml +0 -0
  255. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/ws_a.yaml +0 -0
  256. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/ws_atlas.yaml +0 -0
  257. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/ws_b.yaml +0 -0
  258. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/ws_ba.yaml +0 -0
  259. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/ws_ba_v33.yaml +0 -0
  260. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/ws_ba_v45.yaml +0 -0
  261. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/ws_bench.yaml +0 -0
  262. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/ws_c.yaml +0 -0
  263. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/ws_cal.yaml +0 -0
  264. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/ws_ct.yaml +0 -0
  265. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/ws_d.yaml +0 -0
  266. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/ws_e.yaml +0 -0
  267. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/ws_env.yaml +0 -0
  268. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/ws_ep.yaml +0 -0
  269. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/ws_f.yaml +0 -0
  270. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/ws_g.yaml +0 -0
  271. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/ws_graph.yaml +0 -0
  272. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/ws_h.yaml +0 -0
  273. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/ws_mc.yaml +0 -0
  274. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/ws_mon.yaml +0 -0
  275. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/ws_o.yaml +0 -0
  276. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/ws_r.yaml +0 -0
  277. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/ws_route.yaml +0 -0
  278. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/ws_uq.yaml +0 -0
  279. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/ws_v.yaml +0 -0
  280. {pen_stack-4.5.0 → pen_stack-4.5.1}/prereg/ws_wv.yaml +0 -0
  281. {pen_stack-4.5.0 → pen_stack-4.5.1}/scripts/p1_build_atlas.py +0 -0
  282. {pen_stack-4.5.0 → pen_stack-4.5.1}/scripts/p1_build_durability.py +0 -0
  283. {pen_stack-4.5.0 → pen_stack-4.5.1}/scripts/p1_export_tracks.py +0 -0
  284. {pen_stack-4.5.0 → pen_stack-4.5.1}/scripts/p1_safety_concordance.py +0 -0
  285. {pen_stack-4.5.0 → pen_stack-4.5.1}/scripts/p1_train_safety.py +0 -0
  286. {pen_stack-4.5.0 → pen_stack-4.5.1}/scripts/p1_validation_report.py +0 -0
  287. {pen_stack-4.5.0 → pen_stack-4.5.1}/scripts/p2_build_atlas.py +0 -0
  288. {pen_stack-4.5.0 → pen_stack-4.5.1}/scripts/p3_benchmark_report.py +0 -0
  289. {pen_stack-4.5.0 → pen_stack-4.5.1}/scripts/p4_genome_scan.py +0 -0
  290. {pen_stack-4.5.0 → pen_stack-4.5.1}/scripts/ws_b_report.py +0 -0
  291. {pen_stack-4.5.0 → pen_stack-4.5.1}/scripts/ws_c_report.py +0 -0
  292. {pen_stack-4.5.0 → pen_stack-4.5.1}/setup.cfg +0 -0
@@ -3,6 +3,17 @@
3
3
  All notable changes to PEN-STACK are documented here. This file follows
4
4
  [Keep a Changelog](https://keepachangelog.com/) and the program's phase structure.
5
5
 
6
+ ## [4.5.1] - 2026-06-09 - ID-correctness patch: cell-type ontology IDs
7
+
8
+ ### Fixed
9
+ Two of the three new v4.5 Tier-A cell-type ontology IDs in `configs/cell_types.yaml` were wrong (verified via
10
+ EBI-OLS): `EFO:0002322` resolved to the **RPMI8226 myeloma line** (not a T cell) and `EFO:0004146` to an
11
+ **obsolete myopathy term** (not hepatocyte). Corrected to the canonical, non-obsolete Cell Ontology terms:
12
+ **primary_T_cell → `CL:0000084`** (T cell), **hepatocyte → `CL:0000182`** (hepatocyte). iPSC (`EFO:0004905`),
13
+ K562 (`EFO:0002067`), HepG2 (`EFO:0001187`) verified correct, as was the ISPpu10 back-test record (Europe PMC
14
+ **PPR1218813** — "ISPpu10 is a structure-gated bridge RNA recombinase…"). No result/test change (the IDs are
15
+ coverage-card metadata; `cell_types.py` reads coverage, not the ontology id).
16
+
6
17
  ## [4.5.0] - 2026-06-09 - v4.5 release: the Living World-Model (knowledge graph + gated living loop)
7
18
 
8
19
  v4.5 promotes the flat tables into a queryable knowledge graph that keeps itself current. Workstreams
@@ -1,7 +1,7 @@
1
1
  cff-version: 1.2.0
2
2
  message: "If you use PEN-STACK, please cite it as below."
3
3
  title: "PEN-STACK: open infrastructure for genome writing"
4
- version: 4.5.0
4
+ version: 4.5.1
5
5
  date-released: 2026-06-01
6
6
  authors:
7
7
  - family-names: "Mahaboob Ali"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pen-stack
3
- Version: 4.5.0
3
+ Version: 4.5.1
4
4
  Summary: Open infrastructure for genome writing: the Writable Genome atlas, the Writer Atlas, and the Write Planner.
5
5
  Author-email: Anees Ahmed Mahaboob Ali <ahmedaneesm@gmail.com>
6
6
  License: MIT
@@ -89,7 +89,7 @@ and durably write new DNA, **which enzyme** can write it there, and **how** to d
89
89
  [![codecov](https://codecov.io/gh/ahmedanees-m/pen-stack/branch/main/graph/badge.svg)](https://codecov.io/gh/ahmedanees-m/pen-stack)
90
90
  [![License: MIT](https://img.shields.io/badge/License-MIT-informational.svg)](LICENSE)
91
91
  [![Python 3.11+](https://img.shields.io/badge/python-3.11%2B-blue.svg)](https://www.python.org/)
92
- [![Version](https://img.shields.io/badge/version-4.5.0-blue.svg)](CHANGELOG.md)
92
+ [![Version](https://img.shields.io/badge/version-4.5.1-blue.svg)](CHANGELOG.md)
93
93
  [![Tests](https://img.shields.io/badge/tests-224%20passing-success.svg)](tests/)
94
94
  [![Lint: ruff](https://img.shields.io/badge/lint-ruff-purple.svg)](https://github.com/astral-sh/ruff)
95
95
  [![Runtime: Docker](https://img.shields.io/badge/runtime-docker-2496ED.svg)](docker/)
@@ -14,7 +14,7 @@ and durably write new DNA, **which enzyme** can write it there, and **how** to d
14
14
  [![codecov](https://codecov.io/gh/ahmedanees-m/pen-stack/branch/main/graph/badge.svg)](https://codecov.io/gh/ahmedanees-m/pen-stack)
15
15
  [![License: MIT](https://img.shields.io/badge/License-MIT-informational.svg)](LICENSE)
16
16
  [![Python 3.11+](https://img.shields.io/badge/python-3.11%2B-blue.svg)](https://www.python.org/)
17
- [![Version](https://img.shields.io/badge/version-4.5.0-blue.svg)](CHANGELOG.md)
17
+ [![Version](https://img.shields.io/badge/version-4.5.1-blue.svg)](CHANGELOG.md)
18
18
  [![Tests](https://img.shields.io/badge/tests-224%20passing-success.svg)](tests/)
19
19
  [![Lint: ruff](https://img.shields.io/badge/lint-ruff-purple.svg)](https://github.com/astral-sh/ruff)
20
20
  [![Runtime: Docker](https://img.shields.io/badge/runtime-docker-2496ED.svg)](docker/)
@@ -36,13 +36,13 @@ cell_types:
36
36
  note: "iPSC/ESC; broad chromatin but TRIP durability not measured here -> durability OOD-labelled, degraded."
37
37
  primary_T_cell:
38
38
  tier: A
39
- efo: "EFO:0002322" # CD4+/CD8+ primary T cell (CAR-T relevant)
39
+ ontology: "CL:0000084" # T cell (Cell Ontology); CAR-T relevant
40
40
  coverage: partial
41
41
  tracks: [atac, expression]
42
42
  note: "primary T cells (CAR-T context); accessibility + expression only -> histone-dependent safety degraded."
43
43
  hepatocyte:
44
44
  tier: A
45
- efo: "EFO:0004146" # primary hepatocyte
45
+ ontology: "CL:0000182" # hepatocyte (Cell Ontology); in-vivo liver target
46
46
  coverage: partial
47
47
  tracks: [atac, h3k27ac, expression]
48
48
  note: "primary hepatocytes (in-vivo liver target); partial panel -> graceful degradation, scope-flagged."
@@ -1,2 +1,2 @@
1
1
  """PEN-STACK v3.0 - open infrastructure for genome writing."""
2
- __version__ = "4.5.0"
2
+ __version__ = "4.5.1"
@@ -75,8 +75,8 @@ def build_graph() -> Graph:
75
75
  cts = _yaml("configs/cell_types.yaml")["cell_types"]
76
76
  for ct, card in cts.items():
77
77
  g.add_node(Node(id=f"cell_type:{ct}", type="cell_type", props={
78
- "tier": card.get("tier"), "efo": card.get("efo"), "coverage": card.get("coverage"),
79
- "tracks": card.get("tracks", []), "note": card.get("note")}))
78
+ "tier": card.get("tier"), "ontology": card.get("efo") or card.get("ontology"),
79
+ "coverage": card.get("coverage"), "tracks": card.get("tracks", []), "note": card.get("note")}))
80
80
 
81
81
  # ---- locus nodes (DOI-validated GSH) -------------------------------------------------------
82
82
  gsh = _yaml("configs/gsh_validated_heldout.yaml")["gsh"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pen-stack
3
- Version: 4.5.0
3
+ Version: 4.5.1
4
4
  Summary: Open infrastructure for genome writing: the Writable Genome atlas, the Writer Atlas, and the Write Planner.
5
5
  Author-email: Anees Ahmed Mahaboob Ali <ahmedaneesm@gmail.com>
6
6
  License: MIT
@@ -89,7 +89,7 @@ and durably write new DNA, **which enzyme** can write it there, and **how** to d
89
89
  [![codecov](https://codecov.io/gh/ahmedanees-m/pen-stack/branch/main/graph/badge.svg)](https://codecov.io/gh/ahmedanees-m/pen-stack)
90
90
  [![License: MIT](https://img.shields.io/badge/License-MIT-informational.svg)](LICENSE)
91
91
  [![Python 3.11+](https://img.shields.io/badge/python-3.11%2B-blue.svg)](https://www.python.org/)
92
- [![Version](https://img.shields.io/badge/version-4.5.0-blue.svg)](CHANGELOG.md)
92
+ [![Version](https://img.shields.io/badge/version-4.5.1-blue.svg)](CHANGELOG.md)
93
93
  [![Tests](https://img.shields.io/badge/tests-224%20passing-success.svg)](tests/)
94
94
  [![Lint: ruff](https://img.shields.io/badge/lint-ruff-purple.svg)](https://github.com/astral-sh/ruff)
95
95
  [![Runtime: Docker](https://img.shields.io/badge/runtime-docker-2496ED.svg)](docker/)
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "pen-stack"
7
- version = "4.5.0"
7
+ version = "4.5.1"
8
8
  description = "Open infrastructure for genome writing: the Writable Genome atlas, the Writer Atlas, and the Write Planner."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes