pen-stack 4.0.2__tar.gz → 4.0.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (275) hide show
  1. {pen_stack-4.0.2 → pen_stack-4.0.3}/CHANGELOG.md +22 -0
  2. {pen_stack-4.0.2 → pen_stack-4.0.3}/CITATION.cff +1 -1
  3. {pen_stack-4.0.2 → pen_stack-4.0.3}/PKG-INFO +2 -2
  4. {pen_stack-4.0.2 → pen_stack-4.0.3}/README.md +1 -1
  5. {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/atlas_families.yaml +2 -2
  6. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/__init__.py +1 -1
  7. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack.egg-info/PKG-INFO +2 -2
  8. {pen_stack-4.0.2 → pen_stack-4.0.3}/pyproject.toml +1 -1
  9. {pen_stack-4.0.2 → pen_stack-4.0.3}/LICENSE +0 -0
  10. {pen_stack-4.0.2 → pen_stack-4.0.3}/MANIFEST.in +0 -0
  11. {pen_stack-4.0.2 → pen_stack-4.0.3}/bench/run.py +0 -0
  12. {pen_stack-4.0.2 → pen_stack-4.0.3}/benchmarks/genome_writing_bench/LEADERBOARD.md +0 -0
  13. {pen_stack-4.0.2 → pen_stack-4.0.3}/benchmarks/genome_writing_bench/README.md +0 -0
  14. {pen_stack-4.0.2 → pen_stack-4.0.3}/benchmarks/genome_writing_bench/SHA256SUMS +0 -0
  15. {pen_stack-4.0.2 → pen_stack-4.0.3}/benchmarks/genome_writing_bench/SUBMISSIONS.md +0 -0
  16. {pen_stack-4.0.2 → pen_stack-4.0.3}/benchmarks/genome_writing_bench/tasks.yaml +0 -0
  17. {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/bridge_offtarget_profile.yaml +0 -0
  18. {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/cargo_polish.yaml +0 -0
  19. {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/datasets.yaml +0 -0
  20. {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/delivery_constraints.yaml +0 -0
  21. {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/delivery_rules.yaml +0 -0
  22. {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/delivery_vehicles.yaml +0 -0
  23. {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/gates_v3.yaml +0 -0
  24. {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/gsh_validated_heldout.yaml +0 -0
  25. {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/intent_weights.yaml +0 -0
  26. {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/known_unknowns.yaml +0 -0
  27. {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/llm.yaml +0 -0
  28. {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/monitor_queries.yaml +0 -0
  29. {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/oracles/scope_cards.yaml +0 -0
  30. {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/rules/delivery.yaml +0 -0
  31. {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/rules/fold.yaml +0 -0
  32. {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/rules/multiplex.yaml +0 -0
  33. {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/rules/payload.yaml +0 -0
  34. {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/rules/reachability.yaml +0 -0
  35. {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/score_axes.yaml +0 -0
  36. {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/target_sites.yaml +0 -0
  37. {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/universe_crosswalk.yaml +0 -0
  38. {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/write_types.yaml +0 -0
  39. {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/wtkb_curated.yaml +0 -0
  40. {pen_stack-4.0.2 → pen_stack-4.0.3}/data/curated/bridge_offtarget_energetics.json +0 -0
  41. {pen_stack-4.0.2 → pen_stack-4.0.3}/data/curated/bridge_offtarget_profile_measured.parquet +0 -0
  42. {pen_stack-4.0.2 → pen_stack-4.0.3}/data/curated/gene_coords.parquet +0 -0
  43. {pen_stack-4.0.2 → pen_stack-4.0.3}/data/curated/unified_editor_universe.parquet +0 -0
  44. {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/BACKLOG.md +0 -0
  45. {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/DEPLOY.md +0 -0
  46. {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/INFRA.md +0 -0
  47. {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/MCP.md +0 -0
  48. {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/RELEASING.md +0 -0
  49. {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/REPRO.md +0 -0
  50. {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/agent.md +0 -0
  51. {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/alphagenome_feasibility.md +0 -0
  52. {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/benchmark_circularity.md +0 -0
  53. {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/cards/atlas.md +0 -0
  54. {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/cards/durability.md +0 -0
  55. {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/cards/safety.md +0 -0
  56. {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/delivery.md +0 -0
  57. {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/dissemination.md +0 -0
  58. {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/environment.md +0 -0
  59. {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/index.md +0 -0
  60. {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/mechanistic_constraints.md +0 -0
  61. {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/oracles.md +0 -0
  62. {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/positioning.md +0 -0
  63. {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/private_data_formats.md +0 -0
  64. {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/quickstart.md +0 -0
  65. {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/rules.md +0 -0
  66. {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/scope.md +0 -0
  67. {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/scorecard.md +0 -0
  68. {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/tutorials/compare-families.md +0 -0
  69. {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/tutorials/score-deliverability.md +0 -0
  70. {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/tutorials/where-can-i-write.md +0 -0
  71. {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/tutorials/which-writer-reaches-locus.md +0 -0
  72. {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/uncertainty.md +0 -0
  73. {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/verify.md +0 -0
  74. {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/writer_verification.md +0 -0
  75. {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/wtkb.md +0 -0
  76. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/_resources.py +0 -0
  77. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/adapt/__init__.py +0 -0
  78. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/adapt/finetune.py +0 -0
  79. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/adapt/ingest.py +0 -0
  80. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/adapt/pipeline.py +0 -0
  81. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/adapt/recalibrate.py +0 -0
  82. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/adapt/report.py +0 -0
  83. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/agent/__init__.py +0 -0
  84. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/agent/epistemic.py +0 -0
  85. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/agent/guardrails.py +0 -0
  86. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/agent/mcp_server.py +0 -0
  87. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/agent/orchestrator.py +0 -0
  88. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/agent/pen_agent.py +0 -0
  89. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/agent/scope.py +0 -0
  90. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/agent/tools.py +0 -0
  91. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/atlas/__init__.py +0 -0
  92. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/atlas/build_wtkb.py +0 -0
  93. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/atlas/crosslink.py +0 -0
  94. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/atlas/expand.py +0 -0
  95. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/atlas/schema.py +0 -0
  96. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/atlas/scorecard.py +0 -0
  97. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/atlas/universe.py +0 -0
  98. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/atlas/variant_propose.py +0 -0
  99. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/atlas/writer_verify.py +0 -0
  100. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/bridge/__init__.py +0 -0
  101. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/bridge/activity.py +0 -0
  102. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/bridge/cli.py +0 -0
  103. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/bridge/fold_qc.py +0 -0
  104. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/bridge/guide_qc.py +0 -0
  105. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/bridge/ingest.py +0 -0
  106. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/bridge/offtarget.py +0 -0
  107. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/bridge/offtarget_energetics.py +0 -0
  108. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/bridge/ortholog_screen.py +0 -0
  109. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/bridge/pipeline.py +0 -0
  110. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/cli.py +0 -0
  111. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/data/__init__.py +0 -0
  112. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/data/encode.py +0 -0
  113. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/data/genome.py +0 -0
  114. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/data/ingest_chromatin.py +0 -0
  115. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/data/ingest_integration.py +0 -0
  116. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/data/ingest_safety_annot.py +0 -0
  117. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/data/ingest_trip.py +0 -0
  118. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/env/__init__.py +0 -0
  119. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/env/genome_writing_env.py +0 -0
  120. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/env/policies.py +0 -0
  121. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/mech/__init__.py +0 -0
  122. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/mech/classify_atlas.py +0 -0
  123. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/mech/whitelist.py +0 -0
  124. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/monitor/__init__.py +0 -0
  125. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/monitor/europepmc.py +0 -0
  126. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/monitor/run.py +0 -0
  127. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/monitor/triage.py +0 -0
  128. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/oracles/__init__.py +0 -0
  129. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/oracles/cache.py +0 -0
  130. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/oracles/energetics.py +0 -0
  131. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/oracles/genome.py +0 -0
  132. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/oracles/protein_design.py +0 -0
  133. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/oracles/rna.py +0 -0
  134. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/oracles/schema.py +0 -0
  135. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/oracles/structure.py +0 -0
  136. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/planner/__init__.py +0 -0
  137. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/planner/cargo.py +0 -0
  138. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/planner/cargo_polish.py +0 -0
  139. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/planner/delivery.py +0 -0
  140. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/planner/delivery_constraints.py +0 -0
  141. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/planner/delivery_vehicles.py +0 -0
  142. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/planner/multiplex.py +0 -0
  143. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/planner/optimize.py +0 -0
  144. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/planner/pipeline.py +0 -0
  145. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/planner/report.py +0 -0
  146. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/planner/router.py +0 -0
  147. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/planner/target_site.py +0 -0
  148. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/rag/__init__.py +0 -0
  149. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/rag/index.py +0 -0
  150. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/rag/llm.py +0 -0
  151. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/rag/qa.py +0 -0
  152. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/rules/__init__.py +0 -0
  153. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/rules/evaluators.py +0 -0
  154. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/rules/loader.py +0 -0
  155. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/rules/schema.py +0 -0
  156. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/rules/solver.py +0 -0
  157. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/score/__init__.py +0 -0
  158. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/score/recalibrate.py +0 -0
  159. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/score/therapeutic.py +0 -0
  160. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/server/__init__.py +0 -0
  161. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/server/api.py +0 -0
  162. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/ui/__init__.py +0 -0
  163. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/ui/app.py +0 -0
  164. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/__init__.py +0 -0
  165. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/adapt_demo.py +0 -0
  166. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/agent_eval.py +0 -0
  167. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/bench_adversarial_tasks.py +0 -0
  168. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/bench_rule_tasks.py +0 -0
  169. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/bench_trust_tasks.py +0 -0
  170. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/bench_writetype_tasks.py +0 -0
  171. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/blind_gsh_discovery.py +0 -0
  172. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/cargo_directionality.py +0 -0
  173. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/durability_baselines.py +0 -0
  174. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/forward_hypotheses.py +0 -0
  175. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/guide_qc_demo.py +0 -0
  176. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/intent_specification.py +0 -0
  177. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/offtarget_energetics_eval.py +0 -0
  178. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/out_of_scope_refusal.py +0 -0
  179. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/outcome_calibration.py +0 -0
  180. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/paper3_benchmark.py +0 -0
  181. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/paper4_real_validation.py +0 -0
  182. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/paper4_validation.py +0 -0
  183. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/selective_prediction.py +0 -0
  184. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/seq_vs_measured.py +0 -0
  185. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/target_site_controls.py +0 -0
  186. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/uncertainty_eval.py +0 -0
  187. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/ungrounded_baseline.py +0 -0
  188. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/within_locus_ranking.py +0 -0
  189. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/writer_recovery.py +0 -0
  190. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/verify/__init__.py +0 -0
  191. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/verify/schema.py +0 -0
  192. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/verify/service.py +0 -0
  193. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/wgenome/__init__.py +0 -0
  194. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/wgenome/chromatin_seq.py +0 -0
  195. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/wgenome/durability.py +0 -0
  196. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/wgenome/export_tracks.py +0 -0
  197. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/wgenome/features.py +0 -0
  198. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/wgenome/gsh_baseline.py +0 -0
  199. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/wgenome/mesh_features.py +0 -0
  200. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/wgenome/ood.py +0 -0
  201. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/wgenome/providers.py +0 -0
  202. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/wgenome/safety.py +0 -0
  203. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/wgenome/structure3d.py +0 -0
  204. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/wgenome/uncertainty.py +0 -0
  205. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/wgenome/writability.py +0 -0
  206. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack.egg-info/SOURCES.txt +0 -0
  207. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack.egg-info/dependency_links.txt +0 -0
  208. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack.egg-info/entry_points.txt +0 -0
  209. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack.egg-info/requires.txt +0 -0
  210. {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack.egg-info/top_level.txt +0 -0
  211. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_phase0.json +0 -0
  212. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_phase1_5.json +0 -0
  213. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_phase2.json +0 -0
  214. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_phase3.json +0 -0
  215. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_a.json +0 -0
  216. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_atlas.json +0 -0
  217. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_b.json +0 -0
  218. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_ba.json +0 -0
  219. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_ba_v33.json +0 -0
  220. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_bench.json +0 -0
  221. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_c.json +0 -0
  222. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_cal.json +0 -0
  223. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_d.json +0 -0
  224. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_e.json +0 -0
  225. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_env.json +0 -0
  226. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_ep.json +0 -0
  227. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_f.json +0 -0
  228. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_g.json +0 -0
  229. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_h.json +0 -0
  230. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_mc.json +0 -0
  231. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_o.json +0 -0
  232. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_r.json +0 -0
  233. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_route.json +0 -0
  234. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_uq.json +0 -0
  235. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_v.json +0 -0
  236. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_wv.json +0 -0
  237. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/paper1.yaml +0 -0
  238. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/paper2.yaml +0 -0
  239. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/paper3.yaml +0 -0
  240. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/paper4.yaml +0 -0
  241. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/phase0.yaml +0 -0
  242. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_a.yaml +0 -0
  243. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_atlas.yaml +0 -0
  244. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_b.yaml +0 -0
  245. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_ba.yaml +0 -0
  246. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_ba_v33.yaml +0 -0
  247. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_bench.yaml +0 -0
  248. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_c.yaml +0 -0
  249. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_cal.yaml +0 -0
  250. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_d.yaml +0 -0
  251. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_e.yaml +0 -0
  252. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_env.yaml +0 -0
  253. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_ep.yaml +0 -0
  254. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_f.yaml +0 -0
  255. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_g.yaml +0 -0
  256. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_h.yaml +0 -0
  257. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_mc.yaml +0 -0
  258. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_o.yaml +0 -0
  259. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_r.yaml +0 -0
  260. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_route.yaml +0 -0
  261. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_uq.yaml +0 -0
  262. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_v.yaml +0 -0
  263. {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_wv.yaml +0 -0
  264. {pen_stack-4.0.2 → pen_stack-4.0.3}/scripts/p1_build_atlas.py +0 -0
  265. {pen_stack-4.0.2 → pen_stack-4.0.3}/scripts/p1_build_durability.py +0 -0
  266. {pen_stack-4.0.2 → pen_stack-4.0.3}/scripts/p1_export_tracks.py +0 -0
  267. {pen_stack-4.0.2 → pen_stack-4.0.3}/scripts/p1_safety_concordance.py +0 -0
  268. {pen_stack-4.0.2 → pen_stack-4.0.3}/scripts/p1_train_safety.py +0 -0
  269. {pen_stack-4.0.2 → pen_stack-4.0.3}/scripts/p1_validation_report.py +0 -0
  270. {pen_stack-4.0.2 → pen_stack-4.0.3}/scripts/p2_build_atlas.py +0 -0
  271. {pen_stack-4.0.2 → pen_stack-4.0.3}/scripts/p3_benchmark_report.py +0 -0
  272. {pen_stack-4.0.2 → pen_stack-4.0.3}/scripts/p4_genome_scan.py +0 -0
  273. {pen_stack-4.0.2 → pen_stack-4.0.3}/scripts/ws_b_report.py +0 -0
  274. {pen_stack-4.0.2 → pen_stack-4.0.3}/scripts/ws_c_report.py +0 -0
  275. {pen_stack-4.0.2 → pen_stack-4.0.3}/setup.cfg +0 -0
@@ -3,6 +3,28 @@
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.0.3] - 2026-06-09 - ID-correctness patch: UniProt + Pfam + ontology audit
7
+
8
+ ### Fixed
9
+ A whole-repo audit of structured IDs (verified against InterPro, UniProt, EBI-OLS, mygene):
10
+ - **`pen_stack/mech/pfam_whitelist.yaml` (v1.2.1 -> v1.2.2):** the 26 Pfam accessions were all correct, but
11
+ **13 of 22 `example_uniprot` proteins did not actually contain their claimed domain** (membership checked
12
+ against each protein's UniProt Pfam cross-references) — including a marine-worm **Histone H3** (PF13586), a
13
+ mouse **mannosyltransferase** (PF05621/TniB), **I-AniI** (a LAGLIDADG enzyme) mislabelled HNH (PF01844), a
14
+ **glycine-betaine transporter** and a Tn3 transposase mis-filed as rve, and an **obsolete 404** accession
15
+ (PF08721) — despite the header claiming a spot-check. All corrected to reviewed/curated proteins whose
16
+ UniProt entry genuinely carries the domain (e.g. ISCro4 `D2TGM5`, Tn5 `Q46731`, Tn7-TnsA `P13988`, Bxb1
17
+ integrase `Q9B086`, McrA `P24200`); the audit-status header was corrected to stop over-claiming.
18
+ - **`configs/atlas_families.yaml`** (drives family expansion in `expand.py`): IS621 `A0A0F6B5L8` (a
19
+ betaine transporter) -> **`A0A2X3M8B0`** (IS621 transposase); phiC31 `Q9T2A6` (a plant NAD(P)H
20
+ oxidoreductase) -> **`Q9T221`** (phiC31 integrase). The Pfam-query signatures and discovery DOIs were
21
+ already correct.
22
+
23
+ ### Verified clean
24
+ The 4 EFO cell-type IDs map correctly (EFO:0002067=K562, EFO:0001187=HepG2, EFO:0002784=GM12878,
25
+ EFO:0005483=ES-Bruce4); all GSH gene symbols are valid HGNC symbols; all 26 Pfam accessions resolve with the
26
+ correct domain name.
27
+
6
28
  ## [4.0.2] - 2026-06-09 - citation-correctness patch: full-repo DOI audit
7
29
 
8
30
  ### Fixed
@@ -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.0.2
4
+ version: 4.0.3
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.0.2
3
+ Version: 4.0.3
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.0.2-blue.svg)](CHANGELOG.md)
92
+ [![Version](https://img.shields.io/badge/version-4.0.3-blue.svg)](CHANGELOG.md)
93
93
  [![Tests](https://img.shields.io/badge/tests-208%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.0.2-blue.svg)](CHANGELOG.md)
17
+ [![Version](https://img.shields.io/badge/version-4.0.3-blue.svg)](CHANGELOG.md)
18
18
  [![Tests](https://img.shields.io/badge/tests-208%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/)
@@ -63,7 +63,7 @@ families:
63
63
  curated_representatives:
64
64
  - representative_system: IS621
65
65
  family: bridge_IS110
66
- uniprot: A0A0F6B5L8
66
+ uniprot: A0A2X3M8B0 # IS621 transposase (E. coli); was A0A0F6B5L8 (a glycine-betaine transporter - wrong)
67
67
  confidence: measured
68
68
  human_cell_activity: "model bridge recombinase; recombination characterised (Durrant 2024)"
69
69
  key_dois: ["10.1038/s41586-024-07552-4"]
@@ -75,7 +75,7 @@ curated_representatives:
75
75
  key_dois: ["10.64898/2026.03.19.712850"] # bioRxiv ISPpu10 (Europe PMC PPR1218813; resolved via PEN-MONITOR)
76
76
  - representative_system: phiC31
77
77
  family: serine_integrase
78
- uniprot: Q9T2A6
78
+ uniprot: Q9T221 # phiC31 integrase (Streptomyces phage phiC31, gene int); was Q9T2A6 (a plant NAD(P)H oxidoreductase - wrong)
79
79
  confidence: measured
80
80
  human_cell_activity: "large serine integrase; attB x attP; used in human cell landing pads"
81
81
  key_dois: ["10.1128/microbiolspec.MDNA3-0046-2014"]
@@ -1,2 +1,2 @@
1
1
  """PEN-STACK v3.0 - open infrastructure for genome writing."""
2
- __version__ = "4.0.2"
2
+ __version__ = "4.0.3"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pen-stack
3
- Version: 4.0.2
3
+ Version: 4.0.3
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.0.2-blue.svg)](CHANGELOG.md)
92
+ [![Version](https://img.shields.io/badge/version-4.0.3-blue.svg)](CHANGELOG.md)
93
93
  [![Tests](https://img.shields.io/badge/tests-208%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.0.2"
7
+ version = "4.0.3"
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