pen-stack 7.1.7__tar.gz → 7.1.8__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 (567) hide show
  1. {pen_stack-7.1.7 → pen_stack-7.1.8}/CHANGELOG.md +23 -0
  2. {pen_stack-7.1.7 → pen_stack-7.1.8}/CITATION.cff +1 -1
  3. {pen_stack-7.1.7 → pen_stack-7.1.8}/PKG-INFO +1 -1
  4. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/__init__.py +1 -1
  5. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/planner/immune_profile.py +18 -0
  6. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/server/api.py +16 -0
  7. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack.egg-info/PKG-INFO +1 -1
  8. {pen_stack-7.1.7 → pen_stack-7.1.8}/pyproject.toml +1 -1
  9. {pen_stack-7.1.7 → pen_stack-7.1.8}/LICENSE +0 -0
  10. {pen_stack-7.1.7 → pen_stack-7.1.8}/MANIFEST.in +0 -0
  11. {pen_stack-7.1.7 → pen_stack-7.1.8}/README.md +0 -0
  12. {pen_stack-7.1.7 → pen_stack-7.1.8}/bench/run.py +0 -0
  13. {pen_stack-7.1.7 → pen_stack-7.1.8}/benchmarks/chat_grounding/README.md +0 -0
  14. {pen_stack-7.1.7 → pen_stack-7.1.8}/benchmarks/chat_grounding/SHA256SUMS +0 -0
  15. {pen_stack-7.1.7 → pen_stack-7.1.8}/benchmarks/chat_headtohead/README.md +0 -0
  16. {pen_stack-7.1.7 → pen_stack-7.1.8}/benchmarks/chat_routing/README.md +0 -0
  17. {pen_stack-7.1.7 → pen_stack-7.1.8}/benchmarks/chat_routing/SHA256SUMS +0 -0
  18. {pen_stack-7.1.7 → pen_stack-7.1.8}/benchmarks/chat_safety/README.md +0 -0
  19. {pen_stack-7.1.7 → pen_stack-7.1.8}/benchmarks/chat_safety/SHA256SUMS +0 -0
  20. {pen_stack-7.1.7 → pen_stack-7.1.8}/benchmarks/delivery/SHA256SUMS +0 -0
  21. {pen_stack-7.1.7 → pen_stack-7.1.8}/benchmarks/genome_writing_bench/LEADERBOARD.md +0 -0
  22. {pen_stack-7.1.7 → pen_stack-7.1.8}/benchmarks/genome_writing_bench/README.md +0 -0
  23. {pen_stack-7.1.7 → pen_stack-7.1.8}/benchmarks/genome_writing_bench/SHA256SUMS +0 -0
  24. {pen_stack-7.1.7 → pen_stack-7.1.8}/benchmarks/genome_writing_bench/SUBMISSIONS.md +0 -0
  25. {pen_stack-7.1.7 → pen_stack-7.1.8}/benchmarks/genome_writing_bench/tasks.yaml +0 -0
  26. {pen_stack-7.1.7 → pen_stack-7.1.8}/benchmarks/genome_writing_challenge/README.md +0 -0
  27. {pen_stack-7.1.7 → pen_stack-7.1.8}/benchmarks/genome_writing_challenge/SUBMISSIONS.md +0 -0
  28. {pen_stack-7.1.7 → pen_stack-7.1.8}/benchmarks/loop/SHA256SUMS +0 -0
  29. {pen_stack-7.1.7 → pen_stack-7.1.8}/benchmarks/offtarget/SHA256SUMS +0 -0
  30. {pen_stack-7.1.7 → pen_stack-7.1.8}/benchmarks/oracle/SHA256SUMS +0 -0
  31. {pen_stack-7.1.7 → pen_stack-7.1.8}/benchmarks/position_effect/README.md +0 -0
  32. {pen_stack-7.1.7 → pen_stack-7.1.8}/benchmarks/position_effect/SHA256SUMS +0 -0
  33. {pen_stack-7.1.7 → pen_stack-7.1.8}/benchmarks/verify/SHA256SUMS +0 -0
  34. {pen_stack-7.1.7 → pen_stack-7.1.8}/benchmarks/writer_efficiency/README.md +0 -0
  35. {pen_stack-7.1.7 → pen_stack-7.1.8}/benchmarks/writer_efficiency/SHA256SUMS +0 -0
  36. {pen_stack-7.1.7 → pen_stack-7.1.8}/benchmarks/writespec/SHA256SUMS +0 -0
  37. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/aav_serotype_tropism.yaml +0 -0
  38. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/antipeg.yaml +0 -0
  39. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/atlas_families.yaml +0 -0
  40. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/bridge_offtarget_profile.yaml +0 -0
  41. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/calibration/preexisting_nab_independent.yaml +0 -0
  42. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/capsid_epitope_oracle.yaml +0 -0
  43. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/capsid_sequences.fasta +0 -0
  44. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/cargo_polish.yaml +0 -0
  45. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/cell_types.yaml +0 -0
  46. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/datasets.yaml +0 -0
  47. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/delivery_constraints.yaml +0 -0
  48. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/delivery_rules.yaml +0 -0
  49. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/delivery_vehicles.yaml +0 -0
  50. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/expression/modifiers.yaml +0 -0
  51. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/expression/promoters.yaml +0 -0
  52. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/gates_v3.yaml +0 -0
  53. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/genotoxicity_oracle.yaml +0 -0
  54. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/gsh_validated_heldout.yaml +0 -0
  55. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/intent_weights.yaml +0 -0
  56. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/known_unknowns.yaml +0 -0
  57. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/llm.yaml +0 -0
  58. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/metric_guide.yaml +0 -0
  59. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/mhc_epitope_oracle.yaml +0 -0
  60. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/monitor_queries.yaml +0 -0
  61. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/oracles/execution.yaml +0 -0
  62. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/oracles/reliability.yaml +0 -0
  63. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/oracles/scope_cards.yaml +0 -0
  64. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/rules/compliance.yaml +0 -0
  65. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/rules/delivery.yaml +0 -0
  66. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/rules/fold.yaml +0 -0
  67. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/rules/multiplex.yaml +0 -0
  68. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/rules/payload.yaml +0 -0
  69. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/rules/reachability.yaml +0 -0
  70. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/safety/hazard_registry.yaml +0 -0
  71. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/safety/policy.yaml +0 -0
  72. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/safety/probes.yaml +0 -0
  73. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/score_axes.yaml +0 -0
  74. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/seroprevalence.yaml +0 -0
  75. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/target_sites.yaml +0 -0
  76. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/universe_crosswalk.yaml +0 -0
  77. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/write_types.yaml +0 -0
  78. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/writer_sequences.fasta +0 -0
  79. {pen_stack-7.1.7 → pen_stack-7.1.8}/configs/wtkb_curated.yaml +0 -0
  80. {pen_stack-7.1.7 → pen_stack-7.1.8}/data/curated/bridge_offtarget_energetics.json +0 -0
  81. {pen_stack-7.1.7 → pen_stack-7.1.8}/data/curated/bridge_offtarget_profile_measured.parquet +0 -0
  82. {pen_stack-7.1.7 → pen_stack-7.1.8}/data/curated/gene_coords.parquet +0 -0
  83. {pen_stack-7.1.7 → pen_stack-7.1.8}/data/curated/unified_editor_universe.parquet +0 -0
  84. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/BACKLOG.md +0 -0
  85. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/DEPLOY.md +0 -0
  86. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/INFRA.md +0 -0
  87. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/MCP.md +0 -0
  88. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/RELEASING.md +0 -0
  89. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/REPRO.md +0 -0
  90. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/STABILITY.md +0 -0
  91. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/agent.md +0 -0
  92. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/alphagenome_feasibility.md +0 -0
  93. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/autonomy.md +0 -0
  94. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/benchmark_circularity.md +0 -0
  95. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/biosecurity.md +0 -0
  96. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/build_interface.md +0 -0
  97. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/cards/atlas.md +0 -0
  98. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/cards/durability.md +0 -0
  99. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/cards/offtarget_data.md +0 -0
  100. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/cards/position_effect_data.md +0 -0
  101. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/cards/safety.md +0 -0
  102. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/cards/writer_efficiency_data.md +0 -0
  103. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/challenge.md +0 -0
  104. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/closed_loop.md +0 -0
  105. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/co_scientist.md +0 -0
  106. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/co_scientist_loop.md +0 -0
  107. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/delivery.md +0 -0
  108. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/delivery_immunology.md +0 -0
  109. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/delivery_recommender.md +0 -0
  110. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/digital_twin.md +0 -0
  111. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/dissemination.md +0 -0
  112. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/environment.md +0 -0
  113. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/experiment_design.md +0 -0
  114. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/generative_design.md +0 -0
  115. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/immune_profiler.md +0 -0
  116. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/index.md +0 -0
  117. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/integrations.md +0 -0
  118. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/live_oracles.md +0 -0
  119. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/mechanistic_constraints.md +0 -0
  120. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/offtarget.md +0 -0
  121. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/oracle_mesh.md +0 -0
  122. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/oracles.md +0 -0
  123. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/position_effect.md +0 -0
  124. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/positioning.md +0 -0
  125. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/private_data_formats.md +0 -0
  126. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/quickstart.md +0 -0
  127. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/responsible_use.md +0 -0
  128. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/rule_spec.md +0 -0
  129. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/rules.md +0 -0
  130. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/scope.md +0 -0
  131. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/scorecard.md +0 -0
  132. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/tpe_bench.md +0 -0
  133. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/tutorials/compare-families.md +0 -0
  134. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/tutorials/score-deliverability.md +0 -0
  135. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/tutorials/where-can-i-write.md +0 -0
  136. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/tutorials/which-writer-reaches-locus.md +0 -0
  137. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/uncertainty.md +0 -0
  138. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/verify.md +0 -0
  139. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/verify_service.md +0 -0
  140. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/world_model.md +0 -0
  141. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/writer_efficiency.md +0 -0
  142. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/writer_verification.md +0 -0
  143. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/writespec_bench.md +0 -0
  144. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/writespec_profile.md +0 -0
  145. {pen_stack-7.1.7 → pen_stack-7.1.8}/docs/wtkb.md +0 -0
  146. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/_resources.py +0 -0
  147. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/active/__init__.py +0 -0
  148. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/active/acquire.py +0 -0
  149. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/active/brains.py +0 -0
  150. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/active/campaign.py +0 -0
  151. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/active/design.py +0 -0
  152. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/active/validate.py +0 -0
  153. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/adapt/__init__.py +0 -0
  154. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/adapt/finetune.py +0 -0
  155. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/adapt/ingest.py +0 -0
  156. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/adapt/pipeline.py +0 -0
  157. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/adapt/recalibrate.py +0 -0
  158. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/adapt/report.py +0 -0
  159. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/agent/__init__.py +0 -0
  160. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/agent/cite.py +0 -0
  161. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/agent/co_scientist.py +0 -0
  162. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/agent/epistemic.py +0 -0
  163. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/agent/guardrails.py +0 -0
  164. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/agent/mcp_server.py +0 -0
  165. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/agent/orchestrator.py +0 -0
  166. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/agent/orchestrator_live.py +0 -0
  167. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/agent/pen_agent.py +0 -0
  168. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/agent/scope.py +0 -0
  169. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/agent/tools.py +0 -0
  170. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/api/__init__.py +0 -0
  171. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/api/manifest.py +0 -0
  172. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/atlas/__init__.py +0 -0
  173. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/atlas/build_wtkb.py +0 -0
  174. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/atlas/crosslink.py +0 -0
  175. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/atlas/expand.py +0 -0
  176. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/atlas/guide_design.py +0 -0
  177. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/atlas/schema.py +0 -0
  178. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/atlas/scorecard.py +0 -0
  179. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/atlas/universe.py +0 -0
  180. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/atlas/variant_propose.py +0 -0
  181. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/atlas/writer_efficiency.py +0 -0
  182. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/atlas/writer_predict.py +0 -0
  183. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/atlas/writer_recommend.py +0 -0
  184. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/atlas/writer_verify.py +0 -0
  185. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/bridge/__init__.py +0 -0
  186. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/bridge/activity.py +0 -0
  187. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/bridge/cli.py +0 -0
  188. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/bridge/fold_qc.py +0 -0
  189. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/bridge/guide_qc.py +0 -0
  190. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/bridge/ingest.py +0 -0
  191. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/bridge/offtarget.py +0 -0
  192. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/bridge/offtarget_energetics.py +0 -0
  193. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/bridge/ortholog_screen.py +0 -0
  194. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/bridge/pipeline.py +0 -0
  195. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/build/__init__.py +0 -0
  196. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/build/cloudlab.py +0 -0
  197. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/build/ingest.py +0 -0
  198. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/build/protocol.py +0 -0
  199. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/build/simlab.py +0 -0
  200. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/cli.py +0 -0
  201. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/data/__init__.py +0 -0
  202. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/data/encode.py +0 -0
  203. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/data/genome.py +0 -0
  204. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/data/ingest_chromatin.py +0 -0
  205. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/data/ingest_integration.py +0 -0
  206. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/data/ingest_safety_annot.py +0 -0
  207. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/data/ingest_trip.py +0 -0
  208. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/design/__init__.py +0 -0
  209. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/design/capsid_generate.py +0 -0
  210. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/design/generate.py +0 -0
  211. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/design/pareto.py +0 -0
  212. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/design/space.py +0 -0
  213. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/design/writer_variants.py +0 -0
  214. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/env/__init__.py +0 -0
  215. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/env/genome_writing_env.py +0 -0
  216. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/env/policies.py +0 -0
  217. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/graph/__init__.py +0 -0
  218. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/graph/build.py +0 -0
  219. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/graph/cell_types.py +0 -0
  220. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/graph/ingest.py +0 -0
  221. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/graph/query.py +0 -0
  222. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/graph/schema.py +0 -0
  223. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/loop/__init__.py +0 -0
  224. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/loop/continual.py +0 -0
  225. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/loop/cycle.py +0 -0
  226. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/loop/drift.py +0 -0
  227. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/mech/__init__.py +0 -0
  228. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/mech/classify_atlas.py +0 -0
  229. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/mech/whitelist.py +0 -0
  230. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/monitor/__init__.py +0 -0
  231. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/monitor/europepmc.py +0 -0
  232. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/monitor/run.py +0 -0
  233. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/monitor/triage.py +0 -0
  234. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/oracles/__init__.py +0 -0
  235. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/oracles/affinity.py +0 -0
  236. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/oracles/cache.py +0 -0
  237. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/oracles/energetics.py +0 -0
  238. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/oracles/genome.py +0 -0
  239. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/oracles/protein_design.py +0 -0
  240. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/oracles/reliability.py +0 -0
  241. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/oracles/rna.py +0 -0
  242. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/oracles/schema.py +0 -0
  243. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/oracles/status.py +0 -0
  244. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/oracles/structure.py +0 -0
  245. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/oracles/structure_run.py +0 -0
  246. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/oracles/vcell.py +0 -0
  247. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/planner/__init__.py +0 -0
  248. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/planner/ada_risk.py +0 -0
  249. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/planner/antipeg_oracle.py +0 -0
  250. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/planner/capsid_epitope_oracle.py +0 -0
  251. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/planner/cargo.py +0 -0
  252. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/planner/cargo_polish.py +0 -0
  253. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/planner/chromosome.py +0 -0
  254. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/planner/delivery.py +0 -0
  255. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/planner/delivery_constraints.py +0 -0
  256. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/planner/delivery_immune.py +0 -0
  257. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/planner/delivery_immunology.py +0 -0
  258. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/planner/delivery_predict.py +0 -0
  259. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/planner/delivery_vehicles.py +0 -0
  260. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/planner/genotoxicity_oracle.py +0 -0
  261. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/planner/immune_mhc2.py +0 -0
  262. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/planner/innate_sensing.py +0 -0
  263. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/planner/multiplex.py +0 -0
  264. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/planner/optimize.py +0 -0
  265. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/planner/pipeline.py +0 -0
  266. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/planner/report.py +0 -0
  267. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/planner/router.py +0 -0
  268. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/planner/seroprevalence_oracle.py +0 -0
  269. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/planner/target_site.py +0 -0
  270. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/rag/__init__.py +0 -0
  271. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/rag/corpus.py +0 -0
  272. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/rag/embed.py +0 -0
  273. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/rag/ground.py +0 -0
  274. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/rag/index.py +0 -0
  275. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/rag/llm.py +0 -0
  276. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/rag/qa.py +0 -0
  277. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/rag/retrieve.py +0 -0
  278. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/rules/__init__.py +0 -0
  279. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/rules/evaluators.py +0 -0
  280. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/rules/loader.py +0 -0
  281. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/rules/schema.py +0 -0
  282. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/rules/solver.py +0 -0
  283. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/rules/spec.py +0 -0
  284. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/safety/__init__.py +0 -0
  285. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/safety/audit.py +0 -0
  286. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/safety/gate.py +0 -0
  287. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/safety/policy.py +0 -0
  288. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/safety/redteam.py +0 -0
  289. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/safety/registry.py +0 -0
  290. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/safety/screen.py +0 -0
  291. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/safety/standards.py +0 -0
  292. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/score/__init__.py +0 -0
  293. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/score/recalibrate.py +0 -0
  294. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/score/therapeutic.py +0 -0
  295. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/server/__init__.py +0 -0
  296. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/spec/__init__.py +0 -0
  297. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/spec/clarify.py +0 -0
  298. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/spec/extract.py +0 -0
  299. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/spec/resolvers/__init__.py +0 -0
  300. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/spec/resolvers/cell.py +0 -0
  301. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/spec/resolvers/chem.py +0 -0
  302. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/spec/resolvers/feature.py +0 -0
  303. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/spec/resolvers/gene.py +0 -0
  304. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/spec/resolvers/locus.py +0 -0
  305. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/spec/resolvers/phenotype.py +0 -0
  306. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/spec/satisfy.py +0 -0
  307. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/spec/service.py +0 -0
  308. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/spec/writespec.py +0 -0
  309. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/twin/__init__.py +0 -0
  310. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/twin/calibrate.py +0 -0
  311. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/twin/data/__init__.py +0 -0
  312. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/twin/data/position_effect.py +0 -0
  313. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/twin/mechanistic.py +0 -0
  314. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/twin/outcome.py +0 -0
  315. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/twin/position_effect.py +0 -0
  316. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/ui/__init__.py +0 -0
  317. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/ui/app.py +0 -0
  318. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/validate/__init__.py +0 -0
  319. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/validate/adapt_demo.py +0 -0
  320. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/validate/agent_eval.py +0 -0
  321. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/validate/bench_adversarial_tasks.py +0 -0
  322. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/validate/bench_coscientist_tasks.py +0 -0
  323. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/validate/bench_graph_tasks.py +0 -0
  324. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/validate/bench_rule_tasks.py +0 -0
  325. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/validate/bench_trust_tasks.py +0 -0
  326. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/validate/bench_writetype_tasks.py +0 -0
  327. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/validate/blind_gsh_discovery.py +0 -0
  328. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/validate/cargo_directionality.py +0 -0
  329. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/validate/closed_loop.py +0 -0
  330. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/validate/durability_baselines.py +0 -0
  331. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/validate/experiment_design.py +0 -0
  332. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/validate/expr_controls.py +0 -0
  333. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/validate/forward_hypotheses.py +0 -0
  334. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/validate/generative_design.py +0 -0
  335. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/validate/guide_qc_demo.py +0 -0
  336. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/validate/heldout_celltype_expr.py +0 -0
  337. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/validate/immune_calibration.py +0 -0
  338. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/validate/intent_specification.py +0 -0
  339. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/validate/known_biology_expr.py +0 -0
  340. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/validate/offtarget_energetics_eval.py +0 -0
  341. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/validate/out_of_scope_refusal.py +0 -0
  342. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/validate/outcome_calibration.py +0 -0
  343. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/validate/outcome_prediction.py +0 -0
  344. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/validate/paper3_benchmark.py +0 -0
  345. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/validate/paper4_real_validation.py +0 -0
  346. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/validate/paper4_validation.py +0 -0
  347. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/validate/protocol_safety.py +0 -0
  348. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/validate/safety_screening.py +0 -0
  349. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/validate/selective_prediction.py +0 -0
  350. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/validate/seq_vs_measured.py +0 -0
  351. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/validate/target_site_controls.py +0 -0
  352. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/validate/uncertainty_eval.py +0 -0
  353. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/validate/ungrounded_baseline.py +0 -0
  354. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/validate/within_locus_ranking.py +0 -0
  355. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/validate/writer_recovery.py +0 -0
  356. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/verify/__init__.py +0 -0
  357. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/verify/proof.py +0 -0
  358. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/verify/schema.py +0 -0
  359. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/verify/service.py +0 -0
  360. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/web/__init__.py +0 -0
  361. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/web/guide.py +0 -0
  362. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/web/llm.py +0 -0
  363. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/web/llm_provider.py +0 -0
  364. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/web/router.py +0 -0
  365. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/web/server.py +0 -0
  366. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/web/tools.py +0 -0
  367. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/wgenome/__init__.py +0 -0
  368. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/wgenome/chromatin_seq.py +0 -0
  369. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/wgenome/durability.py +0 -0
  370. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/wgenome/export_tracks.py +0 -0
  371. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/wgenome/features.py +0 -0
  372. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/wgenome/gsh_baseline.py +0 -0
  373. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/wgenome/mesh_features.py +0 -0
  374. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/wgenome/offtarget_assay.py +0 -0
  375. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/wgenome/offtarget_data.py +0 -0
  376. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/wgenome/offtarget_predict.py +0 -0
  377. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/wgenome/ood.py +0 -0
  378. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/wgenome/providers.py +0 -0
  379. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/wgenome/safety.py +0 -0
  380. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/wgenome/structure3d.py +0 -0
  381. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/wgenome/uncertainty.py +0 -0
  382. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack/wgenome/writability.py +0 -0
  383. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack.egg-info/SOURCES.txt +0 -0
  384. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack.egg-info/dependency_links.txt +0 -0
  385. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack.egg-info/entry_points.txt +0 -0
  386. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack.egg-info/requires.txt +0 -0
  387. {pen_stack-7.1.7 → pen_stack-7.1.8}/pen_stack.egg-info/top_level.txt +0 -0
  388. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_phase0.json +0 -0
  389. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_phase1_5.json +0 -0
  390. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_phase2.json +0 -0
  391. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_phase3.json +0 -0
  392. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_a.json +0 -0
  393. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_acq.json +0 -0
  394. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_aldesign.json +0 -0
  395. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_alvalidate.json +0 -0
  396. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_atlas.json +0 -0
  397. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_b.json +0 -0
  398. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_ba.json +0 -0
  399. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_ba_v33.json +0 -0
  400. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_ba_v45.json +0 -0
  401. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_bench.json +0 -0
  402. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_c.json +0 -0
  403. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_cal.json +0 -0
  404. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_calib.json +0 -0
  405. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_challenge.json +0 -0
  406. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_chat.json +0 -0
  407. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_cite.json +0 -0
  408. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_closedloop.json +0 -0
  409. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_continual.json +0 -0
  410. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_cosci2.json +0 -0
  411. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_crit.json +0 -0
  412. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_ct.json +0 -0
  413. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_d.json +0 -0
  414. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_delivery.json +0 -0
  415. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_drift.json +0 -0
  416. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_e.json +0 -0
  417. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_env.json +0 -0
  418. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_ep.json +0 -0
  419. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_epitope.json +0 -0
  420. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_expr2.json +0 -0
  421. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_f.json +0 -0
  422. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_frontend.json +0 -0
  423. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_g.json +0 -0
  424. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_gen.json +0 -0
  425. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_genotox.json +0 -0
  426. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_graph.json +0 -0
  427. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_h.json +0 -0
  428. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_hybrid.json +0 -0
  429. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_immune.json +0 -0
  430. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_immune2.json +0 -0
  431. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_ingest.json +0 -0
  432. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_innate.json +0 -0
  433. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_loop.json +0 -0
  434. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_manifest.json +0 -0
  435. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_mc.json +0 -0
  436. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_mcp.json +0 -0
  437. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_mech.json +0 -0
  438. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_mon.json +0 -0
  439. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_o.json +0 -0
  440. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_offtarget.json +0 -0
  441. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_openapi.json +0 -0
  442. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_oracle.json +0 -0
  443. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_orch.json +0 -0
  444. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_outcome.json +0 -0
  445. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_pareto.json +0 -0
  446. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_peg.json +0 -0
  447. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_penchat.json +0 -0
  448. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_plan.json +0 -0
  449. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_policy.json +0 -0
  450. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_profile.json +0 -0
  451. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_proto.json +0 -0
  452. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_r.json +0 -0
  453. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_redteam.json +0 -0
  454. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_route.json +0 -0
  455. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_screen.json +0 -0
  456. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_seroprev.json +0 -0
  457. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_simlab.json +0 -0
  458. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_twincal.json +0 -0
  459. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_uq.json +0 -0
  460. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_v.json +0 -0
  461. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_vcell.json +0 -0
  462. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_verify.json +0 -0
  463. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_writer.json +0 -0
  464. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_writespec.json +0 -0
  465. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/SHA256_LOCK_ws_wv.json +0 -0
  466. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/paper1.yaml +0 -0
  467. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/paper2.yaml +0 -0
  468. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/paper3.yaml +0 -0
  469. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/paper4.yaml +0 -0
  470. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/phase0.yaml +0 -0
  471. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_a.yaml +0 -0
  472. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_acq.yaml +0 -0
  473. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_aldesign.yaml +0 -0
  474. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_alvalidate.yaml +0 -0
  475. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_atlas.yaml +0 -0
  476. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_b.yaml +0 -0
  477. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_ba.yaml +0 -0
  478. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_ba_v33.yaml +0 -0
  479. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_ba_v45.yaml +0 -0
  480. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_bench.yaml +0 -0
  481. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_c.yaml +0 -0
  482. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_cal.yaml +0 -0
  483. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_calib.yaml +0 -0
  484. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_challenge.yaml +0 -0
  485. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_chat.yaml +0 -0
  486. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_cite.yaml +0 -0
  487. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_closedloop.yaml +0 -0
  488. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_continual.yaml +0 -0
  489. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_cosci2.yaml +0 -0
  490. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_crit.yaml +0 -0
  491. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_ct.yaml +0 -0
  492. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_d.yaml +0 -0
  493. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_delivery.yaml +0 -0
  494. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_drift.yaml +0 -0
  495. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_e.yaml +0 -0
  496. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_env.yaml +0 -0
  497. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_ep.yaml +0 -0
  498. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_epitope.yaml +0 -0
  499. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_expr2.yaml +0 -0
  500. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_f.yaml +0 -0
  501. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_frontend.yaml +0 -0
  502. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_g.yaml +0 -0
  503. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_gen.yaml +0 -0
  504. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_genotox.yaml +0 -0
  505. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_graph.yaml +0 -0
  506. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_h.yaml +0 -0
  507. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_hybrid.yaml +0 -0
  508. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_immune.yaml +0 -0
  509. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_immune2.yaml +0 -0
  510. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_ingest.yaml +0 -0
  511. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_innate.yaml +0 -0
  512. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_loop.yaml +0 -0
  513. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_manifest.yaml +0 -0
  514. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_mc.yaml +0 -0
  515. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_mcp.yaml +0 -0
  516. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_mech.yaml +0 -0
  517. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_mon.yaml +0 -0
  518. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_o.yaml +0 -0
  519. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_offtarget.yaml +0 -0
  520. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_openapi.yaml +0 -0
  521. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_oracle.yaml +0 -0
  522. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_orch.yaml +0 -0
  523. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_outcome.yaml +0 -0
  524. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_pareto.yaml +0 -0
  525. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_peg.yaml +0 -0
  526. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_penchat.yaml +0 -0
  527. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_plan.yaml +0 -0
  528. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_policy.yaml +0 -0
  529. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_profile.yaml +0 -0
  530. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_proto.yaml +0 -0
  531. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_r.yaml +0 -0
  532. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_redteam.yaml +0 -0
  533. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_route.yaml +0 -0
  534. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_screen.yaml +0 -0
  535. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_seroprev.yaml +0 -0
  536. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_simlab.yaml +0 -0
  537. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_twincal.yaml +0 -0
  538. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_uq.yaml +0 -0
  539. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_v.yaml +0 -0
  540. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_vcell.yaml +0 -0
  541. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_verify.yaml +0 -0
  542. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_writer.yaml +0 -0
  543. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_writespec.yaml +0 -0
  544. {pen_stack-7.1.7 → pen_stack-7.1.8}/prereg/ws_wv.yaml +0 -0
  545. {pen_stack-7.1.7 → pen_stack-7.1.8}/scripts/build_capsid_fitness.py +0 -0
  546. {pen_stack-7.1.7 → pen_stack-7.1.8}/scripts/build_rag_corpus.py +0 -0
  547. {pen_stack-7.1.7 → pen_stack-7.1.8}/scripts/calibrate_immune_axes.py +0 -0
  548. {pen_stack-7.1.7 → pen_stack-7.1.8}/scripts/fetch_licensed_sources.py +0 -0
  549. {pen_stack-7.1.7 → pen_stack-7.1.8}/scripts/offtarget_chromatin_incremental.py +0 -0
  550. {pen_stack-7.1.7 → pen_stack-7.1.8}/scripts/offtarget_chromatin_matched.py +0 -0
  551. {pen_stack-7.1.7 → pen_stack-7.1.8}/scripts/offtarget_chromatin_validation.py +0 -0
  552. {pen_stack-7.1.7 → pen_stack-7.1.8}/scripts/p1_build_atlas.py +0 -0
  553. {pen_stack-7.1.7 → pen_stack-7.1.8}/scripts/p1_build_durability.py +0 -0
  554. {pen_stack-7.1.7 → pen_stack-7.1.8}/scripts/p1_build_position_effect.py +0 -0
  555. {pen_stack-7.1.7 → pen_stack-7.1.8}/scripts/p1_build_writer_eff.py +0 -0
  556. {pen_stack-7.1.7 → pen_stack-7.1.8}/scripts/p1_export_tracks.py +0 -0
  557. {pen_stack-7.1.7 → pen_stack-7.1.8}/scripts/p1_safety_concordance.py +0 -0
  558. {pen_stack-7.1.7 → pen_stack-7.1.8}/scripts/p1_train_safety.py +0 -0
  559. {pen_stack-7.1.7 → pen_stack-7.1.8}/scripts/p1_validation_report.py +0 -0
  560. {pen_stack-7.1.7 → pen_stack-7.1.8}/scripts/p2_build_atlas.py +0 -0
  561. {pen_stack-7.1.7 → pen_stack-7.1.8}/scripts/p3_benchmark_report.py +0 -0
  562. {pen_stack-7.1.7 → pen_stack-7.1.8}/scripts/p4_genome_scan.py +0 -0
  563. {pen_stack-7.1.7 → pen_stack-7.1.8}/scripts/p52_build_genotox_oracle.py +0 -0
  564. {pen_stack-7.1.7 → pen_stack-7.1.8}/scripts/p53_build_epitope_oracle.py +0 -0
  565. {pen_stack-7.1.7 → pen_stack-7.1.8}/scripts/ws_b_report.py +0 -0
  566. {pen_stack-7.1.7 → pen_stack-7.1.8}/scripts/ws_c_report.py +0 -0
  567. {pen_stack-7.1.7 → pen_stack-7.1.8}/setup.cfg +0 -0
