pen-stack 6.2.1__tar.gz → 6.2.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.
- {pen_stack-6.2.1 → pen_stack-6.2.3}/CHANGELOG.md +36 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/CITATION.cff +1 -1
- {pen_stack-6.2.1 → pen_stack-6.2.3}/PKG-INFO +3 -3
- {pen_stack-6.2.1 → pen_stack-6.2.3}/README.md +2 -2
- {pen_stack-6.2.1 → pen_stack-6.2.3}/configs/known_unknowns.yaml +18 -2
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/__init__.py +1 -1
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/atlas/crosslink.py +3 -6
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/planner/optimize.py +13 -2
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack.egg-info/PKG-INFO +3 -3
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pyproject.toml +1 -1
- {pen_stack-6.2.1 → pen_stack-6.2.3}/LICENSE +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/MANIFEST.in +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/bench/run.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/benchmarks/genome_writing_bench/LEADERBOARD.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/benchmarks/genome_writing_bench/README.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/benchmarks/genome_writing_bench/SHA256SUMS +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/benchmarks/genome_writing_bench/SUBMISSIONS.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/benchmarks/genome_writing_bench/tasks.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/benchmarks/genome_writing_challenge/README.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/benchmarks/genome_writing_challenge/SUBMISSIONS.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/configs/antipeg.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/configs/atlas_families.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/configs/bridge_offtarget_profile.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/configs/capsid_epitope_oracle.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/configs/capsid_sequences.fasta +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/configs/cargo_polish.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/configs/cell_types.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/configs/datasets.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/configs/delivery_constraints.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/configs/delivery_rules.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/configs/delivery_vehicles.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/configs/gates_v3.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/configs/genotoxicity_oracle.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/configs/gsh_validated_heldout.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/configs/intent_weights.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/configs/llm.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/configs/monitor_queries.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/configs/oracles/scope_cards.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/configs/rules/delivery.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/configs/rules/fold.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/configs/rules/multiplex.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/configs/rules/payload.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/configs/rules/reachability.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/configs/safety/hazard_registry.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/configs/safety/policy.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/configs/safety/probes.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/configs/score_axes.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/configs/seroprevalence.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/configs/target_sites.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/configs/universe_crosswalk.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/configs/write_types.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/configs/wtkb_curated.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/data/curated/bridge_offtarget_energetics.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/data/curated/bridge_offtarget_profile_measured.parquet +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/data/curated/gene_coords.parquet +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/data/curated/unified_editor_universe.parquet +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/BACKLOG.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/DEPLOY.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/INFRA.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/MCP.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/RELEASING.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/REPRO.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/STABILITY.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/agent.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/alphagenome_feasibility.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/autonomy.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/benchmark_circularity.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/biosecurity.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/build_interface.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/cards/atlas.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/cards/durability.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/cards/safety.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/challenge.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/closed_loop.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/co_scientist.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/co_scientist_loop.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/delivery.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/delivery_immunology.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/digital_twin.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/dissemination.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/environment.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/experiment_design.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/generative_design.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/index.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/integrations.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/mechanistic_constraints.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/oracles.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/positioning.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/private_data_formats.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/quickstart.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/responsible_use.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/rules.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/scope.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/scorecard.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/tutorials/compare-families.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/tutorials/score-deliverability.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/tutorials/where-can-i-write.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/tutorials/which-writer-reaches-locus.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/uncertainty.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/verify.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/world_model.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/writer_verification.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/docs/wtkb.md +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/_resources.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/active/__init__.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/active/acquire.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/active/design.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/active/validate.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/adapt/__init__.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/adapt/finetune.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/adapt/ingest.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/adapt/pipeline.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/adapt/recalibrate.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/adapt/report.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/agent/__init__.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/agent/cite.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/agent/co_scientist.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/agent/epistemic.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/agent/guardrails.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/agent/mcp_server.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/agent/orchestrator.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/agent/orchestrator_live.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/agent/pen_agent.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/agent/scope.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/agent/tools.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/api/__init__.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/api/manifest.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/atlas/__init__.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/atlas/build_wtkb.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/atlas/expand.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/atlas/schema.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/atlas/scorecard.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/atlas/universe.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/atlas/variant_propose.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/atlas/writer_verify.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/bridge/__init__.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/bridge/activity.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/bridge/cli.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/bridge/fold_qc.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/bridge/guide_qc.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/bridge/ingest.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/bridge/offtarget.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/bridge/offtarget_energetics.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/bridge/ortholog_screen.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/bridge/pipeline.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/build/__init__.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/build/ingest.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/build/protocol.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/build/simlab.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/cli.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/data/__init__.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/data/encode.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/data/genome.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/data/ingest_chromatin.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/data/ingest_integration.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/data/ingest_safety_annot.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/data/ingest_trip.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/design/__init__.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/design/generate.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/design/pareto.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/design/space.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/env/__init__.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/env/genome_writing_env.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/env/policies.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/graph/__init__.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/graph/build.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/graph/cell_types.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/graph/ingest.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/graph/query.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/graph/schema.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/loop/__init__.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/loop/continual.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/loop/cycle.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/loop/drift.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/mech/__init__.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/mech/classify_atlas.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/mech/whitelist.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/monitor/__init__.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/monitor/europepmc.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/monitor/run.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/monitor/triage.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/oracles/__init__.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/oracles/cache.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/oracles/energetics.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/oracles/genome.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/oracles/protein_design.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/oracles/rna.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/oracles/schema.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/oracles/structure.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/oracles/vcell.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/planner/__init__.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/planner/antipeg_oracle.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/planner/capsid_epitope_oracle.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/planner/cargo.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/planner/cargo_polish.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/planner/delivery.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/planner/delivery_constraints.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/planner/delivery_immunology.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/planner/delivery_vehicles.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/planner/genotoxicity_oracle.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/planner/immune_profile.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/planner/innate_sensing.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/planner/multiplex.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/planner/pipeline.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/planner/report.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/planner/router.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/planner/seroprevalence_oracle.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/planner/target_site.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/rag/__init__.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/rag/index.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/rag/llm.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/rag/qa.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/rules/__init__.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/rules/evaluators.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/rules/loader.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/rules/schema.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/rules/solver.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/safety/__init__.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/safety/audit.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/safety/gate.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/safety/policy.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/safety/redteam.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/safety/registry.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/safety/screen.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/score/__init__.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/score/recalibrate.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/score/therapeutic.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/server/__init__.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/server/api.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/twin/__init__.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/twin/calibrate.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/twin/mechanistic.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/twin/outcome.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/ui/__init__.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/ui/app.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/validate/__init__.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/validate/adapt_demo.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/validate/agent_eval.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/validate/bench_adversarial_tasks.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/validate/bench_coscientist_tasks.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/validate/bench_graph_tasks.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/validate/bench_rule_tasks.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/validate/bench_trust_tasks.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/validate/bench_writetype_tasks.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/validate/blind_gsh_discovery.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/validate/cargo_directionality.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/validate/closed_loop.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/validate/durability_baselines.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/validate/experiment_design.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/validate/forward_hypotheses.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/validate/generative_design.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/validate/guide_qc_demo.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/validate/immune_calibration.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/validate/intent_specification.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/validate/offtarget_energetics_eval.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/validate/out_of_scope_refusal.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/validate/outcome_calibration.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/validate/outcome_prediction.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/validate/paper3_benchmark.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/validate/paper4_real_validation.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/validate/paper4_validation.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/validate/protocol_safety.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/validate/safety_screening.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/validate/selective_prediction.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/validate/seq_vs_measured.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/validate/target_site_controls.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/validate/uncertainty_eval.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/validate/ungrounded_baseline.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/validate/within_locus_ranking.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/validate/writer_recovery.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/verify/__init__.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/verify/schema.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/verify/service.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/web/__init__.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/web/llm.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/web/server.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/web/tools.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/wgenome/__init__.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/wgenome/chromatin_seq.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/wgenome/durability.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/wgenome/export_tracks.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/wgenome/features.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/wgenome/gsh_baseline.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/wgenome/mesh_features.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/wgenome/ood.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/wgenome/providers.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/wgenome/safety.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/wgenome/structure3d.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/wgenome/uncertainty.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack/wgenome/writability.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack.egg-info/SOURCES.txt +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack.egg-info/dependency_links.txt +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack.egg-info/entry_points.txt +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack.egg-info/requires.txt +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/pen_stack.egg-info/top_level.txt +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_phase0.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_phase1_5.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_phase2.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_phase3.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_a.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_acq.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_aldesign.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_alvalidate.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_atlas.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_b.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_ba.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_ba_v33.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_ba_v45.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_bench.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_c.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_cal.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_calib.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_challenge.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_chat.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_cite.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_continual.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_cosci2.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_crit.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_ct.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_d.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_drift.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_e.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_env.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_ep.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_epitope.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_f.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_frontend.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_g.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_gen.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_genotox.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_graph.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_h.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_immune.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_ingest.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_innate.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_loop.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_manifest.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_mc.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_mcp.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_mech.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_mon.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_o.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_openapi.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_orch.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_outcome.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_pareto.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_peg.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_plan.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_policy.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_profile.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_proto.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_r.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_redteam.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_route.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_screen.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_seroprev.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_simlab.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_twincal.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_uq.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_v.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_vcell.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/SHA256_LOCK_ws_wv.json +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/paper1.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/paper2.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/paper3.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/paper4.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/phase0.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_a.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_acq.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_aldesign.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_alvalidate.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_atlas.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_b.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_ba.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_ba_v33.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_ba_v45.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_bench.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_c.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_cal.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_calib.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_challenge.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_chat.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_cite.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_continual.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_cosci2.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_crit.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_ct.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_d.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_drift.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_e.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_env.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_ep.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_epitope.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_f.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_frontend.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_g.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_gen.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_genotox.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_graph.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_h.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_immune.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_ingest.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_innate.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_loop.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_manifest.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_mc.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_mcp.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_mech.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_mon.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_o.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_openapi.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_orch.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_outcome.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_pareto.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_peg.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_plan.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_policy.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_profile.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_proto.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_r.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_redteam.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_route.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_screen.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_seroprev.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_simlab.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_twincal.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_uq.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_v.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_vcell.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/prereg/ws_wv.yaml +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/scripts/p1_build_atlas.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/scripts/p1_build_durability.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/scripts/p1_export_tracks.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/scripts/p1_safety_concordance.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/scripts/p1_train_safety.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/scripts/p1_validation_report.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/scripts/p2_build_atlas.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/scripts/p3_benchmark_report.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/scripts/p4_genome_scan.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/scripts/p52_build_genotox_oracle.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/scripts/p53_build_epitope_oracle.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/scripts/ws_b_report.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/scripts/ws_c_report.py +0 -0
- {pen_stack-6.2.1 → pen_stack-6.2.3}/setup.cfg +0 -0
|
@@ -3,6 +3,42 @@
|
|
|
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
|
+
## [6.2.3] - 2026-06-12 - v6.2.3: scope matcher covers functional titer + durability (patch)
|
|
7
|
+
|
|
8
|
+
**Honesty-coverage fix (from the 20-query acceptance suite, `phase_6.2/PEN-STACK_ACCEPTANCE_TESTS.md`).** The
|
|
9
|
+
known-unknowns matcher (`configs/known_unknowns.yaml`) had no entry for *functional titer / absolute in-vivo
|
|
10
|
+
expression magnitude* and its *durability* terms were too narrow ("how long will it last **in a patient**"), so
|
|
11
|
+
common measured-endpoint questions ("what functional titer (% of normal)?", "how long will episomal AAV
|
|
12
|
+
expression last?") were not explicitly deferred. The no-fabrication spine already held (no titer/half-life was
|
|
13
|
+
ever emitted, and the immune profile lists `patient_specific_titer`), but the matcher should flag these
|
|
14
|
+
proactively.
|
|
15
|
+
|
|
16
|
+
### Added / Fixed
|
|
17
|
+
- `configs/known_unknowns.yaml`: new known-unknown `in_vivo_expression_magnitude` (functional titer / % of normal
|
|
18
|
+
/ absolute expression — a measured clinical endpoint, never predicted; PEN-STACK gives the relative mechanistic
|
|
19
|
+
proxy + immune context); broadened `long_term_clinical_durability` match-terms/patterns to catch "how long will
|
|
20
|
+
… last/persist", "durability", "half-life". Regression test
|
|
21
|
+
`tests/unit/test_ws_api.py::test_scope_defers_titer_and_durability_questions`.
|
|
22
|
+
|
|
23
|
+
### Acceptance suite result
|
|
24
|
+
- 20/20 behave as specified at the engine level: grounded where earned, refusing where unsafe (ricin/botulinum),
|
|
25
|
+
abstaining/deferring where honest (titer, durability, phenotype), no fabricated number. T10 (RNP↔AAV) and T12
|
|
26
|
+
(multiplex translocation) are enforced via `delivery.cargo_form_compatible` and `multiplex.translocation_risk`
|
|
27
|
+
on the structured design fields (`writer_output_form`, `edits`).
|
|
28
|
+
|
|
29
|
+
## [6.2.2] - 2026-06-12 - v6.2.2: safe-harbour locus-nickname resolution (patch)
|
|
30
|
+
|
|
31
|
+
**Usability fix.** Site Finder / `/plan` / `/writable` returned 0 plans for `AAVS1` because it is a genomic
|
|
32
|
+
safe-harbour *locus nickname*, not an HGNC gene symbol, so the gene→coordinate lookup (`gene_coords`, 60,888
|
|
33
|
+
symbols) could not resolve it — honest empty, but unhelpful for the most-typed safe harbour. (The cell-type
|
|
34
|
+
atlases are complete; real symbols like `PCSK9`/`HBB`/`CCR5`/`CLYBL` resolved fine.)
|
|
35
|
+
|
|
36
|
+
### Fixed
|
|
37
|
+
- `pen_stack/planner/optimize.py`: `resolve_gene()` maps well-documented safe-harbour nicknames to their host
|
|
38
|
+
gene (`AAVS1`→`PPP1R12C` 19q13.42; `H11`/`Hipp11`→`EIF4ENIF1` 22q12) at every gene→coordinate lookup
|
|
39
|
+
(`gene_region`, `plan`, `crosslink.loci_for_gene`); real symbols pass through unchanged. Regression test
|
|
40
|
+
`tests/unit/test_ws_api.py::test_safe_harbour_nickname_resolves_to_host_gene`.
|
|
41
|
+
|
|
6
42
|
## [6.2.1] - 2026-06-12 - v6.2.1: JSON-safe atlas/crosslink endpoints (patch)
|
|
7
43
|
|
|
8
44
|
**Bug fix.** The `/atlas`, `/writable`, and `/crosslink/loci` endpoints returned raw DataFrame records, which
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pen-stack
|
|
3
|
-
Version: 6.2.
|
|
3
|
+
Version: 6.2.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
|
|
@@ -90,9 +90,9 @@ every design against rule-grounded mechanism, reports calibrated confidence, cit
|
|
|
90
90
|
[](https://codecov.io/gh/ahmedanees-m/pen-stack)
|
|
91
91
|
[](LICENSE)
|
|
92
92
|
[](https://www.python.org/)
|
|
93
|
-
[](CHANGELOG.md)
|
|
94
94
|
[](docs/STABILITY.md)
|
|
95
|
-
[](tests/)
|
|
96
96
|
[](https://github.com/astral-sh/ruff)
|
|
97
97
|
[](docker/)
|
|
98
98
|
[](prereg/)
|
|
@@ -15,9 +15,9 @@ every design against rule-grounded mechanism, reports calibrated confidence, cit
|
|
|
15
15
|
[](https://codecov.io/gh/ahmedanees-m/pen-stack)
|
|
16
16
|
[](LICENSE)
|
|
17
17
|
[](https://www.python.org/)
|
|
18
|
-
[](CHANGELOG.md)
|
|
19
19
|
[](docs/STABILITY.md)
|
|
20
|
-
[](tests/)
|
|
21
21
|
[](https://github.com/astral-sh/ruff)
|
|
22
22
|
[](docker/)
|
|
23
23
|
[](prereg/)
|
|
@@ -36,8 +36,24 @@ known_unknowns:
|
|
|
36
36
|
cassette in a given epigenome) — it does NOT predict multi-year in-vivo persistence, immune clearance,
|
|
37
37
|
or clonal dynamics in a patient"
|
|
38
38
|
match_terms: ["long-term in-vivo", "long term in vivo", "years of expression", "clinical durability",
|
|
39
|
-
"persist in the patient", "how long will it last in", "in-vivo persistence", "clonal"
|
|
40
|
-
|
|
39
|
+
"persist in the patient", "how long will it last in", "in-vivo persistence", "clonal",
|
|
40
|
+
"how long will expression last", "how long will it last", "how long will the cassette",
|
|
41
|
+
"expression duration", "half-life", "half life", "will it persist", "how durable",
|
|
42
|
+
"durability magnitude", "how long does"]
|
|
43
|
+
patterns: ["\\bhow long\\b[^?]{0,60}\\b(last|persist|express|stay expressed|remain)\\b",
|
|
44
|
+
"\\bduration of (expression|the cassette|the transgene)\\b"]
|
|
45
|
+
|
|
46
|
+
- id: in_vivo_expression_magnitude
|
|
47
|
+
title: "absolute in-vivo expression magnitude / functional titer"
|
|
48
|
+
requires: "an in-vivo expression / pharmacokinetic measurement (functional titer, % of normal, ng/mL) in a
|
|
49
|
+
living organism"
|
|
50
|
+
why: "PEN-STACK computes a RELATIVE, dimensionless mechanistic expression proxy (promoter × copy ×
|
|
51
|
+
accessibility) and the immune context — it does NOT predict an absolute in-vivo functional titer, a
|
|
52
|
+
percent-of-normal level, or a protein concentration; that is a measured clinical endpoint, never predicted"
|
|
53
|
+
match_terms: ["titer", "titre", "percent of normal", "% of normal", "percent normal", "iu/ml", "ng/ml",
|
|
54
|
+
"absolute expression", "expression level in vivo", "how much protein", "how much will it express",
|
|
55
|
+
"what level of expression", "protein concentration", "serum level", "plasma level"]
|
|
56
|
+
patterns: ["\\bwhat (functional )?titer\\b", "\\b\\d+\\s*% of normal\\b"]
|
|
41
57
|
|
|
42
58
|
- id: higher_order_epistasis
|
|
43
59
|
title: "higher-order epistasis / multi-edit interaction beyond the translocation screen"
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"""PEN-STACK v3.0 - open infrastructure for genome writing."""
|
|
2
|
-
__version__ = "6.2.
|
|
2
|
+
__version__ = "6.2.3"
|
|
@@ -99,13 +99,10 @@ def writers_for_locus(chrom: str, bin_idx: int, ct: str = "k562") -> pd.DataFram
|
|
|
99
99
|
|
|
100
100
|
def loci_for_gene(gene: str, ct: str = "k562", gene_coords: str | Path | None = None) -> pd.DataFrame:
|
|
101
101
|
"""Writable bins overlapping a gene body (forward query helper)."""
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
else:
|
|
105
|
-
from pen_stack.planner.optimize import gene_coords_path
|
|
106
|
-
gc_path = gene_coords_path()
|
|
102
|
+
from pen_stack.planner.optimize import gene_coords_path, resolve_gene
|
|
103
|
+
gc_path = Path(gene_coords) if gene_coords else gene_coords_path()
|
|
107
104
|
gc = pd.read_parquet(gc_path)
|
|
108
|
-
g = gc[gc["gene"] == gene]
|
|
105
|
+
g = gc[gc["gene"] == resolve_gene(gene)] # resolve safe-harbour nicknames (AAVS1 -> PPP1R12C)
|
|
109
106
|
if g.empty:
|
|
110
107
|
return pd.DataFrame()
|
|
111
108
|
r = g.iloc[0]
|
|
@@ -209,9 +209,20 @@ def _gene_coords(path: str | None = None) -> pd.DataFrame:
|
|
|
209
209
|
return pd.read_parquet(Path(path) if path else gene_coords_path())
|
|
210
210
|
|
|
211
211
|
|
|
212
|
+
# Genomic safe-harbour *locus nicknames* are not HGNC gene symbols, so they are absent from gene_coords; map the
|
|
213
|
+
# well-documented ones to their host gene so a user who types the common name still gets a plan. AAVS1 = intron 1
|
|
214
|
+
# of PPP1R12C (19q13.42); H11/Hipp11 = an intron of EIF4ENIF1 (22q12). (CCR5, CLYBL, HPRT1 are real symbols.)
|
|
215
|
+
_GSH_ALIASES = {"AAVS1": "PPP1R12C", "H11": "EIF4ENIF1", "HIPP11": "EIF4ENIF1"}
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
def resolve_gene(gene: str) -> str:
|
|
219
|
+
"""Map a safe-harbour locus nickname (e.g. AAVS1) to its HGNC host gene; pass real symbols through unchanged."""
|
|
220
|
+
return _GSH_ALIASES.get(str(gene).strip().upper(), gene)
|
|
221
|
+
|
|
222
|
+
|
|
212
223
|
def gene_region(gene: str, flank_kb: int = 50) -> tuple[str, int, int] | None:
|
|
213
224
|
gc = _gene_coords()
|
|
214
|
-
g = gc[gc["gene"] == gene]
|
|
225
|
+
g = gc[gc["gene"] == resolve_gene(gene)]
|
|
215
226
|
if g.empty:
|
|
216
227
|
return None
|
|
217
228
|
r = g.iloc[0]
|
|
@@ -232,7 +243,7 @@ def plan(gene: str, intent: EditIntent | str, cargo_bp: int, writable_df: pd.Dat
|
|
|
232
243
|
return pd.DataFrame()
|
|
233
244
|
# on_target = bin overlaps the gene body (not just the flank)
|
|
234
245
|
g = _gene_coords()
|
|
235
|
-
gr = g[g["gene"] == gene].iloc[0]
|
|
246
|
+
gr = g[g["gene"] == resolve_gene(gene)].iloc[0]
|
|
236
247
|
sub["on_target"] = sub["bin"].between(int(gr["start"]) // BIN_BP, int(gr["end"]) // BIN_BP)
|
|
237
248
|
scored = score_candidates(sub, intent, cargo_bp)
|
|
238
249
|
cols = ["chrom", "bin", "writer", "safety", "p_durable", "writer_activity",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pen-stack
|
|
3
|
-
Version: 6.2.
|
|
3
|
+
Version: 6.2.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
|
|
@@ -90,9 +90,9 @@ every design against rule-grounded mechanism, reports calibrated confidence, cit
|
|
|
90
90
|
[](https://codecov.io/gh/ahmedanees-m/pen-stack)
|
|
91
91
|
[](LICENSE)
|
|
92
92
|
[](https://www.python.org/)
|
|
93
|
-
[](CHANGELOG.md)
|
|
94
94
|
[](docs/STABILITY.md)
|
|
95
|
-
[](tests/)
|
|
96
96
|
[](https://github.com/astral-sh/ruff)
|
|
97
97
|
[](docker/)
|
|
98
98
|
[](prereg/)
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "pen-stack"
|
|
7
|
-
version = "6.2.
|
|
7
|
+
version = "6.2.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
|
|
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
|
|
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
|
|
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
|
|
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
|