diff --git a/.dockerignore b/.dockerignore
index 2254de4..5c6f714 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -2,7 +2,7 @@
checkpoint/
# Output data
-data/output/
+examples/data/output/
# Python cache
__pycache__/
@@ -15,19 +15,19 @@ __pycache__/
*_bak*
# Docker files
-# NOTE: docker/ must stay in the build context: docker/Dockerfile COPYs
-# docker/requirements.txt and docker/entrypoint.sh. Excluding it breaks the
-# documented `docker build -f docker/Dockerfile -t eva:latest .` command.
+# NOTE: scripts/docker/ must stay in the build context: scripts/docker/Dockerfile COPYs
+# scripts/docker/requirements.txt and scripts/docker/entrypoint.sh. Excluding it breaks the
+# documented `docker build -f scripts/docker/Dockerfile -t eva:latest .` command.
Dockerfile
-# Keep the published recipe available to COPY docker/ and image-internal QA.
-!docker/Dockerfile
-docker/Dockerfile_bak*
-docker/EVA.def
-docker/smoke_test.sh
+# Keep the published recipe available to COPY scripts/docker/ and image-internal QA.
+!scripts/docker/Dockerfile
+scripts/docker/Dockerfile_bak*
+scripts/docker/EVA.def
+scripts/docker/smoke_test.sh
.dockerignore
# Figures are not part of the image (34 MB of build context)
-fig/
+docs/assets/
# IDE / OS
.git/
@@ -45,4 +45,4 @@ dist/
build/
*.egg-info/
.pytest_cache/
-notebooks/interpretability_analysis/sae_repro_release/outputs/
+examples/notebooks/interpretability_analysis/sae_repro_release/outputs/
diff --git a/.github/workflows/resources.yml b/.github/workflows/resources.yml
index cefd162..1ac3fb2 100644
--- a/.github/workflows/resources.yml
+++ b/.github/workflows/resources.yml
@@ -6,7 +6,7 @@ on:
branches: [main]
paths:
- 'scripts/check_resource_links.py'
- - 'reproduction/release/resource_links.json'
+ - 'examples/reproduction/release/resource_links.json'
- '.github/workflows/resources.yml'
permissions:
diff --git a/.gitignore b/.gitignore
index 228f99a..4a1db51 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,14 +1,13 @@
# Reproduction guides are source deliverables, not generated documentation.
reference/
-!reproduction/benchmark_release/reference/
-!reproduction/benchmark_release/reference/**
+!examples/reproduction/benchmark_release/reference/
+!examples/reproduction/benchmark_release/reference/**
checkpoint/*
-!checkpoint/.gitkeep
-data/output/**
+examples/data/output/**
eva_latest.tar
eva_latest.tar.gz
-notebooks/interpretability_analysis/intermediate_data/*.npz
-notebooks/tools/visualization/UMAP/taxid_phylum_mapping.json
+examples/notebooks/interpretability_analysis/intermediate_data/*.npz
+examples/notebooks/tools/visualization/UMAP/taxid_phylum_mapping.json
__pycache__/
*.py[cod]
*.egg-info/
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 46de3cc..5e0bf91 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,18 @@
## Unreleased
+### Repository layout — 2026-09-09
+
+Tutorials and paper reproduction resources now share `examples/`; fine-tuning
+lives under `training/finetune/`. Example configurations and data are under
+`examples/config/` and `examples/data/`, illustrations under `docs/assets/`, and
+container recipes under `scripts/docker/`. The benchmark supplement is now
+`docs/BENCHMARK_SUPPLEMENT.md`. Create `checkpoint/` when downloading weights.
+Model imports and the `eva-predict`, `eva-generate` and `eva-evolve` commands keep
+their existing names. Updated guides show the new source-file paths.
+
+### Other improvements
+
- Organize task guides, resource information and reviewer evidence around a concise README.
- Separate successful Milena execution from optional strict reference comparison.
- Add CPU regression, packaging, documentation and citation checks, with separate external-resource reporting.
diff --git a/README.md b/README.md
index 795578f..ecd9917 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
-
+
EVA
@@ -28,7 +28,7 @@ workflows. Model weights and large datasets are downloaded separately.
-
+
@@ -91,7 +91,7 @@ From the repository root, build and enter the runtime **on the host**:
```bash
mkdir -p checkpoint results
-docker build -f docker/Dockerfile -t eva:local .
+docker build -f scripts/docker/Dockerfile -t eva:local .
docker run --rm -it --gpus device=0 --name eva-repro \
-v "$PWD":/eva -w /eva eva:local bash
```
@@ -167,14 +167,15 @@ paper experiment. See [dated validation records](docs/RELEASE_STATUS.md).
| Directory | Contents |
|---|---|
-| `eva/`, `tools/` | Model, tokenizer and inference CLIs |
-| `training/`, `finetune/`, `config/` | Training entry points and configurations |
-| `scripts/` | Command-line workflows and automation |
-| [`notebooks/`](notebooks/README.md) | Interactive analysis, plots and supporting data |
-| [`reproduction/`](reproduction/README.md) | Fixed inputs, protocols, reference outputs and historical code |
-| `docs/`, `tests/` | Guides and regression tests |
-
-Notebooks and command-line workflows share the reproduction resources.
+| `eva/` | Model and tokenizer |
+| `tools/` | Scoring, generation and evolution CLIs |
+| [`training/`](training/README.md) | Pretraining, midtraining, fine-tuning and evaluation |
+| [`examples/`](examples/README.md) | Notebooks, paper benchmarks, sample data and configurations |
+| `scripts/` | Reproduction commands, checks and container recipes |
+| `docs/` | Guides and illustrations |
+| `tests/` | Regression tests |
+
+Start with [examples](examples/README.md) to choose a tutorial or benchmark.
The wheel contains the importable model and CLI packages; use the complete
source checkout for training, notebooks and paper-reproduction inputs.
diff --git a/README_BENCHMARK_SUPPLEMENT.md b/README_BENCHMARK_SUPPLEMENT.md
deleted file mode 100644
index bc20baa..0000000
--- a/README_BENCHMARK_SUPPLEMENT.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Benchmark evaluation component
-
-The benchmark supplement has been integrated into this candidate. Start with
-[the reproduction guide](docs/REPRODUCTION.md). CPU summary analysis and keyed
-prediction evaluation are documented in [BENCHMARK_RELEASE.md](docs/BENCHMARK_RELEASE.md).
-See [release status](docs/RELEASE_STATUS.md) for actual validation and publication status.
diff --git a/checkpoint/.gitkeep b/checkpoint/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/config/tools_config/config_score_test.yaml b/config/tools_config/config_score_test.yaml
deleted file mode 100644
index 2c624b8..0000000
--- a/config/tools_config/config_score_test.yaml
+++ /dev/null
@@ -1,20 +0,0 @@
-# Test config for predict task mode
-checkpoint: /eva/checkpoint/clm
-output_dir: /eva/data/output/scores
-
-defaults:
- normalize: false
- batch_size: 128
-
-tasks:
- - name: test_unconditional
- mode: scoring
- input: /eva/data/test_data/test_rna.fa
- output: /eva/data/output/scores/test_unconditional.json
-
- - name: test_with_rna_type
- mode: scoring
- input: /eva/data/test_data/test_rna.fa
- output: /eva/data/output/scores/test_with_rna_type.json
- rna_type: mRNA
- normalize: true
diff --git a/docs/BENCHMARK_PROTOCOLS.md b/docs/BENCHMARK_PROTOCOLS.md
index a5a2bba..27de2a9 100644
--- a/docs/BENCHMARK_PROTOCOLS.md
+++ b/docs/BENCHMARK_PROTOCOLS.md
@@ -3,12 +3,12 @@
The representative current-submission workflow is documented in
[REPRODUCTION.md](REPRODUCTION.md) and fixes the public EVA-1.4B model,
all 135 Milena samples, and the original sum-score convention. Its observed
-output and numerical comparison are in `reproduction/milena_14b/expected/`.
+output and numerical comparison are in `examples/reproduction/milena_14b/expected/`.
The current label file is retained as confirmed by the author. Historical
FASTA header metadata is not treated as an independent assay ground truth.
Historical source files and archived predictions remain unchanged with hashes
-in `reproduction/benchmark/provenance.json` and `historical_14b_manifest.json`.
+in `examples/reproduction/benchmark/provenance.json` and `historical_14b_manifest.json`.
[September 5 validation notes](HISTORICAL_BENCHMARK_VALIDATION.md) preserve
older findings, which must not be substituted for current validation status.
@@ -27,7 +27,7 @@ archive calculation from a completed model reproduction.
## Comparison-model execution, not plotting
-`reproduction/benchmark/run_competitor.py` accepts locally prepared checkpoints
+`examples/reproduction/benchmark/run_competitor.py` accepts locally prepared checkpoints
for its supported scoring interfaces. Models are loaded from `--model-dir`;
the RNA interface uses `local_files_only=True`. Prepare the model, tokenizer and
dependencies in the chosen model's compatible environment before running it.
@@ -38,14 +38,14 @@ your results; a specific paper comparison uses that paper's protocol.
1. Snapshot an already acquired, version-pinned local model. Keep the manifest **outside** the model directory; subsequent scoring requires the exact file set and hashes.
```bash
-python reproduction/benchmark/run_competitor.py snapshot \
+python examples/reproduction/benchmark/run_competitor.py snapshot \
--model-dir /models/rnafm-pinned --output /models/rnafm-manifest.json
```
2. RNA masked-LM scoring implements leave-one-token-out mean log likelihood, excluding tokenizer special tokens. It uses bounded mask batches, rejects unknown tokens/nonfinite logits, and has no fallback tokenizer. The original adapter's truncation is only reproduced when explicitly requested; the default is an error on an oversized sequence. `max-tokens` includes special tokens and must match the selected model.
```bash
-python reproduction/benchmark/run_competitor.py rna-mlm \
+python examples/reproduction/benchmark/run_competitor.py rna-mlm \
--input data/test.fasta --model-dir /models/rnafm-pinned \
--model-manifest /models/rnafm-manifest.json --max-tokens 1024 \
--sequence-type rna --register-multimolecule --mask-batch-size 1 \
@@ -57,7 +57,7 @@ Remove `--dry-run` for actual scoring. `--length-policy truncate` is an explicit
3. Protein ESM scoring uses the recovered native wt-/masked-marginal implementation, preceded by strict reference/variant validation and followed by finite/count checks. It requires one matching ProteinGym reference entry; no inferred-WT fallback or out-of-range mutation skipping is permitted.
```bash
-python reproduction/benchmark/run_competitor.py protein-esm \
+python examples/reproduction/benchmark/run_competitor.py protein-esm \
--input /data/ProteinGym/ASSAY.csv --reference /data/ProteinGym/DMS_substitutions.csv \
--model-dir /models/esm1v-pinned --model-manifest /models/esm1v-manifest.json \
--weight-file esm1v_t33_650M_UR90S_1.pt --strategy wt-marginals \
@@ -69,7 +69,7 @@ The snapshot must contain companion files required by `fair-esm`. Actual ESM exe
4. Metrics for RNA predictions require an independently verified label CSV with `variant_id,sequence,label`, not a bare positional vector:
```bash
-python reproduction/benchmark/run_competitor.py evaluate \
+python examples/reproduction/benchmark/run_competitor.py evaluate \
--predictions outputs/rnafm_test/predictions.csv --labels data/verified_labels.csv \
--output outputs/rnafm_metrics.json
```
@@ -95,12 +95,12 @@ scoring convention, model version and environment alongside the CSV. The
evaluator calculates signed Spearman using the supplied scores.
```bash
-python reproduction/benchmark/run_competitor.py evaluate \
+python examples/reproduction/benchmark/run_competitor.py evaluate \
--predictions results/my_model/predictions.csv \
--labels data/verified_labels.csv --output results/my_model/metrics.json
```
-Use the [benchmark notebook](../notebooks/prediction/benchmark_reproduction.ipynb)
+Use the [benchmark notebook](../examples/notebooks/prediction/benchmark_reproduction.ipynb)
and its evaluation manifest when comparing keyed predictions across multiple
datasets. This gives local model deployments a common analysis entry point.
diff --git a/docs/BENCHMARK_RELEASE.md b/docs/BENCHMARK_RELEASE.md
index eba9d94..26767fa 100644
--- a/docs/BENCHMARK_RELEASE.md
+++ b/docs/BENCHMARK_RELEASE.md
@@ -16,13 +16,13 @@ python -B -m unittest discover -s tests -p test_benchmark_release.py -v
python scripts/benchmark_release.py --help
```
-Open `notebooks/prediction/benchmark_reproduction.ipynb` to follow the same entry
+Open `examples/notebooks/prediction/benchmark_reproduction.ipynb` to follow the same entry
points. Its three code cells have been executed both sequentially as Python and
in an isolated Jupyter kernel. The reference-analysis section ran; the optional
prediction-manifest section was explicitly unconfigured. This does not validate
model inference or arbitrary user-supplied prediction files.
The observed notebook-test dependency versions are recorded in
-`reproduction/benchmark_release/jupyter-validation-macos-py312.lock.txt`.
+`examples/reproduction/benchmark_release/jupyter-validation-macos-py312.lock.txt`.
That lock is for the tested macOS/Python 3.12 environment, not a universal
installation recipe or an EVA GPU environment.
@@ -30,8 +30,8 @@ installation recipe or an EVA GPU environment.
```bash
python scripts/benchmark_release.py audit-reference \
- --manifest reproduction/benchmark_release/reference_manifest.json \
- --data-root reproduction/benchmark_release/reference \
+ --manifest examples/reproduction/benchmark_release/reference_manifest.json \
+ --data-root examples/reproduction/benchmark_release/reference \
--output results/reference_audit --plot
```
@@ -73,8 +73,8 @@ not fresh inference or confirmation of its final manuscript/checkpoint lineage.
```bash
python scripts/benchmark_release.py audit-reference \
- --manifest reproduction/benchmark_release/recovered_reference_manifest.json \
- --data-root reproduction/benchmark_release/recovered_reference \
+ --manifest examples/reproduction/benchmark_release/recovered_reference_manifest.json \
+ --data-root examples/reproduction/benchmark_release/recovered_reference \
--output results/recovered_reference_audit --plot
```
@@ -96,7 +96,7 @@ Do not generate IDs after independently sorting files, join by row number, use
another model to fill missing predictions, or infer experimental readouts from
sequence names. The label and prediction ID sets must match exactly.
-Complete `reproduction/benchmark_release/evaluation_manifest.template.json` in a
+Complete `examples/reproduction/benchmark_release/evaluation_manifest.template.json` in a
new file. Its null fields are deliberately unusable until real values are
provided. Specify all intended models and assays; the required scope is their
Cartesian product. For genuinely different model scopes, use separately labeled
@@ -155,9 +155,9 @@ The source contains these entry points; see REPRODUCTION.md for the new pinned 1
|---|---|---|
| EVA representative assay | `scripts/reproduce_dms.py` | Resolve original label/invocation mismatch; do not call the previous 21M run a numerical match |
| Historical EVA archive | `scripts/reproduce_historical_benchmark.py` | Arithmetic only; unresolved label provenance stays visible |
-| Bounded RNA MLM / native ESM | `reproduction/benchmark/run_competitor.py` | Correct per-model objective, weights, runtime and assay manifest; not interchangeable with all competing methods |
-| Historical multi-model adapters | `reproduction/benchmark/upstream/rna/` | Port original verified configs and external workers; legacy absolute paths are not reader instructions |
-| Protein model adapters | `reproduction/benchmark/upstream/protein/` | Original reference/codon/domain/ensemble conventions and exact model versions; not all methods are complete |
+| Bounded RNA MLM / native ESM | `examples/reproduction/benchmark/run_competitor.py` | Correct per-model objective, weights, runtime and assay manifest; not interchangeable with all competing methods |
+| Historical multi-model adapters | `examples/reproduction/benchmark/upstream/rna/` | Port original verified configs and external workers; legacy absolute paths are not reader instructions |
+| Protein model adapters | `examples/reproduction/benchmark/upstream/protein/` | Original reference/codon/domain/ensemble conventions and exact model versions; not all methods are complete |
Those files belong to the existing full-source repair, not this small overlay.
Their presence is not a fresh execution result. This supplement performs no GPU
diff --git a/docs/BENCHMARK_SUPPLEMENT.md b/docs/BENCHMARK_SUPPLEMENT.md
new file mode 100644
index 0000000..a6f7cf8
--- /dev/null
+++ b/docs/BENCHMARK_SUPPLEMENT.md
@@ -0,0 +1,6 @@
+# Benchmark evaluation component
+
+The benchmark supplement has been integrated into this candidate. Start with
+[the reproduction guide](REPRODUCTION.md). CPU summary analysis and keyed
+prediction evaluation are documented in [BENCHMARK_RELEASE.md](BENCHMARK_RELEASE.md).
+See [release status](RELEASE_STATUS.md) for actual validation and publication status.
diff --git a/docs/ESSENTIALITY_REPRODUCTION.md b/docs/ESSENTIALITY_REPRODUCTION.md
index f377022..e864085 100644
--- a/docs/ESSENTIALITY_REPRODUCTION.md
+++ b/docs/ESSENTIALITY_REPRODUCTION.md
@@ -19,7 +19,7 @@ python scripts/reproduce_essentiality.py \
The original source root is currently available on `EVA_a100` at
`/data/yanjie_huang/enzyme1_server/eva/EVA1`. It is not a public dataset URL.
The required dataset checksum and directory layout are in
-`reproduction/essentiality/source_manifest.json`. The input contains 95,538 CDS
+`examples/reproduction/essentiality/source_manifest.json`. The input contains 95,538 CDS
records from five species; these records must not be described as 95,538 unique
genes without resolving transcript and duplicate-annotation identifiers.
diff --git a/docs/HISTORICAL_BENCHMARK_VALIDATION.md b/docs/HISTORICAL_BENCHMARK_VALIDATION.md
index 02a9e59..80e0a1b 100644
--- a/docs/HISTORICAL_BENCHMARK_VALIDATION.md
+++ b/docs/HISTORICAL_BENCHMARK_VALIDATION.md
@@ -8,7 +8,7 @@ author-confirmed submission. Use REPRODUCTION.md for the current workflow.
## What was recovered
-`reproduction/benchmark/provenance.json` identifies 95 unchanged historical files by source host, original path, byte size and SHA256. These include RNA adapters and their scoring workers, protein reverse-translation/ESM workers, the historical EVA model/tokenizer/loader support code, four training configurations, released Milena inputs, archived predictions and an earlier validation report. This is a source snapshot, not a claim that every external model/environment has been released or rerun. The original server was read-only.
+`examples/reproduction/benchmark/provenance.json` identifies 95 unchanged historical files by source host, original path, byte size and SHA256. These include RNA adapters and their scoring workers, protein reverse-translation/ESM workers, the historical EVA model/tokenizer/loader support code, four training configurations, released Milena inputs, archived predictions and an earlier validation report. This is a source snapshot, not a claim that every external model/environment has been released or rerun. The original server was read-only.
All three released EVA-21M files at `GENTEL-Lab/EVA`, revision `514db6705637c1ec963b728768fc9b34728699ee`, match the historical `30M_1130_midtrain/checkpoint_86006` files byte-for-byte:
@@ -71,10 +71,10 @@ To repeat on a single explicitly selected GPU with this compatible environment:
```bash
CUDA_VISIBLE_DEVICES=7 PYTHONDONTWRITEBYTECODE=1 \
-python reproduction/benchmark/run_historical_14b.py \
- --source-dir reproduction/benchmark/historical_14b \
+python examples/reproduction/benchmark/run_historical_14b.py \
+ --source-dir examples/reproduction/benchmark/historical_14b \
--checkpoint /models/historical-rnaverse-clm \
- --archive reproduction/benchmark/fixtures/milena/eva_1_4b_wotag_scores.json \
+ --archive examples/reproduction/benchmark/fixtures/milena/eva_1_4b_wotag_scores.json \
--expected-weights-sha256 323c13d571d0be87e450cb7b103bf8b28396e55e877519e2d2fb3c434875d420 \
--memory-limit-gib 4 --device cuda:0 --output outputs/milena_14b_fresh
```
diff --git a/docs/HISTORICAL_VALIDATION.md b/docs/HISTORICAL_VALIDATION.md
index 41da68c..56f4e82 100644
--- a/docs/HISTORICAL_VALIDATION.md
+++ b/docs/HISTORICAL_VALIDATION.md
@@ -25,7 +25,7 @@ Repairs in this workspace are uncommitted and have not been pushed or released.
1.4B/layer-13 single-case inference matching the archived sample.
The full-source bundle carries original files and SHA-256 manifests under
-reproduction/. These are not included in the wheel. A successful archived
+examples/reproduction/. These are not included in the wheel. A successful archived
summary calculation is not a new model-inference run.
## Environment and installation
@@ -37,7 +37,7 @@ one GPU on a shared server. CUDA_VISIBLE_DEVICES inside Docker uses container in
```bash
# From a complete checkout, build the published recipe when no runtime exists.
-docker build -f docker/Dockerfile -t eva-repaired:local .
+docker build -f scripts/docker/Dockerfile -t eva-repaired:local .
mkdir -p checkpoint results
docker run --rm -it --gpus device=0 --name eva-repro \
-v "$PWD":/eva -w /eva eva-repaired:local bash
@@ -54,7 +54,7 @@ python -m pytest -q tests
Editable/wheel installs include `eva` and `tools` and their CLI commands. Training,
notebooks, configs and benchmark datasets require a **full source checkout**.
`pip install -e .` does not install the compiled FlashAttention/MegaBlocks stack.
-Its matched CUDA build commands are in `docker/Dockerfile`; `--help` is not a
+Its matched CUDA build commands are in `scripts/docker/Dockerfile`; `--help` is not a
GPU inference test. A working pre-existing image is not proof that a clean image
build has completed. Record those checks separately.
@@ -83,13 +83,13 @@ python scripts/reproduce_dms.py \
The downloader fixes HF model revision
`514db6705637c1ec963b728768fc9b34728699ee` and verifies the weight SHA256:
`45d56a7399c4936429da149edf5003bbb5999490a64ec7d793bf5ac98116eb01`.
-It writes a manifest including config/tokenizer hashes. `checkpoint/` itself is
+It writes a manifest including examples/config/tokenizer hashes. `checkpoint/` itself is
not a valid model folder: pass the `EVA_21M` subdirectory. Loading never modifies
the installed tokenizer; ambiguous multiple-weight directories fail explicitly.
The released Milena_2021_cata bundle contains 135 sequences and 135 positional
labels. Inputs are its FASTA and `intensities` JSON in
-`notebooks/prediction/data/ncRNA`.
+`examples/notebooks/prediction/data/ncRNA`.
The script checks counts, unique identifiers, finite values and canonical RNA;
it logs hashes and original row order. Hashing identifies the supplied files,
but cannot independently prove that positional labels were originally paired correctly.
@@ -157,7 +157,7 @@ steps and exact DCP/PT weight round trips. Tiny synthetic training configs are
not paper recipes. It also exercises both SAE trainers on released EVA-21M
activations (layer 1, not the manuscript layer 13), saves and reloads SAE weights.
See the [training guide](../training/pretrain/README.md) and
-[aptamer guide](../finetune/aptamer/script/README.md).
+[aptamer guide](../training/finetune/aptamer/script/README.md).
Pretraining `output_token_mask: legacy_generation` retains the historical CLM
mask; mixed/completion training must explicitly choose `output_token_mask: none`
@@ -173,7 +173,7 @@ and zero SAE optimizer steps are errors, not successful reduced workflows.
Separate from these tiny training checks, the original 1.4B/layer-13 SAE and
base checkpoint were located and hash-recorded. The historical single-case
-helper in `reproduction/sae/run_historical_smoke.py` reproduced the fixed Pepper
+helper in `examples/reproduction/sae/run_historical_smoke.py` reproduced the fixed Pepper
case's unsteered/0x generated sequences, RNAfold structures and scores exactly,
with the archived seed/context and 238 final state tensors checked. This does
not establish full-cohort reproduction or correspondence to every public weight
@@ -184,15 +184,15 @@ described in [SAE_REPRODUCTION.md](SAE_REPRODUCTION.md).
| Workflow | Source entry / verified evidence | Boundary |
|---|---|---|
-| RNA DMS | `tools/predict.py`, `scripts/reproduce_dms.py`, `scripts/reproduce_historical_benchmark.py`, `reproduction/benchmark/run_historical_14b.py` | 21M full assay executed with table mismatch; 1.4B archived arithmetic recovered and full fresh inference completed with vector differences. Original labels and exact historical invocation remain unresolved. |
-| Protein DMS | `tools/predict.py --mode protein`; recovered RNA reverse-translation/ESM workers under `reproduction/benchmark/upstream/protein/`; strict `reproduction/benchmark/run_competitor.py protein-esm` launcher | EVA reverse translation is RNA surrogate scoring, not direct amino-acid likelihood. Native adapter source and strict input checks are available; exact per-assay codon/conditioning/reference and checkpoint linkage, ESM ensembles, and a full protein forward benchmark remain incomplete. |
-| Pre/mid-training and finetuning | `training/`, `finetune/`, `scripts/smoke_workflows.py`; five recovered run configurations in the benchmark bundle | Real synthetic forward/backward/save/reload checks passed. The observed mixed CLM/GLM and EP/DP configurations apply to identified runs; full training data/release lineage and the manuscript's stage-conditioning account still require reconciliation. |
+| RNA DMS | `tools/predict.py`, `scripts/reproduce_dms.py`, `scripts/reproduce_historical_benchmark.py`, `examples/reproduction/benchmark/run_historical_14b.py` | 21M full assay executed with table mismatch; 1.4B archived arithmetic recovered and full fresh inference completed with vector differences. Original labels and exact historical invocation remain unresolved. |
+| Protein DMS | `tools/predict.py --mode protein`; recovered RNA reverse-translation/ESM workers under `examples/reproduction/benchmark/upstream/protein/`; strict `examples/reproduction/benchmark/run_competitor.py protein-esm` launcher | EVA reverse translation is RNA surrogate scoring, not direct amino-acid likelihood. Native adapter source and strict input checks are available; exact per-assay codon/conditioning/reference and checkpoint linkage, ESM ensembles, and a full protein forward benchmark remain incomplete. |
+| Pre/mid-training and finetuning | `training/`, `training/finetune/`, `scripts/smoke_workflows.py`; five recovered run configurations in the benchmark bundle | Real synthetic forward/backward/save/reload checks passed. The observed mixed CLM/GLM and EP/DP configurations apply to identified runs; full training data/release lineage and the manuscript's stage-conditioning account still require reconciliation. |
| Dense-model training | historical `model_dense` imports | Architecture source missing; explicitly unsupported |
-| Essentiality and position ablation | `scripts/reproduce_essentiality.py`, `reproduction/essentiality/source_manifest.json`; [ESSENTIALITY_REPRODUCTION.md](ESSENTIALITY_REPRODUCTION.md) | All ten stored position-ablation groups (95,538 CDS records each) recomputed on CPU; 5%/50% summary-key defect and record/sequence GC join corrected. This is not fresh model inference. Main dataset-building/inference producer, source labels and full score-to-weight bindings remain unresolved. |
+| Essentiality and position ablation | `scripts/reproduce_essentiality.py`, `examples/reproduction/essentiality/source_manifest.json`; [ESSENTIALITY_REPRODUCTION.md](ESSENTIALITY_REPRODUCTION.md) | All ten stored position-ablation groups (95,538 CDS records each) recomputed on CPU; 5%/50% summary-key defect and record/sequence GC join corrected. This is not fresh model inference. Main dataset-building/inference producer, source labels and full score-to-weight bindings remain unresolved. |
| Generation / optimization | `tools/generate.py`, `tools/directed_evolution.py` | Engineering checks do not reproduce wet-lab or structural validation |
-| SAE archived analyses | `scripts/reproduce_sae.py`, `reproduction/sae/`; [SAE_REPRODUCTION.md](SAE_REPRODUCTION.md) | Raw stored likelihood rows reproduce the original selected 401/401 summaries/statistics; eight author-selected examples verified; Table S30 CSV-to-LaTeX reconstruction exact. Selection is not an unbiased intervention success rate, and 213/225 has not been rebuilt from a complete raw-generation cohort. |
-| Steering | `tools/sae_steering.py` for engineering use; `reproduction/sae/run_historical_smoke.py` for the recovered historical case | Tiny 21M/layer-1 smoke and one real 1.4B/layer-13 Pepper case are separately validated. Original feature/seed/context/checkpoint evidence exists for that case. Cohort-level inference, some original generation arguments, and historical-to-public tensor correspondence remain incomplete; 0x is ablation, not baseline. |
-| Competitor models | Recovered RNA/protein workers under `reproduction/benchmark/upstream/`; `reproduction/benchmark/run_competitor.py` for bounded RNA-MLM and strict native ESM execution/metrics | Real tiny random RNA-MLM machinery test and protocol/input checks passed, not released competitor-model benchmarks. Model-specific runtimes/weights and paper linkage remain required; some external producers, including ProGen3 scoring, are still missing. Plotting or archived metric recalculation is not evaluation. |
+| SAE archived analyses | `scripts/reproduce_sae.py`, `examples/reproduction/sae/`; [SAE_REPRODUCTION.md](SAE_REPRODUCTION.md) | Raw stored likelihood rows reproduce the original selected 401/401 summaries/statistics; eight author-selected examples verified; Table S30 CSV-to-LaTeX reconstruction exact. Selection is not an unbiased intervention success rate, and 213/225 has not been rebuilt from a complete raw-generation cohort. |
+| Steering | `tools/sae_steering.py` for engineering use; `examples/reproduction/sae/run_historical_smoke.py` for the recovered historical case | Tiny 21M/layer-1 smoke and one real 1.4B/layer-13 Pepper case are separately validated. Original feature/seed/context/checkpoint evidence exists for that case. Cohort-level inference, some original generation arguments, and historical-to-public tensor correspondence remain incomplete; 0x is ablation, not baseline. |
+| Competitor models | Recovered RNA/protein workers under `examples/reproduction/benchmark/upstream/`; `examples/reproduction/benchmark/run_competitor.py` for bounded RNA-MLM and strict native ESM execution/metrics | Real tiny random RNA-MLM machinery test and protocol/input checks passed, not released competitor-model benchmarks. Model-specific runtimes/weights and paper linkage remain required; some external producers, including ProGen3 scoring, are still missing. Plotting or archived metric recalculation is not evaluation. |
The updated 49-label coverage inventory is maintained in the delivery evidence
alongside this local repair; the earlier nine-candidate inventory is historical,
@@ -236,7 +236,7 @@ and outcomes, including the real analysis dependency/JSON/CSV checks.
A new Docker image has a separate acceptance gate: confirm the completed build
log, exact `docker image inspect` identity, installed dependency versions,
`pip check`, required entry points and pytest results **for that final image and
-source snapshot** in the delivery's `docker/` evidence. Check the actual recorded
+source snapshot** in the delivery's `scripts/docker/` evidence. Check the actual recorded
exit codes and image identity; this guide does not assert that those checks have
passed. Missing or incomplete evidence means that gate is not established.
Existing-image inference, wheel installation, source/ZIP integrity and paper
diff --git a/docs/INSTALLATION.md b/docs/INSTALLATION.md
index 8a7c1c3..4266088 100644
--- a/docs/INSTALLATION.md
+++ b/docs/INSTALLATION.md
@@ -19,7 +19,7 @@ from the repository root **on the host**:
```bash
mkdir -p checkpoint results
-docker build -f docker/Dockerfile -t eva:local .
+docker build -f scripts/docker/Dockerfile -t eva:local .
docker run --rm -it --gpus device=0 --name eva-repro \
-v "$PWD":/eva -w /eva eva:local bash
```
@@ -33,7 +33,7 @@ The recipe uses Python 3.11, PyTorch 2.5.1, CUDA 12.4, Transformers 4.55.0,
MegaBlocks 0.7.0 and grouped-GEMM 0.1.6. It compiles the required MoE extensions;
the first build may take 30–60 minutes, depending on hardware and networking.
Attention uses PyTorch SDPA and does not require a separate FlashAttention package.
-The exact dependency pins are in `docker/requirements.txt`; the validated image
+The exact dependency pins are in `scripts/docker/requirements.txt`; the validated image
and base-image digest are recorded in [validation status](RELEASE_STATUS.md).
The recipe supports CUDA build targets 7.5, 8.0 and 9.0, but that build setting
is not a claim of runtime testing on every GPU architecture.
@@ -42,7 +42,7 @@ If the default Python package index is unreachable, explicitly select a mirror:
```bash
docker build --build-arg PIP_INDEX_URL=https://mirrors.aliyun.com/pypi/simple \
- -f docker/Dockerfile -t eva:local .
+ -f scripts/docker/Dockerfile -t eva:local .
```
Package versions stay pinned. Record the chosen index with the build log.
@@ -75,9 +75,9 @@ HPC users usually cannot run Docker. Convert the image with the definition
file on any machine that has Docker:
```bash
-docker build -f docker/Dockerfile -t eva:local .
-docker tag eva:local eva:latest # docker/EVA.def expects this local tag
-singularity build eva_latest.sif docker/EVA.def
+docker build -f scripts/docker/Dockerfile -t eva:local .
+docker tag eva:local eva:latest # scripts/docker/EVA.def expects this local tag
+singularity build eva_latest.sif scripts/docker/EVA.def
```
The [legacy image deposit](RESOURCES.md#runtime-image) is not the current
@@ -128,6 +128,6 @@ The published validation record covers Docker; verify Singularity/Apptainer
on your target cluster before relying on it:
```bash
-docker/smoke_test.sh docker eva:local
-docker/smoke_test.sh singularity eva_latest.sif
+scripts/docker/smoke_test.sh docker eva:local
+scripts/docker/smoke_test.sh singularity eva_latest.sif
```
diff --git a/docs/OFFICIAL_MODEL_RESOURCES.md b/docs/OFFICIAL_MODEL_RESOURCES.md
index 2a8568b..e09137c 100644
--- a/docs/OFFICIAL_MODEL_RESOURCES.md
+++ b/docs/OFFICIAL_MODEL_RESOURCES.md
@@ -8,14 +8,14 @@ The benchmark step does not require downloading a model from its host.
| Method | Resources | Components to prepare locally |
|---|---|---|
-| RNA-FM, RNABERT, RNA-MSM | [RNA-FM upstream](https://github.com/ml4bio/RNA-FM); [recorded model identities](../reproduction/release/recovered_rna_snapshots_20260909.json) | Model/config/tokenizer snapshot and a compatible Transformers/Multimolecule environment; choose the appropriate masking, length and sequence/MSA protocol. |
+| RNA-FM, RNABERT, RNA-MSM | [RNA-FM upstream](https://github.com/ml4bio/RNA-FM); [recorded model identities](../examples/reproduction/release/recovered_rna_snapshots_20260909.json) | Model/config/tokenizer snapshot and a compatible Transformers/Multimolecule environment; choose the appropriate masking, length and sequence/MSA protocol. |
| GENA-LM | [Official code and models](https://github.com/AIRI-Institute/GENA_LM) | Checkpoint, DNA tokenizer and any required custom model code. |
| ERNIE-RNA | [Official repository](https://github.com/Bruce-ywj/ERNIE-RNA/blob/main/README.md) | ERNIE/fairseq environment and the pretrained checkpoint selected for the comparison. |
| Evo2 | [Official models and runtime](https://github.com/arcinstitute/evo2) | Selected model size/checkpoint and its Vortex/Transformer Engine environment. |
| CodonFM | [Official repository](https://github.com/NVIDIA-BioNeMo/CodonFM) | Checkpoint, configuration, CodonFM environment and preprocessing settings. |
| AIDO.RNA | [ModelGenerator](https://github.com/genbio-ai/ModelGenerator), [AIDO](https://github.com/genbio-ai/AIDO) | ModelGenerator environment, matching API and local checkpoint. |
| GenerRNA | [Official checkpoint and tokenizer](https://huggingface.co/pfnet/GenerRNA) | Model, complete tokenizer and the upstream likelihood-scoring implementation. |
-| CodonGPT | [Preserved scoring worker](../reproduction/benchmark/upstream/rna/external_scripts/compute_codongpt_ll.py) | Compatible checkpoint/tokenizer, Transformers version and codon preprocessing. |
+| CodonGPT | [Preserved scoring worker](../examples/reproduction/benchmark/upstream/rna/external_scripts/compute_codongpt_ll.py) | Compatible checkpoint/tokenizer, Transformers version and codon preprocessing. |
| ESM | [Official models and fair-esm](https://github.com/facebookresearch/esm) | Local weights and companion files, reference/DMS inputs and the selected scoring strategy or ensemble. |
| ProGen3 | [Official models and scoring CLI](https://github.com/Profluent-AI/progen3) | Local weights and the official runtime; record the scorer's forward/reverse convention. |
@@ -27,16 +27,16 @@ historical bindings and the components still needed for that purpose.
## Recovered comparison-model files: September 9, 2026
-The [RNA snapshot record](../reproduction/release/recovered_rna_snapshots_20260909.json)
+The [RNA snapshot record](../examples/reproduction/release/recovered_rna_snapshots_20260909.json)
contains revision identifiers and SHA256 values for 15 RNA-FM, RNABERT and
RNA-MSM weight/config/tokenizer files. Their saved configs record Transformers
4.50.0; the exact historical Multimolecule version has not been established.
Matching local files can use the supplied manifests in
-`reproduction/release/model_manifests/`. Keep each manifest outside its model
+`examples/reproduction/release/model_manifests/`. Keep each manifest outside its model
folder. For a different local checkpoint, create a manifest with the
[existing snapshot command](BENCHMARK_PROTOCOLS.md#comparison-model-execution-not-plotting).
-The [additional asset record](../reproduction/release/recovered_competitor_assets_20260909.json)
+The [additional asset record](../examples/reproduction/release/recovered_competitor_assets_20260909.json)
contains 13 file identities from CodonFM 600M/1B, ERNIE-RNA, AIDO.RNA and
GenerRNA caches, including an ERNIE environment-file hash. These records help
identify local assets; execution scope is documented in the workflow guide.
diff --git a/docs/PAPER_WORKFLOWS.md b/docs/PAPER_WORKFLOWS.md
index 13b7a52..bedd436 100644
--- a/docs/PAPER_WORKFLOWS.md
+++ b/docs/PAPER_WORKFLOWS.md
@@ -2,25 +2,25 @@
This index uses the current submission's six main figures and the September 7
Extended Data renumbering. It does not infer completed inference from stored
-metric tables. `reproduction/release/benchmark_result_index.csv` indexes the
+metric tables. `examples/reproduction/release/benchmark_result_index.csv` indexes the
490 metric cells currently present in the repository's three benchmark tables;
this is not the complete set of manuscript experiments or all plotted models.
| Result or component | Source and execution entry | Artifact and validation boundary |
|---|---|---|
-| Model training and context evaluation, Figure 1 | `training/`, `training/pretrain/README.md`, `notebooks/long_context_recall/` | Small training smoke is separate from full training. Exact manuscript training splits and some run/checkpoint links remain to be supplied. |
-| RNA fitness, Figure 2 | `scripts/reproduce_milena.py`; `notebooks/prediction/data/`; `scripts/benchmark_release.py` | The representative Milena protocol and public checkpoint are frozen. Other assays retain their existing scores and sample counts. |
-| Protein fitness, Figure 2 | `reproduction/benchmark/run_competitor.py`; `reproduction/benchmark/upstream/protein/` | Native ESM entry and archived metric calculations are included. Model-specific ensembles, codon handling and exact paper checkpoint bindings are not all recovered. |
+| Model training and context evaluation, Figure 1 | `training/`, `training/pretrain/README.md`, `training/eval/` | Small training smoke is separate from full training. Exact manuscript training splits and some run/checkpoint links remain to be supplied. |
+| RNA fitness, Figure 2 | `scripts/reproduce_milena.py`; `examples/notebooks/prediction/data/`; `scripts/benchmark_release.py` | The representative Milena protocol and public checkpoint are frozen. Other assays retain their existing scores and sample counts. |
+| Protein fitness, Figure 2 | `examples/reproduction/benchmark/run_competitor.py`; `examples/reproduction/benchmark/upstream/protein/` | Native ESM entry and archived metric calculations are included. Model-specific ensembles, codon handling and exact paper checkpoint bindings are not all recovered. |
| Essentiality, Figure 2 | `scripts/reproduce_essentiality.py`; `ESSENTIALITY_REPRODUCTION.md` | Recomputes archived predictions and ablation groups. Main inference/data-production provenance is incomplete. |
-| Generated-sequence statistics, Figure 3 and ED6 | `notebooks/generation/`; existing deposited sequence/features | Exact final Figure 3a/b plotting inputs are not bound to a portable command in this candidate. |
-| Aptamer and tRNA analyses, Figure 4 | `finetune/`; `notebooks/design/`; accompanying Source Data | Training execution tests do not reproduce laboratory measurements or validate predicted structures. |
+| Generated-sequence statistics, Figure 3 and ED6 | `examples/notebooks/generation/`; existing deposited sequence/features | Exact final Figure 3a/b plotting inputs are not bound to a portable command in this candidate. |
+| Aptamer and tRNA analyses, Figure 4 | `training/finetune/`; `examples/notebooks/design/`; accompanying Source Data | Training execution tests do not reproduce laboratory measurements or validate predicted structures. |
| Computational design case studies, Figure 5 | Existing design notebooks and deposited results | Archived analyses are retained; exact final configurations are not all mapped. |
| Interpretability and steering, Figure 6 and ED8–10 | `scripts/reproduce_sae.py`; `SAE_REPRODUCTION.md` | Stored 401-case likelihood analysis and selected examples are distinct from the full generation cohort in Table S30. Current data remain as author-confirmed; full per-case S30 output is not bundled. |
## Competitor inputs and model versions
The preserved original configuration is
-`reproduction/benchmark/upstream/rna/config.yaml`. Historical absolute paths
+`examples/reproduction/benchmark/upstream/rna/config.yaml`. Historical absolute paths
identify earlier resources; do not execute that configuration unchanged.
Use separate method environments and local checkpoint paths, or export
predictions from an upstream scorer to the
@@ -48,7 +48,7 @@ manifest identifies a matching historical snapshot; a newly generated manifest
identifies the checkpoint you have chosen for a new benchmark:
```bash
-python reproduction/benchmark/run_competitor.py snapshot \
+python examples/reproduction/benchmark/run_competitor.py snapshot \
--model-dir checkpoint/rnafm --output checkpoint/rnafm-manifest.json
```
@@ -61,7 +61,7 @@ masked-LM and native ESM interfaces. The snapshot helper records identity; it
does not determine whether a checkpoint is the one used for a paper result.
The recovered Evo2 7B protein row remains a separate candidate table under
-`reproduction/benchmark_release/recovered_reference/`. It is not substituted
+`examples/reproduction/benchmark_release/recovered_reference/`. It is not substituted
into the current submission table. Four ncRNA model comparisons have recorded
sample-count differences of one; their original inclusion/WT rules still need
to be documented before those comparisons can be called complete.
diff --git a/docs/RELEASE_STATUS.md b/docs/RELEASE_STATUS.md
index 6518a56..17d9c98 100644
--- a/docs/RELEASE_STATUS.md
+++ b/docs/RELEASE_STATUS.md
@@ -13,7 +13,7 @@ scored all 135 inputs, produced metrics and plots, and exactly matched the
saved fresh-prediction vector. Default mode returned **0**; the optional
strict-reference mode returned **2**. Scoring took about 12 seconds per run;
peak PyTorch-allocated GPU memory was 2.94 GiB.
-The [dated reports](../reproduction/release/usability_gpu_20260909/README.md)
+The [dated reports](../examples/reproduction/release/usability_gpu_20260909/README.md)
record the source commit, file hashes, environment and both execution modes.
The expanded suite passed **139 tests** without skips in the existing Docker
@@ -38,7 +38,7 @@ and validation records without changing runtime code or inputs.
| Milena inference | All 135 samples scored from the pinned public checkpoint |
| Archived calculations | Milena metric, SAE calculations and benchmark summary audit executed |
-`reproduction/release/clean_validation.json` records the commit and hashes.
+`examples/reproduction/release/clean_validation.json` records the commit and hashes.
The image used PyTorch 2.5.1/CUDA 12.4, Transformers 4.55.0 and MegaBlocks 0.7.0.
The base-image digest was
`sha256:14611869895df612b7b07227d5925f30ec3cd6673bad58ce3d84ed107950e014`.
@@ -55,7 +55,7 @@ numbers and all predictions remain available. No input labels, scoring
objective or paper metric have been changed to reduce the difference.
[Reproduction](REPRODUCTION.md) documents normal completion and the optional
-`--strict-reference` diagnostic. [Expected outputs](../reproduction/milena_14b/expected/README.md)
+`--strict-reference` diagnostic. [Expected outputs](../examples/reproduction/milena_14b/expected/README.md)
record the measurements. Historical batch-size observations are context, not
a demonstrated cause of the difference.
diff --git a/docs/REPRODUCTION.md b/docs/REPRODUCTION.md
index ebb6651..2e91016 100644
--- a/docs/REPRODUCTION.md
+++ b/docs/REPRODUCTION.md
@@ -47,7 +47,7 @@ python scripts/reproduce_milena.py \
The download fixes Hugging Face revision
`514db6705637c1ec963b728768fc9b34728699ee`. Before inference, the runner checks
weights, config, tokenizer, FASTA and label hashes against
-`reproduction/milena_14b/manifest.json`.
+`examples/reproduction/milena_14b/manifest.json`.
The protocol uses all 135 samples, the bundled historical implementation,
BF16, batch size 1, no conditioning and summed causal log likelihood excluding
direction/EOS targets. The prompt is `5{RNA}3`. Input order and
@@ -67,7 +67,7 @@ The clean-environment run produced **0.8394237924835843**, compared with the
archived **0.8360456283218484**: difference **0.0033781641617359748**. This
observation is retained and accepted for the representative example; it is
not an execution failure. The original table and predictions are unchanged.
-[Expected outputs](../reproduction/milena_14b/expected/README.md) give the evidence.
+[Expected outputs](../examples/reproduction/milena_14b/expected/README.md) give the evidence.
That run took 12.08 seconds for inference and 23.40 seconds for the runner,
with 3,157,299,200 bytes (2.94 GiB) peak PyTorch-allocated GPU memory on an
@@ -109,19 +109,19 @@ Inspect the output report for each stage. It validates the exposed training
machinery; it does not rerun large-scale pretraining.
- [Training](../training/pretrain/README.md): stage entry points and configuration fields.
-- [Fine-tuning](../finetune/aptamer/script/README.md): checkpoint, data and container paths.
+- [Fine-tuning](../training/finetune/aptamer/script/README.md): checkpoint, data and container paths.
- [CLI guide](USAGE.md): inputs, conditioning and task parameters.
- [Paper workflows](PAPER_WORKFLOWS.md): result/resource mapping and omitted components.
- [Reviewer requirements](REVIEWER_REQUIREMENTS.md): six requests and supporting evidence.
## Other analyses and historical sources
-[Notebooks](../notebooks/README.md) provide interactive analysis and plotting;
-[reproduction resources](../reproduction/README.md) hold fixed inputs, protocols,
+[Notebooks](../examples/notebooks/README.md) provide interactive analysis and plotting;
+[reproduction resources](../examples/reproduction/README.md) hold fixed inputs, protocols,
reference outputs and historical implementations. They work together with the
command-line entry points in `scripts/`. For example, the benchmark notebook
calls `scripts/benchmark_release.py` with manifests and tables from
-`reproduction/benchmark_release/`.
+`examples/reproduction/benchmark_release/`.
Third-party models can run from local checkpoints or in their own upstream
environments. Export keyed predictions to use the common metric evaluator;
@@ -129,6 +129,6 @@ see [using your own model outputs](BENCHMARK_PROTOCOLS.md#using-your-own-model-o
[Benchmark protocols](BENCHMARK_PROTOCOLS.md), [essentiality](ESSENTIALITY_REPRODUCTION.md)
and [SAE analyses](SAE_REPRODUCTION.md) distinguish stored-result calculations
-from inference. Sources under `reproduction/benchmark/upstream/` and
-`reproduction/sae/archive/` preserve historical paths and behavior. Follow the
+from inference. Sources under `examples/reproduction/benchmark/upstream/` and
+`examples/reproduction/sae/archive/` preserve historical paths and behavior. Follow the
documented portable entry points instead of executing these archives unchanged.
diff --git a/docs/RESOURCES.md b/docs/RESOURCES.md
index 03974d9..a18bf13 100644
--- a/docs/RESOURCES.md
+++ b/docs/RESOURCES.md
@@ -2,7 +2,7 @@
The model/download metadata below were read from the public APIs on
September 9, 2026. File sizes use decimal MB/GB. The machine-readable record is
-`reproduction/release/public_resource_metadata_20260909.json`.
+`examples/reproduction/release/public_resource_metadata_20260909.json`.
## EVA checkpoints
diff --git a/docs/REVIEWER_REQUIREMENTS.md b/docs/REVIEWER_REQUIREMENTS.md
index 47cae83..9e3f906 100644
--- a/docs/REVIEWER_REQUIREMENTS.md
+++ b/docs/REVIEWER_REQUIREMENTS.md
@@ -7,11 +7,11 @@ not editorial acceptance.
| Requirement | Public entry and evidence | Status and remaining scope |
|---|---|---|
| Benchmark scores for EVA and comparison methods | [Milena workflow](REPRODUCTION.md#gpu-run-the-complete-milena-benchmark), [comparison protocols](BENCHMARK_PROTOCOLS.md), [workflow index](PAPER_WORKFLOWS.md) | EVA representative inference verified; competition-wide reproduction remains partial where original resources or producers are missing. |
-| Executable training/evaluation components, or explicit omissions | [Training](../training/pretrain/README.md), [fine-tuning](../finetune/aptamer/script/README.md), [smoke workflow](REPRODUCTION.md#training-and-fine-tuning) | Small training and save/reload verified. Full pretraining, missing dense-model code and unresolved paper configurations are not claimed. |
+| Executable training/evaluation components, or explicit omissions | [Training](../training/pretrain/README.md), [fine-tuning](../training/finetune/aptamer/script/README.md), [smoke workflow](REPRODUCTION.md#training-and-fine-tuning) | Small training and save/reload verified. Full pretraining, missing dense-model code and unresolved paper configurations are not claimed. |
| Explicit dependency failures | `tests/test_reproducibility.py`; [validation](RELEASE_STATUS.md) | Dependency failures, nonfinite scores and invalid training paths tested. Archived legacy sources are not the supported CLI. |
-| Precise checkpoint and dataset identities | `reproduction/milena_14b/manifest.json`, [resources](RESOURCES.md), [comparison resources](OFFICIAL_MODEL_RESOURCES.md) | Representative versions/hashes fixed. Other missing versions remain explicit; formal release and code DOI pending. |
+| Precise checkpoint and dataset identities | `examples/reproduction/milena_14b/manifest.json`, [resources](RESOURCES.md), [comparison resources](OFFICIAL_MODEL_RESOURCES.md) | Representative versions/hashes fixed. Other missing versions remain explicit; formal release and code DOI pending. |
| Public prompt, conditioning and input specifications | [CLI reference](USAGE.md), [Milena protocol](REPRODUCTION.md#gpu-run-the-complete-milena-benchmark), [benchmark protocols](BENCHMARK_PROTOCOLS.md) | Documentation covers supported entry points; omitted components identified separately. |
-| One end-to-end benchmark | [Download → inference → metrics → plots](REPRODUCTION.md#gpu-run-the-complete-milena-benchmark), [expected output](../reproduction/milena_14b/expected/README.md) | Completed for 135 Milena samples. The measured 0.00338 difference is documented and accepted for this example; the reference is preserved. |
+| One end-to-end benchmark | [Download → inference → metrics → plots](REPRODUCTION.md#gpu-run-the-complete-milena-benchmark), [expected output](../examples/reproduction/milena_14b/expected/README.md) | Completed for 135 Milena samples. The measured 0.00338 difference is documented and accepted for this example; the reference is preserved. |
## Checking the evidence
diff --git a/docs/SAE_REPRODUCTION.md b/docs/SAE_REPRODUCTION.md
index abadddc..d275ef4 100644
--- a/docs/SAE_REPRODUCTION.md
+++ b/docs/SAE_REPRODUCTION.md
@@ -13,7 +13,7 @@ From the repository root, with Python 3.10 or 3.11:
```bash
python3.11 -m venv .venv-sae-reproduction
source .venv-sae-reproduction/bin/activate
-python -m pip install -r reproduction/sae/requirements.txt
+python -m pip install -r examples/reproduction/sae/requirements.txt
python scripts/reproduce_sae.py --output results/sae-archive-run1 --plot
python -m unittest discover -s tests -p test_sae_reproduction.py -v
```
@@ -54,7 +54,7 @@ archived CSVs. The selected result is 401/401 positive groups, W = 80,601,
p = 9.370116963725616e-68, and d = 1.6985262810017903 (displayed as 1.70).
The displayed statistics match the archived SVG text exactly. Per-dataset
selected counts are 15, 16, 42, 42, 87, 85, 84 and 30, in the order stored in
-`reproduction/sae/protocol.json`.
+`examples/reproduction/sae/protocol.json`.
These are **selected best-condition summaries**, not 401 independent generated
RNAs or evidence that every prespecified intervention improved an unselected
@@ -113,7 +113,7 @@ not substituted for the paper's archived totals.
## Files and provenance
-`reproduction/sae/manifest.json` records the original host (`EVA_a100`), full
+`examples/reproduction/sae/manifest.json` records the original host (`EVA_a100`), full
source paths, sizes and SHA-256 values for 110 archived files (about 24 MB).
The `archive/` tree preserves original relative paths and original source code,
including plotting, scoring, case finding and SAE-training metadata. Its scripts
@@ -166,7 +166,7 @@ not establish equivalence to the historical 1.4B/layer-13 paper experiment.
## Historical 1.4B/layer-13 single-case inference
-The additional `reproduction/sae/run_historical_smoke.py` was run against the
+The additional `examples/reproduction/sae/run_historical_smoke.py` was run against the
actual historical checkpoint and SAE on EVA_a100, after verifying both SHA-256
values. It uses the archived generation/scoring functions and an isolated copy
of the original `eva/` and `tools/utils/` model code, with no source changes and
@@ -212,12 +212,12 @@ SAE_RUN_ROOT=$(mktemp -d /data/yanjie_huang/enzyme1_server/eva/sae_validation_XX
mkdir -p "$SAE_RUN_ROOT/code/tools"
rsync -a --include='*/' --include='*.py' --include='*.json' --exclude='*' "$SAE_ORIGINAL_ROOT/eva" "$SAE_RUN_ROOT/code/"
rsync -a --include='*/' --include='*.py' --include='*.json' --exclude='*' "$SAE_ORIGINAL_ROOT/tools/utils" "$SAE_RUN_ROOT/code/tools/"
-cp reproduction/sae/ISOLATED_SAE_VALIDATION.txt "$SAE_RUN_ROOT/code/"
+cp examples/reproduction/sae/ISOLATED_SAE_VALIDATION.txt "$SAE_RUN_ROOT/code/"
CUDA_VISIBLE_DEVICES=7 PYTHONDONTWRITEBYTECODE=1 HF_HUB_OFFLINE=1 TRANSFORMERS_OFFLINE=1 \
MPLCONFIGDIR="$SAE_RUN_ROOT/cache/mpl" TRITON_CACHE_DIR="$SAE_RUN_ROOT/cache/triton" \
/data/yanjie_huang/enzyme1_server/huangyanjie/miniconda3/envs/70_RNAVerse/bin/python \
- reproduction/sae/run_historical_smoke.py \
- --bundle reproduction/sae \
+ examples/reproduction/sae/run_historical_smoke.py \
+ --bundle examples/reproduction/sae \
--isolated-eva-root "$SAE_RUN_ROOT/code" \
--checkpoint /data/yanjie_huang/enzyme1_server/eva/EVA_checkpoint/1400M_1129/checkpoint_13500 \
--sae "$SAE_ORIGINAL_ROOT/notebooks/interpretability_analysis/sae_repro_release/outputs/sae_l1_penalty_1400M/checkpoints/checkpoint_step200000.pt" \
diff --git a/docs/USAGE.md b/docs/USAGE.md
index c145988..a69377f 100644
--- a/docs/USAGE.md
+++ b/docs/USAGE.md
@@ -50,11 +50,11 @@ See the paper for the evaluated datasets, metrics and comparisons.
-
+
RNA landscape modeling comparison
|
-
+
Species-specific modeling comparison
|
@@ -81,7 +81,7 @@ eva-generate \
EVA supports conditioning on **RNA type**, **species** (via TaxID, species name, or lineage string), or both. See [Condition Control](#condition-control) for the full list of supported RNA types and species.
-

+
```bash
@@ -114,7 +114,7 @@ eva-generate \
Species can also be specified via `--species homo_sapiens` or `--lineage "D__Eukaryota;P__Chordata;..."` in Greengenes format.
-

+
#### Continuation Mode
@@ -224,10 +224,10 @@ for paper-specific calculations.
@@ -271,18 +271,18 @@ EVA supports in-silico directed evolution — an iterative optimization pipeline
diff --git a/fig/RNA_landscape_modeling_comparison.svg b/docs/assets/RNA_landscape_modeling_comparison.svg
similarity index 100%
rename from fig/RNA_landscape_modeling_comparison.svg
rename to docs/assets/RNA_landscape_modeling_comparison.svg
diff --git a/fig/circRNA_illustration.svg b/docs/assets/circRNA_illustration.svg
similarity index 100%
rename from fig/circRNA_illustration.svg
rename to docs/assets/circRNA_illustration.svg
diff --git a/fig/circRNA_optimization.svg b/docs/assets/circRNA_optimization.svg
similarity index 100%
rename from fig/circRNA_optimization.svg
rename to docs/assets/circRNA_optimization.svg
diff --git a/fig/eva_poster.svg b/docs/assets/eva_poster.svg
similarity index 100%
rename from fig/eva_poster.svg
rename to docs/assets/eva_poster.svg
diff --git a/fig/fig1A.svg b/docs/assets/fig1A.svg
similarity index 100%
rename from fig/fig1A.svg
rename to docs/assets/fig1A.svg
diff --git a/fig/github_logo.svg b/docs/assets/github_logo.svg
similarity index 100%
rename from fig/github_logo.svg
rename to docs/assets/github_logo.svg
diff --git a/fig/mRNA_optimization.svg b/docs/assets/mRNA_optimization.svg
similarity index 100%
rename from fig/mRNA_optimization.svg
rename to docs/assets/mRNA_optimization.svg
diff --git a/fig/mRNA_optimization_illustration.svg b/docs/assets/mRNA_optimization_illustration.svg
similarity index 100%
rename from fig/mRNA_optimization_illustration.svg
rename to docs/assets/mRNA_optimization_illustration.svg
diff --git a/fig/mrna_performance_5datasets.svg b/docs/assets/mrna_performance_5datasets.svg
similarity index 100%
rename from fig/mrna_performance_5datasets.svg
rename to docs/assets/mrna_performance_5datasets.svg
diff --git a/fig/ncrna_performance.svg b/docs/assets/ncrna_performance.svg
similarity index 100%
rename from fig/ncrna_performance.svg
rename to docs/assets/ncrna_performance.svg
diff --git a/fig/poster.pdf b/docs/assets/poster.pdf
similarity index 100%
rename from fig/poster.pdf
rename to docs/assets/poster.pdf
diff --git a/fig/readme_overview.svg b/docs/assets/readme_overview.svg
similarity index 100%
rename from fig/readme_overview.svg
rename to docs/assets/readme_overview.svg
diff --git a/fig/rna_generation.svg b/docs/assets/rna_generation.svg
similarity index 100%
rename from fig/rna_generation.svg
rename to docs/assets/rna_generation.svg
diff --git a/fig/rnatpye_generation.svg b/docs/assets/rnatpye_generation.svg
similarity index 100%
rename from fig/rnatpye_generation.svg
rename to docs/assets/rnatpye_generation.svg
diff --git a/fig/species_condition_generation.svg b/docs/assets/species_condition_generation.svg
similarity index 100%
rename from fig/species_condition_generation.svg
rename to docs/assets/species_condition_generation.svg
diff --git a/fig/species_generation.svg b/docs/assets/species_generation.svg
similarity index 100%
rename from fig/species_generation.svg
rename to docs/assets/species_generation.svg
diff --git a/fig/species_specific_RNA_landscape_modeling_comparison.svg b/docs/assets/species_specific_RNA_landscape_modeling_comparison.svg
similarity index 100%
rename from fig/species_specific_RNA_landscape_modeling_comparison.svg
rename to docs/assets/species_specific_RNA_landscape_modeling_comparison.svg
diff --git a/fig/species_umap.svg b/docs/assets/species_umap.svg
similarity index 100%
rename from fig/species_umap.svg
rename to docs/assets/species_umap.svg
diff --git a/examples/README.md b/examples/README.md
new file mode 100644
index 0000000..fc2f11f
--- /dev/null
+++ b/examples/README.md
@@ -0,0 +1,24 @@
+# Examples
+
+Tutorials and paper benchmarks share one home. Choose a task below; its guide
+connects the notebook or command to the required data, configuration and outputs.
+
+| Task | Start here |
+|---|---|
+| Recalculate a benchmark or run EVA on the complete Milena assay | [CPU and GPU walkthroughs](../docs/REPRODUCTION.md) |
+| Analyze benchmark tables or evaluate your own predictions | [Benchmark notebook](notebooks/prediction/benchmark_reproduction.ipynb) · [Local-model evaluation](../docs/BENCHMARK_PROTOCOLS.md#using-your-own-model-outputs) |
+| Explore RNA generation and design | [Generation tutorial](notebooks/generation/generation_tutorial.ipynb) · [Design notebooks](notebooks/design/) |
+| Explore model interpretation | [Interpretability guide](notebooks/interpretability_analysis/README.md) |
+| Configure a CLI task | [Example YAML files](config/) · [Sample inputs](data/test_data/) · [CLI reference](../docs/USAGE.md) |
+
+`notebooks/` contains interactive analyses and their supporting files.
+`reproduction/` contains the fixed protocols, reference data and historical
+sources those analyses use. They support the same reproduction workflows:
+for example, the benchmark notebook calls `scripts/benchmark_release.py` from
+the repository root and reads `reproduction/benchmark_release/` here.
+
+Run documented shell commands from the **repository root**. Notebook paths are
+resolved by the notebook or relative to its own folder, as shown in its setup
+cell. Save new results to the output directory you choose.
+
+For pretraining and fine-tuning, start with [training](../training/README.md).
diff --git a/config/directed_evolution/config_evolution_aptamer.yaml b/examples/config/directed_evolution/config_evolution_aptamer.yaml
similarity index 86%
rename from config/directed_evolution/config_evolution_aptamer.yaml
rename to examples/config/directed_evolution/config_evolution_aptamer.yaml
index 9213eed..159de04 100644
--- a/config/directed_evolution/config_evolution_aptamer.yaml
+++ b/examples/config/directed_evolution/config_evolution_aptamer.yaml
@@ -8,8 +8,8 @@ device: cuda:0
dtype: bfloat16
# 输入输出
-input: /eva/data/test_data/aptamer.fasta
-output: /eva/data/output/evolution/aptamer_evolved_single_sequence.fasta
+input: /eva/examples/data/test_data/aptamer.fasta
+output: /eva/examples/data/output/evolution/aptamer_evolved_single_sequence.fasta
# 进化参数
iterations: 100 # 迭代次数(每次迭代突变1个位点,共8次)
diff --git a/config/tools_config/config_clm_example.yaml b/examples/config/tools_config/config_clm_example.yaml
similarity index 90%
rename from config/tools_config/config_clm_example.yaml
rename to examples/config/tools_config/config_clm_example.yaml
index 788ed96..4c54657 100755
--- a/config/tools_config/config_clm_example.yaml
+++ b/examples/config/tools_config/config_clm_example.yaml
@@ -3,10 +3,10 @@
# =============================================================================
#
# 使用方法:
-# eva-generate --config config/tools_config/config_clm_example.yaml
+# eva-generate --config examples/config/tools_config/config_clm_example.yaml
#
# 或通过 Docker shell 脚本:
-# ./scripts/generate.sh config/tools_config/config_clm_example.yaml
+# ./scripts/generate.sh examples/config/tools_config/config_clm_example.yaml
#
# 本配置演示 CLM 的所有生成模式:
# 1. 无条件生成
@@ -20,7 +20,7 @@
checkpoint: /eva/checkpoint/clm
# 输出目录
-output_dir: /eva/data/output/clm
+output_dir: /eva/examples/data/output/clm
# 并行配置
gpus: [0]
@@ -110,7 +110,7 @@ tasks:
# 按比例分割:保留前 50% 作为 prompt
- name: forward_ratio_50
format: clm
- input: /eva/data/test_data/test_rna.fa
+ input: /eva/examples/data/test_data/test_rna.fa
direction: forward
split_ratio: 0.5
output_details: true
@@ -118,7 +118,7 @@ tasks:
# 按固定位置分割:保留前 30 个碱基
- name: forward_pos_30
format: clm
- input: /eva/data/test_data/test_rna.fa
+ input: /eva/examples/data/test_data/test_rna.fa
direction: forward
split_pos: 30
output_details: true
@@ -126,7 +126,7 @@ tasks:
# 带条件的 forward 续写
- name: forward_mRNA_condition
format: clm
- input: /eva/data/test_data/test_rna.fa
+ input: /eva/examples/data/test_data/test_rna.fa
direction: forward
split_ratio: 0.3
rna_type: mRNA
@@ -135,7 +135,7 @@ tasks:
# 纯续写(整个序列作为 prompt,继续往后生成)
- name: forward_pure_continuation
format: clm
- input: /eva/data/test_data/test_rna.fa
+ input: /eva/examples/data/test_data/test_rna.fa
direction: forward
output_details: true
@@ -146,7 +146,7 @@ tasks:
# 按比例分割:保留后 50% 作为 prompt
- name: reverse_ratio_50
format: clm
- input: /eva/data/test_data/test_rna.fa
+ input: /eva/examples/data/test_data/test_rna.fa
direction: reverse
split_ratio: 0.5
output_details: true
@@ -154,7 +154,7 @@ tasks:
# 按固定位置分割
- name: reverse_pos_60
format: clm
- input: /eva/data/test_data/test_rna.fa
+ input: /eva/examples/data/test_data/test_rna.fa
direction: reverse
split_pos: 60
output_details: true
@@ -162,7 +162,7 @@ tasks:
# 带物种条件的 reverse 续写
- name: reverse_human_condition
format: clm
- input: /eva/data/test_data/test_rna.fa
+ input: /eva/examples/data/test_data/test_rna.fa
direction: reverse
split_ratio: 0.4
taxid: "9606"
diff --git a/config/tools_config/config_glm_example.yaml b/examples/config/tools_config/config_glm_example.yaml
similarity index 86%
rename from config/tools_config/config_glm_example.yaml
rename to examples/config/tools_config/config_glm_example.yaml
index aa1a76e..8ef6310 100755
--- a/config/tools_config/config_glm_example.yaml
+++ b/examples/config/tools_config/config_glm_example.yaml
@@ -3,10 +3,10 @@
# =============================================================================
#
# 使用方法:
-# eva-generate --config config/tools_config/config_glm_example.yaml
+# eva-generate --config examples/config/tools_config/config_glm_example.yaml
#
# 或通过 Docker shell 脚本:
-# ./scripts/generate.sh config/tools_config/config_glm_example.yaml
+# ./scripts/generate.sh examples/config/tools_config/config_glm_example.yaml
#
# GLM 模式:给定一条 RNA 序列,挖掉一段 span,让模型填充。
# 本配置演示 GLM 的所有生成模式:
@@ -23,7 +23,7 @@
checkpoint: /eva/checkpoint/glm
# 输出目录
-output_dir: /eva/data/output/glm
+output_dir: /eva/examples/data/output/glm
# 并行配置
gpus: [0]
@@ -49,7 +49,7 @@ tasks:
# ---------------------------------------------------------------------------
- name: ratio_10_random
format: glm
- input: /eva/data/test_data/test_rna.fa
+ input: /eva/examples/data/test_data/test_rna.fa
span_ratio: 0.1 # 挖掉序列长度的 10%
span_position: random # 随机选择挖掉的位置
span_id: random # 随机 span ID (0-49)
@@ -57,7 +57,7 @@ tasks:
- name: ratio_30_random
format: glm
- input: /eva/data/test_data/test_rna.fa
+ input: /eva/examples/data/test_data/test_rna.fa
span_ratio: 0.3 # 挖掉 30%
span_position: random
span_id: random
@@ -68,7 +68,7 @@ tasks:
# ---------------------------------------------------------------------------
- name: fixed_20bp_random
format: glm
- input: /eva/data/test_data/test_rna.fa
+ input: /eva/examples/data/test_data/test_rna.fa
span_length: 20 # 固定挖掉 20 个碱基
span_position: random
span_id: random
@@ -76,7 +76,7 @@ tasks:
- name: fixed_50bp_random
format: glm
- input: /eva/data/test_data/test_rna.fa
+ input: /eva/examples/data/test_data/test_rna.fa
span_length: 50 # 固定挖掉 50 个碱基
span_position: random
span_id: random
@@ -89,7 +89,7 @@ tasks:
# 从序列开头挖(重新设计 5' 端)
- name: fixed_from_start
format: glm
- input: /eva/data/test_data/test_rna.fa
+ input: /eva/examples/data/test_data/test_rna.fa
span_length: 30
span_position: 0 # 从位置 0 开始挖
span_id: 0 # 固定使用
@@ -98,7 +98,7 @@ tasks:
# 从中间位置挖
- name: fixed_from_middle
format: glm
- input: /eva/data/test_data/test_rna.fa
+ input: /eva/examples/data/test_data/test_rna.fa
span_length: 20
span_position: 50 # 从位置 50 开始挖
span_id: 0
@@ -109,7 +109,7 @@ tasks:
# ---------------------------------------------------------------------------
- name: mRNA_condition
format: glm
- input: /eva/data/test_data/test_rna.fa
+ input: /eva/examples/data/test_data/test_rna.fa
rna_type: mRNA
span_ratio: 0.15
span_position: random
@@ -121,7 +121,7 @@ tasks:
# ---------------------------------------------------------------------------
- name: human_mRNA_condition
format: glm
- input: /eva/data/test_data/test_rna.fa
+ input: /eva/examples/data/test_data/test_rna.fa
rna_type: mRNA
taxid: "9606"
lineage: "D__Eukaryota;P__Chordata;C__Mammalia;O__Primates;F__Hominidae;G__Homo;S__Homo sapiens"
@@ -135,7 +135,7 @@ tasks:
# ---------------------------------------------------------------------------
- name: low_temp_conservative
format: glm
- input: /eva/data/test_data/test_rna.fa
+ input: /eva/examples/data/test_data/test_rna.fa
span_ratio: 0.2
span_position: random
span_id: random
@@ -145,7 +145,7 @@ tasks:
- name: high_diversity
format: glm
- input: /eva/data/test_data/test_rna.fa
+ input: /eva/examples/data/test_data/test_rna.fa
span_ratio: 0.2
span_position: random
span_id: random
diff --git a/config/tools_config/config_score_example.yaml b/examples/config/tools_config/config_score_example.yaml
similarity index 77%
rename from config/tools_config/config_score_example.yaml
rename to examples/config/tools_config/config_score_example.yaml
index aa37c5a..78a0358 100755
--- a/config/tools_config/config_score_example.yaml
+++ b/examples/config/tools_config/config_score_example.yaml
@@ -3,10 +3,10 @@
# =============================================================================
#
# 使用方法:
-# eva-predict --config config/tools_config/config_score_example.yaml
+# eva-predict --config examples/config/tools_config/config_score_example.yaml
#
# 或通过 Docker shell 脚本:
-# ./scripts/predict.sh config/tools_config/config_score_example.yaml
+# ./scripts/predict.sh examples/config/tools_config/config_score_example.yaml
#
# 本配置演示 Scoring 的所有功能:
# 1. 纯 RNA 序列打分
@@ -20,7 +20,7 @@
checkpoint: /eva/checkpoint/clm
# 输出目录
-output_dir: /eva/data/output/scores
+output_dir: /eva/examples/data/output/scores
# 全局默认参数
defaults:
@@ -39,16 +39,16 @@ tasks:
# ---------------------------------------------------------------------------
- name: unconditional
mode: scoring
- input: /eva/data/test_data/test_rna.fa
- output: /eva/data/output/scores/unconditional.json
+ input: /eva/examples/data/test_data/test_rna.fa
+ output: /eva/examples/data/output/scores/unconditional.json
# ---------------------------------------------------------------------------
# 2. 带 RNA 类型条件打分
# ---------------------------------------------------------------------------
- name: score_lncrna
mode: scoring
- input: /eva/data/test_data/test_rna.fa
- output: /eva/data/output/scores/lncrna.json
+ input: /eva/examples/data/test_data/test_rna.fa
+ output: /eva/examples/data/output/scores/lncrna.json
rna_type: lncRNA
normalize: true
@@ -57,8 +57,8 @@ tasks:
# ---------------------------------------------------------------------------
- name: score_human
mode: scoring
- input: /eva/data/test_data/test_rna.fa
- output: /eva/data/output/scores/human.json
+ input: /eva/examples/data/test_data/test_rna.fa
+ output: /eva/examples/data/output/scores/human.json
taxid: "9606"
lineage: "D__Eukaryota;P__Chordata;C__Mammalia;O__Primates;F__Hominidae;G__Homo;S__Homo sapiens"
@@ -67,8 +67,8 @@ tasks:
# ---------------------------------------------------------------------------
- name: score_mouse
mode: scoring
- input: /eva/data/test_data/test_rna.fa
- output: /eva/data/output/scores/mouse.json
+ input: /eva/examples/data/test_data/test_rna.fa
+ output: /eva/examples/data/output/scores/mouse.json
species: mus_musculus
# ---------------------------------------------------------------------------
@@ -76,16 +76,16 @@ tasks:
# ---------------------------------------------------------------------------
- name: score_human_mrna
mode: scoring
- input: /eva/data/test_data/test_rna.fa
- output: /eva/data/output/scores/human_mrna.json
+ input: /eva/examples/data/test_data/test_rna.fa
+ output: /eva/examples/data/output/scores/human_mrna.json
rna_type: mRNA
taxid: "9606"
lineage: "D__Eukaryota;P__Chordata;C__Mammalia;O__Primates;F__Hominidae;G__Homo;S__Homo sapiens"
- name: score_mouse_trna
mode: scoring
- input: /eva/data/test_data/test_rna.fa
- output: /eva/data/output/scores/mouse_trna.json
+ input: /eva/examples/data/test_data/test_rna.fa
+ output: /eva/examples/data/output/scores/mouse_trna.json
rna_type: tRNA
taxid: "10090"
lineage: "D__Eukaryota;P__Chordata;C__Mammalia;O__Rodentia;F__Muridae;G__Mus;S__Mus musculus"
@@ -97,8 +97,8 @@ tasks:
# ---------------------------------------------------------------------------
- name: score_custom_options
mode: scoring
- input: /eva/data/test_data/test_rna.fa
- output: /eva/data/output/scores/custom_options.json
+ input: /eva/examples/data/test_data/test_rna.fa
+ output: /eva/examples/data/output/scores/custom_options.json
rna_type: mRNA
normalize: true # 覆盖默认的 false
exclude_special_tokens: true # 覆盖默认的 false
diff --git a/examples/config/tools_config/config_score_test.yaml b/examples/config/tools_config/config_score_test.yaml
new file mode 100644
index 0000000..8040e8f
--- /dev/null
+++ b/examples/config/tools_config/config_score_test.yaml
@@ -0,0 +1,20 @@
+# Test config for predict task mode
+checkpoint: /eva/checkpoint/clm
+output_dir: /eva/examples/data/output/scores
+
+defaults:
+ normalize: false
+ batch_size: 128
+
+tasks:
+ - name: test_unconditional
+ mode: scoring
+ input: /eva/examples/data/test_data/test_rna.fa
+ output: /eva/examples/data/output/scores/test_unconditional.json
+
+ - name: test_with_rna_type
+ mode: scoring
+ input: /eva/examples/data/test_data/test_rna.fa
+ output: /eva/examples/data/output/scores/test_with_rna_type.json
+ rna_type: mRNA
+ normalize: true
diff --git a/data/output/evolution/aptamer_evolved_single_sequence.fasta b/examples/data/output/evolution/aptamer_evolved_single_sequence.fasta
similarity index 100%
rename from data/output/evolution/aptamer_evolved_single_sequence.fasta
rename to examples/data/output/evolution/aptamer_evolved_single_sequence.fasta
diff --git a/data/output/scores/test_unconditional.json b/examples/data/output/scores/test_unconditional.json
similarity index 100%
rename from data/output/scores/test_unconditional.json
rename to examples/data/output/scores/test_unconditional.json
diff --git a/data/output/scores/test_with_rna_type.json b/examples/data/output/scores/test_with_rna_type.json
similarity index 100%
rename from data/output/scores/test_with_rna_type.json
rename to examples/data/output/scores/test_with_rna_type.json
diff --git a/data/test_data/aptamer.fasta b/examples/data/test_data/aptamer.fasta
similarity index 100%
rename from data/test_data/aptamer.fasta
rename to examples/data/test_data/aptamer.fasta
diff --git a/data/test_data/test_rna.fa b/examples/data/test_data/test_rna.fa
similarity index 100%
rename from data/test_data/test_rna.fa
rename to examples/data/test_data/test_rna.fa
diff --git a/data/test_data/tfr1_aptamer_non_wt.csv b/examples/data/test_data/tfr1_aptamer_non_wt.csv
similarity index 100%
rename from data/test_data/tfr1_aptamer_non_wt.csv
rename to examples/data/test_data/tfr1_aptamer_non_wt.csv
diff --git a/notebooks/README.md b/examples/notebooks/README.md
similarity index 67%
rename from notebooks/README.md
rename to examples/notebooks/README.md
index 43dd6c0..8be3e9e 100644
--- a/notebooks/README.md
+++ b/examples/notebooks/README.md
@@ -16,16 +16,16 @@ and data; the directory is organized by research task, not by file extension.
Notebooks and command-line tools are two ways to work through a computation.
They share scripts and resources rather than defining separate benchmarks.
For example, `prediction/benchmark_reproduction.ipynb` calls
-[`scripts/benchmark_release.py`](../scripts/benchmark_release.py), which reads
+[`scripts/benchmark_release.py`](../../scripts/benchmark_release.py), which reads
the manifests and reference tables in
-[`reproduction/benchmark_release/`](../reproduction/benchmark_release/).
+[`examples/reproduction/benchmark_release/`](../reproduction/benchmark_release/).
That notebook performs CPU analysis; fresh model inference has its own command.
-[`reproduction/`](../reproduction/README.md) holds fixed inputs, protocols,
+[`examples/reproduction/`](../reproduction/README.md) holds fixed inputs, protocols,
reference outputs and dated records, together with preserved historical code.
-Some data and helper scripts remain next to their notebooks to keep existing
-paths working. Both directories participate in paper reproduction.
+Data and helper scripts live beside their notebooks. Both directories
+participate in the workflows listed in the [examples index](../README.md).
-Start with the [reproduction guide](../docs/REPRODUCTION.md) for a complete
-workflow, or [benchmark protocols](../docs/BENCHMARK_PROTOCOLS.md) to evaluate
+Start with the [reproduction guide](../../docs/REPRODUCTION.md) for a complete
+workflow, or [benchmark protocols](../../docs/BENCHMARK_PROTOCOLS.md) to evaluate
predictions from a model you run in your own environment.
diff --git a/notebooks/design/aptamer_design.ipynb b/examples/notebooks/design/aptamer_design.ipynb
similarity index 99%
rename from notebooks/design/aptamer_design.ipynb
rename to examples/notebooks/design/aptamer_design.ipynb
index c96e95f..cc31f2b 100755
--- a/notebooks/design/aptamer_design.ipynb
+++ b/examples/notebooks/design/aptamer_design.ipynb
@@ -38,7 +38,7 @@
"try:\n",
" import design_paths as DP\n",
"except ModuleNotFoundError:\n",
- " from notebooks.design import design_paths as DP\n",
+ " from examples.notebooks.design import design_paths as DP\n",
"\n",
"warnings.filterwarnings('ignore')\n",
"APTAMER_DATA_DIR = DP.data_dir() / \"aptamer\"\n",
diff --git a/notebooks/design/calculate_similarity.py b/examples/notebooks/design/calculate_similarity.py
similarity index 100%
rename from notebooks/design/calculate_similarity.py
rename to examples/notebooks/design/calculate_similarity.py
diff --git a/notebooks/design/data/aptamer/Pepper_aptamer_generated.fasta b/examples/notebooks/design/data/aptamer/Pepper_aptamer_generated.fasta
similarity index 100%
rename from notebooks/design/data/aptamer/Pepper_aptamer_generated.fasta
rename to examples/notebooks/design/data/aptamer/Pepper_aptamer_generated.fasta
diff --git a/notebooks/design/data/aptamer/Pepper_aptamer_mutations_rate.tsv b/examples/notebooks/design/data/aptamer/Pepper_aptamer_mutations_rate.tsv
similarity index 100%
rename from notebooks/design/data/aptamer/Pepper_aptamer_mutations_rate.tsv
rename to examples/notebooks/design/data/aptamer/Pepper_aptamer_mutations_rate.tsv
diff --git a/notebooks/design/data/aptamer/pepper_active_sequences_mutations.tsv b/examples/notebooks/design/data/aptamer/pepper_active_sequences_mutations.tsv
similarity index 100%
rename from notebooks/design/data/aptamer/pepper_active_sequences_mutations.tsv
rename to examples/notebooks/design/data/aptamer/pepper_active_sequences_mutations.tsv
diff --git a/notebooks/design/data/aptamer/pepper_prediction_data.json b/examples/notebooks/design/data/aptamer/pepper_prediction_data.json
similarity index 100%
rename from notebooks/design/data/aptamer/pepper_prediction_data.json
rename to examples/notebooks/design/data/aptamer/pepper_prediction_data.json
diff --git a/notebooks/design/data/gRNA/designed_wrna.fasta b/examples/notebooks/design/data/gRNA/designed_wrna.fasta
similarity index 100%
rename from notebooks/design/data/gRNA/designed_wrna.fasta
rename to examples/notebooks/design/data/gRNA/designed_wrna.fasta
diff --git a/notebooks/design/data/gRNA/grna_m16_1800_merged.fasta b/examples/notebooks/design/data/gRNA/grna_m16_1800_merged.fasta
similarity index 100%
rename from notebooks/design/data/gRNA/grna_m16_1800_merged.fasta
rename to examples/notebooks/design/data/gRNA/grna_m16_1800_merged.fasta
diff --git a/notebooks/design/data/gRNA/grna_m17_1600_merged.fasta b/examples/notebooks/design/data/gRNA/grna_m17_1600_merged.fasta
similarity index 100%
rename from notebooks/design/data/gRNA/grna_m17_1600_merged.fasta
rename to examples/notebooks/design/data/gRNA/grna_m17_1600_merged.fasta
diff --git a/notebooks/design/data/gRNA/isc_gpu1_seq115_len173_model.cif b/examples/notebooks/design/data/gRNA/isc_gpu1_seq115_len173_model.cif
similarity index 100%
rename from notebooks/design/data/gRNA/isc_gpu1_seq115_len173_model.cif
rename to examples/notebooks/design/data/gRNA/isc_gpu1_seq115_len173_model.cif
diff --git a/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/TERMS_OF_USE.md b/examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/TERMS_OF_USE.md
similarity index 100%
rename from notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/TERMS_OF_USE.md
rename to examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/TERMS_OF_USE.md
diff --git a/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_confidences.json b/examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_confidences.json
similarity index 100%
rename from notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_confidences.json
rename to examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_confidences.json
diff --git a/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_data.json b/examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_data.json
similarity index 100%
rename from notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_data.json
rename to examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_data.json
diff --git a/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_model.cif b/examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_model.cif
similarity index 100%
rename from notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_model.cif
rename to examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_model.cif
diff --git a/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_ranking_scores.csv b/examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_ranking_scores.csv
similarity index 100%
rename from notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_ranking_scores.csv
rename to examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_ranking_scores.csv
diff --git a/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_summary_confidences.json b/examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_summary_confidences.json
similarity index 100%
rename from notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_summary_confidences.json
rename to examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_summary_confidences.json
diff --git a/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/seed-1_sample-0/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_seed-1_sample-0_confidences.json b/examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/seed-1_sample-0/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_seed-1_sample-0_confidences.json
similarity index 100%
rename from notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/seed-1_sample-0/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_seed-1_sample-0_confidences.json
rename to examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/seed-1_sample-0/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_seed-1_sample-0_confidences.json
diff --git a/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/seed-1_sample-0/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_seed-1_sample-0_model.cif b/examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/seed-1_sample-0/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_seed-1_sample-0_model.cif
similarity index 100%
rename from notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/seed-1_sample-0/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_seed-1_sample-0_model.cif
rename to examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/seed-1_sample-0/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_seed-1_sample-0_model.cif
diff --git a/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/seed-1_sample-0/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_seed-1_sample-0_summary_confidences.json b/examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/seed-1_sample-0/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_seed-1_sample-0_summary_confidences.json
similarity index 100%
rename from notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/seed-1_sample-0/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_seed-1_sample-0_summary_confidences.json
rename to examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/seed-1_sample-0/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_seed-1_sample-0_summary_confidences.json
diff --git a/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/seed-1_sample-1/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_seed-1_sample-1_confidences.json b/examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/seed-1_sample-1/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_seed-1_sample-1_confidences.json
similarity index 100%
rename from notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/seed-1_sample-1/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_seed-1_sample-1_confidences.json
rename to examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/seed-1_sample-1/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_seed-1_sample-1_confidences.json
diff --git a/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/seed-1_sample-1/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_seed-1_sample-1_model.cif b/examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/seed-1_sample-1/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_seed-1_sample-1_model.cif
similarity index 100%
rename from notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/seed-1_sample-1/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_seed-1_sample-1_model.cif
rename to examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/seed-1_sample-1/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_seed-1_sample-1_model.cif
diff --git a/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/seed-1_sample-1/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_seed-1_sample-1_summary_confidences.json b/examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/seed-1_sample-1/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_seed-1_sample-1_summary_confidences.json
similarity index 100%
rename from notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/seed-1_sample-1/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_seed-1_sample-1_summary_confidences.json
rename to examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/seed-1_sample-1/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_seed-1_sample-1_summary_confidences.json
diff --git a/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/seed-1_sample-2/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_seed-1_sample-2_confidences.json b/examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/seed-1_sample-2/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_seed-1_sample-2_confidences.json
similarity index 100%
rename from notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/seed-1_sample-2/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_seed-1_sample-2_confidences.json
rename to examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/seed-1_sample-2/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_seed-1_sample-2_confidences.json
diff --git a/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/seed-1_sample-2/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_seed-1_sample-2_model.cif b/examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/seed-1_sample-2/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_seed-1_sample-2_model.cif
similarity index 100%
rename from notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/seed-1_sample-2/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_seed-1_sample-2_model.cif
rename to examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/seed-1_sample-2/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_seed-1_sample-2_model.cif
diff --git a/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/seed-1_sample-2/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_seed-1_sample-2_summary_confidences.json b/examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/seed-1_sample-2/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_seed-1_sample-2_summary_confidences.json
similarity index 100%
rename from notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/seed-1_sample-2/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_seed-1_sample-2_summary_confidences.json
rename to examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173/seed-1_sample-2/iscb_dna_target_dna_rna_Y_RNA_gpu1_seq115_len173_seed-1_sample-2_summary_confidences.json
diff --git a/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/TERMS_OF_USE.md b/examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/TERMS_OF_USE.md
similarity index 100%
rename from notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/TERMS_OF_USE.md
rename to examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/TERMS_OF_USE.md
diff --git a/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/iscb_dna_target_dna_rna_wt_confidences.json b/examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/iscb_dna_target_dna_rna_wt_confidences.json
similarity index 100%
rename from notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/iscb_dna_target_dna_rna_wt_confidences.json
rename to examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/iscb_dna_target_dna_rna_wt_confidences.json
diff --git a/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/iscb_dna_target_dna_rna_wt_data.json b/examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/iscb_dna_target_dna_rna_wt_data.json
similarity index 100%
rename from notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/iscb_dna_target_dna_rna_wt_data.json
rename to examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/iscb_dna_target_dna_rna_wt_data.json
diff --git a/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/iscb_dna_target_dna_rna_wt_model.cif b/examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/iscb_dna_target_dna_rna_wt_model.cif
similarity index 100%
rename from notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/iscb_dna_target_dna_rna_wt_model.cif
rename to examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/iscb_dna_target_dna_rna_wt_model.cif
diff --git a/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/iscb_dna_target_dna_rna_wt_ranking_scores.csv b/examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/iscb_dna_target_dna_rna_wt_ranking_scores.csv
similarity index 100%
rename from notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/iscb_dna_target_dna_rna_wt_ranking_scores.csv
rename to examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/iscb_dna_target_dna_rna_wt_ranking_scores.csv
diff --git a/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/iscb_dna_target_dna_rna_wt_summary_confidences.json b/examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/iscb_dna_target_dna_rna_wt_summary_confidences.json
similarity index 100%
rename from notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/iscb_dna_target_dna_rna_wt_summary_confidences.json
rename to examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/iscb_dna_target_dna_rna_wt_summary_confidences.json
diff --git a/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/seed-1_sample-0/iscb_dna_target_dna_rna_wt_seed-1_sample-0_confidences.json b/examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/seed-1_sample-0/iscb_dna_target_dna_rna_wt_seed-1_sample-0_confidences.json
similarity index 100%
rename from notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/seed-1_sample-0/iscb_dna_target_dna_rna_wt_seed-1_sample-0_confidences.json
rename to examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/seed-1_sample-0/iscb_dna_target_dna_rna_wt_seed-1_sample-0_confidences.json
diff --git a/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/seed-1_sample-0/iscb_dna_target_dna_rna_wt_seed-1_sample-0_model.cif b/examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/seed-1_sample-0/iscb_dna_target_dna_rna_wt_seed-1_sample-0_model.cif
similarity index 100%
rename from notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/seed-1_sample-0/iscb_dna_target_dna_rna_wt_seed-1_sample-0_model.cif
rename to examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/seed-1_sample-0/iscb_dna_target_dna_rna_wt_seed-1_sample-0_model.cif
diff --git a/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/seed-1_sample-0/iscb_dna_target_dna_rna_wt_seed-1_sample-0_summary_confidences.json b/examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/seed-1_sample-0/iscb_dna_target_dna_rna_wt_seed-1_sample-0_summary_confidences.json
similarity index 100%
rename from notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/seed-1_sample-0/iscb_dna_target_dna_rna_wt_seed-1_sample-0_summary_confidences.json
rename to examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/seed-1_sample-0/iscb_dna_target_dna_rna_wt_seed-1_sample-0_summary_confidences.json
diff --git a/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/seed-1_sample-1/iscb_dna_target_dna_rna_wt_seed-1_sample-1_confidences.json b/examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/seed-1_sample-1/iscb_dna_target_dna_rna_wt_seed-1_sample-1_confidences.json
similarity index 100%
rename from notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/seed-1_sample-1/iscb_dna_target_dna_rna_wt_seed-1_sample-1_confidences.json
rename to examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/seed-1_sample-1/iscb_dna_target_dna_rna_wt_seed-1_sample-1_confidences.json
diff --git a/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/seed-1_sample-1/iscb_dna_target_dna_rna_wt_seed-1_sample-1_model.cif b/examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/seed-1_sample-1/iscb_dna_target_dna_rna_wt_seed-1_sample-1_model.cif
similarity index 100%
rename from notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/seed-1_sample-1/iscb_dna_target_dna_rna_wt_seed-1_sample-1_model.cif
rename to examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/seed-1_sample-1/iscb_dna_target_dna_rna_wt_seed-1_sample-1_model.cif
diff --git a/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/seed-1_sample-1/iscb_dna_target_dna_rna_wt_seed-1_sample-1_summary_confidences.json b/examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/seed-1_sample-1/iscb_dna_target_dna_rna_wt_seed-1_sample-1_summary_confidences.json
similarity index 100%
rename from notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/seed-1_sample-1/iscb_dna_target_dna_rna_wt_seed-1_sample-1_summary_confidences.json
rename to examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/seed-1_sample-1/iscb_dna_target_dna_rna_wt_seed-1_sample-1_summary_confidences.json
diff --git a/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/seed-1_sample-2/iscb_dna_target_dna_rna_wt_seed-1_sample-2_confidences.json b/examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/seed-1_sample-2/iscb_dna_target_dna_rna_wt_seed-1_sample-2_confidences.json
similarity index 100%
rename from notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/seed-1_sample-2/iscb_dna_target_dna_rna_wt_seed-1_sample-2_confidences.json
rename to examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/seed-1_sample-2/iscb_dna_target_dna_rna_wt_seed-1_sample-2_confidences.json
diff --git a/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/seed-1_sample-2/iscb_dna_target_dna_rna_wt_seed-1_sample-2_model.cif b/examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/seed-1_sample-2/iscb_dna_target_dna_rna_wt_seed-1_sample-2_model.cif
similarity index 100%
rename from notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/seed-1_sample-2/iscb_dna_target_dna_rna_wt_seed-1_sample-2_model.cif
rename to examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/seed-1_sample-2/iscb_dna_target_dna_rna_wt_seed-1_sample-2_model.cif
diff --git a/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/seed-1_sample-2/iscb_dna_target_dna_rna_wt_seed-1_sample-2_summary_confidences.json b/examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/seed-1_sample-2/iscb_dna_target_dna_rna_wt_seed-1_sample-2_summary_confidences.json
similarity index 100%
rename from notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/seed-1_sample-2/iscb_dna_target_dna_rna_wt_seed-1_sample-2_summary_confidences.json
rename to examples/notebooks/design/data/gRNA/iscb_dna_target_dna_rna_wt/seed-1_sample-2/iscb_dna_target_dna_rna_wt_seed-1_sample-2_summary_confidences.json
diff --git a/notebooks/design/data/gRNA/iscb_prediction_data.json b/examples/notebooks/design/data/gRNA/iscb_prediction_data.json
similarity index 100%
rename from notebooks/design/data/gRNA/iscb_prediction_data.json
rename to examples/notebooks/design/data/gRNA/iscb_prediction_data.json
diff --git a/notebooks/design/data/gRNA/m16_WT.fasta b/examples/notebooks/design/data/gRNA/m16_WT.fasta
similarity index 100%
rename from notebooks/design/data/gRNA/m16_WT.fasta
rename to examples/notebooks/design/data/gRNA/m16_WT.fasta
diff --git a/notebooks/design/data/gRNA/m16_sequence_similarity.txt b/examples/notebooks/design/data/gRNA/m16_sequence_similarity.txt
similarity index 100%
rename from notebooks/design/data/gRNA/m16_sequence_similarity.txt
rename to examples/notebooks/design/data/gRNA/m16_sequence_similarity.txt
diff --git a/notebooks/design/data/gRNA/m17_sequence_similarity.txt b/examples/notebooks/design/data/gRNA/m17_sequence_similarity.txt
similarity index 100%
rename from notebooks/design/data/gRNA/m17_sequence_similarity.txt
rename to examples/notebooks/design/data/gRNA/m17_sequence_similarity.txt
diff --git a/notebooks/design/data/gRNA/structure_analysis_summary.csv b/examples/notebooks/design/data/gRNA/structure_analysis_summary.csv
similarity index 100%
rename from notebooks/design/data/gRNA/structure_analysis_summary.csv
rename to examples/notebooks/design/data/gRNA/structure_analysis_summary.csv
diff --git a/notebooks/design/data/mRNA_circRNA/example_cds.fasta b/examples/notebooks/design/data/mRNA_circRNA/example_cds.fasta
similarity index 100%
rename from notebooks/design/data/mRNA_circRNA/example_cds.fasta
rename to examples/notebooks/design/data/mRNA_circRNA/example_cds.fasta
diff --git a/notebooks/design/data/mRNA_circRNA/example_progress.txt b/examples/notebooks/design/data/mRNA_circRNA/example_progress.txt
similarity index 100%
rename from notebooks/design/data/mRNA_circRNA/example_progress.txt
rename to examples/notebooks/design/data/mRNA_circRNA/example_progress.txt
diff --git a/notebooks/design/data/mRNA_circRNA/example_utr3.fasta b/examples/notebooks/design/data/mRNA_circRNA/example_utr3.fasta
similarity index 100%
rename from notebooks/design/data/mRNA_circRNA/example_utr3.fasta
rename to examples/notebooks/design/data/mRNA_circRNA/example_utr3.fasta
diff --git a/notebooks/design/data/mRNA_circRNA/example_utr5.fasta b/examples/notebooks/design/data/mRNA_circRNA/example_utr5.fasta
similarity index 100%
rename from notebooks/design/data/mRNA_circRNA/example_utr5.fasta
rename to examples/notebooks/design/data/mRNA_circRNA/example_utr5.fasta
diff --git a/notebooks/design/data/mRNA_circRNA/optimization_mfe_vs_cai.png b/examples/notebooks/design/data/mRNA_circRNA/optimization_mfe_vs_cai.png
similarity index 100%
rename from notebooks/design/data/mRNA_circRNA/optimization_mfe_vs_cai.png
rename to examples/notebooks/design/data/mRNA_circRNA/optimization_mfe_vs_cai.png
diff --git a/notebooks/design/data/tRNA/sequence_similarity.txt b/examples/notebooks/design/data/tRNA/sequence_similarity.txt
similarity index 100%
rename from notebooks/design/data/tRNA/sequence_similarity.txt
rename to examples/notebooks/design/data/tRNA/sequence_similarity.txt
diff --git a/notebooks/design/data/tRNA/sequence_similarity_0219_1w.txt b/examples/notebooks/design/data/tRNA/sequence_similarity_0219_1w.txt
similarity index 100%
rename from notebooks/design/data/tRNA/sequence_similarity_0219_1w.txt
rename to examples/notebooks/design/data/tRNA/sequence_similarity_0219_1w.txt
diff --git a/notebooks/design/data/tRNA/tRNA_200.fasta b/examples/notebooks/design/data/tRNA/tRNA_200.fasta
similarity index 100%
rename from notebooks/design/data/tRNA/tRNA_200.fasta
rename to examples/notebooks/design/data/tRNA/tRNA_200.fasta
diff --git a/notebooks/design/data/tRNA/tRNA_ref/1EHZ.cif b/examples/notebooks/design/data/tRNA/tRNA_ref/1EHZ.cif
similarity index 100%
rename from notebooks/design/data/tRNA/tRNA_ref/1EHZ.cif
rename to examples/notebooks/design/data/tRNA/tRNA_ref/1EHZ.cif
diff --git a/notebooks/design/data/tRNA/tRNA_ref/1EVV.cif b/examples/notebooks/design/data/tRNA/tRNA_ref/1EVV.cif
similarity index 100%
rename from notebooks/design/data/tRNA/tRNA_ref/1EVV.cif
rename to examples/notebooks/design/data/tRNA/tRNA_ref/1EVV.cif
diff --git a/notebooks/design/data/tRNA/tRNA_ref/1FIR.cif b/examples/notebooks/design/data/tRNA/tRNA_ref/1FIR.cif
similarity index 100%
rename from notebooks/design/data/tRNA/tRNA_ref/1FIR.cif
rename to examples/notebooks/design/data/tRNA/tRNA_ref/1FIR.cif
diff --git a/notebooks/design/data/tRNA/tRNA_ref/1I9V.cif b/examples/notebooks/design/data/tRNA/tRNA_ref/1I9V.cif
similarity index 100%
rename from notebooks/design/data/tRNA/tRNA_ref/1I9V.cif
rename to examples/notebooks/design/data/tRNA/tRNA_ref/1I9V.cif
diff --git a/notebooks/design/data/tRNA/tRNA_ref/1QZB.cif b/examples/notebooks/design/data/tRNA/tRNA_ref/1QZB.cif
similarity index 100%
rename from notebooks/design/data/tRNA/tRNA_ref/1QZB.cif
rename to examples/notebooks/design/data/tRNA/tRNA_ref/1QZB.cif
diff --git a/notebooks/design/data/tRNA/tRNA_ref/1TN1.cif b/examples/notebooks/design/data/tRNA/tRNA_ref/1TN1.cif
similarity index 100%
rename from notebooks/design/data/tRNA/tRNA_ref/1TN1.cif
rename to examples/notebooks/design/data/tRNA/tRNA_ref/1TN1.cif
diff --git a/notebooks/design/data/tRNA/tRNA_ref/1TN2.cif b/examples/notebooks/design/data/tRNA/tRNA_ref/1TN2.cif
similarity index 100%
rename from notebooks/design/data/tRNA/tRNA_ref/1TN2.cif
rename to examples/notebooks/design/data/tRNA/tRNA_ref/1TN2.cif
diff --git a/notebooks/design/data/tRNA/tRNA_ref/1TRA.cif b/examples/notebooks/design/data/tRNA/tRNA_ref/1TRA.cif
similarity index 100%
rename from notebooks/design/data/tRNA/tRNA_ref/1TRA.cif
rename to examples/notebooks/design/data/tRNA/tRNA_ref/1TRA.cif
diff --git a/notebooks/design/data/tRNA/tRNA_ref/1VTQ.cif b/examples/notebooks/design/data/tRNA/tRNA_ref/1VTQ.cif
similarity index 100%
rename from notebooks/design/data/tRNA/tRNA_ref/1VTQ.cif
rename to examples/notebooks/design/data/tRNA/tRNA_ref/1VTQ.cif
diff --git a/notebooks/design/data/tRNA/tRNA_ref/1YFG.cif b/examples/notebooks/design/data/tRNA/tRNA_ref/1YFG.cif
similarity index 100%
rename from notebooks/design/data/tRNA/tRNA_ref/1YFG.cif
rename to examples/notebooks/design/data/tRNA/tRNA_ref/1YFG.cif
diff --git a/notebooks/design/data/tRNA/tRNA_ref/2K4C.cif b/examples/notebooks/design/data/tRNA/tRNA_ref/2K4C.cif
similarity index 100%
rename from notebooks/design/data/tRNA/tRNA_ref/2K4C.cif
rename to examples/notebooks/design/data/tRNA/tRNA_ref/2K4C.cif
diff --git a/notebooks/design/data/tRNA/tRNA_ref/2TRA.cif b/examples/notebooks/design/data/tRNA/tRNA_ref/2TRA.cif
similarity index 100%
rename from notebooks/design/data/tRNA/tRNA_ref/2TRA.cif
rename to examples/notebooks/design/data/tRNA/tRNA_ref/2TRA.cif
diff --git a/notebooks/design/data/tRNA/tRNA_ref/3A3A.cif b/examples/notebooks/design/data/tRNA/tRNA_ref/3A3A.cif
similarity index 100%
rename from notebooks/design/data/tRNA/tRNA_ref/3A3A.cif
rename to examples/notebooks/design/data/tRNA/tRNA_ref/3A3A.cif
diff --git a/notebooks/design/data/tRNA/tRNA_ref/3BBV.cif b/examples/notebooks/design/data/tRNA/tRNA_ref/3BBV.cif
similarity index 100%
rename from notebooks/design/data/tRNA/tRNA_ref/3BBV.cif
rename to examples/notebooks/design/data/tRNA/tRNA_ref/3BBV.cif
diff --git a/notebooks/design/data/tRNA/tRNA_ref/3CW5.cif b/examples/notebooks/design/data/tRNA/tRNA_ref/3CW5.cif
similarity index 100%
rename from notebooks/design/data/tRNA/tRNA_ref/3CW5.cif
rename to examples/notebooks/design/data/tRNA/tRNA_ref/3CW5.cif
diff --git a/notebooks/design/data/tRNA/tRNA_ref/3CW6.cif b/examples/notebooks/design/data/tRNA/tRNA_ref/3CW6.cif
similarity index 100%
rename from notebooks/design/data/tRNA/tRNA_ref/3CW6.cif
rename to examples/notebooks/design/data/tRNA/tRNA_ref/3CW6.cif
diff --git a/notebooks/design/data/tRNA/tRNA_ref/3L0U.cif b/examples/notebooks/design/data/tRNA/tRNA_ref/3L0U.cif
similarity index 100%
rename from notebooks/design/data/tRNA/tRNA_ref/3L0U.cif
rename to examples/notebooks/design/data/tRNA/tRNA_ref/3L0U.cif
diff --git a/notebooks/design/data/tRNA/tRNA_ref/3TRA.cif b/examples/notebooks/design/data/tRNA/tRNA_ref/3TRA.cif
similarity index 100%
rename from notebooks/design/data/tRNA/tRNA_ref/3TRA.cif
rename to examples/notebooks/design/data/tRNA/tRNA_ref/3TRA.cif
diff --git a/notebooks/design/data/tRNA/tRNA_ref/4P5J.cif b/examples/notebooks/design/data/tRNA/tRNA_ref/4P5J.cif
similarity index 100%
rename from notebooks/design/data/tRNA/tRNA_ref/4P5J.cif
rename to examples/notebooks/design/data/tRNA/tRNA_ref/4P5J.cif
diff --git a/notebooks/design/data/tRNA/tRNA_ref/4TNA.cif b/examples/notebooks/design/data/tRNA/tRNA_ref/4TNA.cif
similarity index 100%
rename from notebooks/design/data/tRNA/tRNA_ref/4TNA.cif
rename to examples/notebooks/design/data/tRNA/tRNA_ref/4TNA.cif
diff --git a/notebooks/design/data/tRNA/tRNA_ref/4TRA.cif b/examples/notebooks/design/data/tRNA/tRNA_ref/4TRA.cif
similarity index 100%
rename from notebooks/design/data/tRNA/tRNA_ref/4TRA.cif
rename to examples/notebooks/design/data/tRNA/tRNA_ref/4TRA.cif
diff --git a/notebooks/design/data/tRNA/tRNA_ref/5L4O.cif b/examples/notebooks/design/data/tRNA/tRNA_ref/5L4O.cif
similarity index 100%
rename from notebooks/design/data/tRNA/tRNA_ref/5L4O.cif
rename to examples/notebooks/design/data/tRNA/tRNA_ref/5L4O.cif
diff --git a/notebooks/design/data/tRNA/tRNA_ref/6CU1.cif b/examples/notebooks/design/data/tRNA/tRNA_ref/6CU1.cif
similarity index 100%
rename from notebooks/design/data/tRNA/tRNA_ref/6CU1.cif
rename to examples/notebooks/design/data/tRNA/tRNA_ref/6CU1.cif
diff --git a/notebooks/design/data/tRNA/tRNA_ref/6TNA.cif b/examples/notebooks/design/data/tRNA/tRNA_ref/6TNA.cif
similarity index 100%
rename from notebooks/design/data/tRNA/tRNA_ref/6TNA.cif
rename to examples/notebooks/design/data/tRNA/tRNA_ref/6TNA.cif
diff --git a/notebooks/design/data/tRNA/tRNA_ref/6UGG.cif b/examples/notebooks/design/data/tRNA/tRNA_ref/6UGG.cif
similarity index 100%
rename from notebooks/design/data/tRNA/tRNA_ref/6UGG.cif
rename to examples/notebooks/design/data/tRNA/tRNA_ref/6UGG.cif
diff --git a/notebooks/design/data/tRNA/tRNA_ref/6Y3G.cif b/examples/notebooks/design/data/tRNA/tRNA_ref/6Y3G.cif
similarity index 100%
rename from notebooks/design/data/tRNA/tRNA_ref/6Y3G.cif
rename to examples/notebooks/design/data/tRNA/tRNA_ref/6Y3G.cif
diff --git a/notebooks/design/data/tRNA/tRNA_ref/7EQJ.cif b/examples/notebooks/design/data/tRNA/tRNA_ref/7EQJ.cif
similarity index 100%
rename from notebooks/design/data/tRNA/tRNA_ref/7EQJ.cif
rename to examples/notebooks/design/data/tRNA/tRNA_ref/7EQJ.cif
diff --git a/notebooks/design/data/tRNA/tRNA_ref/7KJU.cif b/examples/notebooks/design/data/tRNA/tRNA_ref/7KJU.cif
similarity index 100%
rename from notebooks/design/data/tRNA/tRNA_ref/7KJU.cif
rename to examples/notebooks/design/data/tRNA/tRNA_ref/7KJU.cif
diff --git a/notebooks/design/data/tRNA/tRNA_ref/7VNW.cif b/examples/notebooks/design/data/tRNA/tRNA_ref/7VNW.cif
similarity index 100%
rename from notebooks/design/data/tRNA/tRNA_ref/7VNW.cif
rename to examples/notebooks/design/data/tRNA/tRNA_ref/7VNW.cif
diff --git a/notebooks/design/data/tRNA/tRNA_ref/8UPT.cif b/examples/notebooks/design/data/tRNA/tRNA_ref/8UPT.cif
similarity index 100%
rename from notebooks/design/data/tRNA/tRNA_ref/8UPT.cif
rename to examples/notebooks/design/data/tRNA/tRNA_ref/8UPT.cif
diff --git a/notebooks/design/data/tRNA/tRNA_ref/8UPY.cif b/examples/notebooks/design/data/tRNA/tRNA_ref/8UPY.cif
similarity index 100%
rename from notebooks/design/data/tRNA/tRNA_ref/8UPY.cif
rename to examples/notebooks/design/data/tRNA/tRNA_ref/8UPY.cif
diff --git a/notebooks/design/data/tRNA/tRNA_ref/8V1H.cif b/examples/notebooks/design/data/tRNA/tRNA_ref/8V1H.cif
similarity index 100%
rename from notebooks/design/data/tRNA/tRNA_ref/8V1H.cif
rename to examples/notebooks/design/data/tRNA/tRNA_ref/8V1H.cif
diff --git a/notebooks/design/data/tRNA/tm-score.txt b/examples/notebooks/design/data/tRNA/tm-score.txt
similarity index 100%
rename from notebooks/design/data/tRNA/tm-score.txt
rename to examples/notebooks/design/data/tRNA/tm-score.txt
diff --git a/notebooks/design/design_paths.py b/examples/notebooks/design/design_paths.py
similarity index 93%
rename from notebooks/design/design_paths.py
rename to examples/notebooks/design/design_paths.py
index 8ab38ca..cdfebe7 100644
--- a/notebooks/design/design_paths.py
+++ b/examples/notebooks/design/design_paths.py
@@ -4,7 +4,7 @@
def project_root() -> Path:
- return Path(__file__).resolve().parents[2]
+ return Path(__file__).resolve().parents[3]
def notebook_dir() -> Path:
diff --git a/notebooks/design/fonts/arial.ttf b/examples/notebooks/design/fonts/arial.ttf
similarity index 100%
rename from notebooks/design/fonts/arial.ttf
rename to examples/notebooks/design/fonts/arial.ttf
diff --git a/notebooks/design/gRNA_design.ipynb b/examples/notebooks/design/gRNA_design.ipynb
similarity index 99%
rename from notebooks/design/gRNA_design.ipynb
rename to examples/notebooks/design/gRNA_design.ipynb
index 48c85d6..2558534 100755
--- a/notebooks/design/gRNA_design.ipynb
+++ b/examples/notebooks/design/gRNA_design.ipynb
@@ -32,7 +32,7 @@
"try:\n",
" import design_paths as DP\n",
"except ModuleNotFoundError:\n",
- " from notebooks.design import design_paths as DP\n",
+ " from examples.notebooks.design import design_paths as DP\n",
"\n",
"GRNA_DATA_DIR = DP.data_dir() / \"gRNA\"\n",
"\n",
diff --git a/notebooks/design/mRNA_circRNA_design.ipynb b/examples/notebooks/design/mRNA_circRNA_design.ipynb
similarity index 99%
rename from notebooks/design/mRNA_circRNA_design.ipynb
rename to examples/notebooks/design/mRNA_circRNA_design.ipynb
index c652e0c..eca6e46 100755
--- a/notebooks/design/mRNA_circRNA_design.ipynb
+++ b/examples/notebooks/design/mRNA_circRNA_design.ipynb
@@ -76,7 +76,7 @@
"try:\n",
" import design_paths as DP\n",
"except ModuleNotFoundError:\n",
- " from notebooks.design import design_paths as DP\n",
+ " from examples.notebooks.design import design_paths as DP\n",
"\n",
"def resolve_notebook_path(path_value):\n",
" if not path_value:\n",
diff --git a/notebooks/design/pic/aptamer_dms_vs_generative.png b/examples/notebooks/design/pic/aptamer_dms_vs_generative.png
similarity index 100%
rename from notebooks/design/pic/aptamer_dms_vs_generative.png
rename to examples/notebooks/design/pic/aptamer_dms_vs_generative.png
diff --git a/notebooks/design/pic/aptamer_dms_vs_generative.svg b/examples/notebooks/design/pic/aptamer_dms_vs_generative.svg
similarity index 100%
rename from notebooks/design/pic/aptamer_dms_vs_generative.svg
rename to examples/notebooks/design/pic/aptamer_dms_vs_generative.svg
diff --git a/notebooks/design/pic/aptamer_logo_combined_comparison.png b/examples/notebooks/design/pic/aptamer_logo_combined_comparison.png
similarity index 100%
rename from notebooks/design/pic/aptamer_logo_combined_comparison.png
rename to examples/notebooks/design/pic/aptamer_logo_combined_comparison.png
diff --git a/notebooks/design/pic/aptamer_logo_combined_comparison.svg b/examples/notebooks/design/pic/aptamer_logo_combined_comparison.svg
similarity index 100%
rename from notebooks/design/pic/aptamer_logo_combined_comparison.svg
rename to examples/notebooks/design/pic/aptamer_logo_combined_comparison.svg
diff --git a/notebooks/design/pic/aptamer_logo_decreased.png b/examples/notebooks/design/pic/aptamer_logo_decreased.png
similarity index 100%
rename from notebooks/design/pic/aptamer_logo_decreased.png
rename to examples/notebooks/design/pic/aptamer_logo_decreased.png
diff --git a/notebooks/design/pic/aptamer_logo_decreased.svg b/examples/notebooks/design/pic/aptamer_logo_decreased.svg
similarity index 100%
rename from notebooks/design/pic/aptamer_logo_decreased.svg
rename to examples/notebooks/design/pic/aptamer_logo_decreased.svg
diff --git a/notebooks/design/pic/aptamer_logo_improved.png b/examples/notebooks/design/pic/aptamer_logo_improved.png
similarity index 100%
rename from notebooks/design/pic/aptamer_logo_improved.png
rename to examples/notebooks/design/pic/aptamer_logo_improved.png
diff --git a/notebooks/design/pic/aptamer_logo_improved.svg b/examples/notebooks/design/pic/aptamer_logo_improved.svg
similarity index 100%
rename from notebooks/design/pic/aptamer_logo_improved.svg
rename to examples/notebooks/design/pic/aptamer_logo_improved.svg
diff --git a/notebooks/design/pic/aptamer_mutation_logo_all.png b/examples/notebooks/design/pic/aptamer_mutation_logo_all.png
similarity index 100%
rename from notebooks/design/pic/aptamer_mutation_logo_all.png
rename to examples/notebooks/design/pic/aptamer_mutation_logo_all.png
diff --git a/notebooks/design/pic/aptamer_mutation_logo_all.svg b/examples/notebooks/design/pic/aptamer_mutation_logo_all.svg
similarity index 100%
rename from notebooks/design/pic/aptamer_mutation_logo_all.svg
rename to examples/notebooks/design/pic/aptamer_mutation_logo_all.svg
diff --git a/notebooks/design/pic/aptamer_mutation_logo_selected.png b/examples/notebooks/design/pic/aptamer_mutation_logo_selected.png
similarity index 100%
rename from notebooks/design/pic/aptamer_mutation_logo_selected.png
rename to examples/notebooks/design/pic/aptamer_mutation_logo_selected.png
diff --git a/notebooks/design/pic/aptamer_mutation_logo_selected.svg b/examples/notebooks/design/pic/aptamer_mutation_logo_selected.svg
similarity index 100%
rename from notebooks/design/pic/aptamer_mutation_logo_selected.svg
rename to examples/notebooks/design/pic/aptamer_mutation_logo_selected.svg
diff --git a/notebooks/design/pic/aptamer_pepper_530_correlation.png b/examples/notebooks/design/pic/aptamer_pepper_530_correlation.png
similarity index 100%
rename from notebooks/design/pic/aptamer_pepper_530_correlation.png
rename to examples/notebooks/design/pic/aptamer_pepper_530_correlation.png
diff --git a/notebooks/design/pic/aptamer_pepper_530_correlation.svg b/examples/notebooks/design/pic/aptamer_pepper_530_correlation.svg
similarity index 100%
rename from notebooks/design/pic/aptamer_pepper_530_correlation.svg
rename to examples/notebooks/design/pic/aptamer_pepper_530_correlation.svg
diff --git a/notebooks/design/pic/aptamer_pepper_620_correlation.png b/examples/notebooks/design/pic/aptamer_pepper_620_correlation.png
similarity index 100%
rename from notebooks/design/pic/aptamer_pepper_620_correlation.png
rename to examples/notebooks/design/pic/aptamer_pepper_620_correlation.png
diff --git a/notebooks/design/pic/aptamer_pepper_620_correlation.svg b/examples/notebooks/design/pic/aptamer_pepper_620_correlation.svg
similarity index 100%
rename from notebooks/design/pic/aptamer_pepper_620_correlation.svg
rename to examples/notebooks/design/pic/aptamer_pepper_620_correlation.svg
diff --git a/notebooks/design/pic/gRNA_coverage_heatmap.png b/examples/notebooks/design/pic/gRNA_coverage_heatmap.png
similarity index 100%
rename from notebooks/design/pic/gRNA_coverage_heatmap.png
rename to examples/notebooks/design/pic/gRNA_coverage_heatmap.png
diff --git a/notebooks/design/pic/gRNA_coverage_heatmap.svg b/examples/notebooks/design/pic/gRNA_coverage_heatmap.svg
similarity index 100%
rename from notebooks/design/pic/gRNA_coverage_heatmap.svg
rename to examples/notebooks/design/pic/gRNA_coverage_heatmap.svg
diff --git a/notebooks/design/pic/gRNA_iscb_m16_correlation.png b/examples/notebooks/design/pic/gRNA_iscb_m16_correlation.png
similarity index 100%
rename from notebooks/design/pic/gRNA_iscb_m16_correlation.png
rename to examples/notebooks/design/pic/gRNA_iscb_m16_correlation.png
diff --git a/notebooks/design/pic/gRNA_iscb_m16_correlation.svg b/examples/notebooks/design/pic/gRNA_iscb_m16_correlation.svg
similarity index 100%
rename from notebooks/design/pic/gRNA_iscb_m16_correlation.svg
rename to examples/notebooks/design/pic/gRNA_iscb_m16_correlation.svg
diff --git a/notebooks/design/pic/gRNA_iscb_m17_correlation.png b/examples/notebooks/design/pic/gRNA_iscb_m17_correlation.png
similarity index 100%
rename from notebooks/design/pic/gRNA_iscb_m17_correlation.png
rename to examples/notebooks/design/pic/gRNA_iscb_m17_correlation.png
diff --git a/notebooks/design/pic/gRNA_iscb_m17_correlation.svg b/examples/notebooks/design/pic/gRNA_iscb_m17_correlation.svg
similarity index 100%
rename from notebooks/design/pic/gRNA_iscb_m17_correlation.svg
rename to examples/notebooks/design/pic/gRNA_iscb_m17_correlation.svg
diff --git a/notebooks/design/pic/gRNA_m16_length_dist.png b/examples/notebooks/design/pic/gRNA_m16_length_dist.png
similarity index 100%
rename from notebooks/design/pic/gRNA_m16_length_dist.png
rename to examples/notebooks/design/pic/gRNA_m16_length_dist.png
diff --git a/notebooks/design/pic/gRNA_m16_length_dist.svg b/examples/notebooks/design/pic/gRNA_m16_length_dist.svg
similarity index 100%
rename from notebooks/design/pic/gRNA_m16_length_dist.svg
rename to examples/notebooks/design/pic/gRNA_m16_length_dist.svg
diff --git a/notebooks/design/pic/gRNA_m16_seq_similarity.png b/examples/notebooks/design/pic/gRNA_m16_seq_similarity.png
similarity index 100%
rename from notebooks/design/pic/gRNA_m16_seq_similarity.png
rename to examples/notebooks/design/pic/gRNA_m16_seq_similarity.png
diff --git a/notebooks/design/pic/gRNA_m16_seq_similarity.svg b/examples/notebooks/design/pic/gRNA_m16_seq_similarity.svg
similarity index 100%
rename from notebooks/design/pic/gRNA_m16_seq_similarity.svg
rename to examples/notebooks/design/pic/gRNA_m16_seq_similarity.svg
diff --git a/notebooks/design/pic/gRNA_m17_length_dist.png b/examples/notebooks/design/pic/gRNA_m17_length_dist.png
similarity index 100%
rename from notebooks/design/pic/gRNA_m17_length_dist.png
rename to examples/notebooks/design/pic/gRNA_m17_length_dist.png
diff --git a/notebooks/design/pic/gRNA_m17_length_dist.svg b/examples/notebooks/design/pic/gRNA_m17_length_dist.svg
similarity index 100%
rename from notebooks/design/pic/gRNA_m17_length_dist.svg
rename to examples/notebooks/design/pic/gRNA_m17_length_dist.svg
diff --git a/notebooks/design/pic/gRNA_m17_seq_similarity.png b/examples/notebooks/design/pic/gRNA_m17_seq_similarity.png
similarity index 100%
rename from notebooks/design/pic/gRNA_m17_seq_similarity.png
rename to examples/notebooks/design/pic/gRNA_m17_seq_similarity.png
diff --git a/notebooks/design/pic/gRNA_m17_seq_similarity.svg b/examples/notebooks/design/pic/gRNA_m17_seq_similarity.svg
similarity index 100%
rename from notebooks/design/pic/gRNA_m17_seq_similarity.svg
rename to examples/notebooks/design/pic/gRNA_m17_seq_similarity.svg
diff --git a/notebooks/design/pic/gRNA_structure_vs_af3.png b/examples/notebooks/design/pic/gRNA_structure_vs_af3.png
similarity index 100%
rename from notebooks/design/pic/gRNA_structure_vs_af3.png
rename to examples/notebooks/design/pic/gRNA_structure_vs_af3.png
diff --git a/notebooks/design/pic/gRNA_structure_vs_af3.svg b/examples/notebooks/design/pic/gRNA_structure_vs_af3.svg
similarity index 100%
rename from notebooks/design/pic/gRNA_structure_vs_af3.svg
rename to examples/notebooks/design/pic/gRNA_structure_vs_af3.svg
diff --git a/notebooks/design/pic/tRNA_seq_similarity.png b/examples/notebooks/design/pic/tRNA_seq_similarity.png
similarity index 100%
rename from notebooks/design/pic/tRNA_seq_similarity.png
rename to examples/notebooks/design/pic/tRNA_seq_similarity.png
diff --git a/notebooks/design/pic/tRNA_seq_similarity.svg b/examples/notebooks/design/pic/tRNA_seq_similarity.svg
similarity index 100%
rename from notebooks/design/pic/tRNA_seq_similarity.svg
rename to examples/notebooks/design/pic/tRNA_seq_similarity.svg
diff --git a/notebooks/design/pic/tRNA_tm_score.png b/examples/notebooks/design/pic/tRNA_tm_score.png
similarity index 100%
rename from notebooks/design/pic/tRNA_tm_score.png
rename to examples/notebooks/design/pic/tRNA_tm_score.png
diff --git a/notebooks/design/pic/tRNA_tm_score.svg b/examples/notebooks/design/pic/tRNA_tm_score.svg
similarity index 100%
rename from notebooks/design/pic/tRNA_tm_score.svg
rename to examples/notebooks/design/pic/tRNA_tm_score.svg
diff --git a/notebooks/design/tRNA_design.ipynb b/examples/notebooks/design/tRNA_design.ipynb
similarity index 99%
rename from notebooks/design/tRNA_design.ipynb
rename to examples/notebooks/design/tRNA_design.ipynb
index caa85bd..20ea0e6 100755
--- a/notebooks/design/tRNA_design.ipynb
+++ b/examples/notebooks/design/tRNA_design.ipynb
@@ -30,7 +30,7 @@
"try:\n",
" import design_paths as DP\n",
"except ModuleNotFoundError:\n",
- " from notebooks.design import design_paths as DP\n",
+ " from examples.notebooks.design import design_paths as DP\n",
"\n",
"TRNA_DATA_DIR = DP.data_dir() / \"tRNA\"\n",
"\n",
diff --git a/notebooks/generation/generation_paths.py b/examples/notebooks/generation/generation_paths.py
similarity index 89%
rename from notebooks/generation/generation_paths.py
rename to examples/notebooks/generation/generation_paths.py
index 7b47866..ee514d5 100644
--- a/notebooks/generation/generation_paths.py
+++ b/examples/notebooks/generation/generation_paths.py
@@ -4,7 +4,7 @@
def project_root() -> Path:
- return Path(__file__).resolve().parents[2]
+ return Path(__file__).resolve().parents[3]
def notebook_dir() -> Path:
diff --git a/notebooks/generation/generation_tutorial.ipynb b/examples/notebooks/generation/generation_tutorial.ipynb
similarity index 99%
rename from notebooks/generation/generation_tutorial.ipynb
rename to examples/notebooks/generation/generation_tutorial.ipynb
index 7f7c51f..5c2f125 100755
--- a/notebooks/generation/generation_tutorial.ipynb
+++ b/examples/notebooks/generation/generation_tutorial.ipynb
@@ -40,7 +40,7 @@
"try:\n",
" import generation_paths as GP\n",
"except ModuleNotFoundError:\n",
- " from notebooks.generation import generation_paths as GP\n",
+ " from examples.notebooks.generation import generation_paths as GP\n",
"\n",
"PROJECT_ROOT = GP.project_root()\n",
"TOOLS_DIR = GP.tools_dir()\n",
diff --git a/notebooks/interpretability_analysis/README.md b/examples/notebooks/interpretability_analysis/README.md
similarity index 83%
rename from notebooks/interpretability_analysis/README.md
rename to examples/notebooks/interpretability_analysis/README.md
index 4123ff0..28b46f3 100644
--- a/notebooks/interpretability_analysis/README.md
+++ b/examples/notebooks/interpretability_analysis/README.md
@@ -12,10 +12,10 @@ Path behavior:
- Default paths are resolved relative to the EVA1 repository root.
- The notebook no longer depends on launching Jupyter from
- `notebooks/interpretability_analysis`.
+ `examples/notebooks/interpretability_analysis`.
- `reproduce_paths.py` resolves bundled data/figure/font paths from the repo
layout under `EVA1/`.
For SAE training reproduction, start from:
-`notebooks/interpretability_analysis/sae_repro_release/README.md`
+`examples/notebooks/interpretability_analysis/sae_repro_release/README.md`
diff --git a/notebooks/interpretability_analysis/figures/fig2_sae_density.svg b/examples/notebooks/interpretability_analysis/figures/fig2_sae_density.svg
similarity index 100%
rename from notebooks/interpretability_analysis/figures/fig2_sae_density.svg
rename to examples/notebooks/interpretability_analysis/figures/fig2_sae_density.svg
diff --git a/notebooks/interpretability_analysis/figures/fig2_sae_density_with_prefix.svg b/examples/notebooks/interpretability_analysis/figures/fig2_sae_density_with_prefix.svg
similarity index 100%
rename from notebooks/interpretability_analysis/figures/fig2_sae_density_with_prefix.svg
rename to examples/notebooks/interpretability_analysis/figures/fig2_sae_density_with_prefix.svg
diff --git a/notebooks/interpretability_analysis/figures/fig3_expert_activation_no_lineage.svg b/examples/notebooks/interpretability_analysis/figures/fig3_expert_activation_no_lineage.svg
similarity index 100%
rename from notebooks/interpretability_analysis/figures/fig3_expert_activation_no_lineage.svg
rename to examples/notebooks/interpretability_analysis/figures/fig3_expert_activation_no_lineage.svg
diff --git a/notebooks/interpretability_analysis/figures/fig3_expert_activation_with_lineage.svg b/examples/notebooks/interpretability_analysis/figures/fig3_expert_activation_with_lineage.svg
similarity index 100%
rename from notebooks/interpretability_analysis/figures/fig3_expert_activation_with_lineage.svg
rename to examples/notebooks/interpretability_analysis/figures/fig3_expert_activation_with_lineage.svg
diff --git a/notebooks/interpretability_analysis/figures/fig3_sae_mean_activation.svg b/examples/notebooks/interpretability_analysis/figures/fig3_sae_mean_activation.svg
similarity index 100%
rename from notebooks/interpretability_analysis/figures/fig3_sae_mean_activation.svg
rename to examples/notebooks/interpretability_analysis/figures/fig3_sae_mean_activation.svg
diff --git a/notebooks/interpretability_analysis/figures/fig3_sae_mean_activation_with_prefix.svg b/examples/notebooks/interpretability_analysis/figures/fig3_sae_mean_activation_with_prefix.svg
similarity index 100%
rename from notebooks/interpretability_analysis/figures/fig3_sae_mean_activation_with_prefix.svg
rename to examples/notebooks/interpretability_analysis/figures/fig3_sae_mean_activation_with_prefix.svg
diff --git a/notebooks/interpretability_analysis/figures/fig4_umap.svg b/examples/notebooks/interpretability_analysis/figures/fig4_umap.svg
similarity index 100%
rename from notebooks/interpretability_analysis/figures/fig4_umap.svg
rename to examples/notebooks/interpretability_analysis/figures/fig4_umap.svg
diff --git a/notebooks/interpretability_analysis/figures/fig5_circrna_rabv.svg b/examples/notebooks/interpretability_analysis/figures/fig5_circrna_rabv.svg
similarity index 100%
rename from notebooks/interpretability_analysis/figures/fig5_circrna_rabv.svg
rename to examples/notebooks/interpretability_analysis/figures/fig5_circrna_rabv.svg
diff --git a/notebooks/interpretability_analysis/figures/fig5_circrna_sars.svg b/examples/notebooks/interpretability_analysis/figures/fig5_circrna_sars.svg
similarity index 100%
rename from notebooks/interpretability_analysis/figures/fig5_circrna_sars.svg
rename to examples/notebooks/interpretability_analysis/figures/fig5_circrna_sars.svg
diff --git a/notebooks/interpretability_analysis/figures/fig6_mrna.svg b/examples/notebooks/interpretability_analysis/figures/fig6_mrna.svg
similarity index 100%
rename from notebooks/interpretability_analysis/figures/fig6_mrna.svg
rename to examples/notebooks/interpretability_analysis/figures/fig6_mrna.svg
diff --git a/notebooks/interpretability_analysis/figures/fig7_essentiality_bacteria.svg b/examples/notebooks/interpretability_analysis/figures/fig7_essentiality_bacteria.svg
similarity index 100%
rename from notebooks/interpretability_analysis/figures/fig7_essentiality_bacteria.svg
rename to examples/notebooks/interpretability_analysis/figures/fig7_essentiality_bacteria.svg
diff --git a/notebooks/interpretability_analysis/figures/fig7_essentiality_eukaryote.svg b/examples/notebooks/interpretability_analysis/figures/fig7_essentiality_eukaryote.svg
similarity index 100%
rename from notebooks/interpretability_analysis/figures/fig7_essentiality_eukaryote.svg
rename to examples/notebooks/interpretability_analysis/figures/fig7_essentiality_eukaryote.svg
diff --git a/notebooks/interpretability_analysis/intermediate_data/bacteria_full_comparison_results.json b/examples/notebooks/interpretability_analysis/intermediate_data/bacteria_full_comparison_results.json
similarity index 100%
rename from notebooks/interpretability_analysis/intermediate_data/bacteria_full_comparison_results.json
rename to examples/notebooks/interpretability_analysis/intermediate_data/bacteria_full_comparison_results.json
diff --git a/notebooks/interpretability_analysis/intermediate_data/diff_score.npy b/examples/notebooks/interpretability_analysis/intermediate_data/diff_score.npy
similarity index 100%
rename from notebooks/interpretability_analysis/intermediate_data/diff_score.npy
rename to examples/notebooks/interpretability_analysis/intermediate_data/diff_score.npy
diff --git a/notebooks/interpretability_analysis/intermediate_data/eukaryote_gc_baseline_results.json b/examples/notebooks/interpretability_analysis/intermediate_data/eukaryote_gc_baseline_results.json
similarity index 100%
rename from notebooks/interpretability_analysis/intermediate_data/eukaryote_gc_baseline_results.json
rename to examples/notebooks/interpretability_analysis/intermediate_data/eukaryote_gc_baseline_results.json
diff --git a/notebooks/interpretability_analysis/intermediate_data/umap_embedding.npy b/examples/notebooks/interpretability_analysis/intermediate_data/umap_embedding.npy
similarity index 100%
rename from notebooks/interpretability_analysis/intermediate_data/umap_embedding.npy
rename to examples/notebooks/interpretability_analysis/intermediate_data/umap_embedding.npy
diff --git a/notebooks/interpretability_analysis/interpretability.ipynb b/examples/notebooks/interpretability_analysis/interpretability.ipynb
similarity index 99%
rename from notebooks/interpretability_analysis/interpretability.ipynb
rename to examples/notebooks/interpretability_analysis/interpretability.ipynb
index 0bace1c..27f2bb7 100644
--- a/notebooks/interpretability_analysis/interpretability.ipynb
+++ b/examples/notebooks/interpretability_analysis/interpretability.ipynb
@@ -11,7 +11,7 @@
"cell_type": "code",
"metadata": {},
"source": [
- "\"\"\"\n可解释性分析 - 图表复现(阶段 B:intermediate_data → figures)\n\"\"\"\nimport os\n\nimport json\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport matplotlib.font_manager as fm\nfrom matplotlib.colors import LinearSegmentedColormap\n\ntry:\n import reproduce_paths as RP\nexcept ModuleNotFoundError:\n from notebooks.interpretability_analysis import reproduce_paths as RP\n\nPROJECT_ROOT = str(RP.project_root())\nINTERPRETABILITY_ROOT = str(RP.interpretability_root())\nRNA_BENCHMARK_ROOT = str(RP.rna_benchmark_root())\nINTERMEDIATE_DIR = str(RP.intermediate_dir())\nOUTPUT_DIR = str(RP.figures_dir())\nos.makedirs(OUTPUT_DIR, exist_ok=True)\n\nif RP.try_register_arial():\n plt.rcParams[\"font.family\"] = \"Arial\"\nelse:\n plt.rcParams[\"font.family\"] = \"sans-serif\"\nplt.rcParams[\"axes.unicode_minus\"] = False\nplt.rcParams[\"text.color\"] = \"black\"\nplt.rcParams[\"axes.labelcolor\"] = \"black\"\nplt.rcParams[\"xtick.color\"] = \"black\"\nplt.rcParams[\"ytick.color\"] = \"black\"\n\nprint(\"PROJECT_ROOT: \", PROJECT_ROOT)\nprint(\"INTERPRETABILITY_ROOT:\", INTERPRETABILITY_ROOT)\nprint(\"RNA_BENCHMARK_ROOT: \", RNA_BENCHMARK_ROOT)\nprint(\"INTERMEDIATE_DIR: \", INTERMEDIATE_DIR)\nprint(\"OUTPUT_DIR: \", OUTPUT_DIR)\nRP.print_pipeline_summary()\n"
+ "\"\"\"\n可解释性分析 - 图表复现(阶段 B:intermediate_data → figures)\n\"\"\"\nimport os\n\nimport json\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport matplotlib.font_manager as fm\nfrom matplotlib.colors import LinearSegmentedColormap\n\ntry:\n import reproduce_paths as RP\nexcept ModuleNotFoundError:\n from examples.notebooks.interpretability_analysis import reproduce_paths as RP\n\nPROJECT_ROOT = str(RP.project_root())\nINTERPRETABILITY_ROOT = str(RP.interpretability_root())\nRNA_BENCHMARK_ROOT = str(RP.rna_benchmark_root())\nINTERMEDIATE_DIR = str(RP.intermediate_dir())\nOUTPUT_DIR = str(RP.figures_dir())\nos.makedirs(OUTPUT_DIR, exist_ok=True)\n\nif RP.try_register_arial():\n plt.rcParams[\"font.family\"] = \"Arial\"\nelse:\n plt.rcParams[\"font.family\"] = \"sans-serif\"\nplt.rcParams[\"axes.unicode_minus\"] = False\nplt.rcParams[\"text.color\"] = \"black\"\nplt.rcParams[\"axes.labelcolor\"] = \"black\"\nplt.rcParams[\"xtick.color\"] = \"black\"\nplt.rcParams[\"ytick.color\"] = \"black\"\n\nprint(\"PROJECT_ROOT: \", PROJECT_ROOT)\nprint(\"INTERPRETABILITY_ROOT:\", INTERPRETABILITY_ROOT)\nprint(\"RNA_BENCHMARK_ROOT: \", RNA_BENCHMARK_ROOT)\nprint(\"INTERMEDIATE_DIR: \", INTERMEDIATE_DIR)\nprint(\"OUTPUT_DIR: \", OUTPUT_DIR)\nRP.print_pipeline_summary()\n"
],
"outputs": [],
"execution_count": null
@@ -905,7 +905,7 @@
"cell_type": "code",
"metadata": {},
"source": [
- "# 7. 基因本质性预测 (Zero-shot Essentiality)\nimport json\n\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport matplotlib.font_manager as fm\n\ntry:\n import reproduce_paths as RP\nexcept ModuleNotFoundError:\n from notebooks.interpretability_analysis import reproduce_paths as RP\n\nif RP.try_register_arial():\n plt.rcParams[\"font.family\"] = \"Arial\"\nelse:\n plt.rcParams[\"font.family\"] = \"sans-serif\"\nplt.rcParams[\"text.color\"] = \"black\"\nplt.rcParams[\"axes.labelcolor\"] = \"black\"\nplt.rcParams[\"xtick.color\"] = \"black\"\nplt.rcParams[\"ytick.color\"] = \"black\"\n\n_INTER = RP.intermediate_dir()\n_OUT = RP.figures_dir()\n_OUT.mkdir(parents=True, exist_ok=True)\n\nbacteria_path = _INTER / \"bacteria_full_comparison_results.json\"\neuk_path = _INTER / \"eukaryote_gc_baseline_results.json\"\nif not bacteria_path.is_file() or not euk_path.is_file():\n print(\"⚠ 缺少 essentiality JSON,请运行 interpretability/zeroshot_essentiality 下 plot_*.py 生成后拷贝到 intermediate_data/\")\nelse:\n bacteria_data = json.load(open(bacteria_path))\n eukaryote_data = json.load(open(euk_path))\n\n orange_color = (255/255, 164/255, 91/255)\n blue_color = (115/255, 185/255, 231/255)\n gray_color = (207/255, 208/255, 209/255)\n\n def _mean_std(summary, key):\n block = summary.get(key) or {}\n return block.get(\"mean\", float(\"nan\")), block.get(\"std\", 0.0)\n\n bacteria_summary = bacteria_data[\"summary\"]\n bacteria_results = bacteria_data[\"per_species\"]\n bacteria_plan = [\n (\"Position\\nBaseline\", \"position\", \"position_baseline\", gray_color),\n (\"Evo2 1B\", \"evo2_1b\", \"evo2_1b\", blue_color),\n (\"Evo2 7B\", \"evo2_7b\", \"evo2_7b\", blue_color),\n (\"Evo2 40B\", \"evo2_40b\", \"evo2_40b\", blue_color),\n (\"EVA 21M\", \"rnagen_30m\", \"rnagen_30m\", orange_color),\n (\"EVA 1.4B\", \"rnagen_1400m\", \"rnagen_1400m\", orange_color),\n ]\n model_data_bacteria = []\n for disp, pkey, skey, col in bacteria_plan:\n if skey not in bacteria_summary:\n continue\n m, _ = _mean_std(bacteria_summary, skey)\n model_data_bacteria.append((disp, pkey, m, col))\n if not model_data_bacteria:\n print(\"⚠ bacteria JSON 无可用 summary 字段\")\n else:\n print(f\"细菌图: {len(model_data_bacteria)} 行(若 JSON 含 evo2_40b 则为 6 行)\")\n fig, ax = plt.subplots(figsize=(10, 6))\n ax.set_facecolor(\"white\")\n fig.patch.set_facecolor(\"white\")\n y_positions = np.arange(len(model_data_bacteria))\n for i, (name, key, mean, color) in enumerate(model_data_bacteria):\n ax.barh(i, mean, height=0.75, color=color, alpha=0.8, edgecolor=\"black\", linewidth=1.2)\n np.random.seed(42)\n for i, (name, key, mean, color) in enumerate(model_data_bacteria):\n values = [r[key] for r in bacteria_results if key in r and r[key] is not None]\n jitter = np.random.uniform(-0.2, 0.2, len(values))\n ax.scatter(values, i + jitter, c=\"black\", alpha=0.4, s=15, zorder=5)\n ax.axvline(x=0.5, color=\"gray\", linestyle=\"--\", linewidth=1.5, alpha=0.6)\n ax.set_yticks(y_positions)\n ax.set_yticklabels([m[0] for m in model_data_bacteria], fontsize=24)\n ax.set_xlabel(\"AUROC\", fontsize=26)\n ax.set_title(\"Zero-shot Gene Essentiality Prediction\", fontsize=26)\n ax.tick_params(axis=\"x\", labelsize=20)\n ax.set_xlim(0.4, 0.85)\n for spine in ax.spines.values():\n spine.set_visible(True)\n spine.set_linewidth(1.2)\n spine.set_color(\"black\")\n ax.grid(axis=\"x\", alpha=0.2, linestyle=\"-\", linewidth=0.5)\n ax.set_axisbelow(True)\n plt.tight_layout()\n plt.savefig(_OUT / \"fig7_essentiality_bacteria.svg\", dpi=300, bbox_inches=\"tight\", transparent=True)\n plt.show()\n print(\"✓ 细菌基因本质性预测图已保存\")\n\n eukaryote_summary = eukaryote_data[\"summary\"]\n eukaryote_results = eukaryote_data[\"per_species\"]\n euk_plan = [\n (\"GC Content\\nBaseline\", \"gc_baseline\", \"gc_baseline\", gray_color),\n (\"Evo2 1B\", \"evo2_1b\", \"evo2_1b\", blue_color),\n (\"Evo2 7B\", \"evo2_7b\", \"evo2_7b\", blue_color),\n (\"Evo2 40B\", \"evo2_40b\", \"evo2_40b\", blue_color),\n (\"EVA 21M\", \"rnagen_30m\", \"rnagen_30m\", orange_color),\n (\"EVA 1.4B\", \"rnagen_1400m\", \"rnagen_1400m\", orange_color),\n ]\n model_data_euk = []\n for disp, pkey, skey, col in euk_plan:\n if skey not in eukaryote_summary:\n continue\n m, _ = _mean_std(eukaryote_summary, skey)\n model_data_euk.append((disp, pkey, m, col))\n if model_data_euk:\n fig, ax = plt.subplots(figsize=(10, 6))\n ax.set_facecolor(\"white\")\n fig.patch.set_facecolor(\"white\")\n y_positions = np.arange(len(model_data_euk))\n for i, (name, key, mean, color) in enumerate(model_data_euk):\n ax.barh(i, mean, height=0.75, color=color, alpha=0.8, edgecolor=\"black\", linewidth=1.2)\n np.random.seed(42)\n for i, (name, key, mean, color) in enumerate(model_data_euk):\n values = [r[key] for r in eukaryote_results if key in r and not (isinstance(r[key], float) and np.isnan(r[key]))]\n jitter = np.random.uniform(-0.2, 0.2, len(values))\n ax.scatter(values, i + jitter, c=\"black\", alpha=0.4, s=15, zorder=5)\n ax.axvline(x=0.5, color=\"gray\", linestyle=\"--\", linewidth=1.5, alpha=0.6)\n ax.set_yticks(y_positions)\n ax.set_yticklabels([m[0] for m in model_data_euk], fontsize=24)\n ax.set_xlabel(\"AUROC\", fontsize=26)\n ax.set_title(\"Zero-shot Gene Essentiality Prediction\", fontsize=26)\n ax.tick_params(axis=\"x\", labelsize=20)\n ax.set_xlim(0.4, 0.7)\n for spine in ax.spines.values():\n spine.set_visible(True)\n spine.set_linewidth(1.2)\n spine.set_color(\"black\")\n ax.grid(axis=\"x\", alpha=0.2, linestyle=\"-\", linewidth=0.5)\n ax.set_axisbelow(True)\n plt.tight_layout()\n plt.savefig(_OUT / \"fig7_essentiality_eukaryote.svg\", dpi=300, bbox_inches=\"tight\", transparent=True)\n plt.show()\n print(\"✓ 真核基因本质性预测图已保存\")\n"
+ "# 7. 基因本质性预测 (Zero-shot Essentiality)\nimport json\n\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport matplotlib.font_manager as fm\n\ntry:\n import reproduce_paths as RP\nexcept ModuleNotFoundError:\n from examples.notebooks.interpretability_analysis import reproduce_paths as RP\n\nif RP.try_register_arial():\n plt.rcParams[\"font.family\"] = \"Arial\"\nelse:\n plt.rcParams[\"font.family\"] = \"sans-serif\"\nplt.rcParams[\"text.color\"] = \"black\"\nplt.rcParams[\"axes.labelcolor\"] = \"black\"\nplt.rcParams[\"xtick.color\"] = \"black\"\nplt.rcParams[\"ytick.color\"] = \"black\"\n\n_INTER = RP.intermediate_dir()\n_OUT = RP.figures_dir()\n_OUT.mkdir(parents=True, exist_ok=True)\n\nbacteria_path = _INTER / \"bacteria_full_comparison_results.json\"\neuk_path = _INTER / \"eukaryote_gc_baseline_results.json\"\nif not bacteria_path.is_file() or not euk_path.is_file():\n print(\"⚠ 缺少 essentiality JSON,请运行 interpretability/zeroshot_essentiality 下 plot_*.py 生成后拷贝到 intermediate_data/\")\nelse:\n bacteria_data = json.load(open(bacteria_path))\n eukaryote_data = json.load(open(euk_path))\n\n orange_color = (255/255, 164/255, 91/255)\n blue_color = (115/255, 185/255, 231/255)\n gray_color = (207/255, 208/255, 209/255)\n\n def _mean_std(summary, key):\n block = summary.get(key) or {}\n return block.get(\"mean\", float(\"nan\")), block.get(\"std\", 0.0)\n\n bacteria_summary = bacteria_data[\"summary\"]\n bacteria_results = bacteria_data[\"per_species\"]\n bacteria_plan = [\n (\"Position\\nBaseline\", \"position\", \"position_baseline\", gray_color),\n (\"Evo2 1B\", \"evo2_1b\", \"evo2_1b\", blue_color),\n (\"Evo2 7B\", \"evo2_7b\", \"evo2_7b\", blue_color),\n (\"Evo2 40B\", \"evo2_40b\", \"evo2_40b\", blue_color),\n (\"EVA 21M\", \"rnagen_30m\", \"rnagen_30m\", orange_color),\n (\"EVA 1.4B\", \"rnagen_1400m\", \"rnagen_1400m\", orange_color),\n ]\n model_data_bacteria = []\n for disp, pkey, skey, col in bacteria_plan:\n if skey not in bacteria_summary:\n continue\n m, _ = _mean_std(bacteria_summary, skey)\n model_data_bacteria.append((disp, pkey, m, col))\n if not model_data_bacteria:\n print(\"⚠ bacteria JSON 无可用 summary 字段\")\n else:\n print(f\"细菌图: {len(model_data_bacteria)} 行(若 JSON 含 evo2_40b 则为 6 行)\")\n fig, ax = plt.subplots(figsize=(10, 6))\n ax.set_facecolor(\"white\")\n fig.patch.set_facecolor(\"white\")\n y_positions = np.arange(len(model_data_bacteria))\n for i, (name, key, mean, color) in enumerate(model_data_bacteria):\n ax.barh(i, mean, height=0.75, color=color, alpha=0.8, edgecolor=\"black\", linewidth=1.2)\n np.random.seed(42)\n for i, (name, key, mean, color) in enumerate(model_data_bacteria):\n values = [r[key] for r in bacteria_results if key in r and r[key] is not None]\n jitter = np.random.uniform(-0.2, 0.2, len(values))\n ax.scatter(values, i + jitter, c=\"black\", alpha=0.4, s=15, zorder=5)\n ax.axvline(x=0.5, color=\"gray\", linestyle=\"--\", linewidth=1.5, alpha=0.6)\n ax.set_yticks(y_positions)\n ax.set_yticklabels([m[0] for m in model_data_bacteria], fontsize=24)\n ax.set_xlabel(\"AUROC\", fontsize=26)\n ax.set_title(\"Zero-shot Gene Essentiality Prediction\", fontsize=26)\n ax.tick_params(axis=\"x\", labelsize=20)\n ax.set_xlim(0.4, 0.85)\n for spine in ax.spines.values():\n spine.set_visible(True)\n spine.set_linewidth(1.2)\n spine.set_color(\"black\")\n ax.grid(axis=\"x\", alpha=0.2, linestyle=\"-\", linewidth=0.5)\n ax.set_axisbelow(True)\n plt.tight_layout()\n plt.savefig(_OUT / \"fig7_essentiality_bacteria.svg\", dpi=300, bbox_inches=\"tight\", transparent=True)\n plt.show()\n print(\"✓ 细菌基因本质性预测图已保存\")\n\n eukaryote_summary = eukaryote_data[\"summary\"]\n eukaryote_results = eukaryote_data[\"per_species\"]\n euk_plan = [\n (\"GC Content\\nBaseline\", \"gc_baseline\", \"gc_baseline\", gray_color),\n (\"Evo2 1B\", \"evo2_1b\", \"evo2_1b\", blue_color),\n (\"Evo2 7B\", \"evo2_7b\", \"evo2_7b\", blue_color),\n (\"Evo2 40B\", \"evo2_40b\", \"evo2_40b\", blue_color),\n (\"EVA 21M\", \"rnagen_30m\", \"rnagen_30m\", orange_color),\n (\"EVA 1.4B\", \"rnagen_1400m\", \"rnagen_1400m\", orange_color),\n ]\n model_data_euk = []\n for disp, pkey, skey, col in euk_plan:\n if skey not in eukaryote_summary:\n continue\n m, _ = _mean_std(eukaryote_summary, skey)\n model_data_euk.append((disp, pkey, m, col))\n if model_data_euk:\n fig, ax = plt.subplots(figsize=(10, 6))\n ax.set_facecolor(\"white\")\n fig.patch.set_facecolor(\"white\")\n y_positions = np.arange(len(model_data_euk))\n for i, (name, key, mean, color) in enumerate(model_data_euk):\n ax.barh(i, mean, height=0.75, color=color, alpha=0.8, edgecolor=\"black\", linewidth=1.2)\n np.random.seed(42)\n for i, (name, key, mean, color) in enumerate(model_data_euk):\n values = [r[key] for r in eukaryote_results if key in r and not (isinstance(r[key], float) and np.isnan(r[key]))]\n jitter = np.random.uniform(-0.2, 0.2, len(values))\n ax.scatter(values, i + jitter, c=\"black\", alpha=0.4, s=15, zorder=5)\n ax.axvline(x=0.5, color=\"gray\", linestyle=\"--\", linewidth=1.5, alpha=0.6)\n ax.set_yticks(y_positions)\n ax.set_yticklabels([m[0] for m in model_data_euk], fontsize=24)\n ax.set_xlabel(\"AUROC\", fontsize=26)\n ax.set_title(\"Zero-shot Gene Essentiality Prediction\", fontsize=26)\n ax.tick_params(axis=\"x\", labelsize=20)\n ax.set_xlim(0.4, 0.7)\n for spine in ax.spines.values():\n spine.set_visible(True)\n spine.set_linewidth(1.2)\n spine.set_color(\"black\")\n ax.grid(axis=\"x\", alpha=0.2, linestyle=\"-\", linewidth=0.5)\n ax.set_axisbelow(True)\n plt.tight_layout()\n plt.savefig(_OUT / \"fig7_essentiality_eukaryote.svg\", dpi=300, bbox_inches=\"tight\", transparent=True)\n plt.show()\n print(\"✓ 真核基因本质性预测图已保存\")\n"
],
"outputs": [],
"execution_count": null
diff --git a/notebooks/interpretability_analysis/reproduce_paths.py b/examples/notebooks/interpretability_analysis/reproduce_paths.py
similarity index 98%
rename from notebooks/interpretability_analysis/reproduce_paths.py
rename to examples/notebooks/interpretability_analysis/reproduce_paths.py
index d3252be..0df3cb4 100644
--- a/notebooks/interpretability_analysis/reproduce_paths.py
+++ b/examples/notebooks/interpretability_analysis/reproduce_paths.py
@@ -30,7 +30,7 @@ def project_root() -> Path:
for candidate in here.parents:
if (candidate / ".git").exists():
return candidate
- return notebook_dir().parents[1]
+ return notebook_dir().parents[2]
def _resolve_user_path(raw: str) -> Path:
@@ -152,7 +152,7 @@ def try_register_arial() -> bool:
[
r / "fonts" / "arial.ttf",
r.parent / "fonts" / "arial.ttf",
- project_root() / "notebooks" / "design" / "fonts" / "arial.ttf",
+ project_root() / "examples" / "notebooks" / "design" / "fonts" / "arial.ttf",
]
)
extra = os.environ.get("ARIAL_FONT_PATH")
diff --git a/notebooks/interpretability_analysis/sae_repro_release/.gitignore b/examples/notebooks/interpretability_analysis/sae_repro_release/.gitignore
similarity index 100%
rename from notebooks/interpretability_analysis/sae_repro_release/.gitignore
rename to examples/notebooks/interpretability_analysis/sae_repro_release/.gitignore
diff --git a/examples/notebooks/interpretability_analysis/sae_repro_release/Dockerfile b/examples/notebooks/interpretability_analysis/sae_repro_release/Dockerfile
new file mode 100644
index 0000000..0eba9cb
--- /dev/null
+++ b/examples/notebooks/interpretability_analysis/sae_repro_release/Dockerfile
@@ -0,0 +1,18 @@
+# EVA SAE reproducibility image
+FROM pytorch/pytorch:2.5.1-cuda12.4-cudnn9-runtime
+
+ENV PYTHONDONTWRITEBYTECODE=1 \
+ PYTHONUNBUFFERED=1
+
+WORKDIR /workspace/EVA1
+
+COPY examples/notebooks/interpretability_analysis/sae_repro_release/requirements-sae-training.txt /tmp/requirements-sae-training.txt
+RUN pip install --no-cache-dir -r /tmp/requirements-sae-training.txt && rm /tmp/requirements-sae-training.txt
+
+COPY eva /workspace/EVA1/eva
+COPY examples/notebooks/interpretability_analysis/sae_repro_release /workspace/EVA1/examples/notebooks/interpretability_analysis/sae_repro_release
+
+RUN chmod +x /workspace/EVA1/examples/notebooks/interpretability_analysis/sae_repro_release/scripts/*.sh \
+ && chmod +x /workspace/EVA1/examples/notebooks/interpretability_analysis/sae_repro_release/scripts/*.py
+
+ENTRYPOINT ["/bin/bash"]
diff --git a/notebooks/interpretability_analysis/sae_repro_release/README.md b/examples/notebooks/interpretability_analysis/sae_repro_release/README.md
similarity index 69%
rename from notebooks/interpretability_analysis/sae_repro_release/README.md
rename to examples/notebooks/interpretability_analysis/sae_repro_release/README.md
index 52e6a19..4a01547 100644
--- a/notebooks/interpretability_analysis/sae_repro_release/README.md
+++ b/examples/notebooks/interpretability_analysis/sae_repro_release/README.md
@@ -6,11 +6,11 @@ This bundle reproduces two SAE training modes used in EVA interpretability analy
- `sae_L1_penalty`
Engineering smoke tests do not establish the provenance of the paper's SAE
-features. See [current validation and limitations](../../../docs/REPRODUCTION.md).
+features. See [current validation and limitations](../../../../docs/REPRODUCTION.md).
Set `HF_DATA_FASTA` explicitly to the intended training split; automatic largest-file
selection and fallback checkpoint substitution have been removed.
-All scripts are under `notebooks/interpretability_analysis/sae_repro_release/`.
+All scripts are under `examples/notebooks/interpretability_analysis/sae_repro_release/`.
## 1) Environment
@@ -18,7 +18,7 @@ All scripts are under `notebooks/interpretability_analysis/sae_repro_release/`.
```bash
cd /path/to/EVA1
-pip install -r notebooks/interpretability_analysis/sae_repro_release/requirements-sae-training.txt
+pip install -r examples/notebooks/interpretability_analysis/sae_repro_release/requirements-sae-training.txt
export EVA_SAE_LOCAL=1
```
@@ -28,13 +28,13 @@ The `.sh` scripts default to a running `eva-repro` container with source mounted
at `/eva`. Start it with the main reproduction guide, then run from the host:
```bash
-bash notebooks/interpretability_analysis/sae_repro_release/scripts/run_all_smoke.sh
+bash examples/notebooks/interpretability_analysis/sae_repro_release/scripts/run_all_smoke.sh
```
Override the container name only if needed:
```bash
-CONTAINER_NAME=eva-repro bash notebooks/interpretability_analysis/sae_repro_release/scripts/run_all_smoke.sh
+CONTAINER_NAME=eva-repro bash examples/notebooks/interpretability_analysis/sae_repro_release/scripts/run_all_smoke.sh
```
If you need a dedicated image instead, build from repo root:
@@ -42,7 +42,7 @@ If you need a dedicated image instead, build from repo root:
```bash
cd /path/to/EVA1
docker build \
- -f notebooks/interpretability_analysis/sae_repro_release/Dockerfile \
+ -f examples/notebooks/interpretability_analysis/sae_repro_release/Dockerfile \
-t eva-sae:latest \
.
```
@@ -99,32 +99,32 @@ Notes:
## 4) Validate environment and paths
```bash
-python notebooks/interpretability_analysis/sae_repro_release/scripts/validate_env.py
+python examples/notebooks/interpretability_analysis/sae_repro_release/scripts/validate_env.py
-bash notebooks/interpretability_analysis/sae_repro_release/scripts/check_hf_paths.sh batch_topk
-bash notebooks/interpretability_analysis/sae_repro_release/scripts/check_hf_paths.sh sae_l1_penalty
+bash examples/notebooks/interpretability_analysis/sae_repro_release/scripts/check_hf_paths.sh batch_topk
+bash examples/notebooks/interpretability_analysis/sae_repro_release/scripts/check_hf_paths.sh sae_l1_penalty
```
## 5) Smoke test (fast sanity check)
```bash
-bash notebooks/interpretability_analysis/sae_repro_release/scripts/run_all_smoke.sh
+bash examples/notebooks/interpretability_analysis/sae_repro_release/scripts/run_all_smoke.sh
```
## 6) Full training
```bash
-bash notebooks/interpretability_analysis/sae_repro_release/scripts/run_batch_topk_full.sh
-bash notebooks/interpretability_analysis/sae_repro_release/scripts/run_sae_l1_penalty_full.sh
+bash examples/notebooks/interpretability_analysis/sae_repro_release/scripts/run_batch_topk_full.sh
+bash examples/notebooks/interpretability_analysis/sae_repro_release/scripts/run_sae_l1_penalty_full.sh
# or run both sequentially
-bash notebooks/interpretability_analysis/sae_repro_release/scripts/run_all_full.sh
+bash examples/notebooks/interpretability_analysis/sae_repro_release/scripts/run_all_full.sh
```
## Output locations
-- Checkpoints: `notebooks/interpretability_analysis/sae_repro_release/outputs/*/checkpoints`
-- Logs: `notebooks/interpretability_analysis/sae_repro_release/logs`
+- Checkpoints: `examples/notebooks/interpretability_analysis/sae_repro_release/outputs/*/checkpoints`
+- Logs: `examples/notebooks/interpretability_analysis/sae_repro_release/logs`
## Reproducibility controls
diff --git a/notebooks/interpretability_analysis/sae_repro_release/configs/config_batch_topk_full.yaml b/examples/notebooks/interpretability_analysis/sae_repro_release/configs/config_batch_topk_full.yaml
similarity index 100%
rename from notebooks/interpretability_analysis/sae_repro_release/configs/config_batch_topk_full.yaml
rename to examples/notebooks/interpretability_analysis/sae_repro_release/configs/config_batch_topk_full.yaml
diff --git a/notebooks/interpretability_analysis/sae_repro_release/configs/config_batch_topk_smoke.yaml b/examples/notebooks/interpretability_analysis/sae_repro_release/configs/config_batch_topk_smoke.yaml
similarity index 100%
rename from notebooks/interpretability_analysis/sae_repro_release/configs/config_batch_topk_smoke.yaml
rename to examples/notebooks/interpretability_analysis/sae_repro_release/configs/config_batch_topk_smoke.yaml
diff --git a/notebooks/interpretability_analysis/sae_repro_release/configs/config_sae_l1_penalty_full.yaml b/examples/notebooks/interpretability_analysis/sae_repro_release/configs/config_sae_l1_penalty_full.yaml
similarity index 100%
rename from notebooks/interpretability_analysis/sae_repro_release/configs/config_sae_l1_penalty_full.yaml
rename to examples/notebooks/interpretability_analysis/sae_repro_release/configs/config_sae_l1_penalty_full.yaml
diff --git a/notebooks/interpretability_analysis/sae_repro_release/configs/config_sae_l1_penalty_smoke.yaml b/examples/notebooks/interpretability_analysis/sae_repro_release/configs/config_sae_l1_penalty_smoke.yaml
similarity index 100%
rename from notebooks/interpretability_analysis/sae_repro_release/configs/config_sae_l1_penalty_smoke.yaml
rename to examples/notebooks/interpretability_analysis/sae_repro_release/configs/config_sae_l1_penalty_smoke.yaml
diff --git a/notebooks/interpretability_analysis/sae_repro_release/requirements-sae-training.txt b/examples/notebooks/interpretability_analysis/sae_repro_release/requirements-sae-training.txt
similarity index 100%
rename from notebooks/interpretability_analysis/sae_repro_release/requirements-sae-training.txt
rename to examples/notebooks/interpretability_analysis/sae_repro_release/requirements-sae-training.txt
diff --git a/notebooks/interpretability_analysis/sae_repro_release/scripts/_ensure_eva_container.sh b/examples/notebooks/interpretability_analysis/sae_repro_release/scripts/_ensure_eva_container.sh
similarity index 92%
rename from notebooks/interpretability_analysis/sae_repro_release/scripts/_ensure_eva_container.sh
rename to examples/notebooks/interpretability_analysis/sae_repro_release/scripts/_ensure_eva_container.sh
index 1c9b0a4..e0361d9 100644
--- a/notebooks/interpretability_analysis/sae_repro_release/scripts/_ensure_eva_container.sh
+++ b/examples/notebooks/interpretability_analysis/sae_repro_release/scripts/_ensure_eva_container.sh
@@ -6,7 +6,7 @@ sae_in_eva_container() {
fi
local container_workdir="${CONTAINER_WORKDIR:-/eva}"
- [[ -f /.dockerenv && -d "$container_workdir/notebooks/interpretability_analysis/sae_repro_release" ]]
+ [[ -f /.dockerenv && -d "$container_workdir/examples/notebooks/interpretability_analysis/sae_repro_release" ]]
}
sae_require_eva_container() {
@@ -38,7 +38,7 @@ sae_require_eva_container() {
local script_dir script_abs repo_root script_rel container_script
script_dir="$(cd "$(dirname "$script_ref")" && pwd)"
script_abs="$script_dir/$(basename "$script_ref")"
- repo_root="$(cd "$script_dir/../../../.." && pwd)"
+ repo_root="$(cd "$script_dir/../../../../.." && pwd)"
if [[ "$script_abs" != "$repo_root/"* ]]; then
echo "ERROR: Cannot map script path into repo root: $script_abs" >&2
diff --git a/notebooks/interpretability_analysis/sae_repro_release/scripts/_resolve_paths.sh b/examples/notebooks/interpretability_analysis/sae_repro_release/scripts/_resolve_paths.sh
similarity index 98%
rename from notebooks/interpretability_analysis/sae_repro_release/scripts/_resolve_paths.sh
rename to examples/notebooks/interpretability_analysis/sae_repro_release/scripts/_resolve_paths.sh
index 3c37a73..e9fcb5e 100755
--- a/notebooks/interpretability_analysis/sae_repro_release/scripts/_resolve_paths.sh
+++ b/examples/notebooks/interpretability_analysis/sae_repro_release/scripts/_resolve_paths.sh
@@ -5,7 +5,7 @@ resolve_sae_paths() {
[[ "$method" == batch_topk || "$method" == sae_l1_penalty ]] || { printf '%s\n' 'Invalid SAE method' >&2; return 1; }
local script_dir
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
- export EVA_REPO_ROOT="${EVA_REPO_ROOT:-$(cd "$script_dir/../../../.." && pwd)}"
+ export EVA_REPO_ROOT="${EVA_REPO_ROOT:-$(cd "$script_dir/../../../../.." && pwd)}"
export HF_MODEL_ROOT="${HF_MODEL_ROOT:-$EVA_REPO_ROOT/checkpoint}"
if [[ -z "${SAE_CKPT_DIR:-}" ]]; then
if [[ "$method" == batch_topk ]]; then
diff --git a/notebooks/interpretability_analysis/sae_repro_release/scripts/check_hf_paths.sh b/examples/notebooks/interpretability_analysis/sae_repro_release/scripts/check_hf_paths.sh
similarity index 100%
rename from notebooks/interpretability_analysis/sae_repro_release/scripts/check_hf_paths.sh
rename to examples/notebooks/interpretability_analysis/sae_repro_release/scripts/check_hf_paths.sh
diff --git a/notebooks/interpretability_analysis/sae_repro_release/scripts/run_all_full.sh b/examples/notebooks/interpretability_analysis/sae_repro_release/scripts/run_all_full.sh
similarity index 100%
rename from notebooks/interpretability_analysis/sae_repro_release/scripts/run_all_full.sh
rename to examples/notebooks/interpretability_analysis/sae_repro_release/scripts/run_all_full.sh
diff --git a/notebooks/interpretability_analysis/sae_repro_release/scripts/run_all_smoke.sh b/examples/notebooks/interpretability_analysis/sae_repro_release/scripts/run_all_smoke.sh
similarity index 100%
rename from notebooks/interpretability_analysis/sae_repro_release/scripts/run_all_smoke.sh
rename to examples/notebooks/interpretability_analysis/sae_repro_release/scripts/run_all_smoke.sh
diff --git a/notebooks/interpretability_analysis/sae_repro_release/scripts/run_batch_topk_full.sh b/examples/notebooks/interpretability_analysis/sae_repro_release/scripts/run_batch_topk_full.sh
similarity index 100%
rename from notebooks/interpretability_analysis/sae_repro_release/scripts/run_batch_topk_full.sh
rename to examples/notebooks/interpretability_analysis/sae_repro_release/scripts/run_batch_topk_full.sh
diff --git a/notebooks/interpretability_analysis/sae_repro_release/scripts/run_batch_topk_smoke.sh b/examples/notebooks/interpretability_analysis/sae_repro_release/scripts/run_batch_topk_smoke.sh
similarity index 100%
rename from notebooks/interpretability_analysis/sae_repro_release/scripts/run_batch_topk_smoke.sh
rename to examples/notebooks/interpretability_analysis/sae_repro_release/scripts/run_batch_topk_smoke.sh
diff --git a/notebooks/interpretability_analysis/sae_repro_release/scripts/run_sae_l1_penalty_full.sh b/examples/notebooks/interpretability_analysis/sae_repro_release/scripts/run_sae_l1_penalty_full.sh
similarity index 100%
rename from notebooks/interpretability_analysis/sae_repro_release/scripts/run_sae_l1_penalty_full.sh
rename to examples/notebooks/interpretability_analysis/sae_repro_release/scripts/run_sae_l1_penalty_full.sh
diff --git a/notebooks/interpretability_analysis/sae_repro_release/scripts/run_sae_l1_penalty_smoke.sh b/examples/notebooks/interpretability_analysis/sae_repro_release/scripts/run_sae_l1_penalty_smoke.sh
similarity index 100%
rename from notebooks/interpretability_analysis/sae_repro_release/scripts/run_sae_l1_penalty_smoke.sh
rename to examples/notebooks/interpretability_analysis/sae_repro_release/scripts/run_sae_l1_penalty_smoke.sh
diff --git a/notebooks/interpretability_analysis/sae_repro_release/scripts/run_training.py b/examples/notebooks/interpretability_analysis/sae_repro_release/scripts/run_training.py
similarity index 97%
rename from notebooks/interpretability_analysis/sae_repro_release/scripts/run_training.py
rename to examples/notebooks/interpretability_analysis/sae_repro_release/scripts/run_training.py
index cb547ab..db39f1e 100755
--- a/notebooks/interpretability_analysis/sae_repro_release/scripts/run_training.py
+++ b/examples/notebooks/interpretability_analysis/sae_repro_release/scripts/run_training.py
@@ -23,10 +23,10 @@
def _find_repo_root(start: Path) -> Path:
p = start.resolve()
while p != p.parent:
- if (p / "eva").is_dir() and (p / "notebooks" / "interpretability_analysis" / "sae_repro_release").is_dir():
+ if (p / "eva").is_dir() and (p / "examples" / "notebooks" / "interpretability_analysis" / "sae_repro_release").is_dir():
return p
p = p.parent
- raise RuntimeError("Cannot locate EVA repo root containing eva/ and notebooks/interpretability_analysis/sae_repro_release")
+ raise RuntimeError("Cannot locate EVA repo root containing eva/ and examples/notebooks/interpretability_analysis/sae_repro_release")
REPO_ROOT = _find_repo_root(Path(__file__).resolve())
@@ -46,7 +46,7 @@ def _import_eva_components():
except ModuleNotFoundError as exc:
raise RuntimeError(
"Missing EVA training dependencies. Install "
- "'notebooks/interpretability_analysis/sae_repro_release/requirements-sae-training.txt' "
+ "'examples/notebooks/interpretability_analysis/sae_repro_release/requirements-sae-training.txt' "
"or use the provided Docker image."
) from exc
return EvaForCausalLM, EvaConfig, LineageRNATokenizer
@@ -477,7 +477,7 @@ def resolve_runtime_paths(cfg: dict, mode: str) -> tuple[str, str, str]:
out_root = os.environ.get(
"SAE_OUTPUT_ROOT",
- str(REPO_ROOT / "notebooks" / "interpretability_analysis" / "sae_repro_release" / "outputs" / mode_dir / "checkpoints"),
+ str(REPO_ROOT / "examples" / "notebooks" / "interpretability_analysis" / "sae_repro_release" / "outputs" / mode_dir / "checkpoints"),
)
cfg["paths"]["base"] = str(REPO_ROOT)
@@ -512,7 +512,7 @@ def main() -> None:
if device.type == "cuda":
torch.cuda.set_device(device)
- log_dir = REPO_ROOT / "notebooks" / "interpretability_analysis" / "sae_repro_release" / "logs"
+ log_dir = REPO_ROOT / "examples" / "notebooks" / "interpretability_analysis" / "sae_repro_release" / "logs"
log_dir.mkdir(parents=True, exist_ok=True)
run_id = f"{args.mode}_{time.strftime('%Y%m%d_%H%M%S')}"
log_file = log_dir / f"{run_id}.log"
diff --git a/notebooks/interpretability_analysis/sae_repro_release/scripts/validate_env.py b/examples/notebooks/interpretability_analysis/sae_repro_release/scripts/validate_env.py
similarity index 91%
rename from notebooks/interpretability_analysis/sae_repro_release/scripts/validate_env.py
rename to examples/notebooks/interpretability_analysis/sae_repro_release/scripts/validate_env.py
index 35c6150..4df8994 100755
--- a/notebooks/interpretability_analysis/sae_repro_release/scripts/validate_env.py
+++ b/examples/notebooks/interpretability_analysis/sae_repro_release/scripts/validate_env.py
@@ -10,7 +10,7 @@
from packaging.version import Version
HERE = Path(__file__).resolve()
-REPO_ROOT = HERE.parents[4]
+REPO_ROOT = HERE.parents[5]
sys.path.insert(0, str(REPO_ROOT))
MIN_VERSIONS = {
@@ -75,8 +75,8 @@ def check_repo_layout() -> list[str]:
errs = []
required = [
REPO_ROOT / "eva",
- REPO_ROOT / "notebooks" / "interpretability_analysis" / "sae_repro_release" / "configs",
- REPO_ROOT / "notebooks" / "interpretability_analysis" / "sae_repro_release" / "scripts" / "run_training.py",
+ REPO_ROOT / "examples" / "notebooks" / "interpretability_analysis" / "sae_repro_release" / "configs",
+ REPO_ROOT / "examples" / "notebooks" / "interpretability_analysis" / "sae_repro_release" / "scripts" / "run_training.py",
]
for p in required:
if not p.exists():
diff --git a/notebooks/pepper_broccoli_activity_replicates.csv b/examples/notebooks/pepper_broccoli_activity_replicates.csv
similarity index 100%
rename from notebooks/pepper_broccoli_activity_replicates.csv
rename to examples/notebooks/pepper_broccoli_activity_replicates.csv
diff --git a/notebooks/prediction/benchmark_reproduction.ipynb b/examples/notebooks/prediction/benchmark_reproduction.ipynb
similarity index 94%
rename from notebooks/prediction/benchmark_reproduction.ipynb
rename to examples/notebooks/prediction/benchmark_reproduction.ipynb
index 6f19421..9333d45 100644
--- a/notebooks/prediction/benchmark_reproduction.ipynb
+++ b/examples/notebooks/prediction/benchmark_reproduction.ipynb
@@ -50,7 +50,7 @@
"cell_type": "code",
"metadata": {},
"source": [
- "command = [sys.executable, str(ROOT / 'scripts/benchmark_release.py'), 'audit-reference', '--manifest', str(ROOT / 'reproduction/benchmark_release/reference_manifest.json'), '--data-root', str(ROOT / 'reproduction/benchmark_release/reference'), '--output', str(OUT / 'reference'), '--plot']\n",
+ "command = [sys.executable, str(ROOT / 'scripts/benchmark_release.py'), 'audit-reference', '--manifest', str(ROOT / 'examples/reproduction/benchmark_release/reference_manifest.json'), '--data-root', str(ROOT / 'examples/reproduction/benchmark_release/reference'), '--output', str(OUT / 'reference'), '--plot']\n",
"run = subprocess.run(command, capture_output=True, text=True)\n",
"print(run.stdout)\n",
"if run.returncode not in (0, 2):\n",
diff --git a/notebooks/prediction/bindmark_plots.ipynb b/examples/notebooks/prediction/bindmark_plots.ipynb
similarity index 99%
rename from notebooks/prediction/bindmark_plots.ipynb
rename to examples/notebooks/prediction/bindmark_plots.ipynb
index dfa3351..650939d 100644
--- a/notebooks/prediction/bindmark_plots.ipynb
+++ b/examples/notebooks/prediction/bindmark_plots.ipynb
@@ -27,7 +27,7 @@
"try:\n",
" import prediction_paths as PP\n",
"except ModuleNotFoundError:\n",
- " from notebooks.prediction import prediction_paths as PP\n",
+ " from examples.notebooks.prediction import prediction_paths as PP\n",
"\n",
"DATA_DIR = PP.data_dir()\n",
"FIGURES_DIR = PP.figures_dir()\n",
diff --git a/notebooks/prediction/data/mRNA/fasta/F7YBW8_MESOW_Ding_2023.fasta b/examples/notebooks/prediction/data/mRNA/fasta/F7YBW8_MESOW_Ding_2023.fasta
similarity index 100%
rename from notebooks/prediction/data/mRNA/fasta/F7YBW8_MESOW_Ding_2023.fasta
rename to examples/notebooks/prediction/data/mRNA/fasta/F7YBW8_MESOW_Ding_2023.fasta
diff --git a/notebooks/prediction/data/mRNA/fasta/GFP_AEQVI_Sarkisyan_2016.fasta b/examples/notebooks/prediction/data/mRNA/fasta/GFP_AEQVI_Sarkisyan_2016.fasta
similarity index 100%
rename from notebooks/prediction/data/mRNA/fasta/GFP_AEQVI_Sarkisyan_2016.fasta
rename to examples/notebooks/prediction/data/mRNA/fasta/GFP_AEQVI_Sarkisyan_2016.fasta
diff --git a/notebooks/prediction/data/mRNA/fasta/Julien_2016_mRNA.fasta b/examples/notebooks/prediction/data/mRNA/fasta/Julien_2016_mRNA.fasta
similarity index 100%
rename from notebooks/prediction/data/mRNA/fasta/Julien_2016_mRNA.fasta
rename to examples/notebooks/prediction/data/mRNA/fasta/Julien_2016_mRNA.fasta
diff --git a/notebooks/prediction/data/mRNA/fasta/Ke_2017_mRNA.fasta b/examples/notebooks/prediction/data/mRNA/fasta/Ke_2017_mRNA.fasta
similarity index 100%
rename from notebooks/prediction/data/mRNA/fasta/Ke_2017_mRNA.fasta
rename to examples/notebooks/prediction/data/mRNA/fasta/Ke_2017_mRNA.fasta
diff --git a/notebooks/prediction/data/mRNA/fasta/Rouskin_2024_mRNA.fasta b/examples/notebooks/prediction/data/mRNA/fasta/Rouskin_2024_mRNA.fasta
similarity index 100%
rename from notebooks/prediction/data/mRNA/fasta/Rouskin_2024_mRNA.fasta
rename to examples/notebooks/prediction/data/mRNA/fasta/Rouskin_2024_mRNA.fasta
diff --git a/notebooks/prediction/data/mRNA/label/F7YBW8_MESOW_Ding_2023_intensities.json b/examples/notebooks/prediction/data/mRNA/label/F7YBW8_MESOW_Ding_2023_intensities.json
similarity index 100%
rename from notebooks/prediction/data/mRNA/label/F7YBW8_MESOW_Ding_2023_intensities.json
rename to examples/notebooks/prediction/data/mRNA/label/F7YBW8_MESOW_Ding_2023_intensities.json
diff --git a/notebooks/prediction/data/mRNA/label/GFP_AEQVI_Sarkisyan_2016_intensities.json b/examples/notebooks/prediction/data/mRNA/label/GFP_AEQVI_Sarkisyan_2016_intensities.json
similarity index 100%
rename from notebooks/prediction/data/mRNA/label/GFP_AEQVI_Sarkisyan_2016_intensities.json
rename to examples/notebooks/prediction/data/mRNA/label/GFP_AEQVI_Sarkisyan_2016_intensities.json
diff --git a/notebooks/prediction/data/mRNA/label/Julien_2016_mRNA_intensities.json b/examples/notebooks/prediction/data/mRNA/label/Julien_2016_mRNA_intensities.json
similarity index 100%
rename from notebooks/prediction/data/mRNA/label/Julien_2016_mRNA_intensities.json
rename to examples/notebooks/prediction/data/mRNA/label/Julien_2016_mRNA_intensities.json
diff --git a/notebooks/prediction/data/mRNA/label/Ke_2017_mRNA_intensities.json b/examples/notebooks/prediction/data/mRNA/label/Ke_2017_mRNA_intensities.json
similarity index 100%
rename from notebooks/prediction/data/mRNA/label/Ke_2017_mRNA_intensities.json
rename to examples/notebooks/prediction/data/mRNA/label/Ke_2017_mRNA_intensities.json
diff --git a/notebooks/prediction/data/mRNA/label/Rouskin_2024_mRNA_intensities.json b/examples/notebooks/prediction/data/mRNA/label/Rouskin_2024_mRNA_intensities.json
similarity index 100%
rename from notebooks/prediction/data/mRNA/label/Rouskin_2024_mRNA_intensities.json
rename to examples/notebooks/prediction/data/mRNA/label/Rouskin_2024_mRNA_intensities.json
diff --git a/notebooks/prediction/data/mRNA_5datasets_spearman.csv b/examples/notebooks/prediction/data/mRNA_5datasets_spearman.csv
similarity index 100%
rename from notebooks/prediction/data/mRNA_5datasets_spearman.csv
rename to examples/notebooks/prediction/data/mRNA_5datasets_spearman.csv
diff --git a/notebooks/prediction/data/ncRNA/fasta/Andreasson_2020_glms.fasta b/examples/notebooks/prediction/data/ncRNA/fasta/Andreasson_2020_glms.fasta
similarity index 100%
rename from notebooks/prediction/data/ncRNA/fasta/Andreasson_2020_glms.fasta
rename to examples/notebooks/prediction/data/ncRNA/fasta/Andreasson_2020_glms.fasta
diff --git a/notebooks/prediction/data/ncRNA/fasta/Chen_2019_pepper.fasta b/examples/notebooks/prediction/data/ncRNA/fasta/Chen_2019_pepper.fasta
similarity index 100%
rename from notebooks/prediction/data/ncRNA/fasta/Chen_2019_pepper.fasta
rename to examples/notebooks/prediction/data/ncRNA/fasta/Chen_2019_pepper.fasta
diff --git a/notebooks/prediction/data/ncRNA/fasta/Chen_2024_myo.fasta b/examples/notebooks/prediction/data/ncRNA/fasta/Chen_2024_myo.fasta
similarity index 100%
rename from notebooks/prediction/data/ncRNA/fasta/Chen_2024_myo.fasta
rename to examples/notebooks/prediction/data/ncRNA/fasta/Chen_2024_myo.fasta
diff --git a/notebooks/prediction/data/ncRNA/fasta/Domingo_2018_tRNA.fasta b/examples/notebooks/prediction/data/ncRNA/fasta/Domingo_2018_tRNA.fasta
similarity index 100%
rename from notebooks/prediction/data/ncRNA/fasta/Domingo_2018_tRNA.fasta
rename to examples/notebooks/prediction/data/ncRNA/fasta/Domingo_2018_tRNA.fasta
diff --git a/notebooks/prediction/data/ncRNA/fasta/Janzen_2022_fam1b1_ribozyme.fasta b/examples/notebooks/prediction/data/ncRNA/fasta/Janzen_2022_fam1b1_ribozyme.fasta
similarity index 100%
rename from notebooks/prediction/data/ncRNA/fasta/Janzen_2022_fam1b1_ribozyme.fasta
rename to examples/notebooks/prediction/data/ncRNA/fasta/Janzen_2022_fam1b1_ribozyme.fasta
diff --git a/notebooks/prediction/data/ncRNA/fasta/Janzen_2022_fam21_ribozyme.fasta b/examples/notebooks/prediction/data/ncRNA/fasta/Janzen_2022_fam21_ribozyme.fasta
similarity index 100%
rename from notebooks/prediction/data/ncRNA/fasta/Janzen_2022_fam21_ribozyme.fasta
rename to examples/notebooks/prediction/data/ncRNA/fasta/Janzen_2022_fam21_ribozyme.fasta
diff --git a/notebooks/prediction/data/ncRNA/fasta/Janzen_2022_fam31_ribozyme.fasta b/examples/notebooks/prediction/data/ncRNA/fasta/Janzen_2022_fam31_ribozyme.fasta
similarity index 100%
rename from notebooks/prediction/data/ncRNA/fasta/Janzen_2022_fam31_ribozyme.fasta
rename to examples/notebooks/prediction/data/ncRNA/fasta/Janzen_2022_fam31_ribozyme.fasta
diff --git a/notebooks/prediction/data/ncRNA/fasta/Kobori_2015_ribozyme_j12.fasta b/examples/notebooks/prediction/data/ncRNA/fasta/Kobori_2015_ribozyme_j12.fasta
similarity index 100%
rename from notebooks/prediction/data/ncRNA/fasta/Kobori_2015_ribozyme_j12.fasta
rename to examples/notebooks/prediction/data/ncRNA/fasta/Kobori_2015_ribozyme_j12.fasta
diff --git a/notebooks/prediction/data/ncRNA/fasta/Li_2016_tRNA.fasta b/examples/notebooks/prediction/data/ncRNA/fasta/Li_2016_tRNA.fasta
similarity index 100%
rename from notebooks/prediction/data/ncRNA/fasta/Li_2016_tRNA.fasta
rename to examples/notebooks/prediction/data/ncRNA/fasta/Li_2016_tRNA.fasta
diff --git a/notebooks/prediction/data/ncRNA/fasta/Li_2023_clivia.fasta b/examples/notebooks/prediction/data/ncRNA/fasta/Li_2023_clivia.fasta
similarity index 100%
rename from notebooks/prediction/data/ncRNA/fasta/Li_2023_clivia.fasta
rename to examples/notebooks/prediction/data/ncRNA/fasta/Li_2023_clivia.fasta
diff --git a/notebooks/prediction/data/ncRNA/fasta/Michael_2014_tRNA.fasta b/examples/notebooks/prediction/data/ncRNA/fasta/Michael_2014_tRNA.fasta
similarity index 100%
rename from notebooks/prediction/data/ncRNA/fasta/Michael_2014_tRNA.fasta
rename to examples/notebooks/prediction/data/ncRNA/fasta/Michael_2014_tRNA.fasta
diff --git a/notebooks/prediction/data/ncRNA/fasta/Milena_2021_cata.fasta b/examples/notebooks/prediction/data/ncRNA/fasta/Milena_2021_cata.fasta
similarity index 100%
rename from notebooks/prediction/data/ncRNA/fasta/Milena_2021_cata.fasta
rename to examples/notebooks/prediction/data/ncRNA/fasta/Milena_2021_cata.fasta
diff --git a/notebooks/prediction/data/ncRNA/fasta/Zuo_2023_okra.fasta b/examples/notebooks/prediction/data/ncRNA/fasta/Zuo_2023_okra.fasta
similarity index 100%
rename from notebooks/prediction/data/ncRNA/fasta/Zuo_2023_okra.fasta
rename to examples/notebooks/prediction/data/ncRNA/fasta/Zuo_2023_okra.fasta
diff --git a/notebooks/prediction/data/ncRNA/label/Andreasson_2020_glms_intensities.json b/examples/notebooks/prediction/data/ncRNA/label/Andreasson_2020_glms_intensities.json
similarity index 100%
rename from notebooks/prediction/data/ncRNA/label/Andreasson_2020_glms_intensities.json
rename to examples/notebooks/prediction/data/ncRNA/label/Andreasson_2020_glms_intensities.json
diff --git a/notebooks/prediction/data/ncRNA/label/Chen_2019_pepper_intensities.json b/examples/notebooks/prediction/data/ncRNA/label/Chen_2019_pepper_intensities.json
similarity index 100%
rename from notebooks/prediction/data/ncRNA/label/Chen_2019_pepper_intensities.json
rename to examples/notebooks/prediction/data/ncRNA/label/Chen_2019_pepper_intensities.json
diff --git a/notebooks/prediction/data/ncRNA/label/Chen_2024_myo_intensities.json b/examples/notebooks/prediction/data/ncRNA/label/Chen_2024_myo_intensities.json
similarity index 100%
rename from notebooks/prediction/data/ncRNA/label/Chen_2024_myo_intensities.json
rename to examples/notebooks/prediction/data/ncRNA/label/Chen_2024_myo_intensities.json
diff --git a/notebooks/prediction/data/ncRNA/label/Domingo_2018_tRNA_intensities.json b/examples/notebooks/prediction/data/ncRNA/label/Domingo_2018_tRNA_intensities.json
similarity index 100%
rename from notebooks/prediction/data/ncRNA/label/Domingo_2018_tRNA_intensities.json
rename to examples/notebooks/prediction/data/ncRNA/label/Domingo_2018_tRNA_intensities.json
diff --git a/notebooks/prediction/data/ncRNA/label/Janzen_2022_fam1b1_ribozyme_intensities.json b/examples/notebooks/prediction/data/ncRNA/label/Janzen_2022_fam1b1_ribozyme_intensities.json
similarity index 100%
rename from notebooks/prediction/data/ncRNA/label/Janzen_2022_fam1b1_ribozyme_intensities.json
rename to examples/notebooks/prediction/data/ncRNA/label/Janzen_2022_fam1b1_ribozyme_intensities.json
diff --git a/notebooks/prediction/data/ncRNA/label/Janzen_2022_fam21_ribozyme_intensities.json b/examples/notebooks/prediction/data/ncRNA/label/Janzen_2022_fam21_ribozyme_intensities.json
similarity index 100%
rename from notebooks/prediction/data/ncRNA/label/Janzen_2022_fam21_ribozyme_intensities.json
rename to examples/notebooks/prediction/data/ncRNA/label/Janzen_2022_fam21_ribozyme_intensities.json
diff --git a/notebooks/prediction/data/ncRNA/label/Janzen_2022_fam31_ribozyme_intensities.json b/examples/notebooks/prediction/data/ncRNA/label/Janzen_2022_fam31_ribozyme_intensities.json
similarity index 100%
rename from notebooks/prediction/data/ncRNA/label/Janzen_2022_fam31_ribozyme_intensities.json
rename to examples/notebooks/prediction/data/ncRNA/label/Janzen_2022_fam31_ribozyme_intensities.json
diff --git a/notebooks/prediction/data/ncRNA/label/Kobori_2015_ribozyme_j12_intensities.json b/examples/notebooks/prediction/data/ncRNA/label/Kobori_2015_ribozyme_j12_intensities.json
similarity index 100%
rename from notebooks/prediction/data/ncRNA/label/Kobori_2015_ribozyme_j12_intensities.json
rename to examples/notebooks/prediction/data/ncRNA/label/Kobori_2015_ribozyme_j12_intensities.json
diff --git a/notebooks/prediction/data/ncRNA/label/Li_2016_tRNA_intensities.json b/examples/notebooks/prediction/data/ncRNA/label/Li_2016_tRNA_intensities.json
similarity index 100%
rename from notebooks/prediction/data/ncRNA/label/Li_2016_tRNA_intensities.json
rename to examples/notebooks/prediction/data/ncRNA/label/Li_2016_tRNA_intensities.json
diff --git a/notebooks/prediction/data/ncRNA/label/Li_2023_clivia_intensities.json b/examples/notebooks/prediction/data/ncRNA/label/Li_2023_clivia_intensities.json
similarity index 100%
rename from notebooks/prediction/data/ncRNA/label/Li_2023_clivia_intensities.json
rename to examples/notebooks/prediction/data/ncRNA/label/Li_2023_clivia_intensities.json
diff --git a/notebooks/prediction/data/ncRNA/label/Michael_2014_tRNA_intensities.json b/examples/notebooks/prediction/data/ncRNA/label/Michael_2014_tRNA_intensities.json
similarity index 100%
rename from notebooks/prediction/data/ncRNA/label/Michael_2014_tRNA_intensities.json
rename to examples/notebooks/prediction/data/ncRNA/label/Michael_2014_tRNA_intensities.json
diff --git a/notebooks/prediction/data/ncRNA/label/Milena_2021_cata_intensities.json b/examples/notebooks/prediction/data/ncRNA/label/Milena_2021_cata_intensities.json
similarity index 100%
rename from notebooks/prediction/data/ncRNA/label/Milena_2021_cata_intensities.json
rename to examples/notebooks/prediction/data/ncRNA/label/Milena_2021_cata_intensities.json
diff --git a/notebooks/prediction/data/ncRNA/label/Zuo_2023_okra_intensities.json b/examples/notebooks/prediction/data/ncRNA/label/Zuo_2023_okra_intensities.json
similarity index 100%
rename from notebooks/prediction/data/ncRNA/label/Zuo_2023_okra_intensities.json
rename to examples/notebooks/prediction/data/ncRNA/label/Zuo_2023_okra_intensities.json
diff --git a/notebooks/prediction/data/ncRNA_13datasets_spearman.csv b/examples/notebooks/prediction/data/ncRNA_13datasets_spearman.csv
similarity index 100%
rename from notebooks/prediction/data/ncRNA_13datasets_spearman.csv
rename to examples/notebooks/prediction/data/ncRNA_13datasets_spearman.csv
diff --git a/notebooks/prediction/data/protein/fasta/CBPA2_HUMAN_Tsuboyama_2023_1O6X.fasta b/examples/notebooks/prediction/data/protein/fasta/CBPA2_HUMAN_Tsuboyama_2023_1O6X.fasta
similarity index 100%
rename from notebooks/prediction/data/protein/fasta/CBPA2_HUMAN_Tsuboyama_2023_1O6X.fasta
rename to examples/notebooks/prediction/data/protein/fasta/CBPA2_HUMAN_Tsuboyama_2023_1O6X.fasta
diff --git a/notebooks/prediction/data/protein/fasta/DNJA1_HUMAN_Tsuboyama_2023_2LO1.fasta b/examples/notebooks/prediction/data/protein/fasta/DNJA1_HUMAN_Tsuboyama_2023_2LO1.fasta
similarity index 100%
rename from notebooks/prediction/data/protein/fasta/DNJA1_HUMAN_Tsuboyama_2023_2LO1.fasta
rename to examples/notebooks/prediction/data/protein/fasta/DNJA1_HUMAN_Tsuboyama_2023_2LO1.fasta
diff --git a/notebooks/prediction/data/protein/fasta/ERBB2_HUMAN_Elazar_2016.fasta b/examples/notebooks/prediction/data/protein/fasta/ERBB2_HUMAN_Elazar_2016.fasta
similarity index 100%
rename from notebooks/prediction/data/protein/fasta/ERBB2_HUMAN_Elazar_2016.fasta
rename to examples/notebooks/prediction/data/protein/fasta/ERBB2_HUMAN_Elazar_2016.fasta
diff --git a/notebooks/prediction/data/protein/fasta/GLPA_HUMAN_Elazar_2016.fasta b/examples/notebooks/prediction/data/protein/fasta/GLPA_HUMAN_Elazar_2016.fasta
similarity index 100%
rename from notebooks/prediction/data/protein/fasta/GLPA_HUMAN_Elazar_2016.fasta
rename to examples/notebooks/prediction/data/protein/fasta/GLPA_HUMAN_Elazar_2016.fasta
diff --git a/notebooks/prediction/data/protein/fasta/LYAM1_HUMAN_Elazar_2016.fasta b/examples/notebooks/prediction/data/protein/fasta/LYAM1_HUMAN_Elazar_2016.fasta
similarity index 100%
rename from notebooks/prediction/data/protein/fasta/LYAM1_HUMAN_Elazar_2016.fasta
rename to examples/notebooks/prediction/data/protein/fasta/LYAM1_HUMAN_Elazar_2016.fasta
diff --git a/notebooks/prediction/data/protein/fasta/NPC1_HUMAN_Erwood_2022_RPE1.fasta b/examples/notebooks/prediction/data/protein/fasta/NPC1_HUMAN_Erwood_2022_RPE1.fasta
similarity index 100%
rename from notebooks/prediction/data/protein/fasta/NPC1_HUMAN_Erwood_2022_RPE1.fasta
rename to examples/notebooks/prediction/data/protein/fasta/NPC1_HUMAN_Erwood_2022_RPE1.fasta
diff --git a/notebooks/prediction/data/protein/fasta/O15151_PF00641_299.fasta b/examples/notebooks/prediction/data/protein/fasta/O15151_PF00641_299.fasta
similarity index 100%
rename from notebooks/prediction/data/protein/fasta/O15151_PF00641_299.fasta
rename to examples/notebooks/prediction/data/protein/fasta/O15151_PF00641_299.fasta
diff --git a/notebooks/prediction/data/protein/fasta/PIN1_HUMAN_Tsuboyama_2023_1I6C.fasta b/examples/notebooks/prediction/data/protein/fasta/PIN1_HUMAN_Tsuboyama_2023_1I6C.fasta
similarity index 100%
rename from notebooks/prediction/data/protein/fasta/PIN1_HUMAN_Tsuboyama_2023_1I6C.fasta
rename to examples/notebooks/prediction/data/protein/fasta/PIN1_HUMAN_Tsuboyama_2023_1I6C.fasta
diff --git a/notebooks/prediction/data/protein/fasta/PITX2_HUMAN_Tsuboyama_2023_2L7M.fasta b/examples/notebooks/prediction/data/protein/fasta/PITX2_HUMAN_Tsuboyama_2023_2L7M.fasta
similarity index 100%
rename from notebooks/prediction/data/protein/fasta/PITX2_HUMAN_Tsuboyama_2023_2L7M.fasta
rename to examples/notebooks/prediction/data/protein/fasta/PITX2_HUMAN_Tsuboyama_2023_2L7M.fasta
diff --git a/notebooks/prediction/data/protein/fasta/Q13263_PF00628_620.fasta b/examples/notebooks/prediction/data/protein/fasta/Q13263_PF00628_620.fasta
similarity index 100%
rename from notebooks/prediction/data/protein/fasta/Q13263_PF00628_620.fasta
rename to examples/notebooks/prediction/data/protein/fasta/Q13263_PF00628_620.fasta
diff --git a/notebooks/prediction/data/protein/fasta/Q7Z5Q1_PF16366_513.fasta b/examples/notebooks/prediction/data/protein/fasta/Q7Z5Q1_PF16366_513.fasta
similarity index 100%
rename from notebooks/prediction/data/protein/fasta/Q7Z5Q1_PF16366_513.fasta
rename to examples/notebooks/prediction/data/protein/fasta/Q7Z5Q1_PF16366_513.fasta
diff --git a/notebooks/prediction/data/protein/fasta/Q8N1W1_PF00130_651.fasta b/examples/notebooks/prediction/data/protein/fasta/Q8N1W1_PF00130_651.fasta
similarity index 100%
rename from notebooks/prediction/data/protein/fasta/Q8N1W1_PF00130_651.fasta
rename to examples/notebooks/prediction/data/protein/fasta/Q8N1W1_PF00130_651.fasta
diff --git a/notebooks/prediction/data/protein/fasta/Q9HC78_PF00096_635.fasta b/examples/notebooks/prediction/data/protein/fasta/Q9HC78_PF00096_635.fasta
similarity index 100%
rename from notebooks/prediction/data/protein/fasta/Q9HC78_PF00096_635.fasta
rename to examples/notebooks/prediction/data/protein/fasta/Q9HC78_PF00096_635.fasta
diff --git a/notebooks/prediction/data/protein/fasta/Q9NU63_PF00096_176.fasta b/examples/notebooks/prediction/data/protein/fasta/Q9NU63_PF00096_176.fasta
similarity index 100%
rename from notebooks/prediction/data/protein/fasta/Q9NU63_PF00096_176.fasta
rename to examples/notebooks/prediction/data/protein/fasta/Q9NU63_PF00096_176.fasta
diff --git a/notebooks/prediction/data/protein/fasta/Q9UJQ4_PF00096_383.fasta b/examples/notebooks/prediction/data/protein/fasta/Q9UJQ4_PF00096_383.fasta
similarity index 100%
rename from notebooks/prediction/data/protein/fasta/Q9UJQ4_PF00096_383.fasta
rename to examples/notebooks/prediction/data/protein/fasta/Q9UJQ4_PF00096_383.fasta
diff --git a/notebooks/prediction/data/protein/fasta/Q9UJQ4_PF00096_627.fasta b/examples/notebooks/prediction/data/protein/fasta/Q9UJQ4_PF00096_627.fasta
similarity index 100%
rename from notebooks/prediction/data/protein/fasta/Q9UJQ4_PF00096_627.fasta
rename to examples/notebooks/prediction/data/protein/fasta/Q9UJQ4_PF00096_627.fasta
diff --git a/notebooks/prediction/data/protein/fasta/Q9UL15_PF02179_280.fasta b/examples/notebooks/prediction/data/protein/fasta/Q9UL15_PF02179_280.fasta
similarity index 100%
rename from notebooks/prediction/data/protein/fasta/Q9UL15_PF02179_280.fasta
rename to examples/notebooks/prediction/data/protein/fasta/Q9UL15_PF02179_280.fasta
diff --git a/notebooks/prediction/data/protein/fasta/Q9ULZ3_PF00619_114.fasta b/examples/notebooks/prediction/data/protein/fasta/Q9ULZ3_PF00619_114.fasta
similarity index 100%
rename from notebooks/prediction/data/protein/fasta/Q9ULZ3_PF00619_114.fasta
rename to examples/notebooks/prediction/data/protein/fasta/Q9ULZ3_PF00619_114.fasta
diff --git a/notebooks/prediction/data/protein/fasta/RASH_HUMAN_Bandaru_2017.fasta b/examples/notebooks/prediction/data/protein/fasta/RASH_HUMAN_Bandaru_2017.fasta
similarity index 100%
rename from notebooks/prediction/data/protein/fasta/RASH_HUMAN_Bandaru_2017.fasta
rename to examples/notebooks/prediction/data/protein/fasta/RASH_HUMAN_Bandaru_2017.fasta
diff --git a/notebooks/prediction/data/protein/fasta/RBP1_HUMAN_Tsuboyama_2023_2KWH.fasta b/examples/notebooks/prediction/data/protein/fasta/RBP1_HUMAN_Tsuboyama_2023_2KWH.fasta
similarity index 100%
rename from notebooks/prediction/data/protein/fasta/RBP1_HUMAN_Tsuboyama_2023_2KWH.fasta
rename to examples/notebooks/prediction/data/protein/fasta/RBP1_HUMAN_Tsuboyama_2023_2KWH.fasta
diff --git a/notebooks/prediction/data/protein/label/CBPA2_HUMAN_Tsuboyama_2023_1O6X_intensities.json b/examples/notebooks/prediction/data/protein/label/CBPA2_HUMAN_Tsuboyama_2023_1O6X_intensities.json
similarity index 100%
rename from notebooks/prediction/data/protein/label/CBPA2_HUMAN_Tsuboyama_2023_1O6X_intensities.json
rename to examples/notebooks/prediction/data/protein/label/CBPA2_HUMAN_Tsuboyama_2023_1O6X_intensities.json
diff --git a/notebooks/prediction/data/protein/label/DNJA1_HUMAN_Tsuboyama_2023_2LO1_intensities.json b/examples/notebooks/prediction/data/protein/label/DNJA1_HUMAN_Tsuboyama_2023_2LO1_intensities.json
similarity index 100%
rename from notebooks/prediction/data/protein/label/DNJA1_HUMAN_Tsuboyama_2023_2LO1_intensities.json
rename to examples/notebooks/prediction/data/protein/label/DNJA1_HUMAN_Tsuboyama_2023_2LO1_intensities.json
diff --git a/notebooks/prediction/data/protein/label/ERBB2_HUMAN_Elazar_2016_intensities.json b/examples/notebooks/prediction/data/protein/label/ERBB2_HUMAN_Elazar_2016_intensities.json
similarity index 100%
rename from notebooks/prediction/data/protein/label/ERBB2_HUMAN_Elazar_2016_intensities.json
rename to examples/notebooks/prediction/data/protein/label/ERBB2_HUMAN_Elazar_2016_intensities.json
diff --git a/notebooks/prediction/data/protein/label/GLPA_HUMAN_Elazar_2016_intensities.json b/examples/notebooks/prediction/data/protein/label/GLPA_HUMAN_Elazar_2016_intensities.json
similarity index 100%
rename from notebooks/prediction/data/protein/label/GLPA_HUMAN_Elazar_2016_intensities.json
rename to examples/notebooks/prediction/data/protein/label/GLPA_HUMAN_Elazar_2016_intensities.json
diff --git a/notebooks/prediction/data/protein/label/LYAM1_HUMAN_Elazar_2016_intensities.json b/examples/notebooks/prediction/data/protein/label/LYAM1_HUMAN_Elazar_2016_intensities.json
similarity index 100%
rename from notebooks/prediction/data/protein/label/LYAM1_HUMAN_Elazar_2016_intensities.json
rename to examples/notebooks/prediction/data/protein/label/LYAM1_HUMAN_Elazar_2016_intensities.json
diff --git a/notebooks/prediction/data/protein/label/NPC1_HUMAN_Erwood_2022_RPE1_intensities.json b/examples/notebooks/prediction/data/protein/label/NPC1_HUMAN_Erwood_2022_RPE1_intensities.json
similarity index 100%
rename from notebooks/prediction/data/protein/label/NPC1_HUMAN_Erwood_2022_RPE1_intensities.json
rename to examples/notebooks/prediction/data/protein/label/NPC1_HUMAN_Erwood_2022_RPE1_intensities.json
diff --git a/notebooks/prediction/data/protein/label/O15151_PF00641_299_intensities.json b/examples/notebooks/prediction/data/protein/label/O15151_PF00641_299_intensities.json
similarity index 100%
rename from notebooks/prediction/data/protein/label/O15151_PF00641_299_intensities.json
rename to examples/notebooks/prediction/data/protein/label/O15151_PF00641_299_intensities.json
diff --git a/notebooks/prediction/data/protein/label/PIN1_HUMAN_Tsuboyama_2023_1I6C_intensities.json b/examples/notebooks/prediction/data/protein/label/PIN1_HUMAN_Tsuboyama_2023_1I6C_intensities.json
similarity index 100%
rename from notebooks/prediction/data/protein/label/PIN1_HUMAN_Tsuboyama_2023_1I6C_intensities.json
rename to examples/notebooks/prediction/data/protein/label/PIN1_HUMAN_Tsuboyama_2023_1I6C_intensities.json
diff --git a/notebooks/prediction/data/protein/label/PITX2_HUMAN_Tsuboyama_2023_2L7M_intensities.json b/examples/notebooks/prediction/data/protein/label/PITX2_HUMAN_Tsuboyama_2023_2L7M_intensities.json
similarity index 100%
rename from notebooks/prediction/data/protein/label/PITX2_HUMAN_Tsuboyama_2023_2L7M_intensities.json
rename to examples/notebooks/prediction/data/protein/label/PITX2_HUMAN_Tsuboyama_2023_2L7M_intensities.json
diff --git a/notebooks/prediction/data/protein/label/Q13263_PF00628_620_intensities.json b/examples/notebooks/prediction/data/protein/label/Q13263_PF00628_620_intensities.json
similarity index 100%
rename from notebooks/prediction/data/protein/label/Q13263_PF00628_620_intensities.json
rename to examples/notebooks/prediction/data/protein/label/Q13263_PF00628_620_intensities.json
diff --git a/notebooks/prediction/data/protein/label/Q7Z5Q1_PF16366_513_intensities.json b/examples/notebooks/prediction/data/protein/label/Q7Z5Q1_PF16366_513_intensities.json
similarity index 100%
rename from notebooks/prediction/data/protein/label/Q7Z5Q1_PF16366_513_intensities.json
rename to examples/notebooks/prediction/data/protein/label/Q7Z5Q1_PF16366_513_intensities.json
diff --git a/notebooks/prediction/data/protein/label/Q8N1W1_PF00130_651_intensities.json b/examples/notebooks/prediction/data/protein/label/Q8N1W1_PF00130_651_intensities.json
similarity index 100%
rename from notebooks/prediction/data/protein/label/Q8N1W1_PF00130_651_intensities.json
rename to examples/notebooks/prediction/data/protein/label/Q8N1W1_PF00130_651_intensities.json
diff --git a/notebooks/prediction/data/protein/label/Q9HC78_PF00096_635_intensities.json b/examples/notebooks/prediction/data/protein/label/Q9HC78_PF00096_635_intensities.json
similarity index 100%
rename from notebooks/prediction/data/protein/label/Q9HC78_PF00096_635_intensities.json
rename to examples/notebooks/prediction/data/protein/label/Q9HC78_PF00096_635_intensities.json
diff --git a/notebooks/prediction/data/protein/label/Q9NU63_PF00096_176_intensities.json b/examples/notebooks/prediction/data/protein/label/Q9NU63_PF00096_176_intensities.json
similarity index 100%
rename from notebooks/prediction/data/protein/label/Q9NU63_PF00096_176_intensities.json
rename to examples/notebooks/prediction/data/protein/label/Q9NU63_PF00096_176_intensities.json
diff --git a/notebooks/prediction/data/protein/label/Q9UJQ4_PF00096_383_intensities.json b/examples/notebooks/prediction/data/protein/label/Q9UJQ4_PF00096_383_intensities.json
similarity index 100%
rename from notebooks/prediction/data/protein/label/Q9UJQ4_PF00096_383_intensities.json
rename to examples/notebooks/prediction/data/protein/label/Q9UJQ4_PF00096_383_intensities.json
diff --git a/notebooks/prediction/data/protein/label/Q9UJQ4_PF00096_627_intensities.json b/examples/notebooks/prediction/data/protein/label/Q9UJQ4_PF00096_627_intensities.json
similarity index 100%
rename from notebooks/prediction/data/protein/label/Q9UJQ4_PF00096_627_intensities.json
rename to examples/notebooks/prediction/data/protein/label/Q9UJQ4_PF00096_627_intensities.json
diff --git a/notebooks/prediction/data/protein/label/Q9UL15_PF02179_280_intensities.json b/examples/notebooks/prediction/data/protein/label/Q9UL15_PF02179_280_intensities.json
similarity index 100%
rename from notebooks/prediction/data/protein/label/Q9UL15_PF02179_280_intensities.json
rename to examples/notebooks/prediction/data/protein/label/Q9UL15_PF02179_280_intensities.json
diff --git a/notebooks/prediction/data/protein/label/Q9ULZ3_PF00619_114_intensities.json b/examples/notebooks/prediction/data/protein/label/Q9ULZ3_PF00619_114_intensities.json
similarity index 100%
rename from notebooks/prediction/data/protein/label/Q9ULZ3_PF00619_114_intensities.json
rename to examples/notebooks/prediction/data/protein/label/Q9ULZ3_PF00619_114_intensities.json
diff --git a/notebooks/prediction/data/protein/label/RASH_HUMAN_Bandaru_2017_intensities.json b/examples/notebooks/prediction/data/protein/label/RASH_HUMAN_Bandaru_2017_intensities.json
similarity index 100%
rename from notebooks/prediction/data/protein/label/RASH_HUMAN_Bandaru_2017_intensities.json
rename to examples/notebooks/prediction/data/protein/label/RASH_HUMAN_Bandaru_2017_intensities.json
diff --git a/notebooks/prediction/data/protein/label/RBP1_HUMAN_Tsuboyama_2023_2KWH_intensities.json b/examples/notebooks/prediction/data/protein/label/RBP1_HUMAN_Tsuboyama_2023_2KWH_intensities.json
similarity index 100%
rename from notebooks/prediction/data/protein/label/RBP1_HUMAN_Tsuboyama_2023_2KWH_intensities.json
rename to examples/notebooks/prediction/data/protein/label/RBP1_HUMAN_Tsuboyama_2023_2KWH_intensities.json
diff --git a/notebooks/prediction/data/protein_20datasets_spearman.csv b/examples/notebooks/prediction/data/protein_20datasets_spearman.csv
similarity index 100%
rename from notebooks/prediction/data/protein_20datasets_spearman.csv
rename to examples/notebooks/prediction/data/protein_20datasets_spearman.csv
diff --git a/notebooks/prediction/figures/fitness_prediction_merged_eukaryotic.svg b/examples/notebooks/prediction/figures/fitness_prediction_merged_eukaryotic.svg
similarity index 100%
rename from notebooks/prediction/figures/fitness_prediction_merged_eukaryotic.svg
rename to examples/notebooks/prediction/figures/fitness_prediction_merged_eukaryotic.svg
diff --git a/notebooks/prediction/figures/mrna_performance_5datasets.svg b/examples/notebooks/prediction/figures/mrna_performance_5datasets.svg
similarity index 100%
rename from notebooks/prediction/figures/mrna_performance_5datasets.svg
rename to examples/notebooks/prediction/figures/mrna_performance_5datasets.svg
diff --git a/notebooks/prediction/figures/ncrna_performance_y04.svg b/examples/notebooks/prediction/figures/ncrna_performance_y04.svg
similarity index 100%
rename from notebooks/prediction/figures/ncrna_performance_y04.svg
rename to examples/notebooks/prediction/figures/ncrna_performance_y04.svg
diff --git a/notebooks/prediction/figures/summary_merged_eukaryotic.csv b/examples/notebooks/prediction/figures/summary_merged_eukaryotic.csv
similarity index 100%
rename from notebooks/prediction/figures/summary_merged_eukaryotic.csv
rename to examples/notebooks/prediction/figures/summary_merged_eukaryotic.csv
diff --git a/notebooks/prediction/prediction_paths.py b/examples/notebooks/prediction/prediction_paths.py
similarity index 73%
rename from notebooks/prediction/prediction_paths.py
rename to examples/notebooks/prediction/prediction_paths.py
index 6ced626..f80e7f6 100644
--- a/notebooks/prediction/prediction_paths.py
+++ b/examples/notebooks/prediction/prediction_paths.py
@@ -4,7 +4,7 @@
def project_root() -> Path:
- return Path(__file__).resolve().parents[2]
+ return Path(__file__).resolve().parents[3]
def notebook_dir() -> Path:
@@ -22,4 +22,4 @@ def figures_dir() -> Path:
def font_path() -> Path:
- return project_root() / "notebooks" / "design" / "fonts" / "arial.ttf"
+ return project_root() / "examples" / "notebooks" / "design" / "fonts" / "arial.ttf"
diff --git a/notebooks/prediction/reproduce_prediction_figures.py b/examples/notebooks/prediction/reproduce_prediction_figures.py
similarity index 99%
rename from notebooks/prediction/reproduce_prediction_figures.py
rename to examples/notebooks/prediction/reproduce_prediction_figures.py
index db4a5b4..552c3ee 100644
--- a/notebooks/prediction/reproduce_prediction_figures.py
+++ b/examples/notebooks/prediction/reproduce_prediction_figures.py
@@ -17,7 +17,7 @@
try:
import prediction_paths as PP
except ModuleNotFoundError:
- from notebooks.prediction import prediction_paths as PP
+ from examples.notebooks.prediction import prediction_paths as PP
DATA_DIR = PP.data_dir()
diff --git a/notebooks/prediction/run_prediction_figures.sh b/examples/notebooks/prediction/run_prediction_figures.sh
similarity index 100%
rename from notebooks/prediction/run_prediction_figures.sh
rename to examples/notebooks/prediction/run_prediction_figures.sh
diff --git a/notebooks/tools/data_enrich_deplete/plot_rna_api.py b/examples/notebooks/tools/data_enrich_deplete/plot_rna_api.py
similarity index 100%
rename from notebooks/tools/data_enrich_deplete/plot_rna_api.py
rename to examples/notebooks/tools/data_enrich_deplete/plot_rna_api.py
diff --git a/notebooks/tools/data_enrich_deplete/rna_api_enrichment.pdf b/examples/notebooks/tools/data_enrich_deplete/rna_api_enrichment.pdf
similarity index 100%
rename from notebooks/tools/data_enrich_deplete/rna_api_enrichment.pdf
rename to examples/notebooks/tools/data_enrich_deplete/rna_api_enrichment.pdf
diff --git a/notebooks/tools/data_enrich_deplete/rna_api_enrichment.png b/examples/notebooks/tools/data_enrich_deplete/rna_api_enrichment.png
similarity index 100%
rename from notebooks/tools/data_enrich_deplete/rna_api_enrichment.png
rename to examples/notebooks/tools/data_enrich_deplete/rna_api_enrichment.png
diff --git a/notebooks/tools/data_enrich_deplete/rna_api_enrichment.svg b/examples/notebooks/tools/data_enrich_deplete/rna_api_enrichment.svg
similarity index 100%
rename from notebooks/tools/data_enrich_deplete/rna_api_enrichment.svg
rename to examples/notebooks/tools/data_enrich_deplete/rna_api_enrichment.svg
diff --git a/notebooks/tools/visualization/UMAP/umap_kmer_phylum_viz.py b/examples/notebooks/tools/visualization/UMAP/umap_kmer_phylum_viz.py
similarity index 100%
rename from notebooks/tools/visualization/UMAP/umap_kmer_phylum_viz.py
rename to examples/notebooks/tools/visualization/UMAP/umap_kmer_phylum_viz.py
diff --git a/reproduction/README.md b/examples/reproduction/README.md
similarity index 68%
rename from reproduction/README.md
rename to examples/reproduction/README.md
index d9971eb..8de9fa0 100644
--- a/reproduction/README.md
+++ b/examples/reproduction/README.md
@@ -3,7 +3,8 @@
This directory keeps the resources that identify a computation: input and model
manifests, scoring protocols, reference results, file hashes and dated validation
records. It also contains the portable comparison-model runner and preserved
-historical implementations. It is not a second set of analysis notebooks.
+historical implementations. Start with the [examples index](../README.md)
+to choose a workflow.
| Folder | Contents |
|---|---|
@@ -16,16 +17,16 @@ historical implementations. It is not a second set of analysis notebooks.
## How the folders work together
-- [`notebooks/`](../notebooks/README.md) provides interactive analysis and plots,
+- [`examples/notebooks/`](../notebooks/README.md) provides interactive analysis and plots,
with supporting data and helpers beside the notebooks.
-- [`scripts/`](../scripts/) provides command-line entry points for repeatable runs.
+- [`scripts/`](../../scripts/) provides command-line entry points for repeatable runs.
- This directory supplies fixed resources and reference evidence for those runs.
For example, `scripts/reproduce_milena.py` uses the manifest here, reads the assay
-inputs under `notebooks/prediction/data/`, and calls the preserved scoring
+inputs under `examples/notebooks/prediction/data/`, and calls the preserved scoring
implementation under `benchmark/`. Its output is written to the directory you
-select. The [task guide](../docs/REPRODUCTION.md) documents the complete command.
+select. The [task guide](../../docs/REPRODUCTION.md) documents the complete command.
Files under `upstream/` and `archive/` preserve historical versions, while
-current commands are listed in the task guides. These folders retain their
-existing paths because manifests and scripts refer to them.
+current commands are listed in the task guides. Dated records retain the paths
+and commit identities recorded at the time; current entry points use this layout.
diff --git a/reproduction/benchmark/checkpoint_metadata/21m_mid_86006/config.json b/examples/reproduction/benchmark/checkpoint_metadata/21m_mid_86006/config.json
similarity index 100%
rename from reproduction/benchmark/checkpoint_metadata/21m_mid_86006/config.json
rename to examples/reproduction/benchmark/checkpoint_metadata/21m_mid_86006/config.json
diff --git a/reproduction/benchmark/checkpoint_metadata/21m_mid_86006/tokenizer.json b/examples/reproduction/benchmark/checkpoint_metadata/21m_mid_86006/tokenizer.json
similarity index 100%
rename from reproduction/benchmark/checkpoint_metadata/21m_mid_86006/tokenizer.json
rename to examples/reproduction/benchmark/checkpoint_metadata/21m_mid_86006/tokenizer.json
diff --git a/reproduction/benchmark/checkpoint_metadata/21m_mid_86006/training_config.yaml b/examples/reproduction/benchmark/checkpoint_metadata/21m_mid_86006/training_config.yaml
similarity index 100%
rename from reproduction/benchmark/checkpoint_metadata/21m_mid_86006/training_config.yaml
rename to examples/reproduction/benchmark/checkpoint_metadata/21m_mid_86006/training_config.yaml
diff --git a/reproduction/benchmark/checkpoint_metadata/legacy_tokenizer_cache.json b/examples/reproduction/benchmark/checkpoint_metadata/legacy_tokenizer_cache.json
similarity index 100%
rename from reproduction/benchmark/checkpoint_metadata/legacy_tokenizer_cache.json
rename to examples/reproduction/benchmark/checkpoint_metadata/legacy_tokenizer_cache.json
diff --git a/reproduction/benchmark/fixtures/milena/Milena_2021_cata.fasta b/examples/reproduction/benchmark/fixtures/milena/Milena_2021_cata.fasta
similarity index 100%
rename from reproduction/benchmark/fixtures/milena/Milena_2021_cata.fasta
rename to examples/reproduction/benchmark/fixtures/milena/Milena_2021_cata.fasta
diff --git a/reproduction/benchmark/fixtures/milena/Milena_2021_cata_intensities.json b/examples/reproduction/benchmark/fixtures/milena/Milena_2021_cata_intensities.json
similarity index 100%
rename from reproduction/benchmark/fixtures/milena/Milena_2021_cata_intensities.json
rename to examples/reproduction/benchmark/fixtures/milena/Milena_2021_cata_intensities.json
diff --git a/reproduction/benchmark/fixtures/milena/UPDATE_LOG.md b/examples/reproduction/benchmark/fixtures/milena/UPDATE_LOG.md
similarity index 100%
rename from reproduction/benchmark/fixtures/milena/UPDATE_LOG.md
rename to examples/reproduction/benchmark/fixtures/milena/UPDATE_LOG.md
diff --git a/reproduction/benchmark/fixtures/milena/early_filtered_scores.json b/examples/reproduction/benchmark/fixtures/milena/early_filtered_scores.json
similarity index 100%
rename from reproduction/benchmark/fixtures/milena/early_filtered_scores.json
rename to examples/reproduction/benchmark/fixtures/milena/early_filtered_scores.json
diff --git a/reproduction/benchmark/fixtures/milena/eva_1_4b_wotag_scores.json b/examples/reproduction/benchmark/fixtures/milena/eva_1_4b_wotag_scores.json
similarity index 100%
rename from reproduction/benchmark/fixtures/milena/eva_1_4b_wotag_scores.json
rename to examples/reproduction/benchmark/fixtures/milena/eva_1_4b_wotag_scores.json
diff --git a/reproduction/benchmark/fixtures/milena/first_round_21m_report.json b/examples/reproduction/benchmark/fixtures/milena/first_round_21m_report.json
similarity index 100%
rename from reproduction/benchmark/fixtures/milena/first_round_21m_report.json
rename to examples/reproduction/benchmark/fixtures/milena/first_round_21m_report.json
diff --git a/reproduction/benchmark/fixtures/milena/ncRNA_13datasets_spearman.csv b/examples/reproduction/benchmark/fixtures/milena/ncRNA_13datasets_spearman.csv
similarity index 100%
rename from reproduction/benchmark/fixtures/milena/ncRNA_13datasets_spearman.csv
rename to examples/reproduction/benchmark/fixtures/milena/ncRNA_13datasets_spearman.csv
diff --git a/reproduction/benchmark/historical_14b/checkpoint_metadata/config.json b/examples/reproduction/benchmark/historical_14b/checkpoint_metadata/config.json
similarity index 100%
rename from reproduction/benchmark/historical_14b/checkpoint_metadata/config.json
rename to examples/reproduction/benchmark/historical_14b/checkpoint_metadata/config.json
diff --git a/reproduction/benchmark/historical_14b/checkpoint_metadata/eval_results_stage1.json b/examples/reproduction/benchmark/historical_14b/checkpoint_metadata/eval_results_stage1.json
similarity index 100%
rename from reproduction/benchmark/historical_14b/checkpoint_metadata/eval_results_stage1.json
rename to examples/reproduction/benchmark/historical_14b/checkpoint_metadata/eval_results_stage1.json
diff --git a/reproduction/benchmark/historical_14b/checkpoint_metadata/special_tokens_map.json b/examples/reproduction/benchmark/historical_14b/checkpoint_metadata/special_tokens_map.json
similarity index 100%
rename from reproduction/benchmark/historical_14b/checkpoint_metadata/special_tokens_map.json
rename to examples/reproduction/benchmark/historical_14b/checkpoint_metadata/special_tokens_map.json
diff --git a/reproduction/benchmark/historical_14b/checkpoint_metadata/tokenizer.json b/examples/reproduction/benchmark/historical_14b/checkpoint_metadata/tokenizer.json
similarity index 100%
rename from reproduction/benchmark/historical_14b/checkpoint_metadata/tokenizer.json
rename to examples/reproduction/benchmark/historical_14b/checkpoint_metadata/tokenizer.json
diff --git a/reproduction/benchmark/historical_14b/checkpoint_metadata/tokenizer_config.json b/examples/reproduction/benchmark/historical_14b/checkpoint_metadata/tokenizer_config.json
similarity index 100%
rename from reproduction/benchmark/historical_14b/checkpoint_metadata/tokenizer_config.json
rename to examples/reproduction/benchmark/historical_14b/checkpoint_metadata/tokenizer_config.json
diff --git a/reproduction/benchmark/historical_14b/checkpoint_metadata/training_config.yaml b/examples/reproduction/benchmark/historical_14b/checkpoint_metadata/training_config.yaml
similarity index 100%
rename from reproduction/benchmark/historical_14b/checkpoint_metadata/training_config.yaml
rename to examples/reproduction/benchmark/historical_14b/checkpoint_metadata/training_config.yaml
diff --git a/reproduction/benchmark/historical_14b/checkpoint_metadata/vocab.json b/examples/reproduction/benchmark/historical_14b/checkpoint_metadata/vocab.json
similarity index 100%
rename from reproduction/benchmark/historical_14b/checkpoint_metadata/vocab.json
rename to examples/reproduction/benchmark/historical_14b/checkpoint_metadata/vocab.json
diff --git a/reproduction/benchmark/historical_14b/eva/__init__.py b/examples/reproduction/benchmark/historical_14b/eva/__init__.py
similarity index 100%
rename from reproduction/benchmark/historical_14b/eva/__init__.py
rename to examples/reproduction/benchmark/historical_14b/eva/__init__.py
diff --git a/reproduction/benchmark/historical_14b/eva/attention.py b/examples/reproduction/benchmark/historical_14b/eva/attention.py
similarity index 100%
rename from reproduction/benchmark/historical_14b/eva/attention.py
rename to examples/reproduction/benchmark/historical_14b/eva/attention.py
diff --git a/reproduction/benchmark/historical_14b/eva/causal_lm.py b/examples/reproduction/benchmark/historical_14b/eva/causal_lm.py
similarity index 100%
rename from reproduction/benchmark/historical_14b/eva/causal_lm.py
rename to examples/reproduction/benchmark/historical_14b/eva/causal_lm.py
diff --git a/reproduction/benchmark/historical_14b/eva/config.py b/examples/reproduction/benchmark/historical_14b/eva/config.py
similarity index 100%
rename from reproduction/benchmark/historical_14b/eva/config.py
rename to examples/reproduction/benchmark/historical_14b/eva/config.py
diff --git a/reproduction/benchmark/historical_14b/eva/device.py b/examples/reproduction/benchmark/historical_14b/eva/device.py
similarity index 100%
rename from reproduction/benchmark/historical_14b/eva/device.py
rename to examples/reproduction/benchmark/historical_14b/eva/device.py
diff --git a/reproduction/benchmark/historical_14b/eva/lineage_tokenizer.py b/examples/reproduction/benchmark/historical_14b/eva/lineage_tokenizer.py
similarity index 100%
rename from reproduction/benchmark/historical_14b/eva/lineage_tokenizer.py
rename to examples/reproduction/benchmark/historical_14b/eva/lineage_tokenizer.py
diff --git a/reproduction/benchmark/historical_14b/eva/mb_wrapper.py b/examples/reproduction/benchmark/historical_14b/eva/mb_wrapper.py
similarity index 100%
rename from reproduction/benchmark/historical_14b/eva/mb_wrapper.py
rename to examples/reproduction/benchmark/historical_14b/eva/mb_wrapper.py
diff --git a/reproduction/benchmark/historical_14b/eva/modeling.py b/examples/reproduction/benchmark/historical_14b/eva/modeling.py
similarity index 100%
rename from reproduction/benchmark/historical_14b/eva/modeling.py
rename to examples/reproduction/benchmark/historical_14b/eva/modeling.py
diff --git a/reproduction/benchmark/historical_14b/eva/moe.py b/examples/reproduction/benchmark/historical_14b/eva/moe.py
similarity index 100%
rename from reproduction/benchmark/historical_14b/eva/moe.py
rename to examples/reproduction/benchmark/historical_14b/eva/moe.py
diff --git a/reproduction/benchmark/historical_14b/eva/tokenizer.json b/examples/reproduction/benchmark/historical_14b/eva/tokenizer.json
similarity index 100%
rename from reproduction/benchmark/historical_14b/eva/tokenizer.json
rename to examples/reproduction/benchmark/historical_14b/eva/tokenizer.json
diff --git a/reproduction/benchmark/historical_14b/tools/generate.py b/examples/reproduction/benchmark/historical_14b/tools/generate.py
similarity index 100%
rename from reproduction/benchmark/historical_14b/tools/generate.py
rename to examples/reproduction/benchmark/historical_14b/tools/generate.py
diff --git a/reproduction/benchmark/historical_14b/tools/predict.py b/examples/reproduction/benchmark/historical_14b/tools/predict.py
similarity index 100%
rename from reproduction/benchmark/historical_14b/tools/predict.py
rename to examples/reproduction/benchmark/historical_14b/tools/predict.py
diff --git a/reproduction/benchmark/historical_14b/tools/utils/__init__.py b/examples/reproduction/benchmark/historical_14b/tools/utils/__init__.py
similarity index 100%
rename from reproduction/benchmark/historical_14b/tools/utils/__init__.py
rename to examples/reproduction/benchmark/historical_14b/tools/utils/__init__.py
diff --git a/reproduction/benchmark/historical_14b/tools/utils/conditions/__init__.py b/examples/reproduction/benchmark/historical_14b/tools/utils/conditions/__init__.py
similarity index 100%
rename from reproduction/benchmark/historical_14b/tools/utils/conditions/__init__.py
rename to examples/reproduction/benchmark/historical_14b/tools/utils/conditions/__init__.py
diff --git a/reproduction/benchmark/historical_14b/tools/utils/conditions/condition.py b/examples/reproduction/benchmark/historical_14b/tools/utils/conditions/condition.py
similarity index 100%
rename from reproduction/benchmark/historical_14b/tools/utils/conditions/condition.py
rename to examples/reproduction/benchmark/historical_14b/tools/utils/conditions/condition.py
diff --git a/reproduction/benchmark/historical_14b/tools/utils/conditions/lineage.py b/examples/reproduction/benchmark/historical_14b/tools/utils/conditions/lineage.py
similarity index 100%
rename from reproduction/benchmark/historical_14b/tools/utils/conditions/lineage.py
rename to examples/reproduction/benchmark/historical_14b/tools/utils/conditions/lineage.py
diff --git a/reproduction/benchmark/historical_14b/tools/utils/conditions/rna_types.py b/examples/reproduction/benchmark/historical_14b/tools/utils/conditions/rna_types.py
similarity index 100%
rename from reproduction/benchmark/historical_14b/tools/utils/conditions/rna_types.py
rename to examples/reproduction/benchmark/historical_14b/tools/utils/conditions/rna_types.py
diff --git a/reproduction/benchmark/historical_14b/tools/utils/data/codon_tables.py b/examples/reproduction/benchmark/historical_14b/tools/utils/data/codon_tables.py
similarity index 100%
rename from reproduction/benchmark/historical_14b/tools/utils/data/codon_tables.py
rename to examples/reproduction/benchmark/historical_14b/tools/utils/data/codon_tables.py
diff --git a/reproduction/benchmark/historical_14b/tools/utils/generators/__init__.py b/examples/reproduction/benchmark/historical_14b/tools/utils/generators/__init__.py
similarity index 100%
rename from reproduction/benchmark/historical_14b/tools/utils/generators/__init__.py
rename to examples/reproduction/benchmark/historical_14b/tools/utils/generators/__init__.py
diff --git a/reproduction/benchmark/historical_14b/tools/utils/generators/base.py b/examples/reproduction/benchmark/historical_14b/tools/utils/generators/base.py
similarity index 100%
rename from reproduction/benchmark/historical_14b/tools/utils/generators/base.py
rename to examples/reproduction/benchmark/historical_14b/tools/utils/generators/base.py
diff --git a/reproduction/benchmark/historical_14b/tools/utils/generators/clm.py b/examples/reproduction/benchmark/historical_14b/tools/utils/generators/clm.py
similarity index 100%
rename from reproduction/benchmark/historical_14b/tools/utils/generators/clm.py
rename to examples/reproduction/benchmark/historical_14b/tools/utils/generators/clm.py
diff --git a/reproduction/benchmark/historical_14b/tools/utils/generators/glm.py b/examples/reproduction/benchmark/historical_14b/tools/utils/generators/glm.py
similarity index 100%
rename from reproduction/benchmark/historical_14b/tools/utils/generators/glm.py
rename to examples/reproduction/benchmark/historical_14b/tools/utils/generators/glm.py
diff --git a/reproduction/benchmark/historical_14b/tools/utils/io/__init__.py b/examples/reproduction/benchmark/historical_14b/tools/utils/io/__init__.py
similarity index 100%
rename from reproduction/benchmark/historical_14b/tools/utils/io/__init__.py
rename to examples/reproduction/benchmark/historical_14b/tools/utils/io/__init__.py
diff --git a/reproduction/benchmark/historical_14b/tools/utils/io/fasta.py b/examples/reproduction/benchmark/historical_14b/tools/utils/io/fasta.py
similarity index 100%
rename from reproduction/benchmark/historical_14b/tools/utils/io/fasta.py
rename to examples/reproduction/benchmark/historical_14b/tools/utils/io/fasta.py
diff --git a/reproduction/benchmark/historical_14b/tools/utils/model/__init__.py b/examples/reproduction/benchmark/historical_14b/tools/utils/model/__init__.py
similarity index 100%
rename from reproduction/benchmark/historical_14b/tools/utils/model/__init__.py
rename to examples/reproduction/benchmark/historical_14b/tools/utils/model/__init__.py
diff --git a/reproduction/benchmark/historical_14b/tools/utils/model/loader.py b/examples/reproduction/benchmark/historical_14b/tools/utils/model/loader.py
similarity index 100%
rename from reproduction/benchmark/historical_14b/tools/utils/model/loader.py
rename to examples/reproduction/benchmark/historical_14b/tools/utils/model/loader.py
diff --git a/reproduction/benchmark/historical_14b/tools/utils/model/sampler.py b/examples/reproduction/benchmark/historical_14b/tools/utils/model/sampler.py
similarity index 100%
rename from reproduction/benchmark/historical_14b/tools/utils/model/sampler.py
rename to examples/reproduction/benchmark/historical_14b/tools/utils/model/sampler.py
diff --git a/reproduction/benchmark/historical_14b/tools/utils/scorers/__init__.py b/examples/reproduction/benchmark/historical_14b/tools/utils/scorers/__init__.py
similarity index 100%
rename from reproduction/benchmark/historical_14b/tools/utils/scorers/__init__.py
rename to examples/reproduction/benchmark/historical_14b/tools/utils/scorers/__init__.py
diff --git a/reproduction/benchmark/historical_14b/tools/utils/scorers/base.py b/examples/reproduction/benchmark/historical_14b/tools/utils/scorers/base.py
similarity index 100%
rename from reproduction/benchmark/historical_14b/tools/utils/scorers/base.py
rename to examples/reproduction/benchmark/historical_14b/tools/utils/scorers/base.py
diff --git a/reproduction/benchmark/historical_14b/tools/utils/scorers/clm_scorer.py b/examples/reproduction/benchmark/historical_14b/tools/utils/scorers/clm_scorer.py
similarity index 100%
rename from reproduction/benchmark/historical_14b/tools/utils/scorers/clm_scorer.py
rename to examples/reproduction/benchmark/historical_14b/tools/utils/scorers/clm_scorer.py
diff --git a/reproduction/benchmark/historical_14b/tools/utils/scorers/score_worker.py b/examples/reproduction/benchmark/historical_14b/tools/utils/scorers/score_worker.py
similarity index 100%
rename from reproduction/benchmark/historical_14b/tools/utils/scorers/score_worker.py
rename to examples/reproduction/benchmark/historical_14b/tools/utils/scorers/score_worker.py
diff --git a/reproduction/benchmark/historical_14b/tools/utils/task/__init__.py b/examples/reproduction/benchmark/historical_14b/tools/utils/task/__init__.py
similarity index 100%
rename from reproduction/benchmark/historical_14b/tools/utils/task/__init__.py
rename to examples/reproduction/benchmark/historical_14b/tools/utils/task/__init__.py
diff --git a/reproduction/benchmark/historical_14b/tools/utils/task/config.py b/examples/reproduction/benchmark/historical_14b/tools/utils/task/config.py
similarity index 100%
rename from reproduction/benchmark/historical_14b/tools/utils/task/config.py
rename to examples/reproduction/benchmark/historical_14b/tools/utils/task/config.py
diff --git a/reproduction/benchmark/historical_14b/tools/utils/task/runner.py b/examples/reproduction/benchmark/historical_14b/tools/utils/task/runner.py
similarity index 100%
rename from reproduction/benchmark/historical_14b/tools/utils/task/runner.py
rename to examples/reproduction/benchmark/historical_14b/tools/utils/task/runner.py
diff --git a/reproduction/benchmark/historical_14b/tools/utils/task/worker.py b/examples/reproduction/benchmark/historical_14b/tools/utils/task/worker.py
similarity index 100%
rename from reproduction/benchmark/historical_14b/tools/utils/task/worker.py
rename to examples/reproduction/benchmark/historical_14b/tools/utils/task/worker.py
diff --git a/reproduction/benchmark/historical_14b_manifest.json b/examples/reproduction/benchmark/historical_14b_manifest.json
similarity index 100%
rename from reproduction/benchmark/historical_14b_manifest.json
rename to examples/reproduction/benchmark/historical_14b_manifest.json
diff --git a/reproduction/benchmark/provenance.json b/examples/reproduction/benchmark/provenance.json
similarity index 100%
rename from reproduction/benchmark/provenance.json
rename to examples/reproduction/benchmark/provenance.json
diff --git a/reproduction/benchmark/run_competitor.py b/examples/reproduction/benchmark/run_competitor.py
similarity index 99%
rename from reproduction/benchmark/run_competitor.py
rename to examples/reproduction/benchmark/run_competitor.py
index c0c52b7..ef74d66 100644
--- a/reproduction/benchmark/run_competitor.py
+++ b/examples/reproduction/benchmark/run_competitor.py
@@ -15,7 +15,7 @@
import sys
from pathlib import Path
-ROOT = Path(__file__).resolve().parents[2]
+ROOT = Path(__file__).resolve().parents[3]
sys.path.insert(0, str(ROOT))
from scripts.reproduce_historical_benchmark import finite_vector, read_fasta, sha256, spearman
diff --git a/reproduction/benchmark/run_historical_14b.py b/examples/reproduction/benchmark/run_historical_14b.py
similarity index 100%
rename from reproduction/benchmark/run_historical_14b.py
rename to examples/reproduction/benchmark/run_historical_14b.py
diff --git a/reproduction/benchmark/training_metadata/1400m_midtrain_25500.yaml b/examples/reproduction/benchmark/training_metadata/1400m_midtrain_25500.yaml
similarity index 100%
rename from reproduction/benchmark/training_metadata/1400m_midtrain_25500.yaml
rename to examples/reproduction/benchmark/training_metadata/1400m_midtrain_25500.yaml
diff --git a/reproduction/benchmark/training_metadata/1400m_pretrain_14500.yaml b/examples/reproduction/benchmark/training_metadata/1400m_pretrain_14500.yaml
similarity index 100%
rename from reproduction/benchmark/training_metadata/1400m_pretrain_14500.yaml
rename to examples/reproduction/benchmark/training_metadata/1400m_pretrain_14500.yaml
diff --git a/reproduction/benchmark/training_metadata/21m_pretrain_31006.yaml b/examples/reproduction/benchmark/training_metadata/21m_pretrain_31006.yaml
similarity index 100%
rename from reproduction/benchmark/training_metadata/21m_pretrain_31006.yaml
rename to examples/reproduction/benchmark/training_metadata/21m_pretrain_31006.yaml
diff --git a/reproduction/benchmark/upstream/eva_checkpoint_model/model/__init__.py b/examples/reproduction/benchmark/upstream/eva_checkpoint_model/model/__init__.py
similarity index 100%
rename from reproduction/benchmark/upstream/eva_checkpoint_model/model/__init__.py
rename to examples/reproduction/benchmark/upstream/eva_checkpoint_model/model/__init__.py
diff --git a/reproduction/benchmark/upstream/eva_checkpoint_model/model/attention.py b/examples/reproduction/benchmark/upstream/eva_checkpoint_model/model/attention.py
similarity index 100%
rename from reproduction/benchmark/upstream/eva_checkpoint_model/model/attention.py
rename to examples/reproduction/benchmark/upstream/eva_checkpoint_model/model/attention.py
diff --git a/reproduction/benchmark/upstream/eva_checkpoint_model/model/batch_preparer.py b/examples/reproduction/benchmark/upstream/eva_checkpoint_model/model/batch_preparer.py
similarity index 100%
rename from reproduction/benchmark/upstream/eva_checkpoint_model/model/batch_preparer.py
rename to examples/reproduction/benchmark/upstream/eva_checkpoint_model/model/batch_preparer.py
diff --git a/reproduction/benchmark/upstream/eva_checkpoint_model/model/causal_lm.py b/examples/reproduction/benchmark/upstream/eva_checkpoint_model/model/causal_lm.py
similarity index 100%
rename from reproduction/benchmark/upstream/eva_checkpoint_model/model/causal_lm.py
rename to examples/reproduction/benchmark/upstream/eva_checkpoint_model/model/causal_lm.py
diff --git a/reproduction/benchmark/upstream/eva_checkpoint_model/model/config.py b/examples/reproduction/benchmark/upstream/eva_checkpoint_model/model/config.py
similarity index 100%
rename from reproduction/benchmark/upstream/eva_checkpoint_model/model/config.py
rename to examples/reproduction/benchmark/upstream/eva_checkpoint_model/model/config.py
diff --git a/reproduction/benchmark/upstream/eva_checkpoint_model/model/lineage_tokenizer.json b/examples/reproduction/benchmark/upstream/eva_checkpoint_model/model/lineage_tokenizer.json
similarity index 100%
rename from reproduction/benchmark/upstream/eva_checkpoint_model/model/lineage_tokenizer.json
rename to examples/reproduction/benchmark/upstream/eva_checkpoint_model/model/lineage_tokenizer.json
diff --git a/reproduction/benchmark/upstream/eva_checkpoint_model/model/lineage_tokenizer.py b/examples/reproduction/benchmark/upstream/eva_checkpoint_model/model/lineage_tokenizer.py
similarity index 100%
rename from reproduction/benchmark/upstream/eva_checkpoint_model/model/lineage_tokenizer.py
rename to examples/reproduction/benchmark/upstream/eva_checkpoint_model/model/lineage_tokenizer.py
diff --git a/reproduction/benchmark/upstream/eva_checkpoint_model/model/mb_wrapper.py b/examples/reproduction/benchmark/upstream/eva_checkpoint_model/model/mb_wrapper.py
similarity index 100%
rename from reproduction/benchmark/upstream/eva_checkpoint_model/model/mb_wrapper.py
rename to examples/reproduction/benchmark/upstream/eva_checkpoint_model/model/mb_wrapper.py
diff --git a/reproduction/benchmark/upstream/eva_checkpoint_model/model/modeling.py b/examples/reproduction/benchmark/upstream/eva_checkpoint_model/model/modeling.py
similarity index 100%
rename from reproduction/benchmark/upstream/eva_checkpoint_model/model/modeling.py
rename to examples/reproduction/benchmark/upstream/eva_checkpoint_model/model/modeling.py
diff --git a/reproduction/benchmark/upstream/eva_checkpoint_model/model/moe.py b/examples/reproduction/benchmark/upstream/eva_checkpoint_model/model/moe.py
similarity index 100%
rename from reproduction/benchmark/upstream/eva_checkpoint_model/model/moe.py
rename to examples/reproduction/benchmark/upstream/eva_checkpoint_model/model/moe.py
diff --git a/reproduction/benchmark/upstream/eva_checkpoint_model/model/tokenizer.json b/examples/reproduction/benchmark/upstream/eva_checkpoint_model/model/tokenizer.json
similarity index 100%
rename from reproduction/benchmark/upstream/eva_checkpoint_model/model/tokenizer.json
rename to examples/reproduction/benchmark/upstream/eva_checkpoint_model/model/tokenizer.json
diff --git a/reproduction/benchmark/upstream/eva_checkpoint_model/model/tokenizer.py b/examples/reproduction/benchmark/upstream/eva_checkpoint_model/model/tokenizer.py
similarity index 100%
rename from reproduction/benchmark/upstream/eva_checkpoint_model/model/tokenizer.py
rename to examples/reproduction/benchmark/upstream/eva_checkpoint_model/model/tokenizer.py
diff --git a/reproduction/benchmark/upstream/eva_checkpoint_model/model1018/__init__.py b/examples/reproduction/benchmark/upstream/eva_checkpoint_model/model1018/__init__.py
similarity index 100%
rename from reproduction/benchmark/upstream/eva_checkpoint_model/model1018/__init__.py
rename to examples/reproduction/benchmark/upstream/eva_checkpoint_model/model1018/__init__.py
diff --git a/reproduction/benchmark/upstream/eva_checkpoint_model/model1018/attention.py b/examples/reproduction/benchmark/upstream/eva_checkpoint_model/model1018/attention.py
similarity index 100%
rename from reproduction/benchmark/upstream/eva_checkpoint_model/model1018/attention.py
rename to examples/reproduction/benchmark/upstream/eva_checkpoint_model/model1018/attention.py
diff --git a/reproduction/benchmark/upstream/eva_checkpoint_model/model1018/batch_preparer.py b/examples/reproduction/benchmark/upstream/eva_checkpoint_model/model1018/batch_preparer.py
similarity index 100%
rename from reproduction/benchmark/upstream/eva_checkpoint_model/model1018/batch_preparer.py
rename to examples/reproduction/benchmark/upstream/eva_checkpoint_model/model1018/batch_preparer.py
diff --git a/reproduction/benchmark/upstream/eva_checkpoint_model/model1018/causal_lm.py b/examples/reproduction/benchmark/upstream/eva_checkpoint_model/model1018/causal_lm.py
similarity index 100%
rename from reproduction/benchmark/upstream/eva_checkpoint_model/model1018/causal_lm.py
rename to examples/reproduction/benchmark/upstream/eva_checkpoint_model/model1018/causal_lm.py
diff --git a/reproduction/benchmark/upstream/eva_checkpoint_model/model1018/config.py b/examples/reproduction/benchmark/upstream/eva_checkpoint_model/model1018/config.py
similarity index 100%
rename from reproduction/benchmark/upstream/eva_checkpoint_model/model1018/config.py
rename to examples/reproduction/benchmark/upstream/eva_checkpoint_model/model1018/config.py
diff --git a/reproduction/benchmark/upstream/eva_checkpoint_model/model1018/lineage_tokenizer.json b/examples/reproduction/benchmark/upstream/eva_checkpoint_model/model1018/lineage_tokenizer.json
similarity index 100%
rename from reproduction/benchmark/upstream/eva_checkpoint_model/model1018/lineage_tokenizer.json
rename to examples/reproduction/benchmark/upstream/eva_checkpoint_model/model1018/lineage_tokenizer.json
diff --git a/reproduction/benchmark/upstream/eva_checkpoint_model/model1018/lineage_tokenizer.py b/examples/reproduction/benchmark/upstream/eva_checkpoint_model/model1018/lineage_tokenizer.py
similarity index 100%
rename from reproduction/benchmark/upstream/eva_checkpoint_model/model1018/lineage_tokenizer.py
rename to examples/reproduction/benchmark/upstream/eva_checkpoint_model/model1018/lineage_tokenizer.py
diff --git a/reproduction/benchmark/upstream/eva_checkpoint_model/model1018/mb_wrapper.py b/examples/reproduction/benchmark/upstream/eva_checkpoint_model/model1018/mb_wrapper.py
similarity index 100%
rename from reproduction/benchmark/upstream/eva_checkpoint_model/model1018/mb_wrapper.py
rename to examples/reproduction/benchmark/upstream/eva_checkpoint_model/model1018/mb_wrapper.py
diff --git a/reproduction/benchmark/upstream/eva_checkpoint_model/model1018/modeling.py b/examples/reproduction/benchmark/upstream/eva_checkpoint_model/model1018/modeling.py
similarity index 100%
rename from reproduction/benchmark/upstream/eva_checkpoint_model/model1018/modeling.py
rename to examples/reproduction/benchmark/upstream/eva_checkpoint_model/model1018/modeling.py
diff --git a/reproduction/benchmark/upstream/eva_checkpoint_model/model1018/moe.py b/examples/reproduction/benchmark/upstream/eva_checkpoint_model/model1018/moe.py
similarity index 100%
rename from reproduction/benchmark/upstream/eva_checkpoint_model/model1018/moe.py
rename to examples/reproduction/benchmark/upstream/eva_checkpoint_model/model1018/moe.py
diff --git a/reproduction/benchmark/upstream/eva_checkpoint_model/model1018/token_config.py b/examples/reproduction/benchmark/upstream/eva_checkpoint_model/model1018/token_config.py
similarity index 100%
rename from reproduction/benchmark/upstream/eva_checkpoint_model/model1018/token_config.py
rename to examples/reproduction/benchmark/upstream/eva_checkpoint_model/model1018/token_config.py
diff --git a/reproduction/benchmark/upstream/eva_checkpoint_model/usage/1_likelihood_scoring.py b/examples/reproduction/benchmark/upstream/eva_checkpoint_model/usage/1_likelihood_scoring.py
similarity index 100%
rename from reproduction/benchmark/upstream/eva_checkpoint_model/usage/1_likelihood_scoring.py
rename to examples/reproduction/benchmark/upstream/eva_checkpoint_model/usage/1_likelihood_scoring.py
diff --git a/reproduction/benchmark/upstream/eva_checkpoint_model/usage/2_autoregressive_generation.py b/examples/reproduction/benchmark/upstream/eva_checkpoint_model/usage/2_autoregressive_generation.py
similarity index 100%
rename from reproduction/benchmark/upstream/eva_checkpoint_model/usage/2_autoregressive_generation.py
rename to examples/reproduction/benchmark/upstream/eva_checkpoint_model/usage/2_autoregressive_generation.py
diff --git a/reproduction/benchmark/upstream/eva_checkpoint_model/usage/3_infilling_generation.py b/examples/reproduction/benchmark/upstream/eva_checkpoint_model/usage/3_infilling_generation.py
similarity index 100%
rename from reproduction/benchmark/upstream/eva_checkpoint_model/usage/3_infilling_generation.py
rename to examples/reproduction/benchmark/upstream/eva_checkpoint_model/usage/3_infilling_generation.py
diff --git a/reproduction/benchmark/upstream/eva_checkpoint_model/usage/position_ablation.py b/examples/reproduction/benchmark/upstream/eva_checkpoint_model/usage/position_ablation.py
similarity index 100%
rename from reproduction/benchmark/upstream/eva_checkpoint_model/usage/position_ablation.py
rename to examples/reproduction/benchmark/upstream/eva_checkpoint_model/usage/position_ablation.py
diff --git a/reproduction/benchmark/upstream/eva_checkpoint_model/usage/usage_helpers.py b/examples/reproduction/benchmark/upstream/eva_checkpoint_model/usage/usage_helpers.py
similarity index 100%
rename from reproduction/benchmark/upstream/eva_checkpoint_model/usage/usage_helpers.py
rename to examples/reproduction/benchmark/upstream/eva_checkpoint_model/usage/usage_helpers.py
diff --git a/reproduction/benchmark/upstream/eva_checkpoint_model/usage/utils.py b/examples/reproduction/benchmark/upstream/eva_checkpoint_model/usage/utils.py
similarity index 100%
rename from reproduction/benchmark/upstream/eva_checkpoint_model/usage/utils.py
rename to examples/reproduction/benchmark/upstream/eva_checkpoint_model/usage/utils.py
diff --git a/finetune/utils/__init__.py b/examples/reproduction/benchmark/upstream/eva_checkpoint_model/utils/__init__.py
similarity index 100%
rename from finetune/utils/__init__.py
rename to examples/reproduction/benchmark/upstream/eva_checkpoint_model/utils/__init__.py
diff --git a/reproduction/benchmark/upstream/eva_checkpoint_model/utils/device.py b/examples/reproduction/benchmark/upstream/eva_checkpoint_model/utils/device.py
similarity index 100%
rename from reproduction/benchmark/upstream/eva_checkpoint_model/utils/device.py
rename to examples/reproduction/benchmark/upstream/eva_checkpoint_model/utils/device.py
diff --git a/reproduction/benchmark/upstream/eva_checkpoint_model/utils/distributed.py b/examples/reproduction/benchmark/upstream/eva_checkpoint_model/utils/distributed.py
similarity index 100%
rename from reproduction/benchmark/upstream/eva_checkpoint_model/utils/distributed.py
rename to examples/reproduction/benchmark/upstream/eva_checkpoint_model/utils/distributed.py
diff --git a/reproduction/benchmark/upstream/eva_checkpoint_model/utils/logging.py b/examples/reproduction/benchmark/upstream/eva_checkpoint_model/utils/logging.py
similarity index 100%
rename from reproduction/benchmark/upstream/eva_checkpoint_model/utils/logging.py
rename to examples/reproduction/benchmark/upstream/eva_checkpoint_model/utils/logging.py
diff --git a/reproduction/benchmark/upstream/eva_checkpoint_model/utils/memory.py b/examples/reproduction/benchmark/upstream/eva_checkpoint_model/utils/memory.py
similarity index 100%
rename from reproduction/benchmark/upstream/eva_checkpoint_model/utils/memory.py
rename to examples/reproduction/benchmark/upstream/eva_checkpoint_model/utils/memory.py
diff --git a/reproduction/benchmark/upstream/eva_checkpoint_model/utils/progress_tracker.py b/examples/reproduction/benchmark/upstream/eva_checkpoint_model/utils/progress_tracker.py
similarity index 100%
rename from reproduction/benchmark/upstream/eva_checkpoint_model/utils/progress_tracker.py
rename to examples/reproduction/benchmark/upstream/eva_checkpoint_model/utils/progress_tracker.py
diff --git a/reproduction/benchmark/upstream/protein/dna_rna_tools/__init__.py b/examples/reproduction/benchmark/upstream/protein/dna_rna_tools/__init__.py
similarity index 100%
rename from reproduction/benchmark/upstream/protein/dna_rna_tools/__init__.py
rename to examples/reproduction/benchmark/upstream/protein/dna_rna_tools/__init__.py
diff --git a/reproduction/benchmark/upstream/protein/dna_rna_tools/codon_frequency_manager.py b/examples/reproduction/benchmark/upstream/protein/dna_rna_tools/codon_frequency_manager.py
similarity index 100%
rename from reproduction/benchmark/upstream/protein/dna_rna_tools/codon_frequency_manager.py
rename to examples/reproduction/benchmark/upstream/protein/dna_rna_tools/codon_frequency_manager.py
diff --git a/reproduction/benchmark/upstream/protein/dna_rna_tools/dna_rna_converter.py b/examples/reproduction/benchmark/upstream/protein/dna_rna_tools/dna_rna_converter.py
similarity index 100%
rename from reproduction/benchmark/upstream/protein/dna_rna_tools/dna_rna_converter.py
rename to examples/reproduction/benchmark/upstream/protein/dna_rna_tools/dna_rna_converter.py
diff --git a/reproduction/benchmark/upstream/protein/dna_rna_tools/example_codon_frequency.py b/examples/reproduction/benchmark/upstream/protein/dna_rna_tools/example_codon_frequency.py
similarity index 100%
rename from reproduction/benchmark/upstream/protein/dna_rna_tools/example_codon_frequency.py
rename to examples/reproduction/benchmark/upstream/protein/dna_rna_tools/example_codon_frequency.py
diff --git a/reproduction/benchmark/upstream/protein/dna_rna_tools/protein_to_rna_likelihood_pipeline.py b/examples/reproduction/benchmark/upstream/protein/dna_rna_tools/protein_to_rna_likelihood_pipeline.py
similarity index 100%
rename from reproduction/benchmark/upstream/protein/dna_rna_tools/protein_to_rna_likelihood_pipeline.py
rename to examples/reproduction/benchmark/upstream/protein/dna_rna_tools/protein_to_rna_likelihood_pipeline.py
diff --git a/reproduction/benchmark/upstream/protein/dna_rna_tools/quick_start.py b/examples/reproduction/benchmark/upstream/protein/dna_rna_tools/quick_start.py
similarity index 100%
rename from reproduction/benchmark/upstream/protein/dna_rna_tools/quick_start.py
rename to examples/reproduction/benchmark/upstream/protein/dna_rna_tools/quick_start.py
diff --git a/reproduction/benchmark/upstream/protein/dna_rna_tools/test_codon_frequency.py b/examples/reproduction/benchmark/upstream/protein/dna_rna_tools/test_codon_frequency.py
similarity index 100%
rename from reproduction/benchmark/upstream/protein/dna_rna_tools/test_codon_frequency.py
rename to examples/reproduction/benchmark/upstream/protein/dna_rna_tools/test_codon_frequency.py
diff --git a/reproduction/benchmark/upstream/protein/dna_rna_tools/test_dna_rna_converter.py b/examples/reproduction/benchmark/upstream/protein/dna_rna_tools/test_dna_rna_converter.py
similarity index 100%
rename from reproduction/benchmark/upstream/protein/dna_rna_tools/test_dna_rna_converter.py
rename to examples/reproduction/benchmark/upstream/protein/dna_rna_tools/test_dna_rna_converter.py
diff --git a/reproduction/benchmark/upstream/protein/dna_rna_tools/test_reverse_translation.py b/examples/reproduction/benchmark/upstream/protein/dna_rna_tools/test_reverse_translation.py
similarity index 100%
rename from reproduction/benchmark/upstream/protein/dna_rna_tools/test_reverse_translation.py
rename to examples/reproduction/benchmark/upstream/protein/dna_rna_tools/test_reverse_translation.py
diff --git a/reproduction/benchmark/upstream/protein/dna_rna_tools/view_results.py b/examples/reproduction/benchmark/upstream/protein/dna_rna_tools/view_results.py
similarity index 100%
rename from reproduction/benchmark/upstream/protein/dna_rna_tools/view_results.py
rename to examples/reproduction/benchmark/upstream/protein/dna_rna_tools/view_results.py
diff --git a/reproduction/benchmark/upstream/protein/evaluate_dms_esm_docker.py b/examples/reproduction/benchmark/upstream/protein/evaluate_dms_esm_docker.py
similarity index 100%
rename from reproduction/benchmark/upstream/protein/evaluate_dms_esm_docker.py
rename to examples/reproduction/benchmark/upstream/protein/evaluate_dms_esm_docker.py
diff --git a/reproduction/benchmark/upstream/protein/evaluate_dms_esm_domain.py b/examples/reproduction/benchmark/upstream/protein/evaluate_dms_esm_domain.py
similarity index 100%
rename from reproduction/benchmark/upstream/protein/evaluate_dms_esm_domain.py
rename to examples/reproduction/benchmark/upstream/protein/evaluate_dms_esm_domain.py
diff --git a/reproduction/benchmark/upstream/protein/evaluate_dms_esmc_domain.py b/examples/reproduction/benchmark/upstream/protein/evaluate_dms_esmc_domain.py
similarity index 100%
rename from reproduction/benchmark/upstream/protein/evaluate_dms_esmc_domain.py
rename to examples/reproduction/benchmark/upstream/protein/evaluate_dms_esmc_domain.py
diff --git a/reproduction/benchmark/upstream/protein/evaluate_dms_rnagen.py b/examples/reproduction/benchmark/upstream/protein/evaluate_dms_rnagen.py
similarity index 100%
rename from reproduction/benchmark/upstream/protein/evaluate_dms_rnagen.py
rename to examples/reproduction/benchmark/upstream/protein/evaluate_dms_rnagen.py
diff --git a/reproduction/benchmark/upstream/protein/scripts/calculate_progen3_spearman.py b/examples/reproduction/benchmark/upstream/protein/scripts/calculate_progen3_spearman.py
similarity index 100%
rename from reproduction/benchmark/upstream/protein/scripts/calculate_progen3_spearman.py
rename to examples/reproduction/benchmark/upstream/protein/scripts/calculate_progen3_spearman.py
diff --git a/reproduction/benchmark/upstream/protein/scripts/compute_batch_dms_in_docker.py b/examples/reproduction/benchmark/upstream/protein/scripts/compute_batch_dms_in_docker.py
similarity index 100%
rename from reproduction/benchmark/upstream/protein/scripts/compute_batch_dms_in_docker.py
rename to examples/reproduction/benchmark/upstream/protein/scripts/compute_batch_dms_in_docker.py
diff --git a/reproduction/benchmark/upstream/protein/scripts/compute_batch_dms_scores.py b/examples/reproduction/benchmark/upstream/protein/scripts/compute_batch_dms_scores.py
similarity index 100%
rename from reproduction/benchmark/upstream/protein/scripts/compute_batch_dms_scores.py
rename to examples/reproduction/benchmark/upstream/protein/scripts/compute_batch_dms_scores.py
diff --git a/reproduction/benchmark/upstream/protein/scripts/compute_dms_ll_in_docker.py b/examples/reproduction/benchmark/upstream/protein/scripts/compute_dms_ll_in_docker.py
similarity index 100%
rename from reproduction/benchmark/upstream/protein/scripts/compute_dms_ll_in_docker.py
rename to examples/reproduction/benchmark/upstream/protein/scripts/compute_dms_ll_in_docker.py
diff --git a/reproduction/benchmark/upstream/protein/scripts/compute_dms_scores_docker.py b/examples/reproduction/benchmark/upstream/protein/scripts/compute_dms_scores_docker.py
similarity index 100%
rename from reproduction/benchmark/upstream/protein/scripts/compute_dms_scores_docker.py
rename to examples/reproduction/benchmark/upstream/protein/scripts/compute_dms_scores_docker.py
diff --git a/reproduction/benchmark/upstream/protein/scripts/prepare_fasta_full.py b/examples/reproduction/benchmark/upstream/protein/scripts/prepare_fasta_full.py
similarity index 100%
rename from reproduction/benchmark/upstream/protein/scripts/prepare_fasta_full.py
rename to examples/reproduction/benchmark/upstream/protein/scripts/prepare_fasta_full.py
diff --git a/reproduction/benchmark/upstream/rna/benchmark_config.yaml b/examples/reproduction/benchmark/upstream/rna/benchmark_config.yaml
similarity index 100%
rename from reproduction/benchmark/upstream/rna/benchmark_config.yaml
rename to examples/reproduction/benchmark/upstream/rna/benchmark_config.yaml
diff --git a/reproduction/benchmark/upstream/rna/config.yaml b/examples/reproduction/benchmark/upstream/rna/config.yaml
similarity index 100%
rename from reproduction/benchmark/upstream/rna/config.yaml
rename to examples/reproduction/benchmark/upstream/rna/config.yaml
diff --git a/reproduction/benchmark/upstream/rna/external_scripts/compute_aido_ll.py b/examples/reproduction/benchmark/upstream/rna/external_scripts/compute_aido_ll.py
similarity index 100%
rename from reproduction/benchmark/upstream/rna/external_scripts/compute_aido_ll.py
rename to examples/reproduction/benchmark/upstream/rna/external_scripts/compute_aido_ll.py
diff --git a/reproduction/benchmark/upstream/rna/external_scripts/compute_codongpt_ll.py b/examples/reproduction/benchmark/upstream/rna/external_scripts/compute_codongpt_ll.py
similarity index 100%
rename from reproduction/benchmark/upstream/rna/external_scripts/compute_codongpt_ll.py
rename to examples/reproduction/benchmark/upstream/rna/external_scripts/compute_codongpt_ll.py
diff --git a/reproduction/benchmark/upstream/rna/external_scripts/compute_ernie_rna_scores_v2.py b/examples/reproduction/benchmark/upstream/rna/external_scripts/compute_ernie_rna_scores_v2.py
similarity index 100%
rename from reproduction/benchmark/upstream/rna/external_scripts/compute_ernie_rna_scores_v2.py
rename to examples/reproduction/benchmark/upstream/rna/external_scripts/compute_ernie_rna_scores_v2.py
diff --git a/reproduction/benchmark/upstream/rna/external_scripts/compute_generrna_scores_conda.py b/examples/reproduction/benchmark/upstream/rna/external_scripts/compute_generrna_scores_conda.py
similarity index 100%
rename from reproduction/benchmark/upstream/rna/external_scripts/compute_generrna_scores_conda.py
rename to examples/reproduction/benchmark/upstream/rna/external_scripts/compute_generrna_scores_conda.py
diff --git a/reproduction/benchmark/upstream/rna/external_scripts/score_codonfm.py b/examples/reproduction/benchmark/upstream/rna/external_scripts/score_codonfm.py
similarity index 100%
rename from reproduction/benchmark/upstream/rna/external_scripts/score_codonfm.py
rename to examples/reproduction/benchmark/upstream/rna/external_scripts/score_codonfm.py
diff --git a/reproduction/benchmark/upstream/rna/external_scripts/score_fasta.py b/examples/reproduction/benchmark/upstream/rna/external_scripts/score_fasta.py
similarity index 100%
rename from reproduction/benchmark/upstream/rna/external_scripts/score_fasta.py
rename to examples/reproduction/benchmark/upstream/rna/external_scripts/score_fasta.py
diff --git a/reproduction/benchmark/upstream/rna/legacy_workers/compute_ll_for_new_models.py b/examples/reproduction/benchmark/upstream/rna/legacy_workers/compute_ll_for_new_models.py
similarity index 100%
rename from reproduction/benchmark/upstream/rna/legacy_workers/compute_ll_for_new_models.py
rename to examples/reproduction/benchmark/upstream/rna/legacy_workers/compute_ll_for_new_models.py
diff --git a/reproduction/benchmark/upstream/rna/legacy_workers/compute_new_model_scores_docker.py b/examples/reproduction/benchmark/upstream/rna/legacy_workers/compute_new_model_scores_docker.py
similarity index 100%
rename from reproduction/benchmark/upstream/rna/legacy_workers/compute_new_model_scores_docker.py
rename to examples/reproduction/benchmark/upstream/rna/legacy_workers/compute_new_model_scores_docker.py
diff --git a/reproduction/benchmark/upstream/rna/model_adapters/__init__.py b/examples/reproduction/benchmark/upstream/rna/model_adapters/__init__.py
similarity index 100%
rename from reproduction/benchmark/upstream/rna/model_adapters/__init__.py
rename to examples/reproduction/benchmark/upstream/rna/model_adapters/__init__.py
diff --git a/reproduction/benchmark/upstream/rna/model_adapters/aido_adapter.py b/examples/reproduction/benchmark/upstream/rna/model_adapters/aido_adapter.py
similarity index 100%
rename from reproduction/benchmark/upstream/rna/model_adapters/aido_adapter.py
rename to examples/reproduction/benchmark/upstream/rna/model_adapters/aido_adapter.py
diff --git a/reproduction/benchmark/upstream/rna/model_adapters/base_adapter.py b/examples/reproduction/benchmark/upstream/rna/model_adapters/base_adapter.py
similarity index 100%
rename from reproduction/benchmark/upstream/rna/model_adapters/base_adapter.py
rename to examples/reproduction/benchmark/upstream/rna/model_adapters/base_adapter.py
diff --git a/reproduction/benchmark/upstream/rna/model_adapters/codonfm_adapter.py b/examples/reproduction/benchmark/upstream/rna/model_adapters/codonfm_adapter.py
similarity index 100%
rename from reproduction/benchmark/upstream/rna/model_adapters/codonfm_adapter.py
rename to examples/reproduction/benchmark/upstream/rna/model_adapters/codonfm_adapter.py
diff --git a/reproduction/benchmark/upstream/rna/model_adapters/codongpt_adapter.py b/examples/reproduction/benchmark/upstream/rna/model_adapters/codongpt_adapter.py
similarity index 100%
rename from reproduction/benchmark/upstream/rna/model_adapters/codongpt_adapter.py
rename to examples/reproduction/benchmark/upstream/rna/model_adapters/codongpt_adapter.py
diff --git a/reproduction/benchmark/upstream/rna/model_adapters/ernie_rna_adapter.py b/examples/reproduction/benchmark/upstream/rna/model_adapters/ernie_rna_adapter.py
similarity index 100%
rename from reproduction/benchmark/upstream/rna/model_adapters/ernie_rna_adapter.py
rename to examples/reproduction/benchmark/upstream/rna/model_adapters/ernie_rna_adapter.py
diff --git a/reproduction/benchmark/upstream/rna/model_adapters/eva_rna_adapter.py b/examples/reproduction/benchmark/upstream/rna/model_adapters/eva_rna_adapter.py
similarity index 100%
rename from reproduction/benchmark/upstream/rna/model_adapters/eva_rna_adapter.py
rename to examples/reproduction/benchmark/upstream/rna/model_adapters/eva_rna_adapter.py
diff --git a/reproduction/benchmark/upstream/rna/model_adapters/evo_adapter.py b/examples/reproduction/benchmark/upstream/rna/model_adapters/evo_adapter.py
similarity index 100%
rename from reproduction/benchmark/upstream/rna/model_adapters/evo_adapter.py
rename to examples/reproduction/benchmark/upstream/rna/model_adapters/evo_adapter.py
diff --git a/reproduction/benchmark/upstream/rna/model_adapters/generrna_adapter.py b/examples/reproduction/benchmark/upstream/rna/model_adapters/generrna_adapter.py
similarity index 100%
rename from reproduction/benchmark/upstream/rna/model_adapters/generrna_adapter.py
rename to examples/reproduction/benchmark/upstream/rna/model_adapters/generrna_adapter.py
diff --git a/reproduction/benchmark/upstream/rna/model_adapters/huggingface_adapter.py b/examples/reproduction/benchmark/upstream/rna/model_adapters/huggingface_adapter.py
similarity index 100%
rename from reproduction/benchmark/upstream/rna/model_adapters/huggingface_adapter.py
rename to examples/reproduction/benchmark/upstream/rna/model_adapters/huggingface_adapter.py
diff --git a/reproduction/benchmark/upstream/rna/model_adapters/simple_baseline_adapter.py b/examples/reproduction/benchmark/upstream/rna/model_adapters/simple_baseline_adapter.py
similarity index 100%
rename from reproduction/benchmark/upstream/rna/model_adapters/simple_baseline_adapter.py
rename to examples/reproduction/benchmark/upstream/rna/model_adapters/simple_baseline_adapter.py
diff --git a/reproduction/benchmark/upstream/rna/ncRNA_config.yaml b/examples/reproduction/benchmark/upstream/rna/ncRNA_config.yaml
similarity index 100%
rename from reproduction/benchmark/upstream/rna/ncRNA_config.yaml
rename to examples/reproduction/benchmark/upstream/rna/ncRNA_config.yaml
diff --git a/reproduction/benchmark/upstream/rna/parallel_executor.py b/examples/reproduction/benchmark/upstream/rna/parallel_executor.py
similarity index 100%
rename from reproduction/benchmark/upstream/rna/parallel_executor.py
rename to examples/reproduction/benchmark/upstream/rna/parallel_executor.py
diff --git a/reproduction/benchmark/upstream/rna/run_benchmark.py b/examples/reproduction/benchmark/upstream/rna/run_benchmark.py
similarity index 100%
rename from reproduction/benchmark/upstream/rna/run_benchmark.py
rename to examples/reproduction/benchmark/upstream/rna/run_benchmark.py
diff --git a/reproduction/benchmark/upstream/rna/utils.py b/examples/reproduction/benchmark/upstream/rna/utils.py
similarity index 100%
rename from reproduction/benchmark/upstream/rna/utils.py
rename to examples/reproduction/benchmark/upstream/rna/utils.py
diff --git a/reproduction/benchmark/upstream/rna/utils/score_worker_exclude_direction.py b/examples/reproduction/benchmark/upstream/rna/utils/score_worker_exclude_direction.py
similarity index 100%
rename from reproduction/benchmark/upstream/rna/utils/score_worker_exclude_direction.py
rename to examples/reproduction/benchmark/upstream/rna/utils/score_worker_exclude_direction.py
diff --git a/reproduction/benchmark_release/evaluation_manifest.template.json b/examples/reproduction/benchmark_release/evaluation_manifest.template.json
similarity index 100%
rename from reproduction/benchmark_release/evaluation_manifest.template.json
rename to examples/reproduction/benchmark_release/evaluation_manifest.template.json
diff --git a/reproduction/benchmark_release/jupyter-validation-macos-py312.lock.txt b/examples/reproduction/benchmark_release/jupyter-validation-macos-py312.lock.txt
similarity index 100%
rename from reproduction/benchmark_release/jupyter-validation-macos-py312.lock.txt
rename to examples/reproduction/benchmark_release/jupyter-validation-macos-py312.lock.txt
diff --git a/reproduction/benchmark_release/recovered_reference/mRNA_5datasets_spearman.csv b/examples/reproduction/benchmark_release/recovered_reference/mRNA_5datasets_spearman.csv
similarity index 100%
rename from reproduction/benchmark_release/recovered_reference/mRNA_5datasets_spearman.csv
rename to examples/reproduction/benchmark_release/recovered_reference/mRNA_5datasets_spearman.csv
diff --git a/reproduction/benchmark_release/recovered_reference/ncRNA_13datasets_spearman.csv b/examples/reproduction/benchmark_release/recovered_reference/ncRNA_13datasets_spearman.csv
similarity index 100%
rename from reproduction/benchmark_release/recovered_reference/ncRNA_13datasets_spearman.csv
rename to examples/reproduction/benchmark_release/recovered_reference/ncRNA_13datasets_spearman.csv
diff --git a/reproduction/benchmark_release/recovered_reference/protein_20datasets_spearman.csv b/examples/reproduction/benchmark_release/recovered_reference/protein_20datasets_spearman.csv
similarity index 100%
rename from reproduction/benchmark_release/recovered_reference/protein_20datasets_spearman.csv
rename to examples/reproduction/benchmark_release/recovered_reference/protein_20datasets_spearman.csv
diff --git a/reproduction/benchmark_release/recovered_reference_manifest.json b/examples/reproduction/benchmark_release/recovered_reference_manifest.json
similarity index 100%
rename from reproduction/benchmark_release/recovered_reference_manifest.json
rename to examples/reproduction/benchmark_release/recovered_reference_manifest.json
diff --git a/reproduction/benchmark_release/recovered_reference_provenance.json b/examples/reproduction/benchmark_release/recovered_reference_provenance.json
similarity index 100%
rename from reproduction/benchmark_release/recovered_reference_provenance.json
rename to examples/reproduction/benchmark_release/recovered_reference_provenance.json
diff --git a/reproduction/benchmark_release/reference/mRNA_5datasets_spearman.csv b/examples/reproduction/benchmark_release/reference/mRNA_5datasets_spearman.csv
similarity index 100%
rename from reproduction/benchmark_release/reference/mRNA_5datasets_spearman.csv
rename to examples/reproduction/benchmark_release/reference/mRNA_5datasets_spearman.csv
diff --git a/reproduction/benchmark_release/reference/ncRNA_13datasets_spearman.csv b/examples/reproduction/benchmark_release/reference/ncRNA_13datasets_spearman.csv
similarity index 100%
rename from reproduction/benchmark_release/reference/ncRNA_13datasets_spearman.csv
rename to examples/reproduction/benchmark_release/reference/ncRNA_13datasets_spearman.csv
diff --git a/reproduction/benchmark_release/reference/protein_20datasets_spearman.csv b/examples/reproduction/benchmark_release/reference/protein_20datasets_spearman.csv
similarity index 100%
rename from reproduction/benchmark_release/reference/protein_20datasets_spearman.csv
rename to examples/reproduction/benchmark_release/reference/protein_20datasets_spearman.csv
diff --git a/reproduction/benchmark_release/reference_manifest.json b/examples/reproduction/benchmark_release/reference_manifest.json
similarity index 100%
rename from reproduction/benchmark_release/reference_manifest.json
rename to examples/reproduction/benchmark_release/reference_manifest.json
diff --git a/reproduction/essentiality/README.md b/examples/reproduction/essentiality/README.md
similarity index 100%
rename from reproduction/essentiality/README.md
rename to examples/reproduction/essentiality/README.md
diff --git a/reproduction/essentiality/archive/eva_position_ablation_eukaryote.py b/examples/reproduction/essentiality/archive/eva_position_ablation_eukaryote.py
similarity index 100%
rename from reproduction/essentiality/archive/eva_position_ablation_eukaryote.py
rename to examples/reproduction/essentiality/archive/eva_position_ablation_eukaryote.py
diff --git a/reproduction/essentiality/archive/eva_position_ablation_eukaryote_lineage_fixed.py b/examples/reproduction/essentiality/archive/eva_position_ablation_eukaryote_lineage_fixed.py
similarity index 100%
rename from reproduction/essentiality/archive/eva_position_ablation_eukaryote_lineage_fixed.py
rename to examples/reproduction/essentiality/archive/eva_position_ablation_eukaryote_lineage_fixed.py
diff --git a/reproduction/essentiality/archive/merge_position_ablation_shards.py b/examples/reproduction/essentiality/archive/merge_position_ablation_shards.py
similarity index 100%
rename from reproduction/essentiality/archive/merge_position_ablation_shards.py
rename to examples/reproduction/essentiality/archive/merge_position_ablation_shards.py
diff --git a/reproduction/essentiality/archive/plot_eukaryote_gc_baseline.py b/examples/reproduction/essentiality/archive/plot_eukaryote_gc_baseline.py
similarity index 100%
rename from reproduction/essentiality/archive/plot_eukaryote_gc_baseline.py
rename to examples/reproduction/essentiality/archive/plot_eukaryote_gc_baseline.py
diff --git a/reproduction/essentiality/archive/position_ablation_v2_summary.json b/examples/reproduction/essentiality/archive/position_ablation_v2_summary.json
similarity index 100%
rename from reproduction/essentiality/archive/position_ablation_v2_summary.json
rename to examples/reproduction/essentiality/archive/position_ablation_v2_summary.json
diff --git a/reproduction/essentiality/archive/run_lineage_fixed_2gpu.sh b/examples/reproduction/essentiality/archive/run_lineage_fixed_2gpu.sh
similarity index 100%
rename from reproduction/essentiality/archive/run_lineage_fixed_2gpu.sh
rename to examples/reproduction/essentiality/archive/run_lineage_fixed_2gpu.sh
diff --git a/reproduction/essentiality/source_manifest.json b/examples/reproduction/essentiality/source_manifest.json
similarity index 100%
rename from reproduction/essentiality/source_manifest.json
rename to examples/reproduction/essentiality/source_manifest.json
diff --git a/reproduction/milena_14b/expected/README.md b/examples/reproduction/milena_14b/expected/README.md
similarity index 94%
rename from reproduction/milena_14b/expected/README.md
rename to examples/reproduction/milena_14b/expected/README.md
index 9766bf0..0dc0f10 100644
--- a/reproduction/milena_14b/expected/README.md
+++ b/examples/reproduction/milena_14b/expected/README.md
@@ -23,7 +23,7 @@ The manuscript plot does not annotate an individual Milena coefficient.
Rounding to two decimals is descriptive context only. The observed 0.00338
difference is accepted for the representative example and is not a merge or
release blocker. Current execution status and optional strict comparison are
-documented in [the reproduction guide](../../../docs/REPRODUCTION.md).
+documented in [the reproduction guide](../../../../docs/REPRODUCTION.md).
The dated JSON reports below preserve their original status strings and measurements.
The run used a cached weight file whose SHA256 matches the public revision's
@@ -41,4 +41,4 @@ allocated bytes on one A100. Hashing/loading/plotting are separate overheads.
A second full run from the source archive in the freshly built Docker image
produced exactly the same 135 predictions. GPU scoring took 12.08 seconds with
the same peak allocated memory. See `clean_environment_report.json` and
-`reproduction/release/clean_validation.json` for this final execution evidence.
+`examples/reproduction/release/clean_validation.json` for this final execution evidence.
diff --git a/reproduction/milena_14b/expected/clean_environment_report.json b/examples/reproduction/milena_14b/expected/clean_environment_report.json
similarity index 100%
rename from reproduction/milena_14b/expected/clean_environment_report.json
rename to examples/reproduction/milena_14b/expected/clean_environment_report.json
diff --git a/reproduction/milena_14b/expected/cross_environment_comparison.json b/examples/reproduction/milena_14b/expected/cross_environment_comparison.json
similarity index 100%
rename from reproduction/milena_14b/expected/cross_environment_comparison.json
rename to examples/reproduction/milena_14b/expected/cross_environment_comparison.json
diff --git a/reproduction/milena_14b/expected/download_manifest.json b/examples/reproduction/milena_14b/expected/download_manifest.json
similarity index 100%
rename from reproduction/milena_14b/expected/download_manifest.json
rename to examples/reproduction/milena_14b/expected/download_manifest.json
diff --git a/reproduction/milena_14b/expected/historical_run_evidence.json b/examples/reproduction/milena_14b/expected/historical_run_evidence.json
similarity index 100%
rename from reproduction/milena_14b/expected/historical_run_evidence.json
rename to examples/reproduction/milena_14b/expected/historical_run_evidence.json
diff --git a/reproduction/milena_14b/expected/historical_run_excerpt.txt b/examples/reproduction/milena_14b/expected/historical_run_excerpt.txt
similarity index 100%
rename from reproduction/milena_14b/expected/historical_run_excerpt.txt
rename to examples/reproduction/milena_14b/expected/historical_run_excerpt.txt
diff --git a/reproduction/milena_14b/expected/predictions.csv b/examples/reproduction/milena_14b/expected/predictions.csv
similarity index 100%
rename from reproduction/milena_14b/expected/predictions.csv
rename to examples/reproduction/milena_14b/expected/predictions.csv
diff --git a/reproduction/milena_14b/expected/report.json b/examples/reproduction/milena_14b/expected/report.json
similarity index 100%
rename from reproduction/milena_14b/expected/report.json
rename to examples/reproduction/milena_14b/expected/report.json
diff --git a/reproduction/milena_14b/manifest.json b/examples/reproduction/milena_14b/manifest.json
similarity index 54%
rename from reproduction/milena_14b/manifest.json
rename to examples/reproduction/milena_14b/manifest.json
index 7e5d13e..421636f 100644
--- a/reproduction/milena_14b/manifest.json
+++ b/examples/reproduction/milena_14b/manifest.json
@@ -2,16 +2,16 @@
"dataset": "Milena_2021_cata",
"model": "eva_1.4b_score",
"n": 135,
- "fasta": "notebooks/prediction/data/ncRNA/fasta/Milena_2021_cata.fasta",
- "labels": "notebooks/prediction/data/ncRNA/label/Milena_2021_cata_intensities.json",
- "reference_table": "notebooks/prediction/data/ncRNA_13datasets_spearman.csv",
- "archive": "reproduction/benchmark/fixtures/milena/eva_1_4b_wotag_scores.json",
+ "fasta": "examples/notebooks/prediction/data/ncRNA/fasta/Milena_2021_cata.fasta",
+ "labels": "examples/notebooks/prediction/data/ncRNA/label/Milena_2021_cata_intensities.json",
+ "reference_table": "examples/notebooks/prediction/data/ncRNA_13datasets_spearman.csv",
+ "archive": "examples/reproduction/benchmark/fixtures/milena/eva_1_4b_wotag_scores.json",
"label_basis": "Current local submission data, confirmed by the author on 2026-09-09; positional pairing frozen by FASTA and label hashes; historical header metadata is not used as ground truth.",
"input_sha256": {
- "notebooks/prediction/data/ncRNA/fasta/Milena_2021_cata.fasta": "587195ca555dff13de482e88df5509065d55788dc886a285ca07a8b27f37a227",
- "notebooks/prediction/data/ncRNA/label/Milena_2021_cata_intensities.json": "86a724affa00904e54f5d2532607fdc8d3fb1560ba385e53e8f242ab78efe9a2",
- "notebooks/prediction/data/ncRNA_13datasets_spearman.csv": "8acfc40534b60e725aac309ba4b8990d0660b266f6ae8183f42e8e63e1334d14",
- "reproduction/benchmark/fixtures/milena/eva_1_4b_wotag_scores.json": "8d5b47937e431acbe3684884291d5b9372a67b3d3461f5ba5c4eb9085af478c1"
+ "examples/notebooks/prediction/data/ncRNA/fasta/Milena_2021_cata.fasta": "587195ca555dff13de482e88df5509065d55788dc886a285ca07a8b27f37a227",
+ "examples/notebooks/prediction/data/ncRNA/label/Milena_2021_cata_intensities.json": "86a724affa00904e54f5d2532607fdc8d3fb1560ba385e53e8f242ab78efe9a2",
+ "examples/notebooks/prediction/data/ncRNA_13datasets_spearman.csv": "8acfc40534b60e725aac309ba4b8990d0660b266f6ae8183f42e8e63e1334d14",
+ "examples/reproduction/benchmark/fixtures/milena/eva_1_4b_wotag_scores.json": "8d5b47937e431acbe3684884291d5b9372a67b3d3461f5ba5c4eb9085af478c1"
},
"checkpoint": {
"repo": "GENTEL-Lab/EVA",
@@ -24,7 +24,7 @@
}
},
"protocol": {
- "source": "reproduction/benchmark/historical_14b",
+ "source": "examples/reproduction/benchmark/historical_14b",
"prompt": "5{RNA}3",
"conditioning": null,
"reduce": "sum",
diff --git a/reproduction/release/benchmark_result_index.csv b/examples/reproduction/release/benchmark_result_index.csv
similarity index 100%
rename from reproduction/release/benchmark_result_index.csv
rename to examples/reproduction/release/benchmark_result_index.csv
diff --git a/reproduction/release/clean_validation.json b/examples/reproduction/release/clean_validation.json
similarity index 100%
rename from reproduction/release/clean_validation.json
rename to examples/reproduction/release/clean_validation.json
diff --git a/reproduction/release/competitor_resource_verification.json b/examples/reproduction/release/competitor_resource_verification.json
similarity index 100%
rename from reproduction/release/competitor_resource_verification.json
rename to examples/reproduction/release/competitor_resource_verification.json
diff --git a/reproduction/release/model_manifests/rnabert.json b/examples/reproduction/release/model_manifests/rnabert.json
similarity index 100%
rename from reproduction/release/model_manifests/rnabert.json
rename to examples/reproduction/release/model_manifests/rnabert.json
diff --git a/reproduction/release/model_manifests/rnafm.json b/examples/reproduction/release/model_manifests/rnafm.json
similarity index 100%
rename from reproduction/release/model_manifests/rnafm.json
rename to examples/reproduction/release/model_manifests/rnafm.json
diff --git a/reproduction/release/model_manifests/rnamsm.json b/examples/reproduction/release/model_manifests/rnamsm.json
similarity index 100%
rename from reproduction/release/model_manifests/rnamsm.json
rename to examples/reproduction/release/model_manifests/rnamsm.json
diff --git a/reproduction/release/public_resource_metadata_20260909.json b/examples/reproduction/release/public_resource_metadata_20260909.json
similarity index 100%
rename from reproduction/release/public_resource_metadata_20260909.json
rename to examples/reproduction/release/public_resource_metadata_20260909.json
diff --git a/reproduction/release/recovered_competitor_assets_20260909.json b/examples/reproduction/release/recovered_competitor_assets_20260909.json
similarity index 100%
rename from reproduction/release/recovered_competitor_assets_20260909.json
rename to examples/reproduction/release/recovered_competitor_assets_20260909.json
diff --git a/reproduction/release/recovered_rna_snapshots_20260909.json b/examples/reproduction/release/recovered_rna_snapshots_20260909.json
similarity index 100%
rename from reproduction/release/recovered_rna_snapshots_20260909.json
rename to examples/reproduction/release/recovered_rna_snapshots_20260909.json
diff --git a/reproduction/release/resource_access_20260909.json b/examples/reproduction/release/resource_access_20260909.json
similarity index 100%
rename from reproduction/release/resource_access_20260909.json
rename to examples/reproduction/release/resource_access_20260909.json
diff --git a/reproduction/release/resource_links.json b/examples/reproduction/release/resource_links.json
similarity index 100%
rename from reproduction/release/resource_links.json
rename to examples/reproduction/release/resource_links.json
diff --git a/reproduction/release/usability_gpu_20260909/README.md b/examples/reproduction/release/usability_gpu_20260909/README.md
similarity index 100%
rename from reproduction/release/usability_gpu_20260909/README.md
rename to examples/reproduction/release/usability_gpu_20260909/README.md
diff --git a/reproduction/release/usability_gpu_20260909/default_report.json b/examples/reproduction/release/usability_gpu_20260909/default_report.json
similarity index 100%
rename from reproduction/release/usability_gpu_20260909/default_report.json
rename to examples/reproduction/release/usability_gpu_20260909/default_report.json
diff --git a/reproduction/release/usability_gpu_20260909/strict_report.json b/examples/reproduction/release/usability_gpu_20260909/strict_report.json
similarity index 100%
rename from reproduction/release/usability_gpu_20260909/strict_report.json
rename to examples/reproduction/release/usability_gpu_20260909/strict_report.json
diff --git a/reproduction/release/usability_gpu_20260909/summary.json b/examples/reproduction/release/usability_gpu_20260909/summary.json
similarity index 100%
rename from reproduction/release/usability_gpu_20260909/summary.json
rename to examples/reproduction/release/usability_gpu_20260909/summary.json
diff --git a/reproduction/sae/ISOLATED_SAE_VALIDATION.txt b/examples/reproduction/sae/ISOLATED_SAE_VALIDATION.txt
similarity index 100%
rename from reproduction/sae/ISOLATED_SAE_VALIDATION.txt
rename to examples/reproduction/sae/ISOLATED_SAE_VALIDATION.txt
diff --git a/reproduction/sae/README.md b/examples/reproduction/sae/README.md
similarity index 100%
rename from reproduction/sae/README.md
rename to examples/reproduction/sae/README.md
diff --git a/reproduction/sae/VALIDATION.md b/examples/reproduction/sae/VALIDATION.md
similarity index 100%
rename from reproduction/sae/VALIDATION.md
rename to examples/reproduction/sae/VALIDATION.md
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/andreasson2020_glms_generation_v2_rows.csv b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/andreasson2020_glms_generation_v2_rows.csv
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/andreasson2020_glms_generation_v2_rows.csv
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/andreasson2020_glms_generation_v2_rows.csv
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/andreasson2020_glms_structure_switch_cases.json b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/andreasson2020_glms_structure_switch_cases.json
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/andreasson2020_glms_structure_switch_cases.json
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/andreasson2020_glms_structure_switch_cases.json
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/andreasson2020_glms_structure_switch_span_likelihood.json b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/andreasson2020_glms_structure_switch_span_likelihood.json
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/andreasson2020_glms_structure_switch_span_likelihood.json
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/andreasson2020_glms_structure_switch_span_likelihood.json
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/andreasson2020_glms_structure_switch_span_likelihood_summary.csv b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/andreasson2020_glms_structure_switch_span_likelihood_summary.csv
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/andreasson2020_glms_structure_switch_span_likelihood_summary.csv
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/andreasson2020_glms_structure_switch_span_likelihood_summary.csv
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_cases.json b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_cases.json
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_cases.json
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_cases.json
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_case0_f2008_greedy_rows.csv b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_case0_f2008_greedy_rows.csv
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_case0_f2008_greedy_rows.csv
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_case0_f2008_greedy_rows.csv
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_case0_f2008_n20_rows.csv b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_case0_f2008_n20_rows.csv
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_case0_f2008_n20_rows.csv
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_case0_f2008_n20_rows.csv
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_case0_f5397_n20_rows.csv b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_case0_f5397_n20_rows.csv
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_case0_f5397_n20_rows.csv
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_case0_f5397_n20_rows.csv
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_case0_f5929_n20_rows.csv b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_case0_f5929_n20_rows.csv
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_case0_f5929_n20_rows.csv
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_case0_f5929_n20_rows.csv
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_case0_f863_n20_rows.csv b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_case0_f863_n20_rows.csv
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_case0_f863_n20_rows.csv
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_case0_f863_n20_rows.csv
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_case0_f893_n20_rows.csv b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_case0_f893_n20_rows.csv
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_case0_f893_n20_rows.csv
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_case0_f893_n20_rows.csv
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_case0_wtstate_paired_f893_2008_5397_5929_863_n20_rows.csv b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_case0_wtstate_paired_f893_2008_5397_5929_863_n20_rows.csv
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_case0_wtstate_paired_f893_2008_5397_5929_863_n20_rows.csv
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_case0_wtstate_paired_f893_2008_5397_5929_863_n20_rows.csv
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_case1_mutstate_paired_f6705_2848_7054_6556_5929_n20_rows.csv b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_case1_mutstate_paired_f6705_2848_7054_6556_5929_n20_rows.csv
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_case1_mutstate_paired_f6705_2848_7054_6556_5929_n20_rows.csv
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_case1_mutstate_paired_f6705_2848_7054_6556_5929_n20_rows.csv
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_case2_wtstate_paired_f5929_2008_7195_4244_n20_rows.csv b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_case2_wtstate_paired_f5929_2008_7195_4244_n20_rows.csv
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_case2_wtstate_paired_f5929_2008_7195_4244_n20_rows.csv
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_case2_wtstate_paired_f5929_2008_7195_4244_n20_rows.csv
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_case4_mutstate_paired_f5305_2234_6410_6857_7054_5929_n20_rows.csv b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_case4_mutstate_paired_f5305_2234_6410_6857_7054_5929_n20_rows.csv
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_case4_mutstate_paired_f5305_2234_6410_6857_7054_5929_n20_rows.csv
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_case4_mutstate_paired_f5305_2234_6410_6857_7054_5929_n20_rows.csv
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_smoke_case0_f2008_rows.csv b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_smoke_case0_f2008_rows.csv
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_smoke_case0_f2008_rows.csv
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_generation_smoke_case0_f2008_rows.csv
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_span_likelihood_top10_bidir_top5.json b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_span_likelihood_top10_bidir_top5.json
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_span_likelihood_top10_bidir_top5.json
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_span_likelihood_top10_bidir_top5.json
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_span_likelihood_top10_bidir_top5_summary.csv b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_span_likelihood_top10_bidir_top5_summary.csv
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_span_likelihood_top10_bidir_top5_summary.csv
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2019_pepper_structure_switch_span_likelihood_top10_bidir_top5_summary.csv
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2024_myo_generation_v2_rows.csv b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2024_myo_generation_v2_rows.csv
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2024_myo_generation_v2_rows.csv
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2024_myo_generation_v2_rows.csv
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2024_myo_structure_switch_cases.json b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2024_myo_structure_switch_cases.json
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2024_myo_structure_switch_cases.json
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/chen2024_myo_structure_switch_cases.json
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/domingo2018_structure_switch_cases.json b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/domingo2018_structure_switch_cases.json
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/domingo2018_structure_switch_cases.json
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/domingo2018_structure_switch_cases.json
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/domingo2018_structure_switch_generation_case0_mutstate_paired_f4547_5929_7857_7705_n20_rows.csv b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/domingo2018_structure_switch_generation_case0_mutstate_paired_f4547_5929_7857_7705_n20_rows.csv
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/domingo2018_structure_switch_generation_case0_mutstate_paired_f4547_5929_7857_7705_n20_rows.csv
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/domingo2018_structure_switch_generation_case0_mutstate_paired_f4547_5929_7857_7705_n20_rows.csv
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/domingo2018_structure_switch_generation_case0_wtstate_paired_f6227_147_4139_7609_6803_5929_n20_rows.csv b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/domingo2018_structure_switch_generation_case0_wtstate_paired_f6227_147_4139_7609_6803_5929_n20_rows.csv
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/domingo2018_structure_switch_generation_case0_wtstate_paired_f6227_147_4139_7609_6803_5929_n20_rows.csv
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/domingo2018_structure_switch_generation_case0_wtstate_paired_f6227_147_4139_7609_6803_5929_n20_rows.csv
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/domingo2018_structure_switch_generation_case2_mutstate_paired_f5929_7857_4547_6224_n20_rows.csv b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/domingo2018_structure_switch_generation_case2_mutstate_paired_f5929_7857_4547_6224_n20_rows.csv
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/domingo2018_structure_switch_generation_case2_mutstate_paired_f5929_7857_4547_6224_n20_rows.csv
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/domingo2018_structure_switch_generation_case2_mutstate_paired_f5929_7857_4547_6224_n20_rows.csv
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/domingo2018_structure_switch_generation_case7_wtstate_paired_f6451_893_2097_5057_7609_5929_n20_rows.csv b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/domingo2018_structure_switch_generation_case7_wtstate_paired_f6451_893_2097_5057_7609_5929_n20_rows.csv
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/domingo2018_structure_switch_generation_case7_wtstate_paired_f6451_893_2097_5057_7609_5929_n20_rows.csv
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/domingo2018_structure_switch_generation_case7_wtstate_paired_f6451_893_2097_5057_7609_5929_n20_rows.csv
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/domingo2018_structure_switch_span_likelihood_top10_bidir_top5.json b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/domingo2018_structure_switch_span_likelihood_top10_bidir_top5.json
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/domingo2018_structure_switch_span_likelihood_top10_bidir_top5.json
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/domingo2018_structure_switch_span_likelihood_top10_bidir_top5.json
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/domingo2018_structure_switch_span_likelihood_top10_bidir_top5_summary.csv b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/domingo2018_structure_switch_span_likelihood_top10_bidir_top5_summary.csv
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/domingo2018_structure_switch_span_likelihood_top10_bidir_top5_summary.csv
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/domingo2018_structure_switch_span_likelihood_top10_bidir_top5_summary.csv
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam1b1_structure_switch_cases.json b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam1b1_structure_switch_cases.json
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam1b1_structure_switch_cases.json
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam1b1_structure_switch_cases.json
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam1b1_structure_switch_generation_case0_mutstate_paired_f677_1709_7081_5929_n20_rows.csv b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam1b1_structure_switch_generation_case0_mutstate_paired_f677_1709_7081_5929_n20_rows.csv
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam1b1_structure_switch_generation_case0_mutstate_paired_f677_1709_7081_5929_n20_rows.csv
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam1b1_structure_switch_generation_case0_mutstate_paired_f677_1709_7081_5929_n20_rows.csv
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam1b1_structure_switch_generation_case1_mutstate_paired_f5929_677_7081_7777_n20_rows.csv b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam1b1_structure_switch_generation_case1_mutstate_paired_f5929_677_7081_7777_n20_rows.csv
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam1b1_structure_switch_generation_case1_mutstate_paired_f5929_677_7081_7777_n20_rows.csv
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam1b1_structure_switch_generation_case1_mutstate_paired_f5929_677_7081_7777_n20_rows.csv
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam1b1_structure_switch_generation_case2_wtstate_paired_f2952_6224_1145_252_5929_n20_rows.csv b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam1b1_structure_switch_generation_case2_wtstate_paired_f2952_6224_1145_252_5929_n20_rows.csv
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam1b1_structure_switch_generation_case2_wtstate_paired_f2952_6224_1145_252_5929_n20_rows.csv
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam1b1_structure_switch_generation_case2_wtstate_paired_f2952_6224_1145_252_5929_n20_rows.csv
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam1b1_structure_switch_generation_case8_mutstate_paired_f4711_7050_7146_2097_5149_5929_n20_rows.csv b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam1b1_structure_switch_generation_case8_mutstate_paired_f4711_7050_7146_2097_5149_5929_n20_rows.csv
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam1b1_structure_switch_generation_case8_mutstate_paired_f4711_7050_7146_2097_5149_5929_n20_rows.csv
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam1b1_structure_switch_generation_case8_mutstate_paired_f4711_7050_7146_2097_5149_5929_n20_rows.csv
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam1b1_structure_switch_span_likelihood_top10_bidir_top5.json b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam1b1_structure_switch_span_likelihood_top10_bidir_top5.json
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam1b1_structure_switch_span_likelihood_top10_bidir_top5.json
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam1b1_structure_switch_span_likelihood_top10_bidir_top5.json
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam1b1_structure_switch_span_likelihood_top10_bidir_top5_summary.csv b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam1b1_structure_switch_span_likelihood_top10_bidir_top5_summary.csv
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam1b1_structure_switch_span_likelihood_top10_bidir_top5_summary.csv
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam1b1_structure_switch_span_likelihood_top10_bidir_top5_summary.csv
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam21_structure_switch_cases.json b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam21_structure_switch_cases.json
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam21_structure_switch_cases.json
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam21_structure_switch_cases.json
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam21_structure_switch_generation_case0_mutstate_paired_f7081_5929_893_7373_5397_147_n20_rows.csv b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam21_structure_switch_generation_case0_mutstate_paired_f7081_5929_893_7373_5397_147_n20_rows.csv
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam21_structure_switch_generation_case0_mutstate_paired_f7081_5929_893_7373_5397_147_n20_rows.csv
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam21_structure_switch_generation_case0_mutstate_paired_f7081_5929_893_7373_5397_147_n20_rows.csv
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam21_structure_switch_generation_case0_mutstate_paired_f7081_893_5929_7373_5397_147_n60_rows.csv b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam21_structure_switch_generation_case0_mutstate_paired_f7081_893_5929_7373_5397_147_n60_rows.csv
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam21_structure_switch_generation_case0_mutstate_paired_f7081_893_5929_7373_5397_147_n60_rows.csv
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam21_structure_switch_generation_case0_mutstate_paired_f7081_893_5929_7373_5397_147_n60_rows.csv
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam21_structure_switch_generation_case2_mutstate_paired_f3779_7081_5397_252_147_5929_n20_rows.csv b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam21_structure_switch_generation_case2_mutstate_paired_f3779_7081_5397_252_147_5929_n20_rows.csv
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam21_structure_switch_generation_case2_mutstate_paired_f3779_7081_5397_252_147_5929_n20_rows.csv
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam21_structure_switch_generation_case2_mutstate_paired_f3779_7081_5397_252_147_5929_n20_rows.csv
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam21_structure_switch_span_likelihood_top5_bidir_top5.json b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam21_structure_switch_span_likelihood_top5_bidir_top5.json
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam21_structure_switch_span_likelihood_top5_bidir_top5.json
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam21_structure_switch_span_likelihood_top5_bidir_top5.json
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam21_structure_switch_span_likelihood_top5_bidir_top5_summary.csv b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam21_structure_switch_span_likelihood_top5_bidir_top5_summary.csv
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam21_structure_switch_span_likelihood_top5_bidir_top5_summary.csv
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam21_structure_switch_span_likelihood_top5_bidir_top5_summary.csv
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam31_generation_v2_rows.csv b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam31_generation_v2_rows.csv
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam31_generation_v2_rows.csv
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam31_generation_v2_rows.csv
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam31_span_likelihood_v2.json b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam31_span_likelihood_v2.json
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam31_span_likelihood_v2.json
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam31_span_likelihood_v2.json
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam31_span_likelihood_v2_summary.csv b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam31_span_likelihood_v2_summary.csv
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam31_span_likelihood_v2_summary.csv
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam31_span_likelihood_v2_summary.csv
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam31_structure_switch_cases.json b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam31_structure_switch_cases.json
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam31_structure_switch_cases.json
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/janzen_fam31_structure_switch_cases.json
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/kobori2015_j12_structure_switch_cases.json b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/kobori2015_j12_structure_switch_cases.json
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/kobori2015_j12_structure_switch_cases.json
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/kobori2015_j12_structure_switch_cases.json
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/kobori2015_j12_structure_switch_generation_case1_wtstate_paired_f6809_5532_3589_6451_8091_5929_n20_rows.csv b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/kobori2015_j12_structure_switch_generation_case1_wtstate_paired_f6809_5532_3589_6451_8091_5929_n20_rows.csv
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/kobori2015_j12_structure_switch_generation_case1_wtstate_paired_f6809_5532_3589_6451_8091_5929_n20_rows.csv
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/kobori2015_j12_structure_switch_generation_case1_wtstate_paired_f6809_5532_3589_6451_8091_5929_n20_rows.csv
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/local_switch/chen2024_myo_local_switch_generation_case2_wtstate_paired_f2096_2956_5929_n10_rows.csv b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/local_switch/chen2024_myo_local_switch_generation_case2_wtstate_paired_f2096_2956_5929_n10_rows.csv
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/local_switch/chen2024_myo_local_switch_generation_case2_wtstate_paired_f2096_2956_5929_n10_rows.csv
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/local_switch/chen2024_myo_local_switch_generation_case2_wtstate_paired_f2096_2956_5929_n10_rows.csv
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/local_switch/chen2024_myo_local_switch_generation_case2_wtstate_paired_f2096_2956_5929_n60_rows.csv b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/local_switch/chen2024_myo_local_switch_generation_case2_wtstate_paired_f2096_2956_5929_n60_rows.csv
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/local_switch/chen2024_myo_local_switch_generation_case2_wtstate_paired_f2096_2956_5929_n60_rows.csv
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/local_switch/chen2024_myo_local_switch_generation_case2_wtstate_paired_f2096_2956_5929_n60_rows.csv
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/milena2021_cata_generation_v2_rows.csv b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/milena2021_cata_generation_v2_rows.csv
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/milena2021_cata_generation_v2_rows.csv
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/milena2021_cata_generation_v2_rows.csv
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/milena2021_cata_structure_switch_cases.json b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/milena2021_cata_structure_switch_cases.json
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/milena2021_cata_structure_switch_cases.json
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/milena2021_cata_structure_switch_cases.json
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/milena2021_cata_structure_switch_span_likelihood.json b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/milena2021_cata_structure_switch_span_likelihood.json
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/milena2021_cata_structure_switch_span_likelihood.json
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/milena2021_cata_structure_switch_span_likelihood.json
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/milena2021_cata_structure_switch_span_likelihood_summary.csv b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/milena2021_cata_structure_switch_span_likelihood_summary.csv
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/milena2021_cata_structure_switch_span_likelihood_summary.csv
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/milena2021_cata_structure_switch_span_likelihood_summary.csv
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/zuo2023_okra_generation_v2_rows.csv b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/zuo2023_okra_generation_v2_rows.csv
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/zuo2023_okra_generation_v2_rows.csv
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/zuo2023_okra_generation_v2_rows.csv
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/zuo2023_okra_span_likelihood_v2.json b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/zuo2023_okra_span_likelihood_v2.json
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/zuo2023_okra_span_likelihood_v2.json
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/zuo2023_okra_span_likelihood_v2.json
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/zuo2023_okra_span_likelihood_v2_summary.csv b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/zuo2023_okra_span_likelihood_v2_summary.csv
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/zuo2023_okra_span_likelihood_v2_summary.csv
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/zuo2023_okra_span_likelihood_v2_summary.csv
diff --git a/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/zuo2023_okra_structure_switch_cases.json b/examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/zuo2023_okra_structure_switch_cases.json
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/zuo2023_okra_structure_switch_cases.json
rename to examples/reproduction/sae/archive/data/sae_feature_steering/rnafold_cases/zuo2023_okra_structure_switch_cases.json
diff --git a/reproduction/sae/archive/data/sae_feature_steering/yanjie/figures/figure3_multi_rna_v3.svg b/examples/reproduction/sae/archive/data/sae_feature_steering/yanjie/figures/figure3_multi_rna_v3.svg
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/yanjie/figures/figure3_multi_rna_v3.svg
rename to examples/reproduction/sae/archive/data/sae_feature_steering/yanjie/figures/figure3_multi_rna_v3.svg
diff --git a/reproduction/sae/archive/data/sae_feature_steering/yanjie/figures/likelihood_causal_manipulation.svg b/examples/reproduction/sae/archive/data/sae_feature_steering/yanjie/figures/likelihood_causal_manipulation.svg
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/yanjie/figures/likelihood_causal_manipulation.svg
rename to examples/reproduction/sae/archive/data/sae_feature_steering/yanjie/figures/likelihood_causal_manipulation.svg
diff --git a/reproduction/sae/archive/data/sae_feature_steering/yanjie/figures/likelihood_causal_manipulation_summary.csv b/examples/reproduction/sae/archive/data/sae_feature_steering/yanjie/figures/likelihood_causal_manipulation_summary.csv
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/yanjie/figures/likelihood_causal_manipulation_summary.csv
rename to examples/reproduction/sae/archive/data/sae_feature_steering/yanjie/figures/likelihood_causal_manipulation_summary.csv
diff --git a/reproduction/sae/archive/data/sae_feature_steering/yanjie/figures/table/README.md b/examples/reproduction/sae/archive/data/sae_feature_steering/yanjie/figures/table/README.md
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/yanjie/figures/table/README.md
rename to examples/reproduction/sae/archive/data/sae_feature_steering/yanjie/figures/table/README.md
diff --git a/reproduction/sae/archive/data/sae_feature_steering/yanjie/figures/table/build_table.py b/examples/reproduction/sae/archive/data/sae_feature_steering/yanjie/figures/table/build_table.py
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/yanjie/figures/table/build_table.py
rename to examples/reproduction/sae/archive/data/sae_feature_steering/yanjie/figures/table/build_table.py
diff --git a/reproduction/sae/archive/data/sae_feature_steering/yanjie/figures/table/data/cohort_cases.csv b/examples/reproduction/sae/archive/data/sae_feature_steering/yanjie/figures/table/data/cohort_cases.csv
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/yanjie/figures/table/data/cohort_cases.csv
rename to examples/reproduction/sae/archive/data/sae_feature_steering/yanjie/figures/table/data/cohort_cases.csv
diff --git a/reproduction/sae/archive/data/sae_feature_steering/yanjie/figures/table/data/summary_by_dataset.csv b/examples/reproduction/sae/archive/data/sae_feature_steering/yanjie/figures/table/data/summary_by_dataset.csv
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/yanjie/figures/table/data/summary_by_dataset.csv
rename to examples/reproduction/sae/archive/data/sae_feature_steering/yanjie/figures/table/data/summary_by_dataset.csv
diff --git a/reproduction/sae/archive/data/sae_feature_steering/yanjie/figures/table/latex/generation_success_table.tex b/examples/reproduction/sae/archive/data/sae_feature_steering/yanjie/figures/table/latex/generation_success_table.tex
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/yanjie/figures/table/latex/generation_success_table.tex
rename to examples/reproduction/sae/archive/data/sae_feature_steering/yanjie/figures/table/latex/generation_success_table.tex
diff --git a/reproduction/sae/archive/data/sae_feature_steering/yanjie/scripts/create_figure_multi_rna_v3.py b/examples/reproduction/sae/archive/data/sae_feature_steering/yanjie/scripts/create_figure_multi_rna_v3.py
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/yanjie/scripts/create_figure_multi_rna_v3.py
rename to examples/reproduction/sae/archive/data/sae_feature_steering/yanjie/scripts/create_figure_multi_rna_v3.py
diff --git a/reproduction/sae/archive/data/sae_feature_steering/yanjie/scripts/create_likelihood_causal_figure.py b/examples/reproduction/sae/archive/data/sae_feature_steering/yanjie/scripts/create_likelihood_causal_figure.py
similarity index 100%
rename from reproduction/sae/archive/data/sae_feature_steering/yanjie/scripts/create_likelihood_causal_figure.py
rename to examples/reproduction/sae/archive/data/sae_feature_steering/yanjie/scripts/create_likelihood_causal_figure.py
diff --git a/reproduction/sae/archive/notebooks/interpretability_analysis/sae_repro_release/configs/config_sae_l1_penalty_full_1400M.yaml b/examples/reproduction/sae/archive/notebooks/interpretability_analysis/sae_repro_release/configs/config_sae_l1_penalty_full_1400M.yaml
similarity index 100%
rename from reproduction/sae/archive/notebooks/interpretability_analysis/sae_repro_release/configs/config_sae_l1_penalty_full_1400M.yaml
rename to examples/reproduction/sae/archive/notebooks/interpretability_analysis/sae_repro_release/configs/config_sae_l1_penalty_full_1400M.yaml
diff --git a/reproduction/sae/archive/notebooks/interpretability_analysis/sae_repro_release/logs/sae_l1_penalty_20260601_182437.log b/examples/reproduction/sae/archive/notebooks/interpretability_analysis/sae_repro_release/logs/sae_l1_penalty_20260601_182437.log
similarity index 100%
rename from reproduction/sae/archive/notebooks/interpretability_analysis/sae_repro_release/logs/sae_l1_penalty_20260601_182437.log
rename to examples/reproduction/sae/archive/notebooks/interpretability_analysis/sae_repro_release/logs/sae_l1_penalty_20260601_182437.log
diff --git a/reproduction/sae/archive/scripts/sae_feature_steering/analyze_steering_results.py b/examples/reproduction/sae/archive/scripts/sae_feature_steering/analyze_steering_results.py
similarity index 100%
rename from reproduction/sae/archive/scripts/sae_feature_steering/analyze_steering_results.py
rename to examples/reproduction/sae/archive/scripts/sae_feature_steering/analyze_steering_results.py
diff --git a/reproduction/sae/archive/scripts/sae_feature_steering/batch_steering_test.py b/examples/reproduction/sae/archive/scripts/sae_feature_steering/batch_steering_test.py
similarity index 100%
rename from reproduction/sae/archive/scripts/sae_feature_steering/batch_steering_test.py
rename to examples/reproduction/sae/archive/scripts/sae_feature_steering/batch_steering_test.py
diff --git a/reproduction/sae/archive/scripts/sae_feature_steering/comprehensive_steering_validation.py b/examples/reproduction/sae/archive/scripts/sae_feature_steering/comprehensive_steering_validation.py
similarity index 100%
rename from reproduction/sae/archive/scripts/sae_feature_steering/comprehensive_steering_validation.py
rename to examples/reproduction/sae/archive/scripts/sae_feature_steering/comprehensive_steering_validation.py
diff --git a/reproduction/sae/archive/scripts/sae_feature_steering/eva_glm_cds_stop_metric_steering.py b/examples/reproduction/sae/archive/scripts/sae_feature_steering/eva_glm_cds_stop_metric_steering.py
similarity index 100%
rename from reproduction/sae/archive/scripts/sae_feature_steering/eva_glm_cds_stop_metric_steering.py
rename to examples/reproduction/sae/archive/scripts/sae_feature_steering/eva_glm_cds_stop_metric_steering.py
diff --git a/reproduction/sae/archive/scripts/sae_feature_steering/eva_glm_mrna_region_feature_steering.py b/examples/reproduction/sae/archive/scripts/sae_feature_steering/eva_glm_mrna_region_feature_steering.py
similarity index 100%
rename from reproduction/sae/archive/scripts/sae_feature_steering/eva_glm_mrna_region_feature_steering.py
rename to examples/reproduction/sae/archive/scripts/sae_feature_steering/eva_glm_mrna_region_feature_steering.py
diff --git a/reproduction/sae/archive/scripts/sae_feature_steering/eva_glm_region_steering_fig6.py b/examples/reproduction/sae/archive/scripts/sae_feature_steering/eva_glm_region_steering_fig6.py
similarity index 100%
rename from reproduction/sae/archive/scripts/sae_feature_steering/eva_glm_region_steering_fig6.py
rename to examples/reproduction/sae/archive/scripts/sae_feature_steering/eva_glm_region_steering_fig6.py
diff --git a/reproduction/sae/archive/scripts/sae_feature_steering/eva_glm_region_steering_fig6_barstyle.py b/examples/reproduction/sae/archive/scripts/sae_feature_steering/eva_glm_region_steering_fig6_barstyle.py
similarity index 100%
rename from reproduction/sae/archive/scripts/sae_feature_steering/eva_glm_region_steering_fig6_barstyle.py
rename to examples/reproduction/sae/archive/scripts/sae_feature_steering/eva_glm_region_steering_fig6_barstyle.py
diff --git a/reproduction/sae/archive/scripts/sae_feature_steering/eva_glm_sae_steering_fig6.py b/examples/reproduction/sae/archive/scripts/sae_feature_steering/eva_glm_sae_steering_fig6.py
similarity index 100%
rename from reproduction/sae/archive/scripts/sae_feature_steering/eva_glm_sae_steering_fig6.py
rename to examples/reproduction/sae/archive/scripts/sae_feature_steering/eva_glm_sae_steering_fig6.py
diff --git a/reproduction/sae/archive/scripts/sae_feature_steering/eva_glm_select_stop_features.py b/examples/reproduction/sae/archive/scripts/sae_feature_steering/eva_glm_select_stop_features.py
similarity index 100%
rename from reproduction/sae/archive/scripts/sae_feature_steering/eva_glm_select_stop_features.py
rename to examples/reproduction/sae/archive/scripts/sae_feature_steering/eva_glm_select_stop_features.py
diff --git a/reproduction/sae/archive/scripts/sae_feature_steering/eva_glm_steering_generation.py b/examples/reproduction/sae/archive/scripts/sae_feature_steering/eva_glm_steering_generation.py
similarity index 100%
rename from reproduction/sae/archive/scripts/sae_feature_steering/eva_glm_steering_generation.py
rename to examples/reproduction/sae/archive/scripts/sae_feature_steering/eva_glm_steering_generation.py
diff --git a/reproduction/sae/archive/scripts/sae_feature_steering/eva_glm_stem_hairpin_steering.py b/examples/reproduction/sae/archive/scripts/sae_feature_steering/eva_glm_stem_hairpin_steering.py
similarity index 100%
rename from reproduction/sae/archive/scripts/sae_feature_steering/eva_glm_stem_hairpin_steering.py
rename to examples/reproduction/sae/archive/scripts/sae_feature_steering/eva_glm_stem_hairpin_steering.py
diff --git a/reproduction/sae/archive/scripts/sae_feature_steering/eva_glm_stem_scan.py b/examples/reproduction/sae/archive/scripts/sae_feature_steering/eva_glm_stem_scan.py
similarity index 100%
rename from reproduction/sae/archive/scripts/sae_feature_steering/eva_glm_stem_scan.py
rename to examples/reproduction/sae/archive/scripts/sae_feature_steering/eva_glm_stem_scan.py
diff --git a/reproduction/sae/archive/scripts/sae_feature_steering/filter_features_by_output_score.py b/examples/reproduction/sae/archive/scripts/sae_feature_steering/filter_features_by_output_score.py
similarity index 100%
rename from reproduction/sae/archive/scripts/sae_feature_steering/filter_features_by_output_score.py
rename to examples/reproduction/sae/archive/scripts/sae_feature_steering/filter_features_by_output_score.py
diff --git a/reproduction/sae/archive/scripts/sae_feature_steering/filter_features_by_output_score_v2.py b/examples/reproduction/sae/archive/scripts/sae_feature_steering/filter_features_by_output_score_v2.py
similarity index 100%
rename from reproduction/sae/archive/scripts/sae_feature_steering/filter_features_by_output_score_v2.py
rename to examples/reproduction/sae/archive/scripts/sae_feature_steering/filter_features_by_output_score_v2.py
diff --git a/reproduction/sae/archive/scripts/sae_feature_steering/find_rnafold_steering_cases.py b/examples/reproduction/sae/archive/scripts/sae_feature_steering/find_rnafold_steering_cases.py
similarity index 100%
rename from reproduction/sae/archive/scripts/sae_feature_steering/find_rnafold_steering_cases.py
rename to examples/reproduction/sae/archive/scripts/sae_feature_steering/find_rnafold_steering_cases.py
diff --git a/reproduction/sae/archive/scripts/sae_feature_steering/find_rnafold_structure_switch_cases.py b/examples/reproduction/sae/archive/scripts/sae_feature_steering/find_rnafold_structure_switch_cases.py
similarity index 100%
rename from reproduction/sae/archive/scripts/sae_feature_steering/find_rnafold_structure_switch_cases.py
rename to examples/reproduction/sae/archive/scripts/sae_feature_steering/find_rnafold_structure_switch_cases.py
diff --git a/reproduction/sae/archive/scripts/sae_feature_steering/generate_honest_validation_report.py b/examples/reproduction/sae/archive/scripts/sae_feature_steering/generate_honest_validation_report.py
similarity index 100%
rename from reproduction/sae/archive/scripts/sae_feature_steering/generate_honest_validation_report.py
rename to examples/reproduction/sae/archive/scripts/sae_feature_steering/generate_honest_validation_report.py
diff --git a/reproduction/sae/archive/scripts/sae_feature_steering/plot_domingo_case3_stem_rescue_fig6.py b/examples/reproduction/sae/archive/scripts/sae_feature_steering/plot_domingo_case3_stem_rescue_fig6.py
similarity index 100%
rename from reproduction/sae/archive/scripts/sae_feature_steering/plot_domingo_case3_stem_rescue_fig6.py
rename to examples/reproduction/sae/archive/scripts/sae_feature_steering/plot_domingo_case3_stem_rescue_fig6.py
diff --git a/reproduction/sae/archive/scripts/sae_feature_steering/run_domingo_case3_generation_rescue.py b/examples/reproduction/sae/archive/scripts/sae_feature_steering/run_domingo_case3_generation_rescue.py
similarity index 100%
rename from reproduction/sae/archive/scripts/sae_feature_steering/run_domingo_case3_generation_rescue.py
rename to examples/reproduction/sae/archive/scripts/sae_feature_steering/run_domingo_case3_generation_rescue.py
diff --git a/reproduction/sae/archive/scripts/sae_feature_steering/run_domingo_case3_interplm_style_span_bars.py b/examples/reproduction/sae/archive/scripts/sae_feature_steering/run_domingo_case3_interplm_style_span_bars.py
similarity index 100%
rename from reproduction/sae/archive/scripts/sae_feature_steering/run_domingo_case3_interplm_style_span_bars.py
rename to examples/reproduction/sae/archive/scripts/sae_feature_steering/run_domingo_case3_interplm_style_span_bars.py
diff --git a/reproduction/sae/archive/scripts/sae_feature_steering/run_domingo_case3_specificity_controls.py b/examples/reproduction/sae/archive/scripts/sae_feature_steering/run_domingo_case3_specificity_controls.py
similarity index 100%
rename from reproduction/sae/archive/scripts/sae_feature_steering/run_domingo_case3_specificity_controls.py
rename to examples/reproduction/sae/archive/scripts/sae_feature_steering/run_domingo_case3_specificity_controls.py
diff --git a/reproduction/sae/archive/scripts/sae_feature_steering/run_gen_steering.py b/examples/reproduction/sae/archive/scripts/sae_feature_steering/run_gen_steering.py
similarity index 100%
rename from reproduction/sae/archive/scripts/sae_feature_steering/run_gen_steering.py
rename to examples/reproduction/sae/archive/scripts/sae_feature_steering/run_gen_steering.py
diff --git a/reproduction/sae/archive/scripts/sae_feature_steering/run_minimal_sae_test.py b/examples/reproduction/sae/archive/scripts/sae_feature_steering/run_minimal_sae_test.py
similarity index 100%
rename from reproduction/sae/archive/scripts/sae_feature_steering/run_minimal_sae_test.py
rename to examples/reproduction/sae/archive/scripts/sae_feature_steering/run_minimal_sae_test.py
diff --git a/reproduction/sae/archive/scripts/sae_feature_steering/run_multi_sae_steering_exp.py b/examples/reproduction/sae/archive/scripts/sae_feature_steering/run_multi_sae_steering_exp.py
similarity index 100%
rename from reproduction/sae/archive/scripts/sae_feature_steering/run_multi_sae_steering_exp.py
rename to examples/reproduction/sae/archive/scripts/sae_feature_steering/run_multi_sae_steering_exp.py
diff --git a/reproduction/sae/archive/scripts/sae_feature_steering/run_quick_sae_test.py b/examples/reproduction/sae/archive/scripts/sae_feature_steering/run_quick_sae_test.py
similarity index 100%
rename from reproduction/sae/archive/scripts/sae_feature_steering/run_quick_sae_test.py
rename to examples/reproduction/sae/archive/scripts/sae_feature_steering/run_quick_sae_test.py
diff --git a/reproduction/sae/archive/scripts/sae_feature_steering/run_stem_steering.py b/examples/reproduction/sae/archive/scripts/sae_feature_steering/run_stem_steering.py
similarity index 100%
rename from reproduction/sae/archive/scripts/sae_feature_steering/run_stem_steering.py
rename to examples/reproduction/sae/archive/scripts/sae_feature_steering/run_stem_steering.py
diff --git a/reproduction/sae/archive/scripts/sae_feature_steering/run_stem_steering_1400M.py b/examples/reproduction/sae/archive/scripts/sae_feature_steering/run_stem_steering_1400M.py
similarity index 100%
rename from reproduction/sae/archive/scripts/sae_feature_steering/run_stem_steering_1400M.py
rename to examples/reproduction/sae/archive/scripts/sae_feature_steering/run_stem_steering_1400M.py
diff --git a/reproduction/sae/archive/scripts/sae_feature_steering/run_stem_steering_244M.py b/examples/reproduction/sae/archive/scripts/sae_feature_steering/run_stem_steering_244M.py
similarity index 100%
rename from reproduction/sae/archive/scripts/sae_feature_steering/run_stem_steering_244M.py
rename to examples/reproduction/sae/archive/scripts/sae_feature_steering/run_stem_steering_244M.py
diff --git a/reproduction/sae/archive/scripts/sae_feature_steering/run_stem_steering_mlm.py b/examples/reproduction/sae/archive/scripts/sae_feature_steering/run_stem_steering_mlm.py
similarity index 100%
rename from reproduction/sae/archive/scripts/sae_feature_steering/run_stem_steering_mlm.py
rename to examples/reproduction/sae/archive/scripts/sae_feature_steering/run_stem_steering_mlm.py
diff --git a/reproduction/sae/archive/scripts/sae_feature_steering/scan_f5271_all_positions.py b/examples/reproduction/sae/archive/scripts/sae_feature_steering/scan_f5271_all_positions.py
similarity index 100%
rename from reproduction/sae/archive/scripts/sae_feature_steering/scan_f5271_all_positions.py
rename to examples/reproduction/sae/archive/scripts/sae_feature_steering/scan_f5271_all_positions.py
diff --git a/reproduction/sae/archive/scripts/sae_feature_steering/scan_glm_anchor_feature_effects.py b/examples/reproduction/sae/archive/scripts/sae_feature_steering/scan_glm_anchor_feature_effects.py
similarity index 100%
rename from reproduction/sae/archive/scripts/sae_feature_steering/scan_glm_anchor_feature_effects.py
rename to examples/reproduction/sae/archive/scripts/sae_feature_steering/scan_glm_anchor_feature_effects.py
diff --git a/reproduction/sae/archive/scripts/sae_feature_steering/scan_rnafold_case_features.py b/examples/reproduction/sae/archive/scripts/sae_feature_steering/scan_rnafold_case_features.py
similarity index 100%
rename from reproduction/sae/archive/scripts/sae_feature_steering/scan_rnafold_case_features.py
rename to examples/reproduction/sae/archive/scripts/sae_feature_steering/scan_rnafold_case_features.py
diff --git a/reproduction/sae/archive/scripts/sae_feature_steering/scan_rnafold_steering_effects.py b/examples/reproduction/sae/archive/scripts/sae_feature_steering/scan_rnafold_steering_effects.py
similarity index 100%
rename from reproduction/sae/archive/scripts/sae_feature_steering/scan_rnafold_steering_effects.py
rename to examples/reproduction/sae/archive/scripts/sae_feature_steering/scan_rnafold_steering_effects.py
diff --git a/reproduction/sae/archive/scripts/sae_feature_steering/scan_rnafold_structure_switch_direct_effects.py b/examples/reproduction/sae/archive/scripts/sae_feature_steering/scan_rnafold_structure_switch_direct_effects.py
similarity index 100%
rename from reproduction/sae/archive/scripts/sae_feature_steering/scan_rnafold_structure_switch_direct_effects.py
rename to examples/reproduction/sae/archive/scripts/sae_feature_steering/scan_rnafold_structure_switch_direct_effects.py
diff --git a/reproduction/sae/archive/scripts/sae_feature_steering/scan_rnafold_structure_switch_features.py b/examples/reproduction/sae/archive/scripts/sae_feature_steering/scan_rnafold_structure_switch_features.py
similarity index 100%
rename from reproduction/sae/archive/scripts/sae_feature_steering/scan_rnafold_structure_switch_features.py
rename to examples/reproduction/sae/archive/scripts/sae_feature_steering/scan_rnafold_structure_switch_features.py
diff --git a/reproduction/sae/archive/scripts/sae_feature_steering/score_rnafold_case_baselines.py b/examples/reproduction/sae/archive/scripts/sae_feature_steering/score_rnafold_case_baselines.py
similarity index 100%
rename from reproduction/sae/archive/scripts/sae_feature_steering/score_rnafold_case_baselines.py
rename to examples/reproduction/sae/archive/scripts/sae_feature_steering/score_rnafold_case_baselines.py
diff --git a/reproduction/sae/archive/scripts/sae_feature_steering/score_rnafold_structure_switch_generation.py b/examples/reproduction/sae/archive/scripts/sae_feature_steering/score_rnafold_structure_switch_generation.py
similarity index 100%
rename from reproduction/sae/archive/scripts/sae_feature_steering/score_rnafold_structure_switch_generation.py
rename to examples/reproduction/sae/archive/scripts/sae_feature_steering/score_rnafold_structure_switch_generation.py
diff --git a/reproduction/sae/archive/scripts/sae_feature_steering/score_rnafold_structure_switch_span_likelihood.py b/examples/reproduction/sae/archive/scripts/sae_feature_steering/score_rnafold_structure_switch_span_likelihood.py
similarity index 100%
rename from reproduction/sae/archive/scripts/sae_feature_steering/score_rnafold_structure_switch_span_likelihood.py
rename to examples/reproduction/sae/archive/scripts/sae_feature_steering/score_rnafold_structure_switch_span_likelihood.py
diff --git a/reproduction/sae/archive/scripts/sae_feature_steering/steer_rnafold_case_fig6.py b/examples/reproduction/sae/archive/scripts/sae_feature_steering/steer_rnafold_case_fig6.py
similarity index 100%
rename from reproduction/sae/archive/scripts/sae_feature_steering/steer_rnafold_case_fig6.py
rename to examples/reproduction/sae/archive/scripts/sae_feature_steering/steer_rnafold_case_fig6.py
diff --git a/reproduction/sae/archive/scripts/sae_feature_steering/summarize_eva_stop_fig6_barstyle.py b/examples/reproduction/sae/archive/scripts/sae_feature_steering/summarize_eva_stop_fig6_barstyle.py
similarity index 100%
rename from reproduction/sae/archive/scripts/sae_feature_steering/summarize_eva_stop_fig6_barstyle.py
rename to examples/reproduction/sae/archive/scripts/sae_feature_steering/summarize_eva_stop_fig6_barstyle.py
diff --git a/reproduction/sae/archive/scripts/sae_feature_steering/summarize_structure_switch_generation.py b/examples/reproduction/sae/archive/scripts/sae_feature_steering/summarize_structure_switch_generation.py
similarity index 100%
rename from reproduction/sae/archive/scripts/sae_feature_steering/summarize_structure_switch_generation.py
rename to examples/reproduction/sae/archive/scripts/sae_feature_steering/summarize_structure_switch_generation.py
diff --git a/reproduction/sae/archive/scripts/sae_feature_steering/validate_steering_cases.py b/examples/reproduction/sae/archive/scripts/sae_feature_steering/validate_steering_cases.py
similarity index 100%
rename from reproduction/sae/archive/scripts/sae_feature_steering/validate_steering_cases.py
rename to examples/reproduction/sae/archive/scripts/sae_feature_steering/validate_steering_cases.py
diff --git a/reproduction/sae/manifest.json b/examples/reproduction/sae/manifest.json
similarity index 100%
rename from reproduction/sae/manifest.json
rename to examples/reproduction/sae/manifest.json
diff --git a/reproduction/sae/protocol.json b/examples/reproduction/sae/protocol.json
similarity index 100%
rename from reproduction/sae/protocol.json
rename to examples/reproduction/sae/protocol.json
diff --git a/reproduction/sae/requirements.txt b/examples/reproduction/sae/requirements.txt
similarity index 100%
rename from reproduction/sae/requirements.txt
rename to examples/reproduction/sae/requirements.txt
diff --git a/reproduction/sae/run_historical_smoke.py b/examples/reproduction/sae/run_historical_smoke.py
similarity index 100%
rename from reproduction/sae/run_historical_smoke.py
rename to examples/reproduction/sae/run_historical_smoke.py
diff --git a/notebooks/interpretability_analysis/sae_repro_release/Dockerfile b/notebooks/interpretability_analysis/sae_repro_release/Dockerfile
deleted file mode 100644
index 7932b2e..0000000
--- a/notebooks/interpretability_analysis/sae_repro_release/Dockerfile
+++ /dev/null
@@ -1,18 +0,0 @@
-# EVA SAE reproducibility image
-FROM pytorch/pytorch:2.5.1-cuda12.4-cudnn9-runtime
-
-ENV PYTHONDONTWRITEBYTECODE=1 \
- PYTHONUNBUFFERED=1
-
-WORKDIR /workspace/EVA1
-
-COPY notebooks/interpretability_analysis/sae_repro_release/requirements-sae-training.txt /tmp/requirements-sae-training.txt
-RUN pip install --no-cache-dir -r /tmp/requirements-sae-training.txt && rm /tmp/requirements-sae-training.txt
-
-COPY eva /workspace/EVA1/eva
-COPY notebooks/interpretability_analysis/sae_repro_release /workspace/EVA1/notebooks/interpretability_analysis/sae_repro_release
-
-RUN chmod +x /workspace/EVA1/notebooks/interpretability_analysis/sae_repro_release/scripts/*.sh \
- && chmod +x /workspace/EVA1/notebooks/interpretability_analysis/sae_repro_release/scripts/*.py
-
-ENTRYPOINT ["/bin/bash"]
diff --git a/scripts/check_repository.py b/scripts/check_repository.py
index e083c7e..2d9ea11 100644
--- a/scripts/check_repository.py
+++ b/scripts/check_repository.py
@@ -26,11 +26,12 @@ def anchors(text):
def check_links():
errors, count = [], 0
- docs = [ROOT / 'README.md', ROOT / 'README_BENCHMARK_SUPPLEMENT.md', ROOT / 'CONTRIBUTING.md']
+ docs = [ROOT / 'README.md', ROOT / 'CONTRIBUTING.md']
docs += list((ROOT / 'docs').glob('*.md'))
- docs += [ROOT / 'training/pretrain/README.md', ROOT / 'finetune/aptamer/script/README.md',
- ROOT / 'reproduction/milena_14b/expected/README.md',
- ROOT / 'notebooks/README.md', ROOT / 'reproduction/README.md']
+ docs += [ROOT / 'examples/README.md', ROOT / 'training/README.md',
+ ROOT / 'training/pretrain/README.md', ROOT / 'training/finetune/aptamer/script/README.md',
+ ROOT / 'examples/reproduction/milena_14b/expected/README.md',
+ ROOT / 'examples/notebooks/README.md', ROOT / 'examples/reproduction/README.md']
for path in docs:
text = re.sub(r'```.*?```', '', path.read_text(), flags=re.S)
links = re.findall(r'\]\(([^\s)]+)(?:\s+[^)]*)?\)', text)
diff --git a/scripts/check_resource_links.py b/scripts/check_resource_links.py
index 0e56038..d665bf9 100644
--- a/scripts/check_resource_links.py
+++ b/scripts/check_resource_links.py
@@ -36,7 +36,7 @@ def probe(entry):
def main():
parser = argparse.ArgumentParser(description=__doc__)
- parser.add_argument('--manifest', type=Path, default=ROOT / 'reproduction/release/resource_links.json')
+ parser.add_argument('--manifest', type=Path, default=ROOT / 'examples/reproduction/release/resource_links.json')
parser.add_argument('--output', type=Path, required=True)
args = parser.parse_args()
entries = json.loads(args.manifest.read_text())
diff --git a/docker/Dockerfile b/scripts/docker/Dockerfile
similarity index 91%
rename from docker/Dockerfile
rename to scripts/docker/Dockerfile
index cd14c5a..d878c37 100644
--- a/docker/Dockerfile
+++ b/scripts/docker/Dockerfile
@@ -57,32 +57,28 @@ RUN rm -f /usr/lib/x86_64-linux-gnu/libcuda.so* \
ldconfig 2>/dev/null || true
# Remaining dependencies (wheels / pure Python).
-COPY docker/requirements.txt /tmp/requirements.txt
+COPY scripts/docker/requirements.txt /tmp/requirements.txt
RUN pip install --no-cache-dir -r /tmp/requirements.txt && rm /tmp/requirements.txt
# Entrypoint: detects the real libcuda at runtime (Docker --gpus or
# Singularity --nv) and exports TRITON_LIBCUDA_PATH / TRITON_CACHE_DIR.
-COPY docker/entrypoint.sh /usr/local/bin/eva-entrypoint.sh
+COPY scripts/docker/entrypoint.sh /usr/local/bin/eva-entrypoint.sh
RUN chmod +x /usr/local/bin/eva-entrypoint.sh
# Project code
COPY eva/ /eva/eva/
COPY tools/ /eva/tools/
-COPY config/ /eva/config/
COPY training/ /eva/training/
-COPY finetune/ /eva/finetune/
-COPY notebooks/ /eva/notebooks/
+COPY examples/ /eva/examples/
COPY scripts/ /eva/scripts/
COPY tests/ /eva/tests/
COPY docs/ /eva/docs/
-COPY docker/ /eva/docker/
-COPY reproduction/ /eva/reproduction/
-COPY data/test_data/ /eva/data/test_data/
-COPY pyproject.toml README.md LICENSE CHANGELOG.md CITATION.cff /eva/
+COPY .github/ /eva/.github/
+COPY pyproject.toml README.md LICENSE CHANGELOG.md CITATION.cff CONTRIBUTING.md /eva/
RUN pip install --no-cache-dir --no-deps -e /eva
# Create output directory
-RUN mkdir -p /eva/data/output/scores
+RUN mkdir -p /eva/examples/data/output/scores
# Checkpoint should be mounted at runtime:
# docker run -v /path/to/checkpoint:/eva/checkpoint ...
diff --git a/docker/EVA.def b/scripts/docker/EVA.def
similarity index 92%
rename from docker/EVA.def
rename to scripts/docker/EVA.def
index d9632e1..d4fea15 100644
--- a/docker/EVA.def
+++ b/scripts/docker/EVA.def
@@ -2,14 +2,14 @@
#
# Build from a locally built Docker image (no registry access required):
#
-# docker build -f docker/Dockerfile -t eva:latest .
-# singularity build eva_latest.sif docker/EVA.def
+# docker build -f scripts/docker/Dockerfile -t eva:latest .
+# singularity build eva_latest.sif scripts/docker/EVA.def
#
# Or, when starting from a released docker-archive tarball (e.g. the
# eva_latest.tar.gz from Zenodo) on a machine with Docker:
#
# docker load -i eva_latest.tar.gz # or: docker load < eva_latest.tar.gz
-# singularity build eva_latest.sif docker/EVA.def
+# singularity build eva_latest.sif scripts/docker/EVA.def
#
# The %post step removes driver-library placeholders that older images
# inherited from `docker commit`-based builds (0-byte libcuda.so.* files).
diff --git a/docker/entrypoint.sh b/scripts/docker/entrypoint.sh
similarity index 100%
rename from docker/entrypoint.sh
rename to scripts/docker/entrypoint.sh
diff --git a/docker/requirements.txt b/scripts/docker/requirements.txt
similarity index 100%
rename from docker/requirements.txt
rename to scripts/docker/requirements.txt
diff --git a/docker/smoke_test.sh b/scripts/docker/smoke_test.sh
similarity index 92%
rename from docker/smoke_test.sh
rename to scripts/docker/smoke_test.sh
index 3eb2e33..5b9df2e 100755
--- a/docker/smoke_test.sh
+++ b/scripts/docker/smoke_test.sh
@@ -8,8 +8,8 @@
# Always run the Singularity variant before publishing an image.
#
# Usage:
-# docker/smoke_test.sh docker [image] # default: eva:latest
-# docker/smoke_test.sh singularity [sif] # default: eva_latest.sif
+# scripts/docker/smoke_test.sh docker [image] # default: eva:latest
+# scripts/docker/smoke_test.sh singularity [sif] # default: eva_latest.sif
#
# Exit code is 0 only if the Triton driver probe succeeds.
diff --git a/scripts/generate.sh b/scripts/generate.sh
index fb6bca9..f920116 100755
--- a/scripts/generate.sh
+++ b/scripts/generate.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# RNA sequence generation launch script for a running EVA Docker container.
# Usage: ./scripts/generate.sh [extra args...]
-# Example: ./scripts/generate.sh config/tools_config/config_clm_example.yaml
+# Example: ./scripts/generate.sh examples/config/tools_config/config_clm_example.yaml
set -e
@@ -18,8 +18,8 @@ GENERATE_SCRIPT="${GENERATE_SCRIPT:-${CONTAINER_BASE}/tools/generate.py}"
# ===== Argument Check =====
if [ $# -lt 1 ]; then
echo "Usage: $0 [extra args...]"
- echo "Example: $0 config/tools_config/config_clm_example.yaml"
- echo " $0 config/tools_config/config_clm_example.yaml --task human_mRNA"
+ echo "Example: $0 examples/config/tools_config/config_clm_example.yaml"
+ echo " $0 examples/config/tools_config/config_clm_example.yaml --task human_mRNA"
exit 1
fi
diff --git a/scripts/predict.sh b/scripts/predict.sh
index 25caa3f..31c2293 100755
--- a/scripts/predict.sh
+++ b/scripts/predict.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# RNA sequence scoring launch script for a running EVA Docker container.
# Usage: ./scripts/predict.sh [extra args...]
-# Example: ./scripts/predict.sh config/tools_config/config_score_example.yaml
+# Example: ./scripts/predict.sh examples/config/tools_config/config_score_example.yaml
set -e
@@ -18,8 +18,8 @@ PREDICT_SCRIPT="${PREDICT_SCRIPT:-${CONTAINER_BASE}/tools/predict.py}"
# ===== Argument Check =====
if [ $# -lt 1 ]; then
echo "Usage: $0 [extra args...]"
- echo "Example: $0 config/tools_config/config_score_example.yaml"
- echo " $0 config/tools_config/config_score_example.yaml --device cuda:1"
+ echo "Example: $0 examples/config/tools_config/config_score_example.yaml"
+ echo " $0 examples/config/tools_config/config_score_example.yaml --device cuda:1"
exit 1
fi
diff --git a/scripts/reproduce_dms.py b/scripts/reproduce_dms.py
index cb2167f..eaca0a9 100644
--- a/scripts/reproduce_dms.py
+++ b/scripts/reproduce_dms.py
@@ -49,9 +49,9 @@ def main():
from tools.utils.scorers.score_worker import score_in_batches
from tools.utils.conditions.rna_types import get_rna_token
- fasta = ROOT / 'notebooks/prediction/data/ncRNA/fasta' / f'{args.dataset}.fasta'
- label_file = ROOT / 'notebooks/prediction/data/ncRNA/label' / f'{args.dataset}_intensities.json'
- table = ROOT / 'notebooks/prediction/data/ncRNA_13datasets_spearman.csv'
+ fasta = ROOT / 'examples/notebooks/prediction/data/ncRNA/fasta' / f'{args.dataset}.fasta'
+ label_file = ROOT / 'examples/notebooks/prediction/data/ncRNA/label' / f'{args.dataset}_intensities.json'
+ table = ROOT / 'examples/notebooks/prediction/data/ncRNA_13datasets_spearman.csv'
labels = json.loads(label_file.read_text())
if 'intensities' not in labels:
raise ValueError('This assay has multiple readouts; explicitly resolve the paper readout first')
diff --git a/scripts/reproduce_historical_benchmark.py b/scripts/reproduce_historical_benchmark.py
index 3dddcb9..ad0560b 100644
--- a/scripts/reproduce_historical_benchmark.py
+++ b/scripts/reproduce_historical_benchmark.py
@@ -19,7 +19,7 @@
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
-BUNDLE = ROOT / "reproduction/benchmark"
+BUNDLE = ROOT / "examples/reproduction/benchmark"
def sha256(path: Path) -> str:
diff --git a/scripts/reproduce_milena.py b/scripts/reproduce_milena.py
index 3edd411..026452b 100644
--- a/scripts/reproduce_milena.py
+++ b/scripts/reproduce_milena.py
@@ -17,7 +17,7 @@
sys.path.insert(0, str(ROOT))
from scripts.reproduce_historical_benchmark import read_fasta, finite_vector, align_archive, sha256, spearman
-MANIFEST = ROOT / 'reproduction/milena_14b/manifest.json'
+MANIFEST = ROOT / 'examples/reproduction/milena_14b/manifest.json'
def validate_inputs(root=ROOT, manifest_path=MANIFEST):
@@ -88,8 +88,8 @@ def main():
if args.check_only:
print(json.dumps(report,indent=2))
return 0
- command = [sys.executable, str(ROOT/'reproduction/benchmark/run_historical_14b.py'),
- '--source-dir',str(ROOT/'reproduction/benchmark/historical_14b'),
+ command = [sys.executable, str(ROOT/'examples/reproduction/benchmark/run_historical_14b.py'),
+ '--source-dir',str(ROOT/'examples/reproduction/benchmark/historical_14b'),
'--checkpoint',str(checkpoint),'--archive',str(ROOT/manifest['archive']),
'--output',str(args.output/'inference'),'--device',args.device,
'--memory-limit-gib',str(args.memory_limit_gib),
diff --git a/scripts/reproduce_sae.py b/scripts/reproduce_sae.py
index d466a98..b28a1ad 100644
--- a/scripts/reproduce_sae.py
+++ b/scripts/reproduce_sae.py
@@ -17,7 +17,7 @@
import sys
from pathlib import Path
-DEFAULT_BUNDLE = Path(__file__).resolve().parents[1] / "reproduction" / "sae"
+DEFAULT_BUNDLE = Path(__file__).resolve().parents[1] / "examples" / "reproduction" / "sae"
DATA = Path("archive/data/sae_feature_steering")
CASES = DATA / "rnafold_cases"
TABLE = DATA / "yanjie/figures/table"
@@ -133,7 +133,7 @@ def likelihood(bundle, output, protocol, plot=False):
import scipy
from scipy import stats
except ImportError as exc:
- raise RuntimeError("Likelihood statistics require numpy and scipy. Install reproduction/sae/requirements.txt.") from exc
+ raise RuntimeError("Likelihood statistics require numpy and scipy. Install examples/reproduction/sae/requirements.txt.") from exc
all_selected, dataset_rows = [], []
for item in protocol["likelihood"]["datasets"]:
prefix = bundle / CASES / item["prefix"]
@@ -196,7 +196,7 @@ def plot_likelihood(rows, datasets, report, output):
matplotlib.use("Agg")
import matplotlib.pyplot as plt
except ImportError as exc:
- raise RuntimeError("--plot requires matplotlib; install reproduction/sae/requirements.txt") from exc
+ raise RuntimeError("--plot requires matplotlib; install examples/reproduction/sae/requirements.txt") from exc
colors = ["#9b59b6", "#16a085", "#A23B72", "#8e44ad", "#6c5ce7", "#2E86AB", "#17a2b8", "#0984e3"]
plt.rcParams.update({"svg.fonttype": "none", "font.size": 9})
fig, axes = plt.subplots(2, 1, figsize=(10.8, 6.2), gridspec_kw={"height_ratios": [1.25, 1]})
diff --git a/scripts/smoke_workflows.py b/scripts/smoke_workflows.py
index 81b63df..300ea62 100644
--- a/scripts/smoke_workflows.py
+++ b/scripts/smoke_workflows.py
@@ -30,7 +30,7 @@ def main():
import yaml
from training.pretrain.train_stage1 import LineageStage1Trainer
from training.midtrain.train_midtrain import MidTrainingTrainer
- from finetune.train_finetune import FinetuneTrainer
+ from training.finetune.train_finetune import FinetuneTrainer
from training.eval.scripts.lineage_model_loader import load_lineage_model
from tools.utils.model import ModelLoader
from tools.utils.scorers.score_worker import score_in_batches
@@ -42,7 +42,7 @@ def record(name, result):
report['workflows'][name] = result
(args.output / 'report.json').write_text(json.dumps(report, indent=2, allow_nan=False) + '\n')
- base = yaml.safe_load((ROOT / 'config/training/pretrain_smoke.yaml').read_text())
+ base = yaml.safe_load((ROOT / 'training/configs/pretrain_smoke.yaml').read_text())
base['data_config']['train_file'] = str(ROOT / 'tests/data/train_smoke.fasta')
lineage = args.output / 'lineage.tsv'
lineage.write_text('taxid\tlineage\n9606\td__eukaryota;p__chordata;c__mammalia;o__primates;f__hominidae;g__homo;s__homo_sapiens\n')
@@ -94,7 +94,7 @@ def record(name, result):
'max_absolute_difference': max(abs(a-b) for a,b in zip(one,two))})
del model
torch.cuda.empty_cache()
- module_path = ROOT / 'notebooks/interpretability_analysis/sae_repro_release/scripts/run_training.py'
+ module_path = ROOT / 'examples/notebooks/interpretability_analysis/sae_repro_release/scripts/run_training.py'
spec = importlib.util.spec_from_file_location('eva_sae_smoke', module_path)
sae = importlib.util.module_from_spec(spec)
spec.loader.exec_module(sae)
diff --git a/tests/test_analysis_environment.py b/tests/test_analysis_environment.py
index a889a8e..64b0e2f 100644
--- a/tests/test_analysis_environment.py
+++ b/tests/test_analysis_environment.py
@@ -11,7 +11,7 @@
def test_analysis_dependencies_are_declared():
- requirements = (ROOT / "docker/requirements.txt").read_text().splitlines()
+ requirements = (ROOT / "scripts/docker/requirements.txt").read_text().splitlines()
project = (ROOT / "pyproject.toml").read_text()
notebook = project.split("notebook = [", 1)[1].split("]", 1)[0]
for name, version in (("pandas", "2.2.3"), ("seaborn", "0.13.2"),
diff --git a/tests/test_benchmark_provenance.py b/tests/test_benchmark_provenance.py
index 6a09d6c..3feab77 100644
--- a/tests/test_benchmark_provenance.py
+++ b/tests/test_benchmark_provenance.py
@@ -14,7 +14,7 @@
sys.path.insert(0, str(ROOT))
from scripts import reproduce_historical_benchmark as audit
-spec = importlib.util.spec_from_file_location("competitor", ROOT / "reproduction/benchmark/run_competitor.py")
+spec = importlib.util.spec_from_file_location("competitor", ROOT / "examples/reproduction/benchmark/run_competitor.py")
competitor = importlib.util.module_from_spec(spec)
spec.loader.exec_module(competitor)
@@ -124,7 +124,7 @@ def test_rna_preflight_needs_no_ml_import_and_writes_nothing(self):
manifest = Path(tmp) / "manifest.json"
manifest.write_text(json.dumps({"files": competitor.model_files(model)}))
out = Path(tmp) / "out"
- command = [sys.executable, str(ROOT / "reproduction/benchmark/run_competitor.py"), "rna-mlm", "--input", str(audit.BUNDLE / "fixtures/milena/Milena_2021_cata.fasta"), "--model-dir", str(model), "--model-manifest", str(manifest), "--max-tokens", "512", "--output", str(out), "--dry-run"]
+ command = [sys.executable, str(ROOT / "examples/reproduction/benchmark/run_competitor.py"), "rna-mlm", "--input", str(audit.BUNDLE / "fixtures/milena/Milena_2021_cata.fasta"), "--model-dir", str(model), "--model-manifest", str(manifest), "--max-tokens", "512", "--output", str(out), "--dry-run"]
result = subprocess.run(command, capture_output=True)
self.assertEqual(result.returncode, 0, result.stderr.decode())
self.assertFalse(out.exists())
diff --git a/tests/test_benchmark_release.py b/tests/test_benchmark_release.py
index ecdc610..2a41ba9 100644
--- a/tests/test_benchmark_release.py
+++ b/tests/test_benchmark_release.py
@@ -169,15 +169,15 @@ def test_invalid_csv_header_rejected(self):
BR.read_csv(self.root / 'bad.csv', ['score'])
def test_reference_coverage(self):
- config = json.loads((ROOT / 'reproduction/benchmark_release/reference_manifest.json').read_text())
- report = BR.audit_reference(config, ROOT / 'reproduction/benchmark_release/reference')
+ config = json.loads((ROOT / 'examples/reproduction/benchmark_release/reference_manifest.json').read_text())
+ report = BR.audit_reference(config, ROOT / 'examples/reproduction/benchmark_release/reference')
self.assertEqual([(g['observed_pairs'], g['expected_pairs']) for g in report['groups']], [(195, 195), (75, 75), (220, 240)])
self.assertEqual({r['model'] for r in report['groups'][2]['missing_pairs']}, {'Evo2 7B'})
self.assertFalse(report['complete'])
def test_sample_count_discrepancies_exposed(self):
- config = json.loads((ROOT / 'reproduction/benchmark_release/reference_manifest.json').read_text())
- report = BR.audit_reference(config, ROOT / 'reproduction/benchmark_release/reference')
+ config = json.loads((ROOT / 'examples/reproduction/benchmark_release/reference_manifest.json').read_text())
+ report = BR.audit_reference(config, ROOT / 'examples/reproduction/benchmark_release/reference')
self.assertEqual(len(report['groups'][0]['inconsistent_sample_counts']), 4)
self.assertTrue(report['groups'][0]['coverage_complete'])
self.assertFalse(report['groups'][0]['sample_counts_consistent'])
diff --git a/tests/test_reproducibility.py b/tests/test_reproducibility.py
index 0c7105d..56a1ca1 100644
--- a/tests/test_reproducibility.py
+++ b/tests/test_reproducibility.py
@@ -89,7 +89,7 @@ def test_optimization_prompt_not_double_wrapped():
def test_mixed_glm_failure_does_not_change_objective():
- from finetune.utils.lineage_dataset import LineageRNADataset
+ from training.finetune.utils.lineage_dataset import LineageRNADataset
ds = object.__new__(LineageRNADataset)
ds.samples = [('ACGU' * 8, None, 'tRNA', None)]
ds.mode, ds.glm_probability, ds.span_config = 'mixed', 1.0, None
@@ -104,7 +104,7 @@ def test_mixed_glm_failure_does_not_change_objective():
def test_glm_dataset_has_supervised_targets(mode):
from pathlib import Path
from eva.lineage_tokenizer import get_lineage_rna_tokenizer
- from finetune.utils.lineage_dataset import LineageRNADataset
+ from training.finetune.utils.lineage_dataset import LineageRNADataset
tok = get_lineage_rna_tokenizer()
ds = LineageRNADataset(str(Path(__file__).parent / 'data/train_smoke.fasta'), tok,
lineage_file=None, use_lineage_prefix=False, mode=mode, glm_probability=1.0,
@@ -122,7 +122,7 @@ def test_training_requires_checkpoint(kind):
trainer.config = {}
loader = trainer._load_pretrain_checkpoint
else:
- from finetune.train_finetune import FinetuneTrainer
+ from training.finetune.train_finetune import FinetuneTrainer
trainer = object.__new__(FinetuneTrainer)
trainer.training_config = {}
loader = trainer._load_pretrain_checkpoint
@@ -133,7 +133,7 @@ def test_training_requires_checkpoint(kind):
def test_aptamer_cli_rejects_documented_old_invalid_flag():
import subprocess
from pathlib import Path
- script = Path(__file__).resolve().parents[1] / 'finetune/aptamer/script/run_aptamer_finetuning.sh'
+ script = Path(__file__).resolve().parents[1] / 'training/finetune/aptamer/script/run_aptamer_finetuning.sh'
result = subprocess.run(['bash', str(script), '--rna-type', 'aptamer'], capture_output=True, text=True)
assert result.returncode == 2 and 'Unknown option' in result.stderr
diff --git a/tests/test_source_layout.py b/tests/test_source_layout.py
new file mode 100644
index 0000000..cf1252b
--- /dev/null
+++ b/tests/test_source_layout.py
@@ -0,0 +1,64 @@
+"""Exercise source entry points after grouping tutorials and training resources."""
+import importlib.util
+import json
+import os
+from pathlib import Path
+import subprocess
+import sys
+
+import pytest
+
+ROOT = Path(__file__).resolve().parents[1]
+
+
+@pytest.mark.parametrize('relative', [
+ 'design/design_paths.py', 'generation/generation_paths.py',
+ 'prediction/prediction_paths.py', 'interpretability_analysis/reproduce_paths.py',
+])
+def test_notebook_helpers_find_source_root(relative, monkeypatch, tmp_path):
+ monkeypatch.chdir(tmp_path)
+ path = ROOT / 'examples/notebooks' / relative
+ spec = importlib.util.spec_from_file_location('notebook_paths', path)
+ module = importlib.util.module_from_spec(spec)
+ spec.loader.exec_module(module)
+ assert module.project_root() == ROOT
+ if hasattr(module, 'font_path'):
+ assert module.font_path().is_file()
+ if hasattr(module, 'tools_dir'):
+ assert (module.tools_dir() / 'predict.py').is_file()
+
+
+def test_competitor_evaluator_from_outside_checkout(tmp_path):
+ labels = tmp_path / 'labels.csv'
+ predictions = tmp_path / 'predictions.csv'
+ labels.write_text('variant_id,sequence,label\na,ACGU,1\nb,AGCU,2\nc,AUCG,3\n')
+ predictions.write_text('variant_id,sequence,score\nc,AUCG,30\na,ACGU,10\nb,AGCU,20\n')
+ output = tmp_path / 'metrics.json'
+ subprocess.run([
+ sys.executable, str(ROOT / 'examples/reproduction/benchmark/run_competitor.py'),
+ 'evaluate', '--predictions', str(predictions), '--labels', str(labels),
+ '--output', str(output),
+ ], cwd=tmp_path, check=True, capture_output=True, text=True)
+ assert json.loads(output.read_text())['spearman'] == 1.0
+
+
+def test_finetune_help_from_outside_checkout(tmp_path):
+ run = subprocess.run([
+ sys.executable, str(ROOT / 'training/finetune/train_finetune.py'), '--help',
+ ], cwd=tmp_path, check=True, capture_output=True, text=True)
+ assert '--config' in run.stdout
+
+
+def test_sae_shell_resolves_source_root(tmp_path):
+ checkpoint = tmp_path / 'checkpoint'
+ checkpoint.mkdir()
+ for name in ['config.json', 'tokenizer.json', 'model_weights.pt']:
+ (checkpoint / name).write_text('path-resolution fixture only')
+ env = {k: v for k, v in os.environ.items() if k not in {'EVA_REPO_ROOT', 'HF_MODEL_ROOT'}}
+ env.update(SAE_CKPT_DIR=str(checkpoint), HF_DATA_FASTA=str(ROOT / 'tests/data/train_smoke.fasta'))
+ helper = ROOT / 'examples/notebooks/interpretability_analysis/sae_repro_release/scripts/_resolve_paths.sh'
+ run = subprocess.run([
+ 'bash', '-c', 'source "$1"; resolve_sae_paths && printf "%s" "$EVA_REPO_ROOT"',
+ 'path-check', str(helper),
+ ], cwd=tmp_path, env=env, check=True, capture_output=True, text=True)
+ assert Path(run.stdout) == ROOT
diff --git a/tools/predict.py b/tools/predict.py
index 65f0596..09b713a 100755
--- a/tools/predict.py
+++ b/tools/predict.py
@@ -6,7 +6,7 @@
Usage examples:
# Run RNA sequence scoring inside container
- docker exec -it eva python /eva/tools/predict.py --config /eva/config/tools_config/config_score_example.yaml
+ docker exec -it eva python /eva/tools/predict.py --config /eva/examples/config/tools_config/config_score_example.yaml
# RNA sequence scoring
python predict.py --checkpoint /path/to/model --input sequences.fa --output scores.json
diff --git a/training/README.md b/training/README.md
new file mode 100644
index 0000000..d15e973
--- /dev/null
+++ b/training/README.md
@@ -0,0 +1,20 @@
+# Training
+
+Pretraining, midtraining, fine-tuning and evaluation live together here.
+Use the complete source checkout and the [GPU environment](../docs/INSTALLATION.md#gpu-runtime-docker).
+
+| Task | Entry |
+|---|---|
+| Pretraining | [Training guide](pretrain/README.md) · `pretrain/train_stage1.py` · `dense_pretrain/train_dense.py` |
+| Midtraining | `midtrain/train_midtrain.py` |
+| Fine-tuning | [Aptamer walkthrough](finetune/aptamer/script/README.md) · `finetune/train_finetune.py` |
+| Checkpoint evaluation | [Evaluation scripts and configurations](eval/) |
+
+From the repository root, verify the training workflow with the small synthetic
+example in the [reproduction guide](../docs/REPRODUCTION.md#training-and-fine-tuning).
+Its configuration is [`configs/pretrain_smoke.yaml`](configs/pretrain_smoke.yaml).
+This check exercises training and checkpoint reloads; paper-scale training needs
+the corresponding data and configuration.
+
+Fine-tuning commands use `python training/finetune/train_finetune.py --config PATH`.
+Shared training helpers are under `common/` and `finetune/utils/`.
diff --git a/training/common/base_trainer.py b/training/common/base_trainer.py
index 44b7c78..21c601a 100644
--- a/training/common/base_trainer.py
+++ b/training/common/base_trainer.py
@@ -206,7 +206,7 @@ def _setup_distributed(self):
self.device = torch.device(f'cuda:{self.local_rank}')
def _setup_logging(self):
- from finetune.utils.logging import create_logger
+ from training.finetune.utils.logging import create_logger
logging_config = self.config.get('logging_config', {})
experiment_name = f"{self.stage_name}_{time.strftime('%Y%m%d_%H%M%S')}"
log_dir = logging_config.get('log_dir', self.default_log_dir)
@@ -235,8 +235,8 @@ def _set_seed(self):
def _setup_datasets(self):
"""设置数据集"""
- from finetune.utils.lineage_dataset import create_lineage_dataset
- from finetune.utils.rna_collator import create_rna_data_collator
+ from training.finetune.utils.lineage_dataset import create_lineage_dataset
+ from training.finetune.utils.rna_collator import create_rna_data_collator
data_config = self.config.get('data_config', {})
training_config = self.config.get('training_config', {})
@@ -254,7 +254,7 @@ def _setup_datasets(self):
span_config = None
if mode in ['mixed', 'completion']:
- from finetune.utils.lineage_dataset import SpanConfig
+ from training.finetune.utils.lineage_dataset import SpanConfig
span_config_dict = data_config.get('span_config', {})
span_config = SpanConfig(
max_coverage_ratios=span_config_dict.get('max_coverage_ratios', [0.15, 0.25, 0.5, 0.8]),
@@ -419,7 +419,7 @@ def _update_dropout_rates(self, step: int):
self.current_dropout_values = {'resid': p_resid, 'hidden': p_hidden}
def _setup_memory_manager(self):
- from finetune.utils.memory import create_memory_manager
+ from training.finetune.utils.memory import create_memory_manager
memory_config = self.config.get('memory_config', {})
if memory_config.get('enable_monitoring', True):
self.memory_manager = create_memory_manager(
diff --git a/config/training/pretrain_smoke.yaml b/training/configs/pretrain_smoke.yaml
similarity index 100%
rename from config/training/pretrain_smoke.yaml
rename to training/configs/pretrain_smoke.yaml
diff --git a/training/eval/scripts/common/base_evaluator.py b/training/eval/scripts/common/base_evaluator.py
index 90114cc..c9f83b5 100644
--- a/training/eval/scripts/common/base_evaluator.py
+++ b/training/eval/scripts/common/base_evaluator.py
@@ -177,8 +177,8 @@ def _prepare_dataloader(self) -> DataLoader:
if str(project_root) not in sys.path:
sys.path.insert(0, str(project_root))
- from finetune.utils.lineage_dataset import create_lineage_dataset, SpanConfig
- from finetune.utils.rna_collator import create_rna_data_collator
+ from training.finetune.utils.lineage_dataset import create_lineage_dataset, SpanConfig
+ from training.finetune.utils.rna_collator import create_rna_data_collator
stage_config = self.eval_config.get(self.stage, {})
diff --git a/finetune/aptamer/script/README.md b/training/finetune/aptamer/script/README.md
similarity index 83%
rename from finetune/aptamer/script/README.md
rename to training/finetune/aptamer/script/README.md
index 0c4d5a4..a8d1fe6 100644
--- a/finetune/aptamer/script/README.md
+++ b/training/finetune/aptamer/script/README.md
@@ -1,7 +1,7 @@
# Aptamer finetuning (single GPU)
Use a running `eva-repro` container with the repository mounted at `/eva`, as
-shown in the [reproduction guide](../../../docs/REPRODUCTION.md).
+shown in the [reproduction guide](../../../../docs/REPRODUCTION.md).
The Python trainer is single-GPU; this wrapper does not implement distributed
training. `--gpu 0` means GPU 0 **inside** the container, even when it exposes host GPU 7.
@@ -13,7 +13,7 @@ there is no `--rna-type` CLI option. Template `glm_probability: 0` is CLM only.
YAML paths resolve from `/eva`, or may be absolute container paths.
```bash
-bash finetune/aptamer/script/run_aptamer_finetuning.sh \
+bash training/finetune/aptamer/script/run_aptamer_finetuning.sh \
--container eva-repro --gpu 0 --config results/my_aptamer/experiment_config.yaml --foreground
```
@@ -25,5 +25,5 @@ match. No LD_LIBRARY_PATH override is injected.
Inside a container, invoke Python directly, without nested Docker:
```bash
-python finetune/train_finetune.py --config results/my_aptamer/experiment_config.yaml
+python training/finetune/train_finetune.py --config results/my_aptamer/experiment_config.yaml
```
diff --git a/finetune/aptamer/script/experiment_config_template.yaml b/training/finetune/aptamer/script/experiment_config_template.yaml
similarity index 97%
rename from finetune/aptamer/script/experiment_config_template.yaml
rename to training/finetune/aptamer/script/experiment_config_template.yaml
index 0df660f..e173f52 100644
--- a/finetune/aptamer/script/experiment_config_template.yaml
+++ b/training/finetune/aptamer/script/experiment_config_template.yaml
@@ -28,7 +28,7 @@ data_config:
max_samples: null
# 【必须修改】训练数据文件路径
- train_file: ./finetune/aptamer/data/lg/tfr1_aptamer.fasta
+ train_file: ./training/finetune/aptamer/data/lg/tfr1_aptamer.fasta
# 【可选】如果使用物种前缀,需要提供谱系文件
lineage_file: ./data/training_data/lineage_greengenes.tsv
@@ -143,7 +143,7 @@ training_config:
# 微调核心配置:预训练checkpoint路径
# 【必须修改】指向你的预训练模型checkpoint
# ============================================
- resume_from_pretrain: ./finetune/checkpoint/1400M_mid_25500_old
+ resume_from_pretrain: ./training/finetune/checkpoint/1400M_mid_25500_old
# ============================================
# Batch配置
# 【可选修改】根据GPU内存和数据集大小调整
diff --git a/finetune/aptamer/script/experiment_config_template_pepper.yaml b/training/finetune/aptamer/script/experiment_config_template_pepper.yaml
similarity index 97%
rename from finetune/aptamer/script/experiment_config_template_pepper.yaml
rename to training/finetune/aptamer/script/experiment_config_template_pepper.yaml
index 15186c1..df321e7 100644
--- a/finetune/aptamer/script/experiment_config_template_pepper.yaml
+++ b/training/finetune/aptamer/script/experiment_config_template_pepper.yaml
@@ -28,7 +28,7 @@ data_config:
max_samples: null
# 【必须修改】训练数据文件路径
- train_file: ./finetune/aptamer/data/pepper_active_sequences.fasta
+ train_file: ./training/finetune/aptamer/data/pepper_active_sequences.fasta
# 【可选】如果使用物种前缀,需要提供谱系文件
lineage_file: ./data/training_data/lineage_greengenes.tsv
@@ -143,7 +143,7 @@ training_config:
# 微调核心配置:预训练checkpoint路径
# 【必须修改】指向你的预训练模型checkpoint
# ============================================
- resume_from_pretrain: ./finetune/checkpoint/1400M_mid_25500_old
+ resume_from_pretrain: ./training/finetune/checkpoint/1400M_mid_25500_old
# ============================================
# Batch配置
# 【可选修改】根据GPU内存和数据集大小调整
diff --git a/finetune/aptamer/script/run_aptamer_finetuning.sh b/training/finetune/aptamer/script/run_aptamer_finetuning.sh
similarity index 86%
rename from finetune/aptamer/script/run_aptamer_finetuning.sh
rename to training/finetune/aptamer/script/run_aptamer_finetuning.sh
index 26019bb..394056e 100644
--- a/finetune/aptamer/script/run_aptamer_finetuning.sh
+++ b/training/finetune/aptamer/script/run_aptamer_finetuning.sh
@@ -2,7 +2,7 @@
# Single-GPU finetuning; host source is mounted at CONTAINER_WORKDIR.
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
-HOST_PROJECT_DIR="$(cd "$SCRIPT_DIR/../../.." && pwd)"
+HOST_PROJECT_DIR="$(cd "$SCRIPT_DIR/../../../.." && pwd)"
CONTAINER_WORKDIR="${CONTAINER_WORKDIR:-/eva}"
CONTAINER_NAME="${CONTAINER_NAME:-eva-repro}"
GPU_ID=0
@@ -32,7 +32,7 @@ done
[[ "$GPU_ID" =~ ^[0-9]+$ ]] || { printf '%s\n' '--gpu must be a single nonnegative integer' >&2; exit 2; }
if [[ -z "$CONFIG_FILE" ]]; then
case "$EXPERIMENT_NAME" in
- '') CONFIG_FILE=finetune/aptamer/script/experiment_config_template.yaml;;
+ '') CONFIG_FILE=training/finetune/aptamer/script/experiment_config_template.yaml;;
/*|results/*) CONFIG_FILE="${EXPERIMENT_NAME%/}/experiment_config.yaml";;
*) CONFIG_FILE="results/aptamer_finetuning/$EXPERIMENT_NAME/experiment_config.yaml";;
esac
@@ -44,8 +44,8 @@ case "$CONFIG_FILE" in
esac
[[ "$(docker inspect --format '{{.State.Running}}' "$CONTAINER_NAME")" == true ]] || { printf '%s\n' 'Container is not running' >&2; exit 1; }
docker exec "$CONTAINER_NAME" test -f "$CONFIG_FILE"
-docker exec "$CONTAINER_NAME" test -f "$CONTAINER_WORKDIR/finetune/train_finetune.py"
-cmd=(docker exec -w "$CONTAINER_WORKDIR" -e "CUDA_VISIBLE_DEVICES=$GPU_ID" "$CONTAINER_NAME" python finetune/train_finetune.py --config "$CONFIG_FILE")
+docker exec "$CONTAINER_NAME" test -f "$CONTAINER_WORKDIR/training/finetune/train_finetune.py"
+cmd=(docker exec -w "$CONTAINER_WORKDIR" -e "CUDA_VISIBLE_DEVICES=$GPU_ID" "$CONTAINER_NAME" python training/finetune/train_finetune.py --config "$CONFIG_FILE")
if [[ "$FOREGROUND" == 1 ]]; then
exec "${cmd[@]}"
fi
diff --git a/finetune/data/aptamer/pepper_active_sequences.fasta b/training/finetune/data/aptamer/pepper_active_sequences.fasta
similarity index 100%
rename from finetune/data/aptamer/pepper_active_sequences.fasta
rename to training/finetune/data/aptamer/pepper_active_sequences.fasta
diff --git a/finetune/data/gRNA/iscb_m16_active.fasta b/training/finetune/data/gRNA/iscb_m16_active.fasta
similarity index 100%
rename from finetune/data/gRNA/iscb_m16_active.fasta
rename to training/finetune/data/gRNA/iscb_m16_active.fasta
diff --git a/finetune/data/gRNA/iscb_m16_active.fasta.index b/training/finetune/data/gRNA/iscb_m16_active.fasta.index
similarity index 100%
rename from finetune/data/gRNA/iscb_m16_active.fasta.index
rename to training/finetune/data/gRNA/iscb_m16_active.fasta.index
diff --git a/finetune/data/gRNA/iscb_m17_active.fasta b/training/finetune/data/gRNA/iscb_m17_active.fasta
similarity index 100%
rename from finetune/data/gRNA/iscb_m17_active.fasta
rename to training/finetune/data/gRNA/iscb_m17_active.fasta
diff --git a/finetune/gRNA/script/experiment_config_m16_active.yaml b/training/finetune/gRNA/script/experiment_config_m16_active.yaml
similarity index 94%
rename from finetune/gRNA/script/experiment_config_m16_active.yaml
rename to training/finetune/gRNA/script/experiment_config_m16_active.yaml
index 2e6f214..5de1058 100644
--- a/finetune/gRNA/script/experiment_config_m16_active.yaml
+++ b/training/finetune/gRNA/script/experiment_config_m16_active.yaml
@@ -11,7 +11,7 @@ data_config:
max_seq_length: 8192
max_samples: null
- train_file: ./finetune/gRNA/data/iscb_m16/iscb_m16_active.fasta
+ train_file: ./training/finetune/gRNA/data/iscb_m16/iscb_m16_active.fasta
lineage_file: null
@@ -84,7 +84,7 @@ training_config:
output_dir: ./results/gRNA_finetuning/gRNA_m16_active_finetuning_YRNA
- resume_from_pretrain: ./finetune/checkpoint/1400M_mid_25500_old
+ resume_from_pretrain: ./training/finetune/checkpoint/1400M_mid_25500_old
per_device_train_batch_size: 1
gradient_accumulation_steps: 1
diff --git a/finetune/gRNA/script/experiment_config_m16_active_single_gpu.yaml b/training/finetune/gRNA/script/experiment_config_m16_active_single_gpu.yaml
similarity index 98%
rename from finetune/gRNA/script/experiment_config_m16_active_single_gpu.yaml
rename to training/finetune/gRNA/script/experiment_config_m16_active_single_gpu.yaml
index 61e7c8e..292437b 100644
--- a/finetune/gRNA/script/experiment_config_m16_active_single_gpu.yaml
+++ b/training/finetune/gRNA/script/experiment_config_m16_active_single_gpu.yaml
@@ -17,7 +17,7 @@ data_config:
max_samples: null
# 修正: 实际数据路径
- train_file: ./finetune/data/gRNA/iscb_m16_active.fasta
+ train_file: ./training/finetune/data/gRNA/iscb_m16_active.fasta
lineage_file: null
diff --git a/finetune/gRNA/script/experiment_config_m17_active.yaml b/training/finetune/gRNA/script/experiment_config_m17_active.yaml
similarity index 94%
rename from finetune/gRNA/script/experiment_config_m17_active.yaml
rename to training/finetune/gRNA/script/experiment_config_m17_active.yaml
index a7fe731..5ea425b 100644
--- a/finetune/gRNA/script/experiment_config_m17_active.yaml
+++ b/training/finetune/gRNA/script/experiment_config_m17_active.yaml
@@ -11,7 +11,7 @@ data_config:
max_seq_length: 8192
max_samples: null
- train_file: ./finetune/gRNA/data/iscb_m17/iscb_m17_active.fasta
+ train_file: ./training/finetune/gRNA/data/iscb_m17/iscb_m17_active.fasta
lineage_file: null
@@ -84,7 +84,7 @@ training_config:
output_dir: ./results/gRNA_finetuning/gRNA_m17_active_finetuning_YRNA
- resume_from_pretrain: ./finetune/checkpoint/1400M_mid_25500_old
+ resume_from_pretrain: ./training/finetune/checkpoint/1400M_mid_25500_old
per_device_train_batch_size: 1
gradient_accumulation_steps: 1
diff --git a/finetune/gRNA/script/experiment_config_template.yaml b/training/finetune/gRNA/script/experiment_config_template.yaml
similarity index 97%
rename from finetune/gRNA/script/experiment_config_template.yaml
rename to training/finetune/gRNA/script/experiment_config_template.yaml
index 78a6df8..ea6833a 100644
--- a/finetune/gRNA/script/experiment_config_template.yaml
+++ b/training/finetune/gRNA/script/experiment_config_template.yaml
@@ -22,7 +22,7 @@ data_config:
max_samples: null
# 【必须修改】训练数据文件路径
- train_file: ./finetune/gRNA/data/iscb_good.fasta
+ train_file: ./training/finetune/gRNA/data/iscb_good.fasta
# 【不使用】物种前缀相关配置
lineage_file: null
@@ -122,7 +122,7 @@ training_config:
# 微调核心配置:预训练checkpoint路径
# 【必须修改】指向你的预训练模型checkpoint
# ============================================
- resume_from_pretrain: ./finetune/checkpoint/1400M_mid_25500_old
+ resume_from_pretrain: ./training/finetune/checkpoint/1400M_mid_25500_old
# ============================================
# Batch配置
diff --git a/finetune/gRNA/script/run_gRNA_finetuning.sh b/training/finetune/gRNA/script/run_gRNA_finetuning.sh
similarity index 99%
rename from finetune/gRNA/script/run_gRNA_finetuning.sh
rename to training/finetune/gRNA/script/run_gRNA_finetuning.sh
index 90f0c54..2b83d67 100755
--- a/finetune/gRNA/script/run_gRNA_finetuning.sh
+++ b/training/finetune/gRNA/script/run_gRNA_finetuning.sh
@@ -34,7 +34,7 @@ USER_CONFIG_FILE=""
# 支持宿主机路径或容器路径
# =============================================================================
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
-PROJECT_ROOT="$(cd "${SCRIPT_DIR}/../../.." && pwd)"
+PROJECT_ROOT="$(cd "${SCRIPT_DIR}/../../../.." && pwd)"
DEFAULT_CONFIG_FILE="${SCRIPT_DIR}/experiment_config_m16_active.yaml"
# DEFAULT_CONFIG_FILE="" # 留空则需要通过命令行指定
@@ -280,7 +280,7 @@ main() {
# 训练命令(单卡模式,使用容器内路径)
TRAIN_CMD="cd ${CONTAINER_PROJECT_ROOT} && CUDA_VISIBLE_DEVICES=${GPU_ID} ${PYTHON_PATH} \
- finetune/train_finetune.py \
+ training/finetune/train_finetune.py \
--config=$CONTAINER_CONFIG_FILE"
# 日志文件
diff --git a/finetune/generation/generate_rna.py b/training/finetune/generation/generate_rna.py
similarity index 98%
rename from finetune/generation/generate_rna.py
rename to training/finetune/generation/generate_rna.py
index d61e766..a83506d 100644
--- a/finetune/generation/generate_rna.py
+++ b/training/finetune/generation/generate_rna.py
@@ -21,8 +21,8 @@
from pathlib import Path
import shutil
-MODEL_CODE_PATH = str(Path(__file__).resolve().parent.parent.parent / 'model')
-sys.path.insert(0, str(Path(__file__).resolve().parent.parent.parent))
+MODEL_CODE_PATH = str(Path(__file__).resolve().parents[3] / 'model')
+sys.path.insert(0, str(Path(__file__).resolve().parents[3]))
DEFAULT_CHECKPOINT_PATH = './results/checkpoint'
DEFAULT_NUM_SEQS = 1000
diff --git a/finetune/generation/kill_generation.sh b/training/finetune/generation/kill_generation.sh
similarity index 100%
rename from finetune/generation/kill_generation.sh
rename to training/finetune/generation/kill_generation.sh
diff --git a/finetune/generation/run_all_gpus.sh b/training/finetune/generation/run_all_gpus.sh
similarity index 98%
rename from finetune/generation/run_all_gpus.sh
rename to training/finetune/generation/run_all_gpus.sh
index f8a1d08..736d516 100644
--- a/finetune/generation/run_all_gpus.sh
+++ b/training/finetune/generation/run_all_gpus.sh
@@ -16,8 +16,8 @@
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
LOG_DIR="${SCRIPT_DIR}/logs"
-PROJECT_ROOT="$(cd "${SCRIPT_DIR}/../.." && pwd)"
-CONTAINER_SCRIPT_DIR="${PROJECT_ROOT}/finetune/generation"
+PROJECT_ROOT="$(cd "${SCRIPT_DIR}/../../.." && pwd)"
+CONTAINER_SCRIPT_DIR="${PROJECT_ROOT}/training/finetune/generation"
# 默认参数
BATCH_SIZE=2
diff --git a/finetune/train_finetune.py b/training/finetune/train_finetune.py
similarity index 99%
rename from finetune/train_finetune.py
rename to training/finetune/train_finetune.py
index a6e5b48..14a9ef8 100644
--- a/finetune/train_finetune.py
+++ b/training/finetune/train_finetune.py
@@ -35,17 +35,17 @@
from tqdm import tqdm
# Add project root to path
-project_root = Path(__file__).parent.parent
+project_root = Path(__file__).resolve().parents[2]
sys.path.insert(0, str(project_root))
from eva.config import EvaConfig
from eva.lineage_tokenizer import LineageRNATokenizer
# 使用本地 utils 模块
-from finetune.utils.lineage_dataset import create_lineage_dataset, SpanConfig
-from finetune.utils.rna_collator import create_rna_data_collator
-from finetune.utils.memory import MemoryManager, create_memory_manager
-from finetune.utils.logging import create_logger
+from training.finetune.utils.lineage_dataset import create_lineage_dataset, SpanConfig
+from training.finetune.utils.rna_collator import create_rna_data_collator
+from training.finetune.utils.memory import MemoryManager, create_memory_manager
+from training.finetune.utils.logging import create_logger
# Configure basic logging to ensure logger.info outputs to stdout
logging.basicConfig(
diff --git a/reproduction/benchmark/upstream/eva_checkpoint_model/utils/__init__.py b/training/finetune/utils/__init__.py
similarity index 100%
rename from reproduction/benchmark/upstream/eva_checkpoint_model/utils/__init__.py
rename to training/finetune/utils/__init__.py
diff --git a/finetune/utils/lineage_dataset.py b/training/finetune/utils/lineage_dataset.py
similarity index 100%
rename from finetune/utils/lineage_dataset.py
rename to training/finetune/utils/lineage_dataset.py
diff --git a/finetune/utils/logging.py b/training/finetune/utils/logging.py
similarity index 100%
rename from finetune/utils/logging.py
rename to training/finetune/utils/logging.py
diff --git a/finetune/utils/memory.py b/training/finetune/utils/memory.py
similarity index 100%
rename from finetune/utils/memory.py
rename to training/finetune/utils/memory.py
diff --git a/finetune/utils/rna_collator.py b/training/finetune/utils/rna_collator.py
similarity index 100%
rename from finetune/utils/rna_collator.py
rename to training/finetune/utils/rna_collator.py
diff --git a/training/pretrain/README.md b/training/pretrain/README.md
index 8bfaa97..81688b1 100644
--- a/training/pretrain/README.md
+++ b/training/pretrain/README.md
@@ -4,7 +4,7 @@ Run from the repository root in the GPU environment described in
[the reproduction guide](../../docs/REPRODUCTION.md).
```bash
-python training/pretrain/train_stage1.py --config config/training/pretrain_smoke.yaml
+python training/pretrain/train_stage1.py --config training/configs/pretrain_smoke.yaml
```
This is a two-step synthetic engineering test, **not** a recovered paper recipe.
@@ -20,7 +20,7 @@ python scripts/smoke_workflows.py --checkpoint checkpoint/EVA_21M --output resul
For an explicitly configured run, use `training/midtrain/train_midtrain.py --config YOUR_CONFIG`.
Mid-training requires `training_config.resume_from_pretrain` pointing to a DCP
checkpoint and resets the optimizer/scheduler. Finetuning uses
-`finetune/train_finetune.py --config YOUR_CONFIG` and accepts DCP or PT weights.
+`training/finetune/train_finetune.py --config YOUR_CONFIG` and accepts DCP or PT weights.
`data_config.mode` selects `generation`, `completion` or `mixed`.
`glm_probability` only controls the mix when mode is `mixed`; zero means CLM only.
diff --git a/training/pretrain/train_stage1.py b/training/pretrain/train_stage1.py
index 7d77b24..9195be8 100644
--- a/training/pretrain/train_stage1.py
+++ b/training/pretrain/train_stage1.py
@@ -146,7 +146,7 @@ def _extra_metrics(self, base_metrics):
def main():
LineageStage1Trainer.main(
description='Lineage-based Stage 1: 序列生成',
- default_config='config/training/pretrain_smoke.yaml',
+ default_config='training/configs/pretrain_smoke.yaml',
supports_resume=True,
)