@@ -3,6 +3,29 @@
3
3
  All notable changes to PEN-STACK are documented here. This file follows
4
4
  [Keep a Changelog](https://keepachangelog.com/).
5
5
 
6
+ ## [7.1.8] - 2026-06-30 - Writer immunogenicity moves to the Writer Atlas; SpCas9 removed from the writer options
7
+
8
+ ### Changed
9
+ - **The writer enzyme is no longer chosen in the Design Studio; its immunogenicity moves to the Writer Atlas, where
10
+ writers belong.** The Design Studio's writer dropdown existed only to feed the two writer-as-antigen immune axes
11
+ (MHC-II + ADA); that duplicated the dedicated Writer Atlas page. Now:
12
+ - The **Writer enzyme dropdown is removed** from `DesignForm` (and `DEFAULT_DESIGN`). The Design Studio's "Profile
13
+ immune & delivery" action correctly scopes to the **delivery/vehicle** axes (genotoxicity, CD8 capsid, innate,
14
+ pre-existing NAb, anti-PEG). `ImmuneProfileCard` hides the writer axes by default (`hideWriterAxes`).
15
+ - A new **Writer immunogenicity** card on the **Writer Atlas** surfaces each genome writer's MHC-II/CD4 epitope
16
+ load + ADA risk + human self-match, read from the **committed NetMHCIIpan-4.0 cache — not recomputed**
17
+ (`GET /api/writer/immune`, `immune_profile.writer_immunogenicity_table()`).
18
+ - **SpCas9 is removed** from the writer set: it is a nuclease/editor, not a large-cargo genome writer. The Writer
19
+ Atlas immunogenicity covers the actual writers — **Bxb1** (serine integrase) and **ISCro4** (bridge recombinase);
20
+ the Cas9 nuclease and the human self control are excluded. (The engine retains SpCas9 in its cache for other
21
+ uses; only the user-facing writer list drops it.)
22
+ - The engine still returns the `mhc2_writer` / `ada_writer` axes from `immune_profile()` for API/MCP callers that
23
+ pass a `writer_family` — only the web UI moved the writer profiling to the Writer Atlas. No data was recomputed.
24
+
25
+ ### Added
26
+ - `test_ws_profile.py`: `test_writer_immunogenicity_table_for_the_writer_atlas` (covers Bxb1 + ISCro4 from the
27
+ cache; SpCas9 and the self control excluded; grounded MHC-II + ADA values).
28
+
6
29
  ## [7.1.7] - 2026-06-30 - Administration context (in-vivo / ex-vivo) now drives the immune profile
