pen-stack 7.2.2__tar.gz → 7.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-7.2.2 → pen_stack-7.2.3}/CHANGELOG.md +18 -4
- {pen_stack-7.2.2 → pen_stack-7.2.3}/CITATION.cff +1 -1
- {pen_stack-7.2.2 → pen_stack-7.2.3}/PKG-INFO +1 -1
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/cards/offtarget_data.md +1 -1
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/positioning.md +3 -3
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/__init__.py +1 -1
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/server/api.py +2 -2
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/wgenome/offtarget_enumerate.py +3 -3
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/wgenome/offtarget_nuclease.py +1 -1
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/wgenome/offtarget_predict.py +2 -2
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack.egg-info/PKG-INFO +1 -1
- pen_stack-7.2.3/prereg/SHA256_LOCK_ws_offtarget2.json +9 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/paper4.yaml +1 -1
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_offtarget2.yaml +5 -5
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pyproject.toml +1 -1
- pen_stack-7.2.2/prereg/SHA256_LOCK_ws_offtarget2.json +0 -9
- {pen_stack-7.2.2 → pen_stack-7.2.3}/LICENSE +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/MANIFEST.in +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/README.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/bench/run.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/benchmarks/chat_grounding/README.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/benchmarks/chat_grounding/SHA256SUMS +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/benchmarks/chat_headtohead/README.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/benchmarks/chat_routing/README.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/benchmarks/chat_routing/SHA256SUMS +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/benchmarks/chat_safety/README.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/benchmarks/chat_safety/SHA256SUMS +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/benchmarks/delivery/SHA256SUMS +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/benchmarks/genome_writing_bench/LEADERBOARD.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/benchmarks/genome_writing_bench/README.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/benchmarks/genome_writing_bench/SHA256SUMS +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/benchmarks/genome_writing_bench/SUBMISSIONS.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/benchmarks/genome_writing_bench/tasks.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/benchmarks/genome_writing_challenge/README.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/benchmarks/genome_writing_challenge/SUBMISSIONS.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/benchmarks/loop/SHA256SUMS +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/benchmarks/offtarget/SHA256SUMS +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/benchmarks/offtarget/integrase/README.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/benchmarks/offtarget/integrase/SHA256SUMS +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/benchmarks/oracle/SHA256SUMS +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/benchmarks/position_effect/README.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/benchmarks/position_effect/SHA256SUMS +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/benchmarks/verify/SHA256SUMS +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/benchmarks/writer_efficiency/README.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/benchmarks/writer_efficiency/SHA256SUMS +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/benchmarks/writespec/SHA256SUMS +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/aav_serotype_tropism.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/antipeg.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/atlas_families.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/bridge_offtarget_profile.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/calibration/preexisting_nab_independent.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/capsid_epitope_oracle.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/capsid_sequences.fasta +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/cargo_polish.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/cell_types.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/datasets.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/delivery_constraints.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/delivery_rules.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/delivery_vehicles.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/expression/modifiers.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/expression/promoters.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/gates_v3.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/genotoxicity_oracle.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/gsh_validated_heldout.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/intent_weights.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/known_unknowns.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/llm.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/metric_guide.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/mhc_epitope_oracle.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/monitor_queries.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/oracles/execution.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/oracles/reliability.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/oracles/scope_cards.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/rules/compliance.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/rules/delivery.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/rules/fold.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/rules/multiplex.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/rules/payload.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/rules/reachability.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/safety/hazard_registry.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/safety/policy.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/safety/probes.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/score_axes.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/seroprevalence.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/target_sites.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/universe_crosswalk.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/write_types.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/writer_sequences.fasta +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/configs/wtkb_curated.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/data/curated/bridge_offtarget_energetics.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/data/curated/bridge_offtarget_profile_measured.parquet +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/data/curated/cast_systems.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/data/curated/gene_coords.parquet +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/data/curated/integrase_att.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/data/curated/unified_editor_universe.parquet +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/data/offtarget/enumerated_cache.parquet +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/data/offtarget/motif_cache.parquet +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/BACKLOG.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/DEPLOY.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/INFRA.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/MCP.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/RELEASING.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/REPRO.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/STABILITY.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/agent.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/alphagenome_feasibility.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/autonomy.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/benchmark_circularity.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/biosecurity.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/build_interface.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/cards/atlas.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/cards/durability.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/cards/position_effect_data.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/cards/safety.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/cards/writer_efficiency_data.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/challenge.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/closed_loop.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/co_scientist.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/co_scientist_loop.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/delivery.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/delivery_immunology.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/delivery_recommender.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/digital_twin.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/dissemination.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/environment.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/experiment_design.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/generative_design.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/immune_profiler.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/index.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/integrations.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/live_oracles.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/mechanistic_constraints.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/offtarget.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/oracle_mesh.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/oracles.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/position_effect.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/private_data_formats.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/quickstart.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/responsible_use.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/rule_spec.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/rules.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/scope.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/scorecard.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/tpe_bench.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/tutorials/compare-families.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/tutorials/score-deliverability.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/tutorials/where-can-i-write.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/tutorials/which-writer-reaches-locus.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/uncertainty.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/verify.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/verify_service.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/world_model.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/writer_efficiency.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/writer_verification.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/writespec_bench.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/writespec_profile.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/docs/wtkb.md +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/_resources.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/active/__init__.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/active/acquire.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/active/brains.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/active/campaign.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/active/design.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/active/validate.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/adapt/__init__.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/adapt/finetune.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/adapt/ingest.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/adapt/pipeline.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/adapt/recalibrate.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/adapt/report.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/agent/__init__.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/agent/cite.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/agent/co_scientist.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/agent/epistemic.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/agent/guardrails.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/agent/mcp_server.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/agent/orchestrator.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/agent/orchestrator_live.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/agent/pen_agent.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/agent/scope.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/agent/tools.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/api/__init__.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/api/manifest.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/atlas/__init__.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/atlas/build_wtkb.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/atlas/crosslink.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/atlas/expand.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/atlas/guide_design.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/atlas/schema.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/atlas/scorecard.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/atlas/universe.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/atlas/variant_propose.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/atlas/writer_efficiency.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/atlas/writer_predict.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/atlas/writer_recommend.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/atlas/writer_verify.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/bridge/__init__.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/bridge/activity.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/bridge/cli.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/bridge/fold_qc.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/bridge/guide_qc.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/bridge/ingest.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/bridge/offtarget.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/bridge/offtarget_energetics.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/bridge/ortholog_screen.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/bridge/pipeline.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/build/__init__.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/build/cloudlab.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/build/ingest.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/build/protocol.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/build/simlab.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/cli.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/data/__init__.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/data/encode.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/data/genome.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/data/ingest_chromatin.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/data/ingest_integration.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/data/ingest_safety_annot.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/data/ingest_trip.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/design/__init__.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/design/capsid_generate.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/design/generate.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/design/pareto.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/design/space.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/design/writer_variants.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/env/__init__.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/env/genome_writing_env.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/env/policies.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/graph/__init__.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/graph/build.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/graph/cell_types.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/graph/ingest.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/graph/query.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/graph/schema.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/loop/__init__.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/loop/continual.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/loop/cycle.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/loop/drift.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/mech/__init__.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/mech/classify_atlas.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/mech/whitelist.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/monitor/__init__.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/monitor/europepmc.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/monitor/run.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/monitor/triage.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/oracles/__init__.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/oracles/affinity.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/oracles/cache.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/oracles/energetics.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/oracles/genome.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/oracles/protein_design.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/oracles/reliability.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/oracles/rna.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/oracles/schema.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/oracles/status.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/oracles/structure.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/oracles/structure_run.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/oracles/vcell.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/planner/__init__.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/planner/ada_risk.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/planner/antipeg_oracle.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/planner/capsid_epitope_oracle.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/planner/cargo.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/planner/cargo_polish.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/planner/chromosome.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/planner/delivery.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/planner/delivery_constraints.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/planner/delivery_immune.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/planner/delivery_immunology.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/planner/delivery_predict.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/planner/delivery_vehicles.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/planner/genotoxicity_oracle.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/planner/immune_mhc2.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/planner/immune_profile.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/planner/innate_sensing.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/planner/multiplex.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/planner/optimize.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/planner/pipeline.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/planner/report.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/planner/router.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/planner/seroprevalence_oracle.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/planner/target_site.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/rag/__init__.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/rag/corpus.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/rag/embed.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/rag/ground.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/rag/index.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/rag/llm.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/rag/qa.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/rag/retrieve.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/rules/__init__.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/rules/evaluators.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/rules/loader.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/rules/schema.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/rules/solver.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/rules/spec.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/safety/__init__.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/safety/audit.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/safety/gate.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/safety/policy.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/safety/redteam.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/safety/registry.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/safety/screen.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/safety/standards.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/score/__init__.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/score/recalibrate.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/score/therapeutic.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/server/__init__.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/spec/__init__.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/spec/clarify.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/spec/extract.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/spec/resolvers/__init__.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/spec/resolvers/cell.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/spec/resolvers/chem.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/spec/resolvers/feature.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/spec/resolvers/gene.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/spec/resolvers/locus.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/spec/resolvers/phenotype.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/spec/satisfy.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/spec/service.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/spec/writespec.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/twin/__init__.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/twin/calibrate.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/twin/data/__init__.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/twin/data/position_effect.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/twin/mechanistic.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/twin/outcome.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/twin/position_effect.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/ui/__init__.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/ui/app.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/validate/__init__.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/validate/adapt_demo.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/validate/agent_eval.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/validate/bench_adversarial_tasks.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/validate/bench_coscientist_tasks.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/validate/bench_graph_tasks.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/validate/bench_rule_tasks.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/validate/bench_trust_tasks.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/validate/bench_writetype_tasks.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/validate/blind_gsh_discovery.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/validate/cargo_directionality.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/validate/closed_loop.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/validate/durability_baselines.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/validate/experiment_design.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/validate/expr_controls.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/validate/forward_hypotheses.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/validate/generative_design.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/validate/guide_qc_demo.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/validate/heldout_celltype_expr.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/validate/immune_calibration.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/validate/intent_specification.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/validate/known_biology_expr.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/validate/offtarget_energetics_eval.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/validate/out_of_scope_refusal.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/validate/outcome_calibration.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/validate/outcome_prediction.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/validate/paper3_benchmark.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/validate/paper4_real_validation.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/validate/paper4_validation.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/validate/protocol_safety.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/validate/safety_screening.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/validate/selective_prediction.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/validate/seq_vs_measured.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/validate/target_site_controls.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/validate/uncertainty_eval.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/validate/ungrounded_baseline.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/validate/within_locus_ranking.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/validate/writer_recovery.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/verify/__init__.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/verify/proof.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/verify/schema.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/verify/service.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/web/__init__.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/web/guide.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/web/llm.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/web/llm_provider.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/web/router.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/web/server.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/web/tools.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/wgenome/__init__.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/wgenome/chromatin_seq.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/wgenome/durability.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/wgenome/export_tracks.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/wgenome/features.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/wgenome/gsh_baseline.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/wgenome/mesh_features.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/wgenome/offtarget_assay.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/wgenome/offtarget_bridge.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/wgenome/offtarget_cast.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/wgenome/offtarget_data.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/wgenome/offtarget_integrase.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/wgenome/offtarget_paste.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/wgenome/ood.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/wgenome/providers.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/wgenome/safety.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/wgenome/structure3d.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/wgenome/uncertainty.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack/wgenome/writability.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack.egg-info/SOURCES.txt +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack.egg-info/dependency_links.txt +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack.egg-info/entry_points.txt +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack.egg-info/requires.txt +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/pen_stack.egg-info/top_level.txt +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_phase0.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_phase1_5.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_phase2.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_phase3.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_a.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_acq.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_aldesign.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_alvalidate.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_atlas.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_b.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_ba.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_ba_v33.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_ba_v45.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_bench.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_c.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_cal.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_calib.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_challenge.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_chat.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_cite.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_closedloop.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_continual.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_cosci2.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_crit.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_ct.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_d.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_delivery.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_drift.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_e.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_env.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_ep.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_epitope.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_expr2.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_f.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_frontend.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_g.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_gen.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_genotox.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_graph.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_h.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_hybrid.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_immune.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_immune2.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_ingest.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_innate.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_loop.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_manifest.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_mc.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_mcp.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_mech.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_mon.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_o.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_offtarget.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_openapi.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_oracle.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_orch.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_outcome.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_pareto.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_peg.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_penchat.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_plan.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_policy.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_profile.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_proto.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_r.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_redteam.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_route.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_screen.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_seroprev.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_simlab.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_twincal.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_uq.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_v.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_vcell.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_verify.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_writer.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_writespec.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/SHA256_LOCK_ws_wv.json +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/paper1.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/paper2.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/paper3.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/phase0.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_a.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_acq.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_aldesign.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_alvalidate.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_atlas.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_b.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_ba.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_ba_v33.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_ba_v45.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_bench.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_c.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_cal.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_calib.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_challenge.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_chat.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_cite.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_closedloop.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_continual.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_cosci2.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_crit.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_ct.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_d.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_delivery.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_drift.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_e.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_env.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_ep.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_epitope.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_expr2.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_f.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_frontend.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_g.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_gen.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_genotox.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_graph.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_h.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_hybrid.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_immune.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_immune2.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_ingest.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_innate.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_loop.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_manifest.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_mc.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_mcp.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_mech.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_mon.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_o.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_offtarget.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_openapi.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_oracle.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_orch.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_outcome.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_pareto.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_peg.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_penchat.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_plan.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_policy.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_profile.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_proto.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_r.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_redteam.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_route.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_screen.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_seroprev.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_simlab.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_twincal.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_uq.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_v.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_vcell.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_verify.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_writer.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_writespec.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/prereg/ws_wv.yaml +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/scripts/build_capsid_fitness.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/scripts/build_rag_corpus.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/scripts/calibrate_immune_axes.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/scripts/fetch_licensed_sources.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/scripts/offtarget_chromatin_incremental.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/scripts/offtarget_chromatin_matched.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/scripts/offtarget_chromatin_validation.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/scripts/p1_build_atlas.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/scripts/p1_build_durability.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/scripts/p1_build_position_effect.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/scripts/p1_build_writer_eff.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/scripts/p1_export_tracks.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/scripts/p1_safety_concordance.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/scripts/p1_train_safety.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/scripts/p1_validation_report.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/scripts/p2_build_atlas.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/scripts/p3_benchmark_report.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/scripts/p4_genome_scan.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/scripts/p52_build_genotox_oracle.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/scripts/p53_build_epitope_oracle.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/scripts/ws_b_report.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/scripts/ws_c_report.py +0 -0
- {pen_stack-7.2.2 → pen_stack-7.2.3}/setup.cfg +0 -0
|
@@ -3,6 +3,20 @@
|
|
|
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.2.3] - 2026-07-02 - Off-Target: professional wording (self-contained, no external-tool comparisons) + a plain-language explainer
|
|
7
|
+
|
|
8
|
+
### Changed
|
|
9
|
+
- **Removed all external-tool comparisons** ("like CRISPOR / CHOPCHOP", "CRISPOR-class", "CRISPOR-comparable") from
|
|
10
|
+
every off-target surface — the Off-Target page, nav, code docstrings, REST docstring, the data card, `positioning.md`,
|
|
11
|
+
the prereg (re-SHA-locked), paper-4 prereg, and the v7.2.0 CHANGELOG entry. The capability is now described on its
|
|
12
|
+
own terms: a genome-wide off-target *finder* — given a guide/target it enumerates and ranks the off-target sites
|
|
13
|
+
itself. No functional change.
|
|
14
|
+
- **Off-Target page now explains off-target effects in plain language**: a new top card covers *what an off-target
|
|
15
|
+
effect is*, *what you enter* (per writer class), and *what you get back* (ranked genome-wide sites with
|
|
16
|
+
coordinates + a risk band + the confirming assay), plus a "how it works" line (scan GRCh38 within the mismatch
|
|
17
|
+
tolerance → score → rank; heavy scan on the VM, replayed or honest-abstain). The per-metric ScoreGuide was
|
|
18
|
+
reworded to match.
|
|
19
|
+
|
|
6
20
|
## [7.2.2] - 2026-07-02 - Integrase: precise capability framing (the negative is about a method, not the biology)
|
|
7
21
|
|
|
8
22
|
A framing/presentation refinement of the v7.2.1 sealed-negative result — no science changes, the number is
|
|
@@ -53,10 +67,10 @@ open, citable sequences (no fabrication) and a **sealed recall benchmark whose r
|
|
|
53
67
|
|
|
54
68
|
## [7.2.0] - 2026-07-01 - PEN-OFFTGT v2: Stage E becomes a genome-wide, per-mechanism off-target FINDER (all 5 writer classes)
|
|
55
69
|
|
|
56
|
-
Stage E was a candidate *scorer* — it ranked off-target sites you supplied.
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
70
|
+
Stage E was a candidate *scorer* — it ranked off-target sites you supplied. An off-target *finder* instead takes
|
|
71
|
+
a guide/target and enumerates the genome-wide off-target sites itself. PEN-OFFTGT v2 closes that enumeration gap
|
|
72
|
+
AND applies the **correct off-target mechanism for each writer class**, each carrying a truthful per-mechanism
|
|
73
|
+
validation status (O-WS0–O-WS9 of the plan).
|
|
60
74
|
|
|
61
75
|
### Per-mechanism paths (O-WS3–O-WS6)
|
|
62
76
|
- **Serine integrase** (`offtarget_integrase.py`, O-WS3): a genome-wide **pseudo-attP** scan — a fixed-sequence
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pen-stack
|
|
3
|
-
Version: 7.2.
|
|
3
|
+
Version: 7.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
|
|
@@ -113,5 +113,5 @@ data-gap disclosure (integrase-PhiC31, bridge, CAST) — never a fabricated metr
|
|
|
113
113
|
**hard-locked** to 🔵 unvalidated in code.
|
|
114
114
|
|
|
115
115
|
**Honest limits (v7.2):** enumeration recall depends on the mismatch tolerance (≤5 mm nuclease, ≤8 mm integrase
|
|
116
|
-
att window); very divergent off-targets can be missed (a limitation
|
|
116
|
+
att window); very divergent off-targets can be missed (a limitation inherent to any mismatch-bounded genome search). DNA/RNA bulges are not
|
|
117
117
|
enumerated in v2.0 (substitutions only). The engine nominates and ranks; it does not clear a design.
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
## The gap
|
|
4
4
|
|
|
5
|
-
Genome **editing** (Cas9, base, and prime editors) is mature and well-benchmarked:
|
|
6
|
-
|
|
5
|
+
Genome **editing** (Cas9, base, and prime editors) is mature and well-benchmarked: established guide-design
|
|
6
|
+
tools, off-target predictors, and unbiased assays (GUIDE-seq) all answer *how to change a base in place*.
|
|
7
7
|
Genome **writing** - installing new information: inserting genes, flipping or excising kilobases, placing
|
|
8
8
|
programmable landing pads with serine integrases and RNA-guided bridge recombinases - is the harder, more
|
|
9
9
|
clinically transformative modality, and it has **no canonical reference layer and no benchmark**. Each lab
|
|
@@ -23,7 +23,7 @@ benchmark for the writing side. It is deliberately complementary, not competitiv
|
|
|
23
23
|
| Question | how to change a base in place | where to write, what writer, how to design, what risk |
|
|
24
24
|
| Unit | a guide / edit at a target | a site x writer x cargo x delivery plan |
|
|
25
25
|
| Tasks | on-target efficiency, off-target cleavage | site selection, writer selection, within-locus, off-target, intent, no-fabrication |
|
|
26
|
-
| Off-target | Cas9 cleavage (
|
|
26
|
+
| Off-target | Cas9 cleavage (mature sequence-similarity predictors) | bridge-recombinase insertion (the unoccupied gap) |
|
|
27
27
|
| Agents | rarely scored | a grounded LLM-agent leaderboard with a no-fabrication hard gate |
|
|
28
28
|
|
|
29
29
|
## Design commitments (why it is trustworthy)
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"""PEN-STACK v3.0 - open infrastructure for genome writing."""
|
|
2
|
-
__version__ = "7.2.
|
|
2
|
+
__version__ = "7.2.3"
|
|
@@ -379,8 +379,8 @@ def offtarget_endpoint(req: dict):
|
|
|
379
379
|
|
|
380
380
|
v7.2 (finder): for a nuclease guide with NO ``candidate_sites``, enumerates the genome-wide off-target set
|
|
381
381
|
over GRCh38 (Cas-OFFinder, replayed from the committed cache) and ranks it by the real CRISOT-Score +
|
|
382
|
-
mismatch-calibrated risk + chromatin annotation - the
|
|
383
|
-
|
|
382
|
+
mismatch-calibrated risk + chromatin annotation - the default. Supplying ``candidate_sites`` keeps the v6.10
|
|
383
|
+
score-my-candidates path. Abstains (never fabricates) for a novel guide with no VM scan."""
|
|
384
384
|
from pen_stack.wgenome.offtarget_predict import nominate_offtargets
|
|
385
385
|
return nominate_offtargets(
|
|
386
386
|
req.get("writer_family", ""), guide=req.get("guide"), candidate_sites=req.get("candidate_sites"),
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
"""Genome-wide off-target ENUMERATION — the
|
|
1
|
+
"""Genome-wide off-target ENUMERATION — the search step of the off-target finder (PEN-OFFTGT v2, O-WS1).
|
|
2
2
|
|
|
3
3
|
Stage E used to only SCORE candidate sites a caller supplied. This module adds the missing half: given a guide +
|
|
4
4
|
enzyme, ENUMERATE every genomic site within the mismatch tolerance across GRCh38 — returning coordinates, strand,
|
|
5
|
-
matched sequence, and mismatch count — so the downstream scorer ranks a genome-wide candidate set
|
|
6
|
-
|
|
5
|
+
matched sequence, and mismatch count — so the downstream scorer ranks a genome-wide candidate set, not a
|
|
6
|
+
hand-typed one (the caller supplies a guide and gets the off-target sites back).
|
|
7
7
|
|
|
8
8
|
**Where it runs.** A full GRCh38 scan is heavy, so enumeration executes ONLY where Cas-OFFinder + the genome are
|
|
9
9
|
present — the VM, via the `casoffinder:tools` Docker image (Bae, Park & Kim, Bioinformatics 2014,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""Nuclease off-target FINDER (PEN-OFFTGT v2, O-WS2): enumerate -> CRISOT -> risk -> chromatin.
|
|
2
2
|
|
|
3
3
|
Chains the genome-wide enumeration (O-WS1) into the existing, validated nuclease scorer, so a GUIDE returns a
|
|
4
|
-
genome-wide ranked off-target set
|
|
4
|
+
genome-wide ranked off-target set rather than a hand-supplied one. The scoring is
|
|
5
5
|
UNCHANGED from v6.10 — the real CRISOT-Score, the mismatch-calibrated risk band, and the chromatin annotation
|
|
6
6
|
(validated, not a re-ranker). v2 only adds the enumeration front end. Status: **validated** (CRISOT beats
|
|
7
7
|
homology on four unbiased assays; enumeration reproduces the documented off-target set, gate O-G1).
|
|
@@ -222,8 +222,8 @@ def nominate_offtargets(writer_family: str, guide: str | None = None, candidate_
|
|
|
222
222
|
``cell_type`` enable the REAL Stage B chromatin-accessibility modifier for nucleases.
|
|
223
223
|
|
|
224
224
|
v7.2 (O-WS2): for a nuclease guide WITHOUT supplied ``candidate_sites``, this runs the genome-wide FINDER
|
|
225
|
-
(enumerate GRCh38 -> CRISOT -> risk -> chromatin)
|
|
226
|
-
|
|
225
|
+
(enumerate GRCh38 -> CRISOT -> risk -> chromatin) by default. Supplying ``candidate_sites`` keeps the v6.10
|
|
226
|
+
score-my-candidates path (backward compatible)."""
|
|
227
227
|
from pen_stack.wgenome.offtarget_assay import recommend_assay
|
|
228
228
|
fam = (writer_family or "").lower()
|
|
229
229
|
assay_rec = recommend_assay(writer_family)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pen-stack
|
|
3
|
-
Version: 7.2.
|
|
3
|
+
Version: 7.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
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cycle": "v7.2",
|
|
3
|
+
"workstream": "PEN-OFFTGT-v2",
|
|
4
|
+
"prepared": "2026-07-01",
|
|
5
|
+
"amended": "2026-07-02 (v7.2.1 O-G2 sealed result; v7.2.2 professional wording pass)",
|
|
6
|
+
"sha256": {
|
|
7
|
+
"prereg/ws_offtarget2.yaml": "208a000c11cf697c73e1e92f785fed5b72cd469d5f7c54c81975c1489e37e054"
|
|
8
|
+
}
|
|
9
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# PEN-STACK v3.0 - Paper 4 (Bridge-recombinase off-target engine) pre-registered success criteria.
|
|
2
|
-
#
|
|
2
|
+
# Paper 4 is the beachhead: a genome-wide off-target screening tool for RNA-guided bridge recombinases.
|
|
3
3
|
paper: 4
|
|
4
4
|
title: "A screening tool to nominate genome-wide off-target locations for RNA-guided bridge recombinases"
|
|
5
5
|
prepared: "2026-06-02"
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
# Locks the mechanism taxonomy, per-mechanism enumeration parameters, the status-label rules, and the acceptance
|
|
3
3
|
# gates BEFORE building, per the standing "pre-register + SHA-lock" discipline. Lands as v7.2.0 (Stage E).
|
|
4
4
|
#
|
|
5
|
-
# The load-bearing change: Stage E becomes a genome-wide FINDER (
|
|
6
|
-
#
|
|
5
|
+
# The load-bearing change: Stage E becomes a genome-wide FINDER (given a guide, it enumerates the candidate sites
|
|
6
|
+
# itself) instead of only a SCORER of supplied candidates. Enumeration is heavy and runs on the VM over GRCh38;
|
|
7
7
|
# the live app replays a committed coordinate cache or abstains (the enumerated coordinates are public-genome facts).
|
|
8
8
|
|
|
9
9
|
version: "1.0"
|
|
@@ -16,7 +16,7 @@ invariants:
|
|
|
16
16
|
- nomination_is_not_clearance # every candidate ships with the confirming empirical assay
|
|
17
17
|
- no_fabrication # never invent a site or a validated status; abstain / flag where no data
|
|
18
18
|
- per_mechanism_honesty # each writer class returns its own mechanism, algorithm, and status label
|
|
19
|
-
- genome_wide_by_default # the engine enumerates candidates itself (the
|
|
19
|
+
- genome_wide_by_default # the engine enumerates candidates itself (a guide in, the off-target sites out)
|
|
20
20
|
|
|
21
21
|
# The enumerated off-target coordinates are FACTS derivable from the public GRCh38 assembly with a public tool
|
|
22
22
|
# (Cas-OFFinder). Unlike the CRISOT weights (CC-BY-NC, VM-only), the coordinates carry no license restriction and
|
|
@@ -37,7 +37,7 @@ mechanisms:
|
|
|
37
37
|
off_target_mechanism: mismatch/bulge-tolerant cleavage at protospacer + PAM
|
|
38
38
|
pam: {SpCas9: NGG, SaCas9: NNGRRT, AsCas12a: TTTV, LbCas12a: TTTV}
|
|
39
39
|
protospacer_len: {SpCas9: 20, SaCas9: 21, AsCas12a: 23, LbCas12a: 23}
|
|
40
|
-
max_mismatches: 5 # enumeration tolerance (recall
|
|
40
|
+
max_mismatches: 5 # enumeration tolerance (a recall / precision trade-off)
|
|
41
41
|
max_dna_bulge: 0 # v2.0 ships substitutions only; bulges are a follow-up
|
|
42
42
|
max_rna_bulge: 0
|
|
43
43
|
scorer: crisot # existing real CRISOT-Score (VM, CC-BY-NC, derived scores cached)
|
|
@@ -78,7 +78,7 @@ mechanisms:
|
|
|
78
78
|
acceptance_gates:
|
|
79
79
|
O-G1:
|
|
80
80
|
workstream: O-WS1
|
|
81
|
-
claim: enumeration reproduces a documented Cas9 off-target set (
|
|
81
|
+
claim: enumeration reproduces a documented Cas9 off-target set (the finder's genome-wide search step)
|
|
82
82
|
metric: recall of the EMX1 documented/validated GUIDE-seq off-targets among the enumerated candidates
|
|
83
83
|
floor: 0.90 # >=90% of the documented validated off-targets are enumerated at k<=5
|
|
84
84
|
guide: EMX1 (GAGTCCGAGCAGAAGAAGAA, NGG)
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "pen-stack"
|
|
7
|
-
version = "7.2.
|
|
7
|
+
version = "7.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"
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"cycle": "v7.2",
|
|
3
|
-
"workstream": "PEN-OFFTGT-v2",
|
|
4
|
-
"prepared": "2026-07-01",
|
|
5
|
-
"amended": "2026-07-02 (v7.2.1: O-G2 sealed PhiC31 recall benchmark, result NEGATIVE)",
|
|
6
|
-
"sha256": {
|
|
7
|
-
"prereg/ws_offtarget2.yaml": "6cf66e9cd972e638366e585072464287c7bfacca9b9575ac91a6a9317a7e22df"
|
|
8
|
-
}
|
|
9
|
-
}
|
|
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
|