pen-stack 4.0.1__tar.gz → 4.0.2__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-4.0.1 → pen_stack-4.0.2}/CHANGELOG.md +22 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/CITATION.cff +1 -1
- {pen_stack-4.0.1 → pen_stack-4.0.2}/PKG-INFO +2 -2
- {pen_stack-4.0.1 → pen_stack-4.0.2}/README.md +1 -1
- {pen_stack-4.0.1 → pen_stack-4.0.2}/configs/delivery_vehicles.yaml +3 -3
- {pen_stack-4.0.1 → pen_stack-4.0.2}/configs/gsh_validated_heldout.yaml +1 -1
- {pen_stack-4.0.1 → pen_stack-4.0.2}/configs/rules/delivery.yaml +1 -1
- {pen_stack-4.0.1 → pen_stack-4.0.2}/configs/rules/payload.yaml +1 -1
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/__init__.py +1 -1
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/validate/bench_writetype_tasks.py +1 -1
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack.egg-info/PKG-INFO +2 -2
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pyproject.toml +1 -1
- {pen_stack-4.0.1 → pen_stack-4.0.2}/LICENSE +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/MANIFEST.in +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/bench/run.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/benchmarks/genome_writing_bench/LEADERBOARD.md +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/benchmarks/genome_writing_bench/README.md +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/benchmarks/genome_writing_bench/SHA256SUMS +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/benchmarks/genome_writing_bench/SUBMISSIONS.md +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/benchmarks/genome_writing_bench/tasks.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/configs/atlas_families.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/configs/bridge_offtarget_profile.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/configs/cargo_polish.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/configs/datasets.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/configs/delivery_constraints.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/configs/delivery_rules.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/configs/gates_v3.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/configs/intent_weights.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/configs/known_unknowns.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/configs/llm.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/configs/monitor_queries.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/configs/oracles/scope_cards.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/configs/rules/fold.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/configs/rules/multiplex.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/configs/rules/reachability.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/configs/score_axes.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/configs/target_sites.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/configs/universe_crosswalk.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/configs/write_types.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/configs/wtkb_curated.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/data/curated/bridge_offtarget_energetics.json +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/data/curated/bridge_offtarget_profile_measured.parquet +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/data/curated/gene_coords.parquet +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/data/curated/unified_editor_universe.parquet +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/docs/BACKLOG.md +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/docs/DEPLOY.md +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/docs/INFRA.md +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/docs/MCP.md +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/docs/RELEASING.md +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/docs/REPRO.md +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/docs/agent.md +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/docs/alphagenome_feasibility.md +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/docs/benchmark_circularity.md +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/docs/cards/atlas.md +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/docs/cards/durability.md +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/docs/cards/safety.md +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/docs/delivery.md +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/docs/dissemination.md +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/docs/environment.md +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/docs/index.md +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/docs/mechanistic_constraints.md +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/docs/oracles.md +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/docs/positioning.md +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/docs/private_data_formats.md +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/docs/quickstart.md +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/docs/rules.md +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/docs/scope.md +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/docs/scorecard.md +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/docs/tutorials/compare-families.md +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/docs/tutorials/score-deliverability.md +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/docs/tutorials/where-can-i-write.md +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/docs/tutorials/which-writer-reaches-locus.md +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/docs/uncertainty.md +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/docs/verify.md +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/docs/writer_verification.md +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/docs/wtkb.md +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/_resources.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/adapt/__init__.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/adapt/finetune.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/adapt/ingest.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/adapt/pipeline.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/adapt/recalibrate.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/adapt/report.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/agent/__init__.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/agent/epistemic.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/agent/guardrails.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/agent/mcp_server.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/agent/orchestrator.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/agent/pen_agent.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/agent/scope.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/agent/tools.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/atlas/__init__.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/atlas/build_wtkb.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/atlas/crosslink.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/atlas/expand.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/atlas/schema.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/atlas/scorecard.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/atlas/universe.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/atlas/variant_propose.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/atlas/writer_verify.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/bridge/__init__.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/bridge/activity.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/bridge/cli.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/bridge/fold_qc.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/bridge/guide_qc.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/bridge/ingest.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/bridge/offtarget.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/bridge/offtarget_energetics.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/bridge/ortholog_screen.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/bridge/pipeline.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/cli.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/data/__init__.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/data/encode.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/data/genome.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/data/ingest_chromatin.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/data/ingest_integration.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/data/ingest_safety_annot.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/data/ingest_trip.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/env/__init__.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/env/genome_writing_env.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/env/policies.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/mech/__init__.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/mech/classify_atlas.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/mech/whitelist.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/monitor/__init__.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/monitor/europepmc.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/monitor/run.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/monitor/triage.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/oracles/__init__.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/oracles/cache.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/oracles/energetics.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/oracles/genome.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/oracles/protein_design.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/oracles/rna.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/oracles/schema.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/oracles/structure.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/planner/__init__.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/planner/cargo.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/planner/cargo_polish.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/planner/delivery.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/planner/delivery_constraints.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/planner/delivery_vehicles.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/planner/multiplex.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/planner/optimize.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/planner/pipeline.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/planner/report.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/planner/router.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/planner/target_site.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/rag/__init__.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/rag/index.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/rag/llm.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/rag/qa.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/rules/__init__.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/rules/evaluators.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/rules/loader.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/rules/schema.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/rules/solver.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/score/__init__.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/score/recalibrate.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/score/therapeutic.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/server/__init__.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/server/api.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/ui/__init__.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/ui/app.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/validate/__init__.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/validate/adapt_demo.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/validate/agent_eval.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/validate/bench_adversarial_tasks.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/validate/bench_rule_tasks.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/validate/bench_trust_tasks.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/validate/blind_gsh_discovery.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/validate/cargo_directionality.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/validate/durability_baselines.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/validate/forward_hypotheses.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/validate/guide_qc_demo.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/validate/intent_specification.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/validate/offtarget_energetics_eval.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/validate/out_of_scope_refusal.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/validate/outcome_calibration.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/validate/paper3_benchmark.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/validate/paper4_real_validation.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/validate/paper4_validation.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/validate/selective_prediction.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/validate/seq_vs_measured.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/validate/target_site_controls.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/validate/uncertainty_eval.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/validate/ungrounded_baseline.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/validate/within_locus_ranking.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/validate/writer_recovery.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/verify/__init__.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/verify/schema.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/verify/service.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/wgenome/__init__.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/wgenome/chromatin_seq.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/wgenome/durability.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/wgenome/export_tracks.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/wgenome/features.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/wgenome/gsh_baseline.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/wgenome/mesh_features.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/wgenome/ood.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/wgenome/providers.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/wgenome/safety.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/wgenome/structure3d.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/wgenome/uncertainty.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack/wgenome/writability.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack.egg-info/SOURCES.txt +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack.egg-info/dependency_links.txt +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack.egg-info/entry_points.txt +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack.egg-info/requires.txt +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/pen_stack.egg-info/top_level.txt +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/SHA256_LOCK_phase0.json +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/SHA256_LOCK_phase1_5.json +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/SHA256_LOCK_phase2.json +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/SHA256_LOCK_phase3.json +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/SHA256_LOCK_ws_a.json +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/SHA256_LOCK_ws_atlas.json +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/SHA256_LOCK_ws_b.json +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/SHA256_LOCK_ws_ba.json +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/SHA256_LOCK_ws_ba_v33.json +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/SHA256_LOCK_ws_bench.json +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/SHA256_LOCK_ws_c.json +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/SHA256_LOCK_ws_cal.json +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/SHA256_LOCK_ws_d.json +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/SHA256_LOCK_ws_e.json +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/SHA256_LOCK_ws_env.json +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/SHA256_LOCK_ws_ep.json +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/SHA256_LOCK_ws_f.json +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/SHA256_LOCK_ws_g.json +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/SHA256_LOCK_ws_h.json +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/SHA256_LOCK_ws_mc.json +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/SHA256_LOCK_ws_o.json +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/SHA256_LOCK_ws_r.json +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/SHA256_LOCK_ws_route.json +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/SHA256_LOCK_ws_uq.json +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/SHA256_LOCK_ws_v.json +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/SHA256_LOCK_ws_wv.json +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/paper1.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/paper2.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/paper3.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/paper4.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/phase0.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/ws_a.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/ws_atlas.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/ws_b.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/ws_ba.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/ws_ba_v33.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/ws_bench.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/ws_c.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/ws_cal.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/ws_d.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/ws_e.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/ws_env.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/ws_ep.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/ws_f.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/ws_g.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/ws_h.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/ws_mc.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/ws_o.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/ws_r.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/ws_route.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/ws_uq.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/ws_v.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/prereg/ws_wv.yaml +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/scripts/p1_build_atlas.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/scripts/p1_build_durability.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/scripts/p1_export_tracks.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/scripts/p1_safety_concordance.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/scripts/p1_train_safety.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/scripts/p1_validation_report.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/scripts/p2_build_atlas.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/scripts/p3_benchmark_report.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/scripts/p4_genome_scan.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/scripts/ws_b_report.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/scripts/ws_c_report.py +0 -0
- {pen_stack-4.0.1 → pen_stack-4.0.2}/setup.cfg +0 -0
|
@@ -3,6 +3,28 @@
|
|
|
3
3
|
All notable changes to PEN-STACK are documented here. This file follows
|
|
4
4
|
[Keep a Changelog](https://keepachangelog.com/) and the program's phase structure.
|
|
5
5
|
|
|
6
|
+
## [4.0.2] - 2026-06-09 - citation-correctness patch: full-repo DOI audit
|
|
7
|
+
|
|
8
|
+
### Fixed
|
|
9
|
+
A full sweep of all 56 DOIs in the repo (verified via Crossref + doi.org) found six incorrect or
|
|
10
|
+
non-existent citations — all now corrected to verified, topically-correct references:
|
|
11
|
+
- `configs/gsh_validated_heldout.yaml` H11 locus: `10.1371/journal.pone.0113481` (resolved to an unrelated
|
|
12
|
+
cardiology paper) → **`10.1093/nar/gkt1290`** (Zhu et al. 2014, *DICE*, NAR 42:e34 — the paper that
|
|
13
|
+
characterized human H11 on chr22q12.2 between DRG1 and EIF4ENIF1).
|
|
14
|
+
- `configs/delivery_vehicles.yaml` + `configs/rules/{delivery,payload}.yaml`: `10.1089/hum.2017.084`
|
|
15
|
+
(non-existent), `10.1089/hum.2009.213` (non-existent), `10.1038/sj.gt.3302529` (unrelated erratum) →
|
|
16
|
+
**`10.1128/JVI.79.15.9933-9944.2005`** (Grieger & Samulski, AAV packaging capacity),
|
|
17
|
+
**`10.1128/JVI.72.2.926-933.1998`** (multiply-deleted adenovirus vectors), **`10.1038/nbt1101-1067`**
|
|
18
|
+
(Wade-Martins, HSV-1 amplicon large-capacity).
|
|
19
|
+
- `pen_stack/validate/bench_writetype_tasks.py` provenance: `10.1038/s41586-023-06756-4` (diabetes program)
|
|
20
|
+
and `10.1126/science.abm1123` (freshwater fish) → **`10.1016/j.cell.2022.03.045`** and
|
|
21
|
+
**`10.1128/JVI.79.15.9933-9944.2005`**.
|
|
22
|
+
|
|
23
|
+
The remaining 50 DOIs resolve correctly; three legacy DOIs in `mech/pfam_whitelist.yaml` (Rice 1995 Cell,
|
|
24
|
+
Kholodii 1997 Res Microbiol, Prudhomme 2002 J Bacteriol) carry full author/year/journal references and are
|
|
25
|
+
real classic papers whose pre-modern DOIs do not resolve at doi.org — left unchanged (a registration artifact,
|
|
26
|
+
not an error).
|
|
27
|
+
|
|
6
28
|
## [4.0.1] - 2026-06-09 - data-correctness patch: writer-verification panel verified against Perry 2025
|
|
7
29
|
|
|
8
30
|
### Fixed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pen-stack
|
|
3
|
-
Version: 4.0.
|
|
3
|
+
Version: 4.0.2
|
|
4
4
|
Summary: Open infrastructure for genome writing: the Writable Genome atlas, the Writer Atlas, and the Write Planner.
|
|
5
5
|
Author-email: Anees Ahmed Mahaboob Ali <ahmedaneesm@gmail.com>
|
|
6
6
|
License: MIT
|
|
@@ -89,7 +89,7 @@ and durably write new DNA, **which enzyme** can write it there, and **how** to d
|
|
|
89
89
|
[](https://codecov.io/gh/ahmedanees-m/pen-stack)
|
|
90
90
|
[](LICENSE)
|
|
91
91
|
[](https://www.python.org/)
|
|
92
|
-
[](CHANGELOG.md)
|
|
93
93
|
[](tests/)
|
|
94
94
|
[](https://github.com/astral-sh/ruff)
|
|
95
95
|
[](docker/)
|
|
@@ -14,7 +14,7 @@ and durably write new DNA, **which enzyme** can write it there, and **how** to d
|
|
|
14
14
|
[](https://codecov.io/gh/ahmedanees-m/pen-stack)
|
|
15
15
|
[](LICENSE)
|
|
16
16
|
[](https://www.python.org/)
|
|
17
|
-
[](CHANGELOG.md)
|
|
18
18
|
[](tests/)
|
|
19
19
|
[](https://github.com/astral-sh/ruff)
|
|
20
20
|
[](docker/)
|
|
@@ -29,7 +29,7 @@ vehicles:
|
|
|
29
29
|
in_vivo: true
|
|
30
30
|
compatible_cargo_form: [DNA]
|
|
31
31
|
constraint_key: AAV
|
|
32
|
-
dois: ["10.
|
|
32
|
+
dois: ["10.1128/JVI.79.15.9933-9944.2005"] # Grieger & Samulski 2005, AAV packaging capacity
|
|
33
33
|
|
|
34
34
|
lentivirus:
|
|
35
35
|
cargo_capacity_bp: 8000
|
|
@@ -53,7 +53,7 @@ vehicles:
|
|
|
53
53
|
in_vivo: true
|
|
54
54
|
compatible_cargo_form: [DNA]
|
|
55
55
|
constraint_key: plasmid
|
|
56
|
-
dois: ["10.
|
|
56
|
+
dois: ["10.1128/JVI.72.2.926-933.1998"] # multiply-deleted (gutless-class) adenovirus vectors
|
|
57
57
|
|
|
58
58
|
hsv_amplicon:
|
|
59
59
|
cargo_capacity_bp: 100000 # >100 kb
|
|
@@ -65,7 +65,7 @@ vehicles:
|
|
|
65
65
|
in_vivo: true
|
|
66
66
|
compatible_cargo_form: [DNA]
|
|
67
67
|
constraint_key: plasmid
|
|
68
|
-
dois: ["10.1038/
|
|
68
|
+
dois: ["10.1038/nbt1101-1067"] # Wade-Martins 2001, HSV-1 amplicon (iBAC) large genomic-DNA transfer
|
|
69
69
|
|
|
70
70
|
lnp_mrna:
|
|
71
71
|
cargo_capacity_bp: 15000 # large RNA payload (mRNA encoding the writer/RNP)
|
|
@@ -20,7 +20,7 @@ gsh:
|
|
|
20
20
|
- {name: CLYBL, tier: validated, anchor_gene: CLYBL, doi: "10.1371/journal.pone.0116032"} # Cerbini 2015
|
|
21
21
|
- {name: CCR5, tier: validated, anchor_gene: CCR5, doi: "10.1038/nbt1353"} # Lombardo 2007
|
|
22
22
|
- {name: hRosa26, tier: validated, anchor_gene: THUMPD3, doi: "10.1038/nbt1362"} # Irion 2007
|
|
23
|
-
- {name: H11, tier: validated, anchor_gene: EIF4ENIF1, doi: "10.
|
|
23
|
+
- {name: H11, tier: validated, anchor_gene: EIF4ENIF1, doi: "10.1093/nar/gkt1290"} # H11/HIPP11 (Zhu 2014, DICE; hH11 on chr22q12.2 between DRG1 and EIF4ENIF1)
|
|
24
24
|
# --- tier 1 (cont.): functionally validated in Lin et al. 2024 (eLife 79592), precise hg38 spans ---
|
|
25
25
|
- {name: Pansio-1, tier: validated, anchor_coord: {chrom: chr1, start: 113339961, end: 113340514}, anchor_gene_note: HIPK1, doi: "10.7554/eLife.79592"}
|
|
26
26
|
- {name: Olonne-18, tier: validated, anchor_coord: {chrom: chr18, start: 56534775, end: 56536439}, anchor_gene_note: TXNL1, doi: "10.7554/eLife.79592"}
|
|
@@ -26,7 +26,7 @@ rules:
|
|
|
26
26
|
mechanism: "vehicle-specific construct hazards (lentiviral internal poly(A), AAV inverted-repeat/homopolymer, recombinogenic direct repeats, GC extremes) lower titre/yield"
|
|
27
27
|
evaluator: delivery_sequence_constraints
|
|
28
28
|
param: {}
|
|
29
|
-
provenance: { doi: ["10.
|
|
29
|
+
provenance: { doi: ["10.1128/JVI.79.15.9933-9944.2005"], note: "AAV genome/sequence constraints; v3.2 MC2 delivery_constraints scan (labelled heuristic, per-check sources in configs/delivery_constraints.yaml)" }
|
|
30
30
|
test_ref: "tests/unit/test_ws_r.py::test_delivery_controls"
|
|
31
31
|
scope: "labeled heuristic, directional; not a titre predictor"
|
|
32
32
|
- id: delivery.aav_packaging_margin
|
|
@@ -17,6 +17,6 @@ rules:
|
|
|
17
17
|
mechanism: "an AAV cargo above a single capsid (~4.7 kb) requires split/dual AAV, which drops efficiency sharply"
|
|
18
18
|
evaluator: split_aav_penalty
|
|
19
19
|
param: { single_aav_cap_bp: 4700 }
|
|
20
|
-
provenance: { doi: ["10.
|
|
20
|
+
provenance: { doi: ["10.1128/JVI.79.15.9933-9944.2005"], note: "AAV packaging capacity (~4.7 kb); oversize cargo needs split/dual AAV" }
|
|
21
21
|
test_ref: "tests/unit/test_ws_r.py::test_payload_controls"
|
|
22
22
|
scope: "directional efficiency flag, not a titre prediction"
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"""PEN-STACK v3.0 - open infrastructure for genome writing."""
|
|
2
|
-
__version__ = "4.0.
|
|
2
|
+
__version__ = "4.0.2"
|
|
@@ -53,7 +53,7 @@ PANEL = [
|
|
|
53
53
|
|
|
54
54
|
# documented mechanisms behind the legality labels (provenance, not circular)
|
|
55
55
|
PROVENANCE = {
|
|
56
|
-
"doi": ["10.
|
|
56
|
+
"doi": ["10.1016/j.cell.2022.03.045", "10.1128/JVI.79.15.9933-9944.2005", "10.1038/s41587-020-0561-9"],
|
|
57
57
|
"note": "RNP/DNA cargo-form compatibility (delivery) + AAV ~4.7 kb packaging limit (payload) are the "
|
|
58
58
|
"documented physical facts; routing per write type follows the v3.3 write-type taxonomy.",
|
|
59
59
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pen-stack
|
|
3
|
-
Version: 4.0.
|
|
3
|
+
Version: 4.0.2
|
|
4
4
|
Summary: Open infrastructure for genome writing: the Writable Genome atlas, the Writer Atlas, and the Write Planner.
|
|
5
5
|
Author-email: Anees Ahmed Mahaboob Ali <ahmedaneesm@gmail.com>
|
|
6
6
|
License: MIT
|
|
@@ -89,7 +89,7 @@ and durably write new DNA, **which enzyme** can write it there, and **how** to d
|
|
|
89
89
|
[](https://codecov.io/gh/ahmedanees-m/pen-stack)
|
|
90
90
|
[](LICENSE)
|
|
91
91
|
[](https://www.python.org/)
|
|
92
|
-
[](CHANGELOG.md)
|
|
93
93
|
[](tests/)
|
|
94
94
|
[](https://github.com/astral-sh/ruff)
|
|
95
95
|
[](docker/)
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "pen-stack"
|
|
7
|
-
version = "4.0.
|
|
7
|
+
version = "4.0.2"
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|