7
30
 
8
31
  ### 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: 7.1.7
4
+ version: 7.1.8
5
5
  date-released: 2026-06-30
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: 7.1.7
3
+ Version: 7.1.8
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
@@ -1,2 +1,2 @@
1
1
  """PEN-STACK v3.0 - open infrastructure for genome writing."""
2
- __version__ = "7.1.7"
2
+ __version__ = "7.1.8"
@@ -186,6 +186,24 @@ def _writer_antigen_card(design: dict) -> dict | None:
186
186
  "Population-level proxy; realized CD4 response / ADA titer is a known-unknown."}
187
187
 
188
188
 
189
+ # Genome-WRITER families surfaced in the Writer Atlas immunogenicity view: the bundled writers that are actual
190
+ # genome writers (integrase / recombinase), each with a committed real NetMHCIIpan-4.0 MHC-II load + ADA-risk cache.
191
+ # The Cas9 nuclease (an editor, not a large-cargo writer) and the human self control are intentionally excluded.
192
+ _WRITER_IMMUNE_FAMILIES = ("serine_integrase", "bridge_IS110")
193
+
194
+
195
+ def writer_immunogenicity_table() -> list[dict]:
196
+ """Per-writer immunogenicity (MHC-II/CD4 epitope load + ADA risk) for the bundled genome-writer families, read
197
+ from the committed NetMHCIIpan-4.0 cache (no recomputation). Surfaced in the Writer Atlas as the writer's
198
+ antigen profile. Reuses the v6.9 writer-as-antigen card; excludes the Cas9 nuclease and the self control."""
199
+ out = []
200
+ for fam in _WRITER_IMMUNE_FAMILIES:
201
+ card = _writer_antigen_card({"writer_family": fam})
202
+ if card:
203
+ out.append({"writer_family": fam, **card})
204
+ return out
205
+
206
+
189
207
  def immune_profile(design: dict) -> dict:
