pen-stack 4.0.2__tar.gz → 4.0.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pen_stack-4.0.2 → pen_stack-4.0.3}/CHANGELOG.md +22 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/CITATION.cff +1 -1
- {pen_stack-4.0.2 → pen_stack-4.0.3}/PKG-INFO +2 -2
- {pen_stack-4.0.2 → pen_stack-4.0.3}/README.md +1 -1
- {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/atlas_families.yaml +2 -2
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/__init__.py +1 -1
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack.egg-info/PKG-INFO +2 -2
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pyproject.toml +1 -1
- {pen_stack-4.0.2 → pen_stack-4.0.3}/LICENSE +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/MANIFEST.in +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/bench/run.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/benchmarks/genome_writing_bench/LEADERBOARD.md +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/benchmarks/genome_writing_bench/README.md +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/benchmarks/genome_writing_bench/SHA256SUMS +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/benchmarks/genome_writing_bench/SUBMISSIONS.md +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/benchmarks/genome_writing_bench/tasks.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/bridge_offtarget_profile.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/cargo_polish.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/datasets.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/delivery_constraints.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/delivery_rules.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/delivery_vehicles.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/gates_v3.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/gsh_validated_heldout.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/intent_weights.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/known_unknowns.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/llm.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/monitor_queries.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/oracles/scope_cards.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/rules/delivery.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/rules/fold.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/rules/multiplex.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/rules/payload.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/rules/reachability.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/score_axes.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/target_sites.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/universe_crosswalk.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/write_types.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/configs/wtkb_curated.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/data/curated/bridge_offtarget_energetics.json +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/data/curated/bridge_offtarget_profile_measured.parquet +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/data/curated/gene_coords.parquet +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/data/curated/unified_editor_universe.parquet +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/BACKLOG.md +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/DEPLOY.md +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/INFRA.md +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/MCP.md +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/RELEASING.md +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/REPRO.md +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/agent.md +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/alphagenome_feasibility.md +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/benchmark_circularity.md +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/cards/atlas.md +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/cards/durability.md +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/cards/safety.md +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/delivery.md +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/dissemination.md +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/environment.md +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/index.md +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/mechanistic_constraints.md +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/oracles.md +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/positioning.md +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/private_data_formats.md +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/quickstart.md +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/rules.md +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/scope.md +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/scorecard.md +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/tutorials/compare-families.md +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/tutorials/score-deliverability.md +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/tutorials/where-can-i-write.md +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/tutorials/which-writer-reaches-locus.md +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/uncertainty.md +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/verify.md +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/writer_verification.md +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/docs/wtkb.md +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/_resources.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/adapt/__init__.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/adapt/finetune.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/adapt/ingest.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/adapt/pipeline.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/adapt/recalibrate.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/adapt/report.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/agent/__init__.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/agent/epistemic.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/agent/guardrails.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/agent/mcp_server.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/agent/orchestrator.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/agent/pen_agent.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/agent/scope.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/agent/tools.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/atlas/__init__.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/atlas/build_wtkb.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/atlas/crosslink.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/atlas/expand.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/atlas/schema.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/atlas/scorecard.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/atlas/universe.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/atlas/variant_propose.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/atlas/writer_verify.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/bridge/__init__.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/bridge/activity.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/bridge/cli.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/bridge/fold_qc.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/bridge/guide_qc.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/bridge/ingest.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/bridge/offtarget.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/bridge/offtarget_energetics.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/bridge/ortholog_screen.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/bridge/pipeline.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/cli.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/data/__init__.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/data/encode.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/data/genome.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/data/ingest_chromatin.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/data/ingest_integration.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/data/ingest_safety_annot.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/data/ingest_trip.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/env/__init__.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/env/genome_writing_env.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/env/policies.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/mech/__init__.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/mech/classify_atlas.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/mech/whitelist.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/monitor/__init__.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/monitor/europepmc.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/monitor/run.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/monitor/triage.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/oracles/__init__.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/oracles/cache.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/oracles/energetics.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/oracles/genome.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/oracles/protein_design.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/oracles/rna.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/oracles/schema.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/oracles/structure.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/planner/__init__.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/planner/cargo.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/planner/cargo_polish.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/planner/delivery.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/planner/delivery_constraints.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/planner/delivery_vehicles.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/planner/multiplex.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/planner/optimize.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/planner/pipeline.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/planner/report.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/planner/router.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/planner/target_site.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/rag/__init__.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/rag/index.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/rag/llm.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/rag/qa.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/rules/__init__.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/rules/evaluators.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/rules/loader.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/rules/schema.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/rules/solver.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/score/__init__.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/score/recalibrate.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/score/therapeutic.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/server/__init__.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/server/api.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/ui/__init__.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/ui/app.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/__init__.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/adapt_demo.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/agent_eval.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/bench_adversarial_tasks.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/bench_rule_tasks.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/bench_trust_tasks.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/bench_writetype_tasks.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/blind_gsh_discovery.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/cargo_directionality.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/durability_baselines.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/forward_hypotheses.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/guide_qc_demo.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/intent_specification.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/offtarget_energetics_eval.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/out_of_scope_refusal.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/outcome_calibration.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/paper3_benchmark.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/paper4_real_validation.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/paper4_validation.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/selective_prediction.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/seq_vs_measured.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/target_site_controls.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/uncertainty_eval.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/ungrounded_baseline.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/within_locus_ranking.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/validate/writer_recovery.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/verify/__init__.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/verify/schema.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/verify/service.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/wgenome/__init__.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/wgenome/chromatin_seq.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/wgenome/durability.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/wgenome/export_tracks.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/wgenome/features.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/wgenome/gsh_baseline.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/wgenome/mesh_features.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/wgenome/ood.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/wgenome/providers.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/wgenome/safety.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/wgenome/structure3d.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/wgenome/uncertainty.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack/wgenome/writability.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack.egg-info/SOURCES.txt +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack.egg-info/dependency_links.txt +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack.egg-info/entry_points.txt +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack.egg-info/requires.txt +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/pen_stack.egg-info/top_level.txt +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_phase0.json +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_phase1_5.json +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_phase2.json +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_phase3.json +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_a.json +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_atlas.json +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_b.json +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_ba.json +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_ba_v33.json +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_bench.json +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_c.json +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_cal.json +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_d.json +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_e.json +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_env.json +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_ep.json +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_f.json +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_g.json +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_h.json +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_mc.json +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_o.json +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_r.json +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_route.json +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_uq.json +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_v.json +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/SHA256_LOCK_ws_wv.json +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/paper1.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/paper2.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/paper3.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/paper4.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/phase0.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_a.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_atlas.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_b.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_ba.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_ba_v33.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_bench.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_c.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_cal.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_d.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_e.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_env.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_ep.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_f.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_g.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_h.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_mc.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_o.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_r.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_route.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_uq.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_v.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/prereg/ws_wv.yaml +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/scripts/p1_build_atlas.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/scripts/p1_build_durability.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/scripts/p1_export_tracks.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/scripts/p1_safety_concordance.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/scripts/p1_train_safety.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/scripts/p1_validation_report.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/scripts/p2_build_atlas.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/scripts/p3_benchmark_report.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/scripts/p4_genome_scan.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/scripts/ws_b_report.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/scripts/ws_c_report.py +0 -0
- {pen_stack-4.0.2 → pen_stack-4.0.3}/setup.cfg +0 -0
|
@@ -3,6 +3,28 @@
|
|
|
3
3
|
All notable changes to PEN-STACK are documented here. This file follows
|
|
4
4
|
[Keep a Changelog](https://keepachangelog.com/) and the program's phase structure.
|
|
5
5
|
|
|
6
|
+
## [4.0.3] - 2026-06-09 - ID-correctness patch: UniProt + Pfam + ontology audit
|
|
7
|
+
|
|
8
|
+
### Fixed
|
|
9
|
+
A whole-repo audit of structured IDs (verified against InterPro, UniProt, EBI-OLS, mygene):
|
|
10
|
+
- **`pen_stack/mech/pfam_whitelist.yaml` (v1.2.1 -> v1.2.2):** the 26 Pfam accessions were all correct, but
|
|
11
|
+
**13 of 22 `example_uniprot` proteins did not actually contain their claimed domain** (membership checked
|
|
12
|
+
against each protein's UniProt Pfam cross-references) — including a marine-worm **Histone H3** (PF13586), a
|
|
13
|
+
mouse **mannosyltransferase** (PF05621/TniB), **I-AniI** (a LAGLIDADG enzyme) mislabelled HNH (PF01844), a
|
|
14
|
+
**glycine-betaine transporter** and a Tn3 transposase mis-filed as rve, and an **obsolete 404** accession
|
|
15
|
+
(PF08721) — despite the header claiming a spot-check. All corrected to reviewed/curated proteins whose
|
|
16
|
+
UniProt entry genuinely carries the domain (e.g. ISCro4 `D2TGM5`, Tn5 `Q46731`, Tn7-TnsA `P13988`, Bxb1
|
|
17
|
+
integrase `Q9B086`, McrA `P24200`); the audit-status header was corrected to stop over-claiming.
|
|
18
|
+
- **`configs/atlas_families.yaml`** (drives family expansion in `expand.py`): IS621 `A0A0F6B5L8` (a
|
|
19
|
+
betaine transporter) -> **`A0A2X3M8B0`** (IS621 transposase); phiC31 `Q9T2A6` (a plant NAD(P)H
|
|
20
|
+
oxidoreductase) -> **`Q9T221`** (phiC31 integrase). The Pfam-query signatures and discovery DOIs were
|
|
21
|
+
already correct.
|
|
22
|
+
|
|
23
|
+
### Verified clean
|
|
24
|
+
The 4 EFO cell-type IDs map correctly (EFO:0002067=K562, EFO:0001187=HepG2, EFO:0002784=GM12878,
|
|
25
|
+
EFO:0005483=ES-Bruce4); all GSH gene symbols are valid HGNC symbols; all 26 Pfam accessions resolve with the
|
|
26
|
+
correct domain name.
|
|
27
|
+
|
|
6
28
|
## [4.0.2] - 2026-06-09 - citation-correctness patch: full-repo DOI audit
|
|
7
29
|
|
|
8
30
|
### Fixed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pen-stack
|
|
3
|
-
Version: 4.0.
|
|
3
|
+
Version: 4.0.3
|
|
4
4
|
Summary: Open infrastructure for genome writing: the Writable Genome atlas, the Writer Atlas, and the Write Planner.
|
|
5
5
|
Author-email: Anees Ahmed Mahaboob Ali <ahmedaneesm@gmail.com>
|
|
6
6
|
License: MIT
|
|
@@ -89,7 +89,7 @@ and durably write new DNA, **which enzyme** can write it there, and **how** to d
|
|
|
89
89
|
[](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/)
|
|
@@ -63,7 +63,7 @@ families:
|
|
|
63
63
|
curated_representatives:
|
|
64
64
|
- representative_system: IS621
|
|
65
65
|
family: bridge_IS110
|
|
66
|
-
uniprot: A0A0F6B5L8
|
|
66
|
+
uniprot: A0A2X3M8B0 # IS621 transposase (E. coli); was A0A0F6B5L8 (a glycine-betaine transporter - wrong)
|
|
67
67
|
confidence: measured
|
|
68
68
|
human_cell_activity: "model bridge recombinase; recombination characterised (Durrant 2024)"
|
|
69
69
|
key_dois: ["10.1038/s41586-024-07552-4"]
|
|
@@ -75,7 +75,7 @@ curated_representatives:
|
|
|
75
75
|
key_dois: ["10.64898/2026.03.19.712850"] # bioRxiv ISPpu10 (Europe PMC PPR1218813; resolved via PEN-MONITOR)
|
|
76
76
|
- representative_system: phiC31
|
|
77
77
|
family: serine_integrase
|
|
78
|
-
uniprot: Q9T2A6
|
|
78
|
+
uniprot: Q9T221 # phiC31 integrase (Streptomyces phage phiC31, gene int); was Q9T2A6 (a plant NAD(P)H oxidoreductase - wrong)
|
|
79
79
|
confidence: measured
|
|
80
80
|
human_cell_activity: "large serine integrase; attB x attP; used in human cell landing pads"
|
|
81
81
|
key_dois: ["10.1128/microbiolspec.MDNA3-0046-2014"]
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"""PEN-STACK v3.0 - open infrastructure for genome writing."""
|
|
2
|
-
__version__ = "4.0.
|
|
2
|
+
__version__ = "4.0.3"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pen-stack
|
|
3
|
-
Version: 4.0.
|
|
3
|
+
Version: 4.0.3
|
|
4
4
|
Summary: Open infrastructure for genome writing: the Writable Genome atlas, the Writer Atlas, and the Write Planner.
|
|
5
5
|
Author-email: Anees Ahmed Mahaboob Ali <ahmedaneesm@gmail.com>
|
|
6
6
|
License: MIT
|
|
@@ -89,7 +89,7 @@ and durably write new DNA, **which enzyme** can write it there, and **how** to d
|
|
|
89
89
|
[](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.3"
|
|
8
8
|
description = "Open infrastructure for genome writing: the Writable Genome atlas, the Writer Atlas, and the Write Planner."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.11"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|