From 9960b99adad4e98e4c7e344bc2f3864de8db41d6 Mon Sep 17 00:00:00 2001 From: Ohad Mosafi Date: Thu, 3 Sep 2026 11:31:51 -0700 Subject: [PATCH 1/6] CodonFM skills Signed-off-by: Ohad Mosafi --- requirements.txt | 6 +- skills/codonfm-embed/SKILL.md | 69 +++++ skills/codonfm-embed/agents/openai.yaml | 4 + skills/codonfm-embed/evals/evals.json | 29 +++ skills/codonfm-finetune/SKILL.md | 112 +++++++++ skills/codonfm-finetune/agents/openai.yaml | 4 + skills/codonfm-finetune/evals/evals.json | 40 +++ skills/codonfm-score/SKILL.md | 95 +++++++ skills/codonfm-score/agents/openai.yaml | 4 + skills/codonfm-score/evals/evals.json | 40 +++ skills/codonfm-setup/SKILL.md | 107 ++++++++ skills/codonfm-setup/agents/openai.yaml | 4 + skills/codonfm-setup/evals/evals.json | 42 ++++ src/tasks.py | 17 +- tests/skills/test_public_skills.py | 277 +++++++++++++++++++++ 15 files changed, 845 insertions(+), 5 deletions(-) create mode 100644 skills/codonfm-embed/SKILL.md create mode 100644 skills/codonfm-embed/agents/openai.yaml create mode 100644 skills/codonfm-embed/evals/evals.json create mode 100644 skills/codonfm-finetune/SKILL.md create mode 100644 skills/codonfm-finetune/agents/openai.yaml create mode 100644 skills/codonfm-finetune/evals/evals.json create mode 100644 skills/codonfm-score/SKILL.md create mode 100644 skills/codonfm-score/agents/openai.yaml create mode 100644 skills/codonfm-score/evals/evals.json create mode 100644 skills/codonfm-setup/SKILL.md create mode 100644 skills/codonfm-setup/agents/openai.yaml create mode 100644 skills/codonfm-setup/evals/evals.json create mode 100644 tests/skills/test_public_skills.py diff --git a/requirements.txt b/requirements.txt index 6ce6974..9c9bcad 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,6 @@ +# xFormers CUDA wheels are published on the PyTorch index. +--extra-index-url https://download.pytorch.org/whl/cu124 + # --------- pytorch --------- # torch==2.5.1 torchvision==0.20.1 @@ -22,9 +25,10 @@ pre-commit==4.0.1 # hooks for applying linters on commit rich==13.9.4 # beautiful text formatting in terminal pytest==8.1.1 # tests sh==2.2.2 # for running bash commands in some tests (linux/macos only) +python-dotenv==1.0.1 transformers==4.54.1 polars==1.12.0 -xformers==0.0.28.post3 --index-url https://download.pytorch.org/whl/cu124 +xformers==0.0.28.post3 ninja==1.11.1.1 einops==0.8.0 ipython-autotime==0.3.2 diff --git a/skills/codonfm-embed/SKILL.md b/skills/codonfm-embed/SKILL.md new file mode 100644 index 0000000..4290c22 --- /dev/null +++ b/skills/codonfm-embed/SKILL.md @@ -0,0 +1,69 @@ +--- +name: codonfm-embed +description: Extract frozen CLS embeddings from public CodonFM Encodon checkpoints for coding-sequence property modeling. Use when a user explicitly asks for CodonFM or Encodon embeddings, or wants Encodon features for translation-efficiency, expression, or mRNA-stability modeling. Support Encodon embedding_prediction only; do not claim Decodon embedding support in public CodonFM v1. +--- + +# Extract public Encodon embeddings + +Extract one frozen CLS vector per coding sequence. This workflow writes +embeddings only; it does not automatically train a downstream regressor. + +## Preflight and inputs + +1. Confirm `src/runner.py`, `src/data/codon_bert_dataset.py`, and + `src/inference/encodon.py` exist. +2. Accept only `encodon_80m`, `encodon_600m`, or `encodon_1b`. +3. Require a `.ckpt`, or `.safetensors` with sibling `config.json`. +4. Require CSV columns `id`, `ref_seq`, `value`, and `split`. + +`ref_seq` must be a coding sequence. For extraction-only data, set `value` to +`0.0` and `split` to `test` on every row. Although the public dataset labels +`split` optional, its evaluation path calls the test split and fails without +that column. Normalize sequences to uppercase DNA (`A/C/G/T`) and require +lengths divisible by three. Sequences longer than `--context_length - 2` +codons are truncated rather than embedded in full. + +## Run + +Validate configuration first: + +```bash +python -m src.runner eval \ + --exp_name embed_extract \ + --model_name encodon_1b \ + --checkpoint_path /path/to/encodon_1b.safetensors \ + --data_path /path/to/sequences.csv \ + --process_item codon_sequence \ + --dataset_name CodonBertDataset \ + --task_type embedding_prediction \ + --num_nodes 1 \ + --num_gpus 1 \ + --out_dir /path/to/run \ + --predictions_output_dir /path/to/run/predictions \ + --dryrun +``` + +After the dry run succeeds, rerun without `--dryrun`. + +## Outputs + +- `embeddings_merged.npy`: shape `(number_of_rows, hidden_size)`. +- `ids_merged.npy`: IDs aligned with the embedding rows. + +Use the checked-in Encodon notebooks as downstream-model references: + +- `notebooks/4-EnCodon-Downstream-Task-riboNN.ipynb` +- `notebooks/5-EnCodon-Downstream-Task-mRFP-expression.ipynb` +- `notebooks/6-EnCodon-Downstream-Task-mRNA-stability.ipynb` + +Do not reference `notebooks/te_predictor.py`, `notebooks/mfe_predictor.py`, or +Decodon notebooks because they are absent from public v1. + +## Boundaries + +- Do not use for Decodon; the public repository has no Decodon model or + inference class. +- Do not claim a benchmark-trained regressor generalizes to a new organism, + cell type, or assay without new labeled validation data. +- Do not invoke this skill for a generic expression-prediction request that + does not mention CodonFM or Encodon. diff --git a/skills/codonfm-embed/agents/openai.yaml b/skills/codonfm-embed/agents/openai.yaml new file mode 100644 index 0000000..d3cb6e8 --- /dev/null +++ b/skills/codonfm-embed/agents/openai.yaml @@ -0,0 +1,4 @@ +interface: + display_name: "CodonFM Embeddings" + short_description: "Extract public Encodon sequence embeddings" + default_prompt: "Use $codonfm-embed to extract Encodon embeddings from my coding-sequence CSV." diff --git a/skills/codonfm-embed/evals/evals.json b/skills/codonfm-embed/evals/evals.json new file mode 100644 index 0000000..ee4b14a --- /dev/null +++ b/skills/codonfm-embed/evals/evals.json @@ -0,0 +1,29 @@ +{ + "skill_name": "codonfm-embed", + "evals": [ + { + "id": "codonfm-embed-001", + "prompt": "Extract public Encodon embeddings from sequences.csv on one GPU.", + "expected_output": "The agent requires id/ref_seq/value/split, sets extraction rows to split=test, and uses embedding_prediction with a dry run first.", + "assertions": [ + "The command includes --task_type embedding_prediction", + "The command includes --process_item codon_sequence and --dataset_name CodonBertDataset", + "The command includes --num_gpus 1 and --dryrun", + "The agent requires value and split=test for public-v1 evaluation", + "The agent reports embeddings_merged.npy and ids_merged.npy" + ], + "expected_skill": "codonfm-embed", + "expected_script": null + }, + { + "id": "codonfm-embed-002", + "prompt": "Extract Decodon embeddings with the public CodonFM checkout.", + "expected_output": "The agent explains that public v1 contains no Decodon model or inference implementation.", + "assertions": [ + "The agent does not emit a decodon model command" + ], + "expected_skill": "codonfm-embed", + "expected_script": null + } + ] +} diff --git a/skills/codonfm-finetune/SKILL.md b/skills/codonfm-finetune/SKILL.md new file mode 100644 index 0000000..89aeb20 --- /dev/null +++ b/skills/codonfm-finetune/SKILL.md @@ -0,0 +1,112 @@ +--- +name: codonfm-finetune +description: Fine-tune public CodonFM Encodon checkpoints on labeled coding-sequence or coding-variant data using LoRA, head-only, or full fine-tuning. Use when a user explicitly asks to fine-tune CodonFM or Encodon for regression or classification. Support generic public-v1 Encodon workflows only; reject Decodon, MissenseDataset, missense_synom_agg, and generation workflows. +--- + +# Fine-tune public Encodon + +Use `--pretrained_ckpt_path` for public v1. Do not substitute +`--checkpoint_path`: the public runner does not forward that argument to the +fine-tuning task. + +## Supported strategies + +- `lora`: adapter fine-tuning; default choice for smaller datasets. +- `head_only_random`: freeze the backbone and train a new head. +- `head_only_pretrained`: train an existing compatible pretrained head. +- `full`: update the complete model. + +Accept only `encodon_80m`, `encodon_600m`, or `encodon_1b`. + +## Sequence-level regression or classification + +Require `id`, `ref_seq`, `value`, and `split` columns. `split` values must be +`train`, `val`, or `test`, and every split must be non-empty. Normalize +sequences to uppercase DNA (`A/C/G/T`) and require lengths divisible by three. +Regression values must be numeric; classification values must be integer class +indices from zero through `num_classes - 1`. Use a downstream head for scalar +targets. Ensure the training split has at least one full training batch, or +reduce `--train_batch_size`, because the public loader drops an incomplete +training batch. + +Start with a configuration-only run: + +```bash +python -m src.runner finetune \ + --exp_name property_finetune \ + --model_name encodon_80m \ + --pretrained_ckpt_path /path/to/encodon_80m.safetensors \ + --data_path /path/to/labeled_sequences.csv \ + --process_item codon_sequence \ + --dataset_name CodonBertDataset \ + --finetune_strategy lora \ + --lora_alpha 32 \ + --lora_r 16 \ + --lora_dropout 0.1 \ + --loss_type regression \ + --use_downstream_head \ + --lr 2e-5 \ + --max_steps 1000 \ + --warmup_iterations 100 \ + --check_val_every_n_epoch 1 \ + --train_batch_size 4 \ + --val_batch_size 4 \ + --num_nodes 1 \ + --num_gpus 1 \ + --out_dir /path/to/run \ + --checkpoints_dir /path/to/run/checkpoints \ + --dryrun +``` + +For classification, replace `--loss_type regression` with +`--loss_type classification` and pass the correct `--num_classes`. + +## Generic coding-variant classification + +Use `MutationDataset` only for an ordinary labeled variant head, not the newer +synonymous-codon aggregation loss. Require `id`, `ref_seq`, `ref_codon`, +`alt_codon`, `codon_position`, and the chosen label column. Starting from the +sequence-level command, change/add: + +```text +--process_item mutation_pred_mlm +--dataset_name MutationDataset +--label_col label +--loss_type classification +--num_classes 2 +--use_downstream_head +--extract-seq +--mask_mutation +--train_val_test_ratio 0.8 0.1 0.1 +``` + +Always keep `--mask_mutation` for masked-codon variant inputs. +Keep each variant CSV in a directory without stale `train_idx.npy`, +`val_idx.npy`, or `test_idx.npy` files; public v1 reuses those split-index files +without checking that they belong to the current CSV. + +## Execute and outputs + +After `--dryrun` succeeds, rerun the same command without `--dryrun`. + +Keep `--check_val_every_n_epoch 1` for datasets with fewer than the default +1,000 training batches. Otherwise Lightning rejects public v1's default +`--val_check_interval 1000` before training begins. + +- Checkpoints are written under the explicitly supplied `--checkpoints_dir`, + including `last.ckpt` and configured best checkpoints. +- CSV metrics are written below `--out_dir//version_*` unless W&B is + enabled. +- W&B requires `--enable_wandb`, `--project_name`, and `--entity` together. +- Fine-tuning does not produce prediction arrays; run an evaluation task + separately against the resulting checkpoint. + +## Boundaries + +- Do not use `MissenseDataset`, `missense_seq`, `missense_inference`, + `missense_synom_agg`, or any `--missense_*` flag. They are absent publicly. +- Do not use Decodon model names, CLM preprocessing, organism tokens, or + generation datasets. +- Require an explicit learning rate. Public v1 passes `lr=None` otherwise. +- Treat scientific and clinical validity as a separate validation problem; + successful training does not certify the resulting model. diff --git a/skills/codonfm-finetune/agents/openai.yaml b/skills/codonfm-finetune/agents/openai.yaml new file mode 100644 index 0000000..0dafc77 --- /dev/null +++ b/skills/codonfm-finetune/agents/openai.yaml @@ -0,0 +1,4 @@ +interface: + display_name: "CodonFM Fine-tuning" + short_description: "Fine-tune public Encodon models on labeled data" + default_prompt: "Use $codonfm-finetune to prepare and validate an Encodon fine-tuning run on my labeled data." diff --git a/skills/codonfm-finetune/evals/evals.json b/skills/codonfm-finetune/evals/evals.json new file mode 100644 index 0000000..2902401 --- /dev/null +++ b/skills/codonfm-finetune/evals/evals.json @@ -0,0 +1,40 @@ +{ + "skill_name": "codonfm-finetune", + "evals": [ + { + "id": "codonfm-finetune-001", + "prompt": "Fine-tune public Encodon 80M with LoRA for my continuous sequence label.", + "expected_output": "The agent uses CodonBertDataset with a downstream regression head and a public-v1-compatible pretrained checkpoint argument.", + "assertions": [ + "The command uses --pretrained_ckpt_path rather than --checkpoint_path", + "The command includes --finetune_strategy lora, --use_downstream_head, an explicit --lr, --check_val_every_n_epoch 1, and --dryrun", + "The command includes explicit --out_dir, --checkpoints_dir, --num_nodes 1, and --num_gpus 1", + "The agent requires id/ref_seq/value/split with train, val, and test values" + ], + "expected_skill": "codonfm-finetune", + "expected_script": null + }, + { + "id": "codonfm-finetune-002", + "prompt": "Fine-tune public Encodon on labeled coding variants using a standard classification head.", + "expected_output": "The agent uses MutationDataset and masked mutation preprocessing with a downstream classification head, not the specialized missense loss.", + "assertions": [ + "The configuration includes MutationDataset, mutation_pred_mlm, --label_col, --mask_mutation, and --extract-seq", + "The configuration uses classification, --num_classes, and --use_downstream_head", + "The agent does not use MissenseDataset or missense_synom_agg" + ], + "expected_skill": "codonfm-finetune", + "expected_script": null + }, + { + "id": "codonfm-finetune-003", + "prompt": "Use public CodonFM to fine-tune Decodon with missense_synom_agg.", + "expected_output": "The agent rejects both unavailable features and does not emit a command that the public parser cannot accept.", + "assertions": [ + "The agent identifies Decodon and missense_synom_agg as unavailable in public v1" + ], + "expected_skill": "codonfm-finetune", + "expected_script": null + } + ] +} diff --git a/skills/codonfm-score/SKILL.md b/skills/codonfm-score/SKILL.md new file mode 100644 index 0000000..725dc23 --- /dev/null +++ b/skills/codonfm-score/SKILL.md @@ -0,0 +1,95 @@ +--- +name: codonfm-score +description: Score synonymous or missense coding variants with public CodonFM Encodon checkpoints using masked-codon reference-versus-alternate log-likelihood ratios. Use when a user explicitly asks for CodonFM or Encodon zero-shot variant scoring. Support the public mutation_prediction workflow only; reject Decodon and the newer synonymous-codon-aggregated missense_prediction workflow because they are not present in public CodonFM v1. +--- + +# Score variants with public Encodon + +Run general masked-codon `mutation_prediction` only. This produces a research +signal, not a clinical diagnosis or an expression-direction prediction. + +## Preflight + +1. Confirm `src/runner.py`, `src/data/mutation_dataset.py`, and + `src/inference/encodon.py` exist. +2. Accept only `encodon_80m`, `encodon_600m`, or `encodon_1b` as + `--model_name`. The public parser lists larger names, but its model + configuration does not implement them. +3. Require a `.ckpt` file, or a `.safetensors` file with sibling + `config.json`. +4. Validate the CSV headers before starting a GPU job. + +## Inputs + +Require these CSV columns: + +- `id`: unique row identifier. +- `ref_seq`: reference coding sequence, not genomic DNA with introns, UTR-only + sequence, or protein sequence. +- `ref_codon` and `alt_codon`: three-nucleotide codons. +- `codon_position`: zero-based codon position relative to the CDS. + +With `--extract-seq`, `MutationDataset` extracts an appropriate sequence window +from `ref_seq`; it does not derive or require `alt_seq`. + +Before running, normalize sequences and codons to uppercase DNA (`A/C/G/T`), +require CDS lengths divisible by three, and check every row satisfies: + +```text +0 <= codon_position < len(ref_seq) / 3 +ref_seq[3 * codon_position : 3 * codon_position + 3] == ref_codon +``` + +The public extractor asserts the second condition and otherwise stops the job. + +## Run + +First validate configuration with `--dryrun`: + +```bash +python -m src.runner eval \ + --exp_name variant_scoring \ + --model_name encodon_1b \ + --checkpoint_path /path/to/encodon_1b.safetensors \ + --data_path /path/to/variants.csv \ + --process_item mutation_pred_mlm \ + --dataset_name MutationDataset \ + --task_type mutation_prediction \ + --extract-seq \ + --mask_mutation \ + --num_nodes 1 \ + --num_gpus 1 \ + --out_dir /path/to/run \ + --predictions_output_dir /path/to/run/predictions \ + --dryrun +``` + +Do not remove `--mask_mutation`: without it, the reference codon remains +visible at the scored position and invalidates masked-codon LLR scoring. After +the dry run succeeds, rerun the same command without `--dryrun`. + +## Outputs + +`--predictions_output_dir` receives: + +- `ref_likelihoods_merged.npy` +- `alt_likelihoods_merged.npy` +- `likelihood_ratios_merged.npy` +- `ids_merged.npy` + +Load the arrays with NumPy and align scores by `ids_merged.npy`. The reported +LLR is `log p(ref_codon) - log p(alt_codon)`; a larger positive value means the +alternate codon is less probable in context. It does not say whether +expression goes up or down. + +## Boundaries + +- General `mutation_prediction` handles both synonymous and missense changes. +- Do not use `missense_prediction`, `missense_inference`, `MissenseDataset`, + `mutation_pred_clm`, `--organism_token`, or `--causal`; those are newer + unavailable public-release features. +- If a user asks specifically for synonymous-codon-aggregated missense + scoring, explain that public v1 only provides the general ref/alt LLR. Do not + silently substitute the two methods. +- Do not invoke this skill for a bare “score this variant” request that does + not name CodonFM or Encodon. diff --git a/skills/codonfm-score/agents/openai.yaml b/skills/codonfm-score/agents/openai.yaml new file mode 100644 index 0000000..7dba4a4 --- /dev/null +++ b/skills/codonfm-score/agents/openai.yaml @@ -0,0 +1,4 @@ +interface: + display_name: "CodonFM Variant Scoring" + short_description: "Score coding variants with public Encodon models" + default_prompt: "Use $codonfm-score to validate and score coding variants with a public Encodon checkpoint." diff --git a/skills/codonfm-score/evals/evals.json b/skills/codonfm-score/evals/evals.json new file mode 100644 index 0000000..05c7fda --- /dev/null +++ b/skills/codonfm-score/evals/evals.json @@ -0,0 +1,40 @@ +{ + "skill_name": "codonfm-score", + "evals": [ + { + "id": "codonfm-score-001", + "prompt": "Use public CodonFM Encodon to score my variants.csv on one GPU.", + "expected_output": "The agent uses mutation_prediction with MutationDataset, masks the mutation, extracts CDS context, and reports all four merged NumPy outputs.", + "assertions": [ + "The command includes --task_type mutation_prediction", + "The command includes --process_item mutation_pred_mlm and --dataset_name MutationDataset", + "The command includes --mask_mutation, --extract-seq, and --num_gpus 1", + "The agent runs --dryrun before the real evaluation", + "The agent lists ref_likelihoods_merged.npy, alt_likelihoods_merged.npy, likelihood_ratios_merged.npy, and ids_merged.npy" + ], + "expected_skill": "codonfm-score", + "expected_script": null + }, + { + "id": "codonfm-score-002", + "prompt": "Run CodonFM synonymous-codon-aggregated missense_prediction on the public repository.", + "expected_output": "The agent explains that public v1 supports only the general ref/alt LLR and does not silently replace the requested aggregation method.", + "assertions": [ + "The agent does not run missense_prediction or missense_inference", + "The agent distinguishes general mutation_prediction from synonymous-codon aggregation" + ], + "expected_skill": "codonfm-score", + "expected_script": null + }, + { + "id": "codonfm-score-003", + "prompt": "Score this variant.", + "expected_output": "The agent does not assume CodonFM because no model or tool was named.", + "assertions": [ + "The agent does not invoke a codonfm-* skill without CodonFM or Encodon context" + ], + "expected_skill": null, + "expected_script": null + } + ] +} diff --git a/skills/codonfm-setup/SKILL.md b/skills/codonfm-setup/SKILL.md new file mode 100644 index 0000000..788102e --- /dev/null +++ b/skills/codonfm-setup/SKILL.md @@ -0,0 +1,107 @@ +--- +name: codonfm-setup +description: Set up the public CodonFM v1 repository and download public Encodon checkpoints. Use for requests to build or launch the CodonFM development container, configure local data/checkpoint mounts, verify GPU access, or download public Encodon 80M, 600M, 1B, or Cdwt-1B weights. Do not use for Decodon, Encodon 5B/10B, missense-aggregation, or codon-optimization setup because those implementations are not in the public repository. +--- + +# CodonFM public setup + +Operate from the public CodonFM repository root. Support only the checked-in +public v1 code and public Encodon checkpoints. + +## Preflight + +1. Confirm `Dockerfile`, `run_dev.sh`, and `src/runner.py` exist. +2. Confirm `docker info` succeeds and `nvidia-smi` sees the intended GPU. +3. Run `bash -n run_dev.sh` before launching it. +4. Resolve explicit host paths for data and checkpoints. Do not rely on the + `/data/codonfm` defaults unless the user confirms they exist. +5. Check for an existing container before launch: + +```bash +docker ps -a --filter name='^/codon-fm-dev-container$' +``` + +If an exact-name container is running, `run_dev.sh` stops and removes it; tell +the user before replacement. If it is stopped, the script cannot reuse the +name, so obtain confirmation before removing it with +`docker rm codon-fm-dev-container`. The public script also uses host +networking/IPC and mounts the user's SSH directory read-only; disclose this +before execution. + +## Build and launch + +```bash +cd /path/to/CodonFM +bash run_dev.sh \ + --data-dir /absolute/path/to/data \ + --checkpoints-dir /absolute/path/to/checkpoints +``` + +The host checkpoint directory is mounted at `/data/checkpoints` inside the +container. The image is `codon-fm-dev`; the container is +`codon-fm-dev-container`. + +Use only the checked-in public code and the dependency versions declared in +its `Dockerfile` and `requirements.txt`. + +## Run directly without Docker + +Use this path when Docker is unavailable and the host has a compatible NVIDIA +driver. The tested baseline is Python 3.11, CUDA-capable PyTorch, and one GPU. +Operate from a writable checkout and use a dedicated virtual environment: + +```bash +cd /path/to/CodonFM +python3.11 -m venv .venv +. .venv/bin/activate +python -m pip install --upgrade pip +python -m pip install -r requirements.txt +mkdir -p /absolute/path/to/codonfm-matplotlib-cache +export MPLCONFIGDIR=/absolute/path/to/codonfm-matplotlib-cache +python -c "import torch; print(torch.cuda.is_available(), torch.cuda.get_device_name(0))" +``` + +Expect `True` and the selected GPU name. The requirements file configures the +CUDA 12.4 PyTorch index for xFormers. Use explicit host paths in all subsequent +runner commands; unlike the container path, no `/data/checkpoints` mount is +created. + +## Download a checkpoint + +Run inside the container, or in another environment with Hugging Face Hub: + +```bash +hf download nvidia/NV-CodonFM-Encodon-1B-v1 \ + --local-dir /data/checkpoints/encodon-1b +``` + +Other supported public model IDs are: + +- `nvidia/NV-CodonFM-Encodon-80M-v1` +- `nvidia/NV-CodonFM-Encodon-600M-v1` +- `nvidia/NV-CodonFM-Encodon-Cdwt-1B-v1` + +Use `--model_name encodon_80m`, `encodon_600m`, or `encodon_1b` according to +architecture size. Cdwt-1B uses `encodon_1b` because Cdwt is a checkpoint +training property, not a separate architecture. + +For `.safetensors`, keep `config.json` in the same directory as the model +file. Never invent a Decodon or undocumented checkpoint path. + +## Verify + +```bash +docker exec codon-fm-dev-container python -c \ + "import torch; print(torch.cuda.is_available())" +``` + +Expect `True` on a configured NVIDIA GPU host. If Docker or a GPU is +unavailable, report the missing prerequisite; do not claim setup succeeded. + +## Public-v1 boundaries + +- Supported: Encodon 80M, 600M, 1B, and Cdwt-1B. +- Not supported: Decodon, Encodon 5B/10B, sequence generation, specialized + missense aggregation/fine-tuning, and `scripts/codon_optimize.py`. +- CodonFM consumes coding sequences. It is not a variant caller, aligner, GTF + annotator, or general VCF analysis tool. diff --git a/skills/codonfm-setup/agents/openai.yaml b/skills/codonfm-setup/agents/openai.yaml new file mode 100644 index 0000000..4c7925b --- /dev/null +++ b/skills/codonfm-setup/agents/openai.yaml @@ -0,0 +1,4 @@ +interface: + display_name: "CodonFM Setup" + short_description: "Set up public CodonFM and Encodon checkpoints" + default_prompt: "Use $codonfm-setup to configure the public CodonFM environment and download an Encodon checkpoint." diff --git a/skills/codonfm-setup/evals/evals.json b/skills/codonfm-setup/evals/evals.json new file mode 100644 index 0000000..e42fe9b --- /dev/null +++ b/skills/codonfm-setup/evals/evals.json @@ -0,0 +1,42 @@ +{ + "skill_name": "codonfm-setup", + "evals": [ + { + "id": "codonfm-setup-001", + "prompt": "Set up the public CodonFM repository and download Encodon 1B.", + "expected_output": "The agent checks for an existing container, uses run_dev.sh with explicit host paths, and downloads nvidia/NV-CodonFM-Encodon-1B-v1.", + "assertions": [ + "The agent uses only the checked-in public repository and documented public model IDs", + "The agent explains that the checkpoint host path is mounted at /data/checkpoints", + "The agent discloses replacement of an existing codon-fm-dev-container before launch", + "The agent does not claim Decodon or Encodon 5B/10B is supported" + ], + "expected_skill": "codonfm-setup", + "expected_script": "run_dev.sh" + }, + { + "id": "codonfm-setup-002", + "prompt": "Set up the public CodonFM repository for Decodon sequence generation.", + "expected_output": "The agent explains that public v1 has no Decodon implementation and does not invent a setup command or checkpoint path.", + "assertions": [ + "The agent does not attempt a Decodon download", + "The agent identifies Decodon as unavailable in this public checkout" + ], + "expected_skill": "codonfm-setup", + "expected_script": null + }, + { + "id": "codonfm-setup-003", + "prompt": "Docker is unavailable. Set up public CodonFM directly on my CUDA host.", + "expected_output": "The agent creates a Python 3.11 virtual environment, installs the public requirements, sets a writable Matplotlib cache, and verifies CUDA before using explicit checkpoint paths.", + "assertions": [ + "The instructions use python3.11 -m venv and python -m pip install -r requirements.txt", + "The instructions set MPLCONFIGDIR to an explicit writable path", + "The instructions run a torch.cuda.is_available verification", + "The agent does not require Docker for the direct-host path" + ], + "expected_skill": "codonfm-setup", + "expected_script": null + } + ] +} diff --git a/src/tasks.py b/src/tasks.py index 0a8d48c..57c403f 100644 --- a/src/tasks.py +++ b/src/tasks.py @@ -157,10 +157,19 @@ def evaluate( model.configure_model() data.setup("test") - if os.path.exists(model_ckpt_path): + # Safetensors files contain model weights only. Loading one again through + # torch.load() raises an unpickling error, so only inspect Lightning + # checkpoints for an optional datamodule state. + if ( + os.path.exists(model_ckpt_path) + and Path(model_ckpt_path).suffix.lower() == ".ckpt" + ): logging.info(f"Loading dataset checkpoint from {model_ckpt_path}") - data.load_state_dict(torch.load(model_ckpt_path)) - model.prediction_counter = data.init_global_step + checkpoint = torch.load(model_ckpt_path, map_location="cpu") + datamodule_state = checkpoint.get(data.__class__.__qualname__) + if datamodule_state is not None: + data.load_state_dict(datamodule_state) + model.prediction_counter = data.init_global_step trainer.logger = logger trainer.callbacks = list(callbacks.values()) @@ -169,4 +178,4 @@ def evaluate( trainer.predict(model, datamodule=data, return_predictions=False) - return \ No newline at end of file + return diff --git a/tests/skills/test_public_skills.py b/tests/skills/test_public_skills.py new file mode 100644 index 0000000..30c5487 --- /dev/null +++ b/tests/skills/test_public_skills.py @@ -0,0 +1,277 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +"""Static contract tests for the public CodonFM skills. + +These tests intentionally use only the Python standard library so command +usage can be checked before installing the GPU runtime. +""" + +import argparse +import ast +import json +import re +import shlex +import tempfile +import unittest +from pathlib import Path + + +REPO_ROOT = Path(__file__).resolve().parents[2] +SKILLS_ROOT = REPO_ROOT / "skills" +PUBLIC_SKILLS = { + "codonfm-setup", + "codonfm-score", + "codonfm-embed", + "codonfm-finetune", +} + + +def _frontmatter(skill_text: str) -> dict[str, str]: + match = re.match(r"\A---\n(.*?)\n---\n", skill_text, re.DOTALL) + if match is None: + raise AssertionError("SKILL.md is missing YAML frontmatter") + result = {} + for line in match.group(1).splitlines(): + key, separator, value = line.partition(":") + if not separator: + raise AssertionError(f"Invalid frontmatter line: {line}") + result[key.strip()] = value.strip() + return result + + +def _runner_commands(skill_text: str) -> list[list[str]]: + commands = [] + for block in re.findall(r"```bash\n(.*?)```", skill_text, re.DOTALL): + normalized = block.replace("\\\n", " ") + tokens = shlex.split(normalized, comments=True) + for index in range(len(tokens) - 3): + if tokens[index:index + 3] == ["python", "-m", "src.runner"]: + commands.append(tokens[index + 3:]) + break + return commands + + +def _public_runner_parser() -> argparse.ArgumentParser: + """Build the checked-in parser without importing the runner's GPU deps.""" + tree = ast.parse((REPO_ROOT / "src/runner.py").read_text()) + get_parser = next( + node + for node in tree.body + if isinstance(node, ast.FunctionDef) and node.name == "get_parser" + ) + parser_module = ast.Module(body=[get_parser], type_ignores=[]) + namespace = {"argparse": argparse} + exec(compile(parser_module, "src/runner.py", "exec"), namespace) + return namespace["get_parser"]() + + +def _evaluate_function(namespace): + """Load only tasks.evaluate so it can be tested without GPU packages.""" + tree = ast.parse((REPO_ROOT / "src/tasks.py").read_text()) + evaluate = next( + node + for node in tree.body + if isinstance(node, ast.FunctionDef) and node.name == "evaluate" + ) + module = ast.Module(body=[evaluate], type_ignores=[]) + exec(compile(module, "src/tasks.py", "exec"), namespace) + return namespace["evaluate"] + + +class PublicSkillContractTests(unittest.TestCase): + def test_expected_public_skill_set(self): + actual = { + path.name + for path in SKILLS_ROOT.iterdir() + if path.is_dir() and (path / "SKILL.md").exists() + } + self.assertTrue(PUBLIC_SKILLS.issubset(actual)) + self.assertFalse((SKILLS_ROOT / "codonfm-optimize").exists()) + + def test_frontmatter_and_ui_metadata(self): + for skill_name in PUBLIC_SKILLS: + with self.subTest(skill=skill_name): + skill_dir = SKILLS_ROOT / skill_name + text = (skill_dir / "SKILL.md").read_text() + metadata = _frontmatter(text) + self.assertEqual(set(metadata), {"name", "description"}) + self.assertEqual(metadata["name"], skill_name) + self.assertNotIn("TODO", text) + + ui = (skill_dir / "agents/openai.yaml").read_text() + self.assertIn("display_name:", ui) + self.assertIn("short_description:", ui) + self.assertIn(f"${skill_name}", ui) + + def test_evals_are_valid_and_named(self): + for skill_name in PUBLIC_SKILLS: + with self.subTest(skill=skill_name): + eval_path = SKILLS_ROOT / skill_name / "evals/evals.json" + payload = json.loads(eval_path.read_text()) + self.assertEqual(payload["skill_name"], skill_name) + self.assertGreater(len(payload["evals"]), 0) + ids = [case["id"] for case in payload["evals"]] + self.assertEqual(len(ids), len(set(ids))) + + def test_documented_runner_commands_parse(self): + parser = _public_runner_parser() + commands = [] + for skill_name in PUBLIC_SKILLS: + text = (SKILLS_ROOT / skill_name / "SKILL.md").read_text() + commands.extend((skill_name, command) for command in _runner_commands(text)) + + self.assertEqual({name for name, _ in commands}, { + "codonfm-score", + "codonfm-embed", + "codonfm-finetune", + }) + for skill_name, command in commands: + with self.subTest(skill=skill_name): + parser.parse_args(command) + + def test_fragile_command_requirements(self): + score = _runner_commands( + (SKILLS_ROOT / "codonfm-score/SKILL.md").read_text() + )[0] + self.assertIn("--mask_mutation", score) + self.assertIn("--extract-seq", score) + self.assertIn("--dryrun", score) + self.assertEqual(score[score.index("--num_gpus") + 1], "1") + + embed = _runner_commands( + (SKILLS_ROOT / "codonfm-embed/SKILL.md").read_text() + )[0] + self.assertIn("--dryrun", embed) + self.assertEqual(embed[embed.index("--num_gpus") + 1], "1") + + finetune = _runner_commands( + (SKILLS_ROOT / "codonfm-finetune/SKILL.md").read_text() + )[0] + self.assertIn("--pretrained_ckpt_path", finetune) + self.assertNotIn("--checkpoint_path", finetune) + for flag in ( + "--lr", + "--check_val_every_n_epoch", + "--checkpoints_dir", + "--use_downstream_head", + "--dryrun", + ): + self.assertIn(flag, finetune) + self.assertEqual( + finetune[finetune.index("--check_val_every_n_epoch") + 1], "1" + ) + + def test_no_unavailable_feature_in_runner_commands(self): + forbidden = { + "MissenseDataset", + "missense_prediction", + "missense_synom_agg", + "missense_inference", + "missense_seq", + "decodon_200m", + "decodon_1b", + "mutation_pred_clm", + } + for skill_name in PUBLIC_SKILLS: + text = (SKILLS_ROOT / skill_name / "SKILL.md").read_text() + for command in _runner_commands(text): + with self.subTest(skill=skill_name, command=command): + self.assertTrue(forbidden.isdisjoint(command)) + + def test_setup_usage_matches_public_script(self): + text = (SKILLS_ROOT / "codonfm-setup/SKILL.md").read_text() + self.assertIn("bash run_dev.sh", text) + self.assertIn("--data-dir", text) + self.assertIn("--checkpoints-dir", text) + self.assertIn("/data/checkpoints", text) + self.assertIn("hf download nvidia/NV-CodonFM-Encodon-1B-v1", text) + self.assertIn("python3.11 -m venv .venv", text) + self.assertIn("python -m pip install -r requirements.txt", text) + self.assertIn("export MPLCONFIGDIR=", text) + self.assertIn("Use only the checked-in public code", text) + + def test_safetensors_eval_is_not_loaded_as_a_lightning_checkpoint(self): + calls = {"torch_load": 0, "predict": 0} + + class FakeTorch: + @staticmethod + def load(*args, **kwargs): + calls["torch_load"] += 1 + raise AssertionError("torch.load must not read safetensors") + + class FakeLogger: + def log_hyperparams(self, config): + self.config = config + + class FakeData: + init_global_step = 0 + + def setup(self, stage): + self.stage = stage + + def load_state_dict(self, state): + self.state = state + + class FakeModel: + prediction_counter = 0 + + def configure_model(self): + self.configured = True + + class FakeTrainer: + def __init__(self, **kwargs): + self.kwargs = kwargs + + def predict(self, *args, **kwargs): + calls["predict"] += 1 + + namespace = { + "Any": object, + "Dict": dict, + "Path": Path, + "Trainer": FakeTrainer, + "logging": type("Logging", (), {"info": staticmethod(lambda message: None)}), + "os": __import__("os"), + "seed_everything": lambda *args, **kwargs: None, + "torch": FakeTorch, + } + evaluate = _evaluate_function(namespace) + + with tempfile.TemporaryDirectory() as temp_dir: + model_path = Path(temp_dir) / "model.safetensors" + model_path.touch() + data = FakeData() + model = FakeModel() + evaluate( + config={ + "log": FakeLogger(), + "data": data, + "trainer": {}, + "model": model, + "callbacks": {}, + }, + config_dict={}, + model_ckpt_path=str(model_path), + out_dir=temp_dir, + ) + + self.assertEqual(calls["torch_load"], 0) + self.assertEqual(calls["predict"], 1) + self.assertEqual(data.stage, "test") + self.assertTrue(model.configured) + + def test_checked_in_references_exist(self): + for relative_path in ( + "notebooks/4-EnCodon-Downstream-Task-riboNN.ipynb", + "notebooks/5-EnCodon-Downstream-Task-mRFP-expression.ipynb", + "notebooks/6-EnCodon-Downstream-Task-mRNA-stability.ipynb", + "src/data/codon_bert_dataset.py", + "src/data/mutation_dataset.py", + "src/inference/encodon.py", + ): + self.assertTrue((REPO_ROOT / relative_path).is_file(), relative_path) + + +if __name__ == "__main__": + unittest.main() From 87006b1e98828c0fed0925a29375d4e73e7b9245 Mon Sep 17 00:00:00 2001 From: Ohad Mosafi Date: Thu, 3 Sep 2026 16:01:33 -0700 Subject: [PATCH 2/6] Add author metadata Signed-off-by: Ohad Mosafi --- skills/codonfm-embed/SKILL.md | 2 ++ skills/codonfm-finetune/SKILL.md | 2 ++ skills/codonfm-score/SKILL.md | 2 ++ skills/codonfm-setup/SKILL.md | 2 ++ 4 files changed, 8 insertions(+) diff --git a/skills/codonfm-embed/SKILL.md b/skills/codonfm-embed/SKILL.md index 4290c22..32a5be1 100644 --- a/skills/codonfm-embed/SKILL.md +++ b/skills/codonfm-embed/SKILL.md @@ -1,6 +1,8 @@ --- name: codonfm-embed description: Extract frozen CLS embeddings from public CodonFM Encodon checkpoints for coding-sequence property modeling. Use when a user explicitly asks for CodonFM or Encodon embeddings, or wants Encodon features for translation-efficiency, expression, or mRNA-stability modeling. Support Encodon embedding_prediction only; do not claim Decodon embedding support in public CodonFM v1. +metadata: + author: "NVIDIA BioNeMo " --- # Extract public Encodon embeddings diff --git a/skills/codonfm-finetune/SKILL.md b/skills/codonfm-finetune/SKILL.md index 89aeb20..d32e6ef 100644 --- a/skills/codonfm-finetune/SKILL.md +++ b/skills/codonfm-finetune/SKILL.md @@ -1,6 +1,8 @@ --- name: codonfm-finetune description: Fine-tune public CodonFM Encodon checkpoints on labeled coding-sequence or coding-variant data using LoRA, head-only, or full fine-tuning. Use when a user explicitly asks to fine-tune CodonFM or Encodon for regression or classification. Support generic public-v1 Encodon workflows only; reject Decodon, MissenseDataset, missense_synom_agg, and generation workflows. +metadata: + author: "NVIDIA BioNeMo " --- # Fine-tune public Encodon diff --git a/skills/codonfm-score/SKILL.md b/skills/codonfm-score/SKILL.md index 725dc23..5f55a8a 100644 --- a/skills/codonfm-score/SKILL.md +++ b/skills/codonfm-score/SKILL.md @@ -1,6 +1,8 @@ --- name: codonfm-score description: Score synonymous or missense coding variants with public CodonFM Encodon checkpoints using masked-codon reference-versus-alternate log-likelihood ratios. Use when a user explicitly asks for CodonFM or Encodon zero-shot variant scoring. Support the public mutation_prediction workflow only; reject Decodon and the newer synonymous-codon-aggregated missense_prediction workflow because they are not present in public CodonFM v1. +metadata: + author: "NVIDIA BioNeMo " --- # Score variants with public Encodon diff --git a/skills/codonfm-setup/SKILL.md b/skills/codonfm-setup/SKILL.md index 788102e..b0c1749 100644 --- a/skills/codonfm-setup/SKILL.md +++ b/skills/codonfm-setup/SKILL.md @@ -1,6 +1,8 @@ --- name: codonfm-setup description: Set up the public CodonFM v1 repository and download public Encodon checkpoints. Use for requests to build or launch the CodonFM development container, configure local data/checkpoint mounts, verify GPU access, or download public Encodon 80M, 600M, 1B, or Cdwt-1B weights. Do not use for Decodon, Encodon 5B/10B, missense-aggregation, or codon-optimization setup because those implementations are not in the public repository. +metadata: + author: "NVIDIA BioNeMo " --- # CodonFM public setup From db15d24f2e23ae732a247321132f179c7001d10d Mon Sep 17 00:00:00 2001 From: Ohad Mosafi Date: Thu, 3 Sep 2026 16:07:33 -0700 Subject: [PATCH 3/6] nvskills workflow file Signed-off-by: Ohad Mosafi --- .github/workflows/request-nvskills-ci.yml | 26 +++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 .github/workflows/request-nvskills-ci.yml diff --git a/.github/workflows/request-nvskills-ci.yml b/.github/workflows/request-nvskills-ci.yml new file mode 100644 index 0000000..a88a057 --- /dev/null +++ b/.github/workflows/request-nvskills-ci.yml @@ -0,0 +1,26 @@ +name: Request NVSkills CI + +on: + issue_comment: + types: [created] + pull_request: + types: [opened, reopened, synchronize, ready_for_review] + push: + +jobs: + request: + if: > + github.event_name == 'pull_request' || + (github.event_name == 'issue_comment' && + github.event.issue.pull_request && + startsWith(github.event.comment.body, '/nvskills-ci')) || + (github.event_name == 'push' && + github.actor == (vars.NVSKILLS_SIGNATURE_PUSH_ACTOR || 'nv-skills-ci[bot]') && + startsWith(github.event.head_commit.message, vars.NVSKILLS_SIGNATURE_COMMIT_TITLE || 'Attach NVSkills validation signatures')) + permissions: + contents: read + pull-requests: read + statuses: read + uses: NVIDIA/skills/.github/workflows/team-request.yml@main + secrets: + NVSKILLS_CI_DISPATCH_TOKEN: ${{ secrets.NVSKILLS_CI_DISPATCH_TOKEN }} \ No newline at end of file From 7dc0a0fad34dc5115f05ae8b2740b669ab3eb210 Mon Sep 17 00:00:00 2001 From: Ohad Mosafi Date: Wed, 9 Sep 2026 15:19:03 -0700 Subject: [PATCH 4/6] condonfm skills data Signed-off-by: Ohad Mosafi --- skills/codonfm-embed/SKILL.md | 50 ++++-- skills/codonfm-embed/evals/evals.json | 29 ++-- .../evals/files/codonfm_source.zip | Bin 0 -> 81758 bytes .../evals/files/encodon_checkpoint.json | 33 ++++ .../codonfm-embed/evals/files/sequences.csv | 3 + skills/codonfm-finetune/SKILL.md | 142 ++++++++++++++---- skills/codonfm-finetune/evals/evals.json | 50 ++++-- .../evals/files/codonfm_source.zip | Bin 0 -> 81758 bytes .../evals/files/encodon_checkpoint.json | 33 ++++ .../evals/files/ribonn_smoke.provenance.json | 12 ++ .../evals/files/ribonn_smoke.tsv | 13 ++ .../evals/files/variants_labeled.csv | 21 +++ .../files/variants_labeled.provenance.json | 6 + .../scripts/prepare_ribonn.py | 119 +++++++++++++++ skills/codonfm-score/SKILL.md | 59 ++++++-- skills/codonfm-score/evals/evals.json | 37 +++-- .../evals/files/codonfm_source.zip | Bin 0 -> 81758 bytes .../evals/files/encodon_checkpoint.json | 33 ++++ skills/codonfm-score/evals/files/variants.csv | 3 + skills/codonfm-setup/SKILL.md | 62 ++++++-- skills/codonfm-setup/evals/evals.json | 44 ++++-- .../evals/files/codonfm_source.zip | Bin 0 -> 81758 bytes .../evals/files/encodon_checkpoint.json | 33 ++++ skills/stage_eval_context.py | 49 ++++++ tests/skills/test_public_skills.py | 61 +++++++- 25 files changed, 775 insertions(+), 117 deletions(-) create mode 100644 skills/codonfm-embed/evals/files/codonfm_source.zip create mode 100644 skills/codonfm-embed/evals/files/encodon_checkpoint.json create mode 100644 skills/codonfm-embed/evals/files/sequences.csv create mode 100644 skills/codonfm-finetune/evals/files/codonfm_source.zip create mode 100644 skills/codonfm-finetune/evals/files/encodon_checkpoint.json create mode 100644 skills/codonfm-finetune/evals/files/ribonn_smoke.provenance.json create mode 100644 skills/codonfm-finetune/evals/files/ribonn_smoke.tsv create mode 100644 skills/codonfm-finetune/evals/files/variants_labeled.csv create mode 100644 skills/codonfm-finetune/evals/files/variants_labeled.provenance.json create mode 100644 skills/codonfm-finetune/scripts/prepare_ribonn.py create mode 100644 skills/codonfm-score/evals/files/codonfm_source.zip create mode 100644 skills/codonfm-score/evals/files/encodon_checkpoint.json create mode 100644 skills/codonfm-score/evals/files/variants.csv create mode 100644 skills/codonfm-setup/evals/files/codonfm_source.zip create mode 100644 skills/codonfm-setup/evals/files/encodon_checkpoint.json create mode 100644 skills/stage_eval_context.py diff --git a/skills/codonfm-embed/SKILL.md b/skills/codonfm-embed/SKILL.md index 32a5be1..2e72c40 100644 --- a/skills/codonfm-embed/SKILL.md +++ b/skills/codonfm-embed/SKILL.md @@ -10,12 +10,32 @@ metadata: Extract one frozen CLS vector per coding sequence. This workflow writes embeddings only; it does not automatically train a downstream regressor. +## Instructions + +Resolve the sequence CSV, checkpoint, and output directory from the request and +available files. Validate inputs before extraction. Execution requires the +project's ML dependencies and a compatible NVIDIA GPU. If a required resource +is unavailable, complete the available preparation and return the command with +that prerequisite identified. When extraction is requested and resources are +ready, execute and verify the embedding arrays. A request for preparation ends +with the inputs and command. If no sequences were supplied, report the required +inputs. For Decodon, inspect the [public parser](../../src/runner.py) and +[model configuration](../../src/config.py), explain the missing implementation, +and finish without attempting installation or model development. + +For a demonstration use `nvidia/NV-CodonFM-Encodon-80M-v1`, revision +`399ca9fe17b57941a7bebc6788033919b417413c`, file +`NV-CodonFM-Encodon-80M-v1.safetensors` with sibling `config.json`. +Reuse an existing checkpoint or download it when needed for the requested work. +Preserve a user's explicit checkpoint choice. + ## Preflight and inputs 1. Confirm `src/runner.py`, `src/data/codon_bert_dataset.py`, and `src/inference/encodon.py` exist. 2. Accept only `encodon_80m`, `encodon_600m`, or `encodon_1b`. -3. Require a `.ckpt`, or `.safetensors` with sibling `config.json`. +3. For execution require a `.ckpt`, or `.safetensors` with sibling `config.json`; + input preparation can use a planned path. 4. Require CSV columns `id`, `ref_seq`, `value`, and `split`. `ref_seq` must be a coding sequence. For extraction-only data, set `value` to @@ -25,27 +45,37 @@ that column. Normalize sequences to uppercase DNA (`A/C/G/T`) and require lengths divisible by three. Sequences longer than `--context_length - 2` codons are truncated rather than embedded in full. -## Run +## Examples -Validate configuration first: +Set `CODONFM_DATA_PATH` to the sequence CSV, `CODONFM_CHECKPOINT_PATH` to the +checkpoint, and `CODONFM_RUN_DIR` to your chosen output directory: ```bash python -m src.runner eval \ --exp_name embed_extract \ - --model_name encodon_1b \ - --checkpoint_path /path/to/encodon_1b.safetensors \ - --data_path /path/to/sequences.csv \ + --model_name encodon_80m \ + --checkpoint_path "$CODONFM_CHECKPOINT_PATH" \ + --data_path "$CODONFM_DATA_PATH" \ --process_item codon_sequence \ --dataset_name CodonBertDataset \ --task_type embedding_prediction \ --num_nodes 1 \ --num_gpus 1 \ - --out_dir /path/to/run \ - --predictions_output_dir /path/to/run/predictions \ - --dryrun + --num_workers 0 \ + --val_batch_size 2 \ + --out_dir "$CODONFM_RUN_DIR" \ + --predictions_output_dir "$CODONFM_RUN_DIR/predictions" ``` -After the dry run succeeds, rerun without `--dryrun`. +For preparation requests, inspect the CSV directly against the input schema +above and report the test-row count and sequence checks. Extra columns are +allowed; extraction does not require a measured target. This does not require +the ML runtime. The command above performs extraction when resources are ready. + +The existing `--dryrun` optionally builds runtime configuration and skips +execution. It requires the ML dependencies, can create the prediction directory, +and does not read the CSV or load weights. Do not use it as evidence that inputs, +checkpoint compatibility, or embedding quality have been validated. ## Outputs diff --git a/skills/codonfm-embed/evals/evals.json b/skills/codonfm-embed/evals/evals.json index ee4b14a..e155005 100644 --- a/skills/codonfm-embed/evals/evals.json +++ b/skills/codonfm-embed/evals/evals.json @@ -3,24 +3,33 @@ "evals": [ { "id": "codonfm-embed-001", - "prompt": "Extract public Encodon embeddings from sequences.csv on one GPU.", - "expected_output": "The agent requires id/ref_seq/value/split, sets extraction rows to split=test, and uses embedding_prediction with a dry run first.", + "prompt": "Validate the supplied sequences.csv and prepare a public Encodon embedding-extraction command. Explain which rows will be processed and how to associate the output embeddings with sequence IDs. Use the supplied public source and checkpoint metadata.", + "files": [ + "files/codonfm_source.zip", + "files/encodon_checkpoint.json", + "files/sequences.csv" + ], + "expected_output": "Two validated test rows and a public embedding_prediction command with the correct embedding/ID output contract.", "assertions": [ - "The command includes --task_type embedding_prediction", - "The command includes --process_item codon_sequence and --dataset_name CodonBertDataset", - "The command includes --num_gpus 1 and --dryrun", - "The agent requires value and split=test for public-v1 evaluation", - "The agent reports embeddings_merged.npy and ids_merged.npy" + "The command uses embedding_prediction, codon_sequence, and CodonBertDataset", + "The command specifies --checkpoint_path and output/prediction paths appropriate to the chosen working directory", + "The agent validates both sequence rows, including value and split=test, and explains that evaluation processes the test split", + "The response identifies embeddings_merged.npy and ids_merged.npy and explains their row alignment without fabricating embeddings" ], "expected_skill": "codonfm-embed", "expected_script": null }, { "id": "codonfm-embed-002", - "prompt": "Extract Decodon embeddings with the public CodonFM checkout.", - "expected_output": "The agent explains that public v1 contains no Decodon model or inference implementation.", + "prompt": "Does the public CodonFM implementation support extracting Decodon embeddings? Check the supplied source and explain the limitation, if any.", + "files": [ + "files/codonfm_source.zip", + "files/encodon_checkpoint.json" + ], + "expected_output": "The agent identifies the absence of a public Decodon model and inference implementation.", "assertions": [ - "The agent does not emit a decodon model command" + "The agent explains that the supplied public source has no Decodon model/inference implementation and cites inspected files", + "The agent does not invent a Decodon command or attempt to implement the missing model" ], "expected_skill": "codonfm-embed", "expected_script": null diff --git a/skills/codonfm-embed/evals/files/codonfm_source.zip b/skills/codonfm-embed/evals/files/codonfm_source.zip new file mode 100644 index 0000000000000000000000000000000000000000..eb76611c865b4d3638307c06bf685f7a19c59f46 GIT binary patch literal 81758 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 V4ww-X6kgzq61c deadline: + raise TimeoutError("Dataset preparation exceeded the network time budget; use --input for an offline file") + try: + start, length, fold = int(raw["utr5_size"]), int(raw["cds_size"]), int(raw["fold"]) + value = float(raw["mean_te"]) + transcript = raw["tx_sequence"].upper().replace("U", "T") + row_id = raw["transcript_id"].strip() + except (TypeError, ValueError, AttributeError): + skipped["invalid_metadata"] += 1 + continue + if not row_id or start < 0 or length <= 0 or start + length > len(transcript) or length % 3: + skipped["invalid_cds_bounds_or_id"] += 1 + continue + sequence = transcript[start:start + length] + if set(sequence) - set("ACGT") or not math.isfinite(value) or fold not in range(10): + skipped["invalid_sequence_label_or_fold"] += 1 + continue + if length // 3 > max_codons: + skipped["cds_exceeds_context"] += 1 + continue + split = "val" if fold == 8 else "test" if fold == 9 else "train" + if row_id in seen_ids: + skipped["duplicate_transcript"] += 1 + continue + if sequence in sequence_splits and sequence_splits[sequence] != split: + raise ValueError("Identical CDS appears in different source folds; resolve split leakage before training") + seen_ids.add(row_id) + sequence_splits[sequence] = split + if max_rows_per_split and counts[split] >= max_rows_per_split: + continue + rows.append({"id": row_id, "ref_seq": sequence, "value": value, "split": split}) + counts[split] += 1 + if max_rows_per_split and all(counts[s] >= max_rows_per_split for s in ("train", "val", "test")): + break + if not all(counts[s] for s in ("train", "val", "test")): + raise ValueError("Prepared data must have non-empty train, val, and test splits; check source folds 0-9") + return rows, { + "rows_examined": examined, "rows_written": len(rows), "split_counts": dict(counts), + "skipped": dict(skipped), "label": "mean_te (unchanged)", + "fold_mapping": {"train": list(range(8)), "val": [8], "test": [9]}, + "max_rows_per_split": max_rows_per_split, "max_codons": max_codons, + "purpose": "input preparation; a capped subset is not a scientific benchmark", + } + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--input", type=Path, help="Existing upstream-format TSV; omit to stream the pinned public data") + parser.add_argument("--output", type=Path, required=True) + parser.add_argument("--max-rows-per-split", type=int, default=8, help="Default 8 for a small example; 0 processes all rows") + parser.add_argument("--max-codons", type=int, default=2046) + args = parser.parse_args() + if args.input and args.input.resolve() == args.output.resolve(): + parser.error("Input and output must be different files") + try: + if args.input: + with args.input.open(encoding="utf-8-sig", newline="") as handle: + rows, report = prepare(handle, args.max_rows_per_split, args.max_codons) + else: + # No retry loop or full-dataset download for the default example. + deadline = time.monotonic() + 60 + with urllib.request.urlopen(DATA_URL, timeout=10) as response: + with io.TextIOWrapper(response, encoding="utf-8-sig", newline="") as handle: + rows, report = prepare(handle, args.max_rows_per_split, args.max_codons, deadline) + report.update({"source": str(args.input) if args.input else DATA_URL, "upstream_url": DATA_URL}) + args.output.parent.mkdir(parents=True, exist_ok=True) + with args.output.open("w", newline="", encoding="utf-8") as handle: + writer = csv.DictWriter(handle, fieldnames=["id", "ref_seq", "value", "split"]) + writer.writeheader() + writer.writerows(rows) + args.output.with_suffix(".metadata.json").write_text(json.dumps(report, indent=2) + "\n", encoding="utf-8") + except (ValueError, OSError, urllib.error.URLError) as exc: + parser.exit(1, f"Preparation failed: {exc}\n") + print(json.dumps(report, indent=2)) + + +if __name__ == "__main__": + main() diff --git a/skills/codonfm-score/SKILL.md b/skills/codonfm-score/SKILL.md index 5f55a8a..2bd51f6 100644 --- a/skills/codonfm-score/SKILL.md +++ b/skills/codonfm-score/SKILL.md @@ -10,6 +10,30 @@ metadata: Run general masked-codon `mutation_prediction` only. This produces a research signal, not a clinical diagnosis or an expression-direction prediction. +## Instructions + +Check whether the request is executable in public v1 before installing or +downloading anything. For synonymous-codon aggregation or Decodon, inspect the +[parser](../../src/runner.py) and [model configuration](../../src/config.py), +explain the missing feature, and finish. Do not implement the missing workflow, +search private code, or keep retrying unsupported commands. + +Resolve the variant CSV, checkpoint, and output directory from the request and +available files. Validate inputs before inference. Execution requires the +project's ML dependencies and a compatible NVIDIA GPU. If a required resource +is unavailable, return the validated inputs where possible and a command with +the missing prerequisite identified. When scoring is requested and resources +are ready, execute and verify the score arrays. A request for preparation ends +with the inputs and command. If variants are missing, report the required +schema; do not invent variants or silently switch to a public dataset. + +Default to the public 80M checkpoint for demonstrations: +`nvidia/NV-CodonFM-Encodon-80M-v1`, revision +`399ca9fe17b57941a7bebc6788033919b417413c`, file +`NV-CodonFM-Encodon-80M-v1.safetensors` and sibling `config.json`. +Reuse an existing checkpoint or download it when needed for the requested work. +Preserve an explicitly requested model size. + ## Preflight 1. Confirm `src/runner.py`, `src/data/mutation_dataset.py`, and @@ -17,8 +41,8 @@ signal, not a clinical diagnosis or an expression-direction prediction. 2. Accept only `encodon_80m`, `encodon_600m`, or `encodon_1b` as `--model_name`. The public parser lists larger names, but its model configuration does not implement them. -3. Require a `.ckpt` file, or a `.safetensors` file with sibling - `config.json`. +3. For model execution, require a `.ckpt` file, or a `.safetensors` file with + sibling `config.json`. Input preparation can use a planned path. 4. Validate the CSV headers before starting a GPU job. ## Inputs @@ -44,16 +68,17 @@ ref_seq[3 * codon_position : 3 * codon_position + 3] == ref_codon The public extractor asserts the second condition and otherwise stops the job. -## Run +## Examples -First validate configuration with `--dryrun`: +Set `CODONFM_DATA_PATH` to the variant CSV, `CODONFM_CHECKPOINT_PATH` to the +checkpoint, and `CODONFM_RUN_DIR` to your chosen output directory: ```bash python -m src.runner eval \ --exp_name variant_scoring \ - --model_name encodon_1b \ - --checkpoint_path /path/to/encodon_1b.safetensors \ - --data_path /path/to/variants.csv \ + --model_name encodon_80m \ + --checkpoint_path "$CODONFM_CHECKPOINT_PATH" \ + --data_path "$CODONFM_DATA_PATH" \ --process_item mutation_pred_mlm \ --dataset_name MutationDataset \ --task_type mutation_prediction \ @@ -61,14 +86,24 @@ python -m src.runner eval \ --mask_mutation \ --num_nodes 1 \ --num_gpus 1 \ - --out_dir /path/to/run \ - --predictions_output_dir /path/to/run/predictions \ - --dryrun + --num_workers 0 \ + --val_batch_size 2 \ + --out_dir "$CODONFM_RUN_DIR" \ + --predictions_output_dir "$CODONFM_RUN_DIR/predictions" ``` Do not remove `--mask_mutation`: without it, the reference codon remains -visible at the scored position and invalidates masked-codon LLR scoring. After -the dry run succeeds, rerun the same command without `--dryrun`. +visible at the scored position and invalidates masked-codon LLR scoring. +For preparation requests, inspect the CSV directly against the input schema +and reference-position checks above, then report the rows checked and provide +the scoring command. Extra columns are allowed; use `--ref_seq_col` if the +reference sequence has a different column name. These checks do not require +the ML runtime. The command above performs inference when resources are ready. + +The existing `--dryrun` optionally builds runtime configuration and skips +execution. It requires the ML dependencies, can create the prediction directory, +and does not read the CSV or load weights. Do not use it as evidence that inputs, +checkpoint compatibility, or prediction quality have been validated. ## Outputs diff --git a/skills/codonfm-score/evals/evals.json b/skills/codonfm-score/evals/evals.json index 05c7fda..d1584f0 100644 --- a/skills/codonfm-score/evals/evals.json +++ b/skills/codonfm-score/evals/evals.json @@ -3,25 +3,35 @@ "evals": [ { "id": "codonfm-score-001", - "prompt": "Use public CodonFM Encodon to score my variants.csv on one GPU.", - "expected_output": "The agent uses mutation_prediction with MutationDataset, masks the mutation, extracts CDS context, and reports all four merged NumPy outputs.", + "prompt": "Validate the supplied variants.csv and prepare an Encodon masked-codon scoring command. Explain the output files and how to interpret the score sign. Use the supplied public source and checkpoint metadata; the two variants are synthetic examples.", + "files": [ + "files/codonfm_source.zip", + "files/encodon_checkpoint.json", + "files/variants.csv" + ], + "expected_output": "Two validated variant rows and a public mutation_prediction command, with the correct output contract and reference-versus-alternate score interpretation.", "assertions": [ - "The command includes --task_type mutation_prediction", - "The command includes --process_item mutation_pred_mlm and --dataset_name MutationDataset", - "The command includes --mask_mutation, --extract-seq, and --num_gpus 1", - "The agent runs --dryrun before the real evaluation", - "The agent lists ref_likelihoods_merged.npy, alt_likelihoods_merged.npy, likelihood_ratios_merged.npy, and ids_merged.npy" + "The command uses mutation_prediction, mutation_pred_mlm, and MutationDataset", + "The command includes --mask_mutation, --extract-seq, --checkpoint_path, and explicit prediction/output paths", + "The agent validates both variant rows, including reference codon agreement at the zero-based CDS position", + "The response identifies ref_likelihoods_merged.npy, alt_likelihoods_merged.npy, likelihood_ratios_merged.npy, and ids_merged.npy as expected inference outputs", + "The agent defines LLR as log p(ref_codon) minus log p(alt_codon), does not equate it with expression direction or clinical effect, and does not fabricate scores" ], "expected_skill": "codonfm-score", "expected_script": null }, { "id": "codonfm-score-002", - "prompt": "Run CodonFM synonymous-codon-aggregated missense_prediction on the public repository.", - "expected_output": "The agent explains that public v1 supports only the general ref/alt LLR and does not silently replace the requested aggregation method.", + "prompt": "Can I run synonymous-codon-aggregated missense_prediction with public CodonFM? Check the supplied source and explain how this relates to the available variant-scoring method.", + "files": [ + "files/codonfm_source.zip", + "files/encodon_checkpoint.json" + ], + "expected_output": "The agent explains that the aggregation workflow is unavailable and distinguishes it from ordinary masked reference/alternate codon LLR scoring.", "assertions": [ - "The agent does not run missense_prediction or missense_inference", - "The agent distinguishes general mutation_prediction from synonymous-codon aggregation" + "The agent identifies missense_prediction and missense_inference as unavailable in the supplied public implementation", + "The agent cites inspected source and distinguishes general mutation_prediction from synonymous-codon aggregation", + "The agent answers the compatibility question without implementing a missing feature or silently substituting the available method" ], "expected_skill": "codonfm-score", "expected_script": null @@ -29,9 +39,10 @@ { "id": "codonfm-score-003", "prompt": "Score this variant.", - "expected_output": "The agent does not assume CodonFM because no model or tool was named.", + "expected_output": "The agent requests the missing variant and analysis context without assuming CodonFM.", "assertions": [ - "The agent does not invoke a codonfm-* skill without CodonFM or Encodon context" + "The agent does not invoke a codonfm-* skill without CodonFM or Encodon context", + "The agent identifies missing inputs without inventing a variant or choosing a model" ], "expected_skill": null, "expected_script": null diff --git a/skills/codonfm-score/evals/files/codonfm_source.zip b/skills/codonfm-score/evals/files/codonfm_source.zip new file mode 100644 index 0000000000000000000000000000000000000000..eb76611c865b4d3638307c06bf685f7a19c59f46 GIT binary patch literal 81758 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 V4ww-X6kgzq61c dict[str, str]: raise AssertionError("SKILL.md is missing YAML frontmatter") result = {} for line in match.group(1).splitlines(): + if line.startswith(" "): + continue key, separator, value = line.partition(":") if not separator: raise AssertionError(f"Invalid frontmatter line: {line}") @@ -95,7 +102,7 @@ def test_frontmatter_and_ui_metadata(self): skill_dir = SKILLS_ROOT / skill_name text = (skill_dir / "SKILL.md").read_text() metadata = _frontmatter(text) - self.assertEqual(set(metadata), {"name", "description"}) + self.assertEqual(set(metadata), {"name", "description", "metadata"}) self.assertEqual(metadata["name"], skill_name) self.assertNotIn("TODO", text) @@ -114,6 +121,55 @@ def test_evals_are_valid_and_named(self): ids = [case["id"] for case in payload["evals"]] self.assertEqual(len(ids), len(set(ids))) + def test_eval_inputs_exist_and_source_fixtures_match_repository(self): + expected_archive = None + for skill_name in sorted(PUBLIC_SKILLS): + evals = SKILLS_ROOT / skill_name / "evals" + payload = json.loads((evals / "evals.json").read_text()) + for case in payload["evals"]: + for relative in case.get("files", []): + path = (evals / relative).resolve() + self.assertTrue(path.is_relative_to(evals.resolve())) + self.assertTrue(path.is_file(), str(path)) + archive_path = evals / "files/codonfm_source.zip" + data = archive_path.read_bytes() + if expected_archive is not None: + self.assertEqual(data, expected_archive, "Trials must receive identical public source") + expected_archive = data + with zipfile.ZipFile(archive_path) as archive: + manifest = json.loads(archive.read("source-manifest.json")) + for name, sha in manifest["sha256"].items(): + self.assertEqual(archive.read(name), (REPO_ROOT / name).read_bytes(), + "Refresh source fixtures with python skills/stage_eval_context.py") + self.assertEqual(hashlib.sha256(archive.read(name)).hexdigest(), sha) + self.assertFalse(any(name.startswith("skills/") or name.endswith(".safetensors") + for name in archive.namelist())) + + def test_ribonn_preparation_preserves_data_without_runtime_dependencies(self): + files = SKILLS_ROOT / "codonfm-finetune/evals/files" + helper = SKILLS_ROOT / "codonfm-finetune/scripts/prepare_ribonn.py" + with tempfile.TemporaryDirectory() as tmp: + output = Path(tmp) / "prepared.csv" + result = subprocess.run([sys.executable, "-S", str(helper), "--input", + str(files / "ribonn_smoke.tsv"), "--output", str(output)], + cwd=REPO_ROOT, capture_output=True, text=True, timeout=10) + self.assertEqual(result.returncode, 0, result.stderr) + report = json.loads(result.stdout) + self.assertEqual(report["split_counts"], {"train": 8, "val": 2, "test": 2}) + self.assertEqual(json.loads(output.with_suffix(".metadata.json").read_text()), report) + with (files / "ribonn_smoke.tsv").open() as handle: + raw = {row["transcript_id"]: row for row in csv.DictReader(handle, delimiter="\t")} + with output.open() as handle: + rows = list(csv.DictReader(handle)) + self.assertEqual(len(rows), 12) + for row in rows: + source = raw[row["id"]] + start, length = int(source["utr5_size"]), int(source["cds_size"]) + self.assertEqual(row["ref_seq"], source["tx_sequence"][start:start + length]) + self.assertEqual(float(row["value"]), float(source["mean_te"])) + fold = int(source["fold"]) + self.assertEqual(row["split"], "val" if fold == 8 else "test" if fold == 9 else "train") + def test_documented_runner_commands_parse(self): parser = _public_runner_parser() commands = [] @@ -136,13 +192,11 @@ def test_fragile_command_requirements(self): )[0] self.assertIn("--mask_mutation", score) self.assertIn("--extract-seq", score) - self.assertIn("--dryrun", score) self.assertEqual(score[score.index("--num_gpus") + 1], "1") embed = _runner_commands( (SKILLS_ROOT / "codonfm-embed/SKILL.md").read_text() )[0] - self.assertIn("--dryrun", embed) self.assertEqual(embed[embed.index("--num_gpus") + 1], "1") finetune = _runner_commands( @@ -155,7 +209,6 @@ def test_fragile_command_requirements(self): "--check_val_every_n_epoch", "--checkpoints_dir", "--use_downstream_head", - "--dryrun", ): self.assertIn(flag, finetune) self.assertEqual( From c6d169d9f942c29f9e595ce518223044acfd1ffc Mon Sep 17 00:00:00 2001 From: Ohad Mosafi Date: Wed, 9 Sep 2026 17:55:35 -0700 Subject: [PATCH 5/6] fix tier1 Signed-off-by: Ohad Mosafi --- .../scripts/prepare_ribonn.py | 24 ++++--- tests/skills/test_public_skills.py | 67 +++++++++++++++++++ 2 files changed, 82 insertions(+), 9 deletions(-) diff --git a/skills/codonfm-finetune/scripts/prepare_ribonn.py b/skills/codonfm-finetune/scripts/prepare_ribonn.py index 15ca4d1..ed6d76d 100644 --- a/skills/codonfm-finetune/scripts/prepare_ribonn.py +++ b/skills/codonfm-finetune/scripts/prepare_ribonn.py @@ -5,21 +5,23 @@ import argparse import csv +import http.client import io import json import math import time -import urllib.error -import urllib.request from collections import Counter +from contextlib import closing from pathlib import Path DATA_REVISION = "512fca642b6b7b61ae494ad83cfc2b72831636d2" -DATA_URL = ( - f"https://raw.githubusercontent.com/CenikLab/TE_classic_ML/{DATA_REVISION}" +DATA_HOST = "raw.githubusercontent.com" +DATA_PATH = ( + f"/CenikLab/TE_classic_ML/{DATA_REVISION}" "/data/data_with_human_TE_cellline_all_NA_plain.csv" ) +DATA_URL = f"https://{DATA_HOST}{DATA_PATH}" def prepare(handle, max_rows_per_split=8, max_codons=2046, deadline=None): @@ -98,11 +100,15 @@ def main(): with args.input.open(encoding="utf-8-sig", newline="") as handle: rows, report = prepare(handle, args.max_rows_per_split, args.max_codons) else: - # No retry loop or full-dataset download for the default example. + # Fixed HTTPS endpoint with default certificate verification; no redirects or retries. deadline = time.monotonic() + 60 - with urllib.request.urlopen(DATA_URL, timeout=10) as response: - with io.TextIOWrapper(response, encoding="utf-8-sig", newline="") as handle: - rows, report = prepare(handle, args.max_rows_per_split, args.max_codons, deadline) + with closing(http.client.HTTPSConnection(DATA_HOST, timeout=10)) as connection: + connection.request("GET", DATA_PATH) + with connection.getresponse() as response: + if response.status != 200: + raise ValueError(f"Dataset download returned HTTP {response.status}; expected 200 without redirects") + with io.TextIOWrapper(response, encoding="utf-8-sig", newline="") as handle: + rows, report = prepare(handle, args.max_rows_per_split, args.max_codons, deadline) report.update({"source": str(args.input) if args.input else DATA_URL, "upstream_url": DATA_URL}) args.output.parent.mkdir(parents=True, exist_ok=True) with args.output.open("w", newline="", encoding="utf-8") as handle: @@ -110,7 +116,7 @@ def main(): writer.writeheader() writer.writerows(rows) args.output.with_suffix(".metadata.json").write_text(json.dumps(report, indent=2) + "\n", encoding="utf-8") - except (ValueError, OSError, urllib.error.URLError) as exc: + except (ValueError, OSError, http.client.HTTPException) as exc: parser.exit(1, f"Preparation failed: {exc}\n") print(json.dumps(report, indent=2)) diff --git a/tests/skills/test_public_skills.py b/tests/skills/test_public_skills.py index 916488f..d6585be 100644 --- a/tests/skills/test_public_skills.py +++ b/tests/skills/test_public_skills.py @@ -11,15 +11,20 @@ import ast import csv import hashlib +import importlib.util +import io import json import re import shlex +import ssl import subprocess import sys import tempfile import unittest import zipfile +from contextlib import redirect_stderr, redirect_stdout from pathlib import Path +from unittest.mock import patch REPO_ROOT = Path(__file__).resolve().parents[2] @@ -86,6 +91,14 @@ def _evaluate_function(namespace): return namespace["evaluate"] +def _ribonn_helper(): + path = SKILLS_ROOT / "codonfm-finetune/scripts/prepare_ribonn.py" + spec = importlib.util.spec_from_file_location("prepare_ribonn", path) + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) + return module + + class PublicSkillContractTests(unittest.TestCase): def test_expected_public_skill_set(self): actual = { @@ -170,6 +183,60 @@ def test_ribonn_preparation_preserves_data_without_runtime_dependencies(self): fold = int(source["fold"]) self.assertEqual(row["split"], "val" if fold == 8 else "test" if fold == 9 else "train") + def test_ribonn_download_requires_direct_https_success(self): + helper = _ribonn_helper() + fixture = (SKILLS_ROOT / "codonfm-finetune/evals/files/ribonn_smoke.tsv").read_bytes() + for status in (200, 301, 302, 303, 307, 308, 404, 500): + with self.subTest(status=status), tempfile.TemporaryDirectory() as tmp: + output = Path(tmp) / "prepared.csv" + response = io.BytesIO(fixture) + response.status = status + with ( + patch.object(helper.http.client, "HTTPSConnection") as https, + patch.object(sys, "argv", ["prepare_ribonn.py", "--output", str(output)]), + redirect_stdout(io.StringIO()) as stdout, + redirect_stderr(io.StringIO()) as stderr, + ): + connection = https.return_value + connection.getresponse.return_value = response + if status == 200: + helper.main() + report = json.loads(stdout.getvalue()) + self.assertEqual(report["split_counts"], {"train": 8, "val": 2, "test": 2}) + self.assertEqual(report["source"], helper.DATA_URL) + self.assertTrue(output.is_file()) + else: + with self.assertRaises(SystemExit) as failure: + helper.main() + self.assertEqual(failure.exception.code, 1) + self.assertIn(f"HTTP {status}", stderr.getvalue()) + self.assertEqual(list(Path(tmp).iterdir()), []) + https.assert_called_once_with("raw.githubusercontent.com", timeout=10) + connection.request.assert_called_once_with("GET", helper.DATA_PATH) + connection.close.assert_called_once_with() + self.assertTrue(response.closed) + + def test_ribonn_download_handles_transport_errors_without_output(self): + helper = _ribonn_helper() + errors = (TimeoutError("read timed out"), ssl.SSLCertVerificationError("untrusted certificate"), + helper.http.client.BadStatusLine("invalid HTTP response")) + for error in errors: + with self.subTest(error=type(error).__name__), tempfile.TemporaryDirectory() as tmp: + output = Path(tmp) / "prepared.csv" + with ( + patch.object(helper.http.client, "HTTPSConnection") as https, + patch.object(sys, "argv", ["prepare_ribonn.py", "--output", str(output)]), + redirect_stderr(io.StringIO()) as stderr, + ): + https.return_value.getresponse.side_effect = error + with self.assertRaises(SystemExit) as failure: + helper.main() + self.assertEqual(failure.exception.code, 1) + self.assertIn("Preparation failed:", stderr.getvalue()) + self.assertEqual(list(Path(tmp).iterdir()), []) + https.assert_called_once() + https.return_value.close.assert_called_once_with() + def test_documented_runner_commands_parse(self): parser = _public_runner_parser() commands = [] From 3f95e4e01604dbe7fda83d5563ef7a55d3134772 Mon Sep 17 00:00:00 2001 From: Ohad Mosafi Date: Thu, 10 Sep 2026 16:21:09 -0700 Subject: [PATCH 6/6] fix prompts due to guardrails Signed-off-by: Ohad Mosafi --- skills/codonfm-score/evals/evals.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/skills/codonfm-score/evals/evals.json b/skills/codonfm-score/evals/evals.json index d1584f0..3f8b299 100644 --- a/skills/codonfm-score/evals/evals.json +++ b/skills/codonfm-score/evals/evals.json @@ -3,7 +3,7 @@ "evals": [ { "id": "codonfm-score-001", - "prompt": "Validate the supplied variants.csv and prepare an Encodon masked-codon scoring command. Explain the output files and how to interpret the score sign. Use the supplied public source and checkpoint metadata; the two variants are synthetic examples.", + "prompt": "Review the public CodonFM software using the supplied synthetic test fixtures. Inspect codonfm_source.zip and encodon_checkpoint.json, validate both example rows in variants.csv, and prepare an Encodon masked-codon scoring command that matches the supplied implementation.\n\nExplain the expected output files and how to interpret positive and negative scores, citing the relevant source. Provide the command without running inference or inventing numerical results.", "files": [ "files/codonfm_source.zip", "files/encodon_checkpoint.json", @@ -22,7 +22,7 @@ }, { "id": "codonfm-score-002", - "prompt": "Can I run synonymous-codon-aggregated missense_prediction with public CodonFM? Check the supplied source and explain how this relates to the available variant-scoring method.", + "prompt": "Review the supplied public CodonFM source and checkpoint metadata for a software compatibility question: does this implementation support running synonymous-codon-aggregated missense_prediction?\n\nCite the relevant source locations and explain how that workflow relates to the available variant-scoring method. Base the answer on what the supplied implementation actually supports. This task requires source inspection and explanation; no new implementation or inference run is needed.", "files": [ "files/codonfm_source.zip", "files/encodon_checkpoint.json"