190
208
  """Per-design immune-risk profile across all axes. ``design`` keys: ``delivery_vehicle`` (or ``vehicle``),
191
209
  ``serotype``, ``cargo_seq``, ``writer_output_form`` (or ``cargo_form``), ``pegylated``.
@@ -244,6 +244,22 @@ def writer_variants_endpoint(integrase: str | None = None, system: str | None =
244
244
  "(reported as a known limitation, never a manufactured positive)."}
245
245
 
246
246
 
247
+ @app.get("/writer/immune", tags=["writer atlas"])
248
+ def writer_immune_endpoint():
249
+ """The writer enzyme's immunogenicity as an antigen (v6.9 writer-as-antigen, surfaced in the Writer Atlas from
250
+ v7.1.8): per genome-writer family, the real NetMHCIIpan-4.0 MHC-II/CD4 epitope load + the ADA-risk axis
251
+ (MHC-II density x foreignness, self-tolerance filtered against the human proteome). Read from the committed
252
+ cache - NOT recomputed. Population-level proxy, never a patient-specific magnitude (a known-unknown). The Cas9
253
+ nuclease (an editor, not a large-cargo writer) and the human self control are excluded."""
254
+ from pen_stack.planner.immune_profile import writer_immunogenicity_table
255
+ return {"writers": writer_immunogenicity_table(),
256
+ "method": "NetMHCIIpan-4.0 MHC-II epitope load + ADA risk (MHC-II density x foreignness, self-tolerance "
257
+ "filtered against the human proteome). Population-level proxy from the committed cache; the "
258
+ "realized CD4 response / ADA titer is a known-unknown.",
259
+ "scale": "0-1, higher = lower risk (1 = least presentable / least ADA-driving)",
260
+ "no_fabrication": True}
261
+
262
+
247
263
  @app.get("/bridge/design")
248
264
  def bridge_design(target: str, donor: str, scaffold: str = "ISCro4_enhanced",
249
265
  ct: str | None = None, scan: bool = False):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pen-stack
3
- Version: 7.1.7
3
+ Version: 7.1.8
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
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "pen-stack"
7
- version = "7.1.7"
7
+ version = "7.1.8"
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
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes