Skill Tracer
Skills › Scientific Agent Skills › waypoint-bio

waypoint-bio

skill · 319 lines · MIT · skills/waypoint-bio/SKILL.md

The facts

Its description

Supports work with Outpost Bio's open microbiome foundation models - the Waypoint checkpoints (Waypoint-6m, Waypoint-45m, Waypoint-170m), the Atlas pretraining corpus, the Compass eight-task benchmark, or the `waypoint` CLI from the `waypoint-bio` package. Covers embedding microbiome samples, fine-tuning on taxonomic abundance data, benchmarking a checkpoint on Compass, pretraining a GPT-2 model on taxonomic abundance profiles, and converting MetaPhlAn, Kraken2, QIIME 2, or MGnify abundance tables into waypoint format.

The description the agent reads to decide when to use it.

From its settingsline 3

Runs scripts

python scripts/profiler_to_waypoint.py, python scripts/vocab_coverage.py, scripts/vocab_coverage.py (first 5 of 7 lines)

Scripts the text names. Found by matching words, so treat them as pointers.

Found by matching wordsline 133 line 137 line 141 line 155 line 264

Files it mentions

references/upstream-review.md, references/python-api.md, references/data-preparation.md, references/compass-benchmark.md, references/cli-reference.md (first 5 of 13 lines)

Files the text names, such as ones to read or write. Found by matching words, so treat them as pointers.

Found by matching wordsline 69 line 90 line 146 line 232 line 253

Licence

MIT, from the skill file

The terms its author shares it under, which let it be shown here.

From its settingsline 4 licence text

Other settings

compatibility: Requires Python 3.10+ and waypoint-bio; the documented compatibility stack uses Transformers 4.57.6 and PEFT 0.18.1. Network access and approved Hugging Face access are needed for Hub downloads, but not for local conversion. Training benefits from a GPU. metadata: name: HF_TOKEN

More settings at the top of the file, shown as written.

From its settingsline 5 line 6
Other files in this skill (7) Close

The text

Open on GitHub

Most marks come from matching words in the file, so treat them as pointers.

1---
2name: waypoint-bio
3description: Supports work with Outpost Bio's open microbiome foundation models - the Waypoint checkpoints (Waypoint-6m, Waypoint-45m, Waypoint-170m), the Atlas pretraining corpus, the Compass eight-task benchmark, or the `waypoint` CLI from the `waypoint-bio` package. Covers embedding microbiome samples, fine-tuning on taxonomic abundance data, benchmarking a checkpoint on Compass, pretraining a GPT-2 model on taxonomic abundance profiles, and converting MetaPhlAn, Kraken2, QIIME 2, or MGnify abundance tables into waypoint format.
4license: MIT
5compatibility: Requires Python 3.10+ and waypoint-bio; the documented compatibility stack uses Transformers 4.57.6 and PEFT 0.18.1. Network access and approved Hugging Face access are needed for Hub downloads, but not for local conversion. Training benefits from a GPU.
6metadata:
7 version: "1.3"
8 skill-author: K-Dense Inc.
9 upstream-version: "waypoint-bio 1.0.2 (PyPI); GitHub main 1.0.4"
10 last-reviewed: "2026-10-01"
11 openclaw:
12 primaryEnv: HF_TOKEN
13 envVars:
14 - name: HF_TOKEN
15 required: false
16 description: Hugging Face read token with access to the gated outpost-bio/Waypoint-*, outpost-bio/Atlas, and outpost-bio/Compass repos.
17---
19# Waypoint: Outpost Bio's Open Microbiome Foundation Models

Waypoint: Outpost Bio's Open Microbiome Foundation Models

Raw lines 1 to 20
21## Overview
23Outpost Bio open-sourced three artefacts under Apache 2.0, described in
24[Treloar et al., bioRxiv 2026.05.02.722381](https://www.biorxiv.org/content/10.64898/2026.05.02.722381v2):
26| Artefact | What it is | Hugging Face |
27| --- | --- | --- |
28| **Waypoint** | GPT-2-style causal LMs over taxonomic tokens, 6M–170M params | `outpost-bio/Waypoint-6m`, `-45m`, `-170m` |
29| **Atlas** | 539,308 microbiome samples scraped from MGnify (485,377 pretrain / 53,931 benchmark) | `outpost-bio/Atlas` |
30| **Compass** | Eight downstream tasks over four studies | `outpost-bio/Compass` |
32The unifying idea: a microbiome sample is a *sentence*. Each taxon is one token, tokens are ordered
33by descending abundance z-score, and the model is trained with next-token prediction. A pretrained
34checkpoint then supplies sample-level embeddings or a fine-tuning backbone for prediction tasks.
36All of it is driven by one CLI, `waypoint`, with five subcommands: `prepare-dataset`, `embed`,
37`finetune`, `benchmark`, `pretrain`.

Overview

Outpost Bio open-sourced three artefacts under Apache 2.0, described in Treloar et al., bioRxiv 2026.05.02.722381:

ArtefactWhat it isHugging Face
WaypointGPT-2-style causal LMs over taxonomic tokens, 6M–170M paramsoutpost-bio/Waypoint-6m, -45m, -170m
Atlas539,308 microbiome samples scraped from MGnify (485,377 pretrain / 53,931 benchmark)outpost-bio/Atlas
CompassEight downstream tasks over four studiesoutpost-bio/Compass

The unifying idea: a microbiome sample is a sentence. Each taxon is one token, tokens are ordered by descending abundance z-score, and the model is trained with next-token prediction. A pretrained checkpoint then supplies sample-level embeddings or a fine-tuning backbone for prediction tasks.

All of it is driven by one CLI, waypoint, with five subcommands: prepare-dataset, embed, finetune, benchmark, pretrain.

Raw lines 21 to 38
39## When to use
41- Embedding 16S/shotgun taxonomic profiles into fixed-size vectors for clustering, visualisation, or
42 a downstream classifier.
43- Fine-tuning a Waypoint checkpoint to predict a phenotype, treatment, or continuous readout from
44 community composition.
45- Scoring your own microbiome model on Compass with an explicitly recorded protocol.
46- Pretraining a taxonomic language model on Atlas or on your own corpus.
47- Converting profiler output (MetaPhlAn, Kraken2/Bracken, QIIME 2, MGnify TSVs) into the input format
48 these tools expect.
50For small labelled datasets, start with a random-forest baseline and grouped validation. The
51paper's sample-size crossover is an empirical result from its experiments, not a universal cutoff
52for using embeddings or a guarantee of performance on a new study.

When to use

  • Embedding 16S/shotgun taxonomic profiles into fixed-size vectors for clustering, visualisation, or a downstream classifier.
  • Fine-tuning a Waypoint checkpoint to predict a phenotype, treatment, or continuous readout from community composition.
  • Scoring your own microbiome model on Compass with an explicitly recorded protocol.
  • Pretraining a taxonomic language model on Atlas or on your own corpus.
  • Converting profiler output (MetaPhlAn, Kraken2/Bracken, QIIME 2, MGnify TSVs) into the input format these tools expect.

For small labelled datasets, start with a random-forest baseline and grouped validation. The paper's sample-size crossover is an empirical result from its experiments, not a universal cutoff for using embeddings or a guarantee of performance on a new study.

Raw lines 39 to 53
54## Setup
56```bash
57pip install "waypoint-bio==1.0.2" "transformers==4.57.6" "peft==0.18.1" "huggingface-hub<1"
58```
60The 2026-10-01 review checked the published wheel, GitHub main `f45eee6d07a480bfc90f84ab8082bbc969dec15d`
61(1.0.4), and current Hub metadata. Small native CPU/tokenizer tests used Python 3.12, Torch
622.14.1, Transformers 4.57.6, PEFT 0.18.1 and pandas 3.0.6; no pretrained weights or gated rows
63were downloaded. The package leaves dependencies unbounded: Transformers 5 removes its
64pretraining `logging_dir` argument. Keep a separate compatible environment.
66**Upstream limitations:** local `TaxonomicTokenizer.save_pretrained()` raises
67`NotImplementedError` in both reviewed versions, blocking `pretrain` before training and
68`finetune` export when using that local tokenizer. Released 1.0.2 does not merge LoRA adapters
69or write training logs; GitHub 1.0.4 does. See `references/upstream-review.md` before training.
70Training examples below are source-checked templates, not completed scientific runs.
72Atlas, Compass, and every Waypoint checkpoint are **gated**. Access is auto-approved, but you must
73click through once per repo and then authenticate:
751. Request access on each repo page you need: [Waypoint-6m](https://huggingface.co/outpost-bio/Waypoint-6m),
76 [Waypoint-45m](https://huggingface.co/outpost-bio/Waypoint-45m),
77 [Waypoint-170m](https://huggingface.co/outpost-bio/Waypoint-170m),
78 [Atlas](https://huggingface.co/datasets/outpost-bio/Atlas),
79 [Compass](https://huggingface.co/datasets/outpost-bio/Compass).
802. Authenticate locally:
82 ```bash
83 hf auth login # or: export HF_TOKEN=hf_...
84 ```
86For 401/403 errors, check token validity, read scope, and approval for the specific repo.
87The tokenizer loader executes repository code with `trust_remote_code=True`. Review that code
88and pin an immutable Hub commit. The upstream CLI has no `--revision`; download a reviewed
89snapshot and pass its local path so model, tokenizer and ordering statistics share one revision

Setup

pip install "waypoint-bio==1.0.2" "transformers==4.57.6" "peft==0.18.1" "huggingface-hub<1"

The 2026-10-01 review checked the published wheel, GitHub main f45eee6d07a480bfc90f84ab8082bbc969dec15d (1.0.4), and current Hub metadata. Small native CPU/tokenizer tests used Python 3.12, Torch 2.14.1, Transformers 4.57.6, PEFT 0.18.1 and pandas 3.0.6; no pretrained weights or gated rows were downloaded. The package leaves dependencies unbounded: Transformers 5 removes its pretraining logging_dir argument. Keep a separate compatible environment.

Upstream limitations: local TaxonomicTokenizer.save_pretrained() raises NotImplementedError in both reviewed versions, blocking pretrain before training and finetune export when using that local tokenizer. Released 1.0.2 does not merge LoRA adapters or write training logs; GitHub 1.0.4 does. See references/upstream-review.md before training. Training examples below are source-checked templates, not completed scientific runs.

Atlas, Compass, and every Waypoint checkpoint are gated. Access is auto-approved, but you must click through once per repo and then authenticate:

  1. Request access on each repo page you need: Waypoint-6m, Waypoint-45m, Waypoint-170m, Atlas, Compass.
  2. Authenticate locally:

bash hf auth login # or: export HF_TOKEN=hf_...

For 401/403 errors, check token validity, read scope, and approval for the specific repo. The tokenizer loader executes repository code with trust_remote_code=True. Review that code and pin an immutable Hub commit. The upstream CLI has no --revision; download a reviewed snapshot and pass its local path so model, tokenizer and ordering statistics share one revision (see references/python-api.md).

Raw lines 54 to 91
92## The waypoint data format
94Everything except `prepare-dataset` consumes **waypoint format**: a `.parquet` / `.csv` / `.tsv`
95whose rows are samples, with two aligned list-columns plus any label columns you need.
97| Column | Type | Notes |
98| --- | --- | --- |
99| `Taxa` | `list[str]` | Full lineage strings, `;`-separated: `k__Bacteria; p__Firmicutes; ...; g__Lactobacillus` |
100| `Relative Abundances` | `list[float]` | Same length as `Taxa`, same order |
101| *(any)* | scalar | Targets, covariates, or a `Split` column |
103Use parquet to preserve list values and sample IDs. Upstream CSV/TSV loading loses the sample-ID
104index and, with pandas 3, does not parse string lists. The bundled coverage reader handles the
105converter's CSV/TSV, but that does not repair the upstream loader.
107**Give full lineages, not bare names.** The tokenizer extracts the genus segment (`g__`) from each
108lineage and falls back to the most specific higher rank when genus is missing. Bare names disable
109that fallback entirely.

The waypoint data format

Everything except prepare-dataset consumes waypoint format: a .parquet / .csv / .tsv whose rows are samples, with two aligned list-columns plus any label columns you need.

ColumnTypeNotes
Taxalist[str]Full lineage strings, ;-separated: k__Bacteria; p__Firmicutes; ...; g__Lactobacillus
Relative Abundanceslist[float]Same length as Taxa, same order
(any)scalarTargets, covariates, or a Split column

Use parquet to preserve list values and sample IDs. Upstream CSV/TSV loading loses the sample-ID index and, with pandas 3, does not parse string lists. The bundled coverage reader handles the converter's CSV/TSV, but that does not repair the upstream loader.

Give full lineages, not bare names. The tokenizer extracts the genus segment (g__) from each lineage and falls back to the most specific higher rank when genus is missing. Bare names disable that fallback entirely.

Raw lines 92 to 110
111## Workflow
113### 1. Get your data into waypoint format
115If you already have a sample × taxa (or taxa × sample) abundance matrix with lineage labels:
117```bash
118waypoint prepare-dataset \
119 --input abundance_matrix.tsv \
120 --metadata sample_labels.csv \
121 --output dataset.parquet
122```
124Orientation is auto-detected from the first column header (`taxonomy`, `lineage`, `taxon`, `otu`,
125`#otu id` ⇒ taxa-as-rows); override with `--orientation`. Rows are normalised to sum to 1 unless you
126pass `--no_normalize`, and zeros are dropped unless you pass `--keep_zeros`.
128`prepare-dataset` cannot read profiler output directly — MetaPhlAn uses `|` separators, Kraken2
129reports encode the hierarchy as indentation, and QIIME 2/SILVA prefixes the domain `d__` instead of
130`k__` (which the tokenizer silently ignores). Use the bundled converter for those:
132```bash
133python scripts/profiler_to_waypoint.py \
134 --input merged_metaphlan.tsv --format metaphlan \
135 --output dataset.parquet
137python scripts/profiler_to_waypoint.py \
138 --input reports/*.kreport --format kraken \
139 --output dataset.parquet
141python scripts/profiler_to_waypoint.py \
142 --input feature-table.tsv --format qiime2 --taxonomy-column taxonomy \
143 --output dataset.parquet
144```
146See `references/data-preparation.md` for every input layout, rank handling, and the `d__`/`|` gotchas.

1. Get your data into waypoint format

If you already have a sample × taxa (or taxa × sample) abundance matrix with lineage labels:

waypoint prepare-dataset \
    --input abundance_matrix.tsv \
    --metadata sample_labels.csv \
    --output dataset.parquet

Orientation is auto-detected from the first column header (taxonomy, lineage, taxon, otu, #otu id ⇒ taxa-as-rows); override with --orientation. Rows are normalised to sum to 1 unless you pass --no_normalize, and zeros are dropped unless you pass --keep_zeros.

prepare-dataset cannot read profiler output directly — MetaPhlAn uses | separators, Kraken2 reports encode the hierarchy as indentation, and QIIME 2/SILVA prefixes the domain d__ instead of k__ (which the tokenizer silently ignores). Use the bundled converter for those:

python scripts/profiler_to_waypoint.py \
    --input merged_metaphlan.tsv --format metaphlan \
    --output dataset.parquet

python scripts/profiler_to_waypoint.py \
    --input reports/*.kreport --format kraken \
    --output dataset.parquet

python scripts/profiler_to_waypoint.py \
    --input feature-table.tsv --format qiime2 --taxonomy-column taxonomy \
    --output dataset.parquet

See references/data-preparation.md for every input layout, rank handling, and the d__/| gotchas.

Raw lines 113 to 147
Runs code python scripts/profiler_to_waypoint.py :133
148### 2. Check vocabulary coverage before anything else
150Waypoint's vocabulary is fixed at pretraining time from Atlas. Taxa absent from it become `<unk>` and
151are **silently dropped** by `waypoint embed`; the paper names this as the models' main limitation. A
152sample whose taxa are all out-of-vocabulary yields a degenerate `[BOS][EOS]` embedding.
154```bash
155python scripts/vocab_coverage.py --model outpost-bio/Waypoint-6m --data dataset.parquet
156```
158It reports per-sample and abundance-weighted coverage and flags samples below a threshold. Treat
159the script's default 0.8 threshold as a heuristic, not a validated biological quality cutoff.
160Low abundance-weighted coverage is a reason to re-examine your taxonomy labels before
161trusting any downstream number.

2. Check vocabulary coverage before anything else

Waypoint's vocabulary is fixed at pretraining time from Atlas. Taxa absent from it become <unk> and are silently dropped by waypoint embed; the paper names this as the models' main limitation. A sample whose taxa are all out-of-vocabulary yields a degenerate [BOS][EOS] embedding.

python scripts/vocab_coverage.py --model outpost-bio/Waypoint-6m --data dataset.parquet

It reports per-sample and abundance-weighted coverage and flags samples below a threshold. Treat the script's default 0.8 threshold as a heuristic, not a validated biological quality cutoff. Low abundance-weighted coverage is a reason to re-examine your taxonomy labels before trusting any downstream number.

Raw lines 148 to 162
Runs code python scripts/vocab_coverage.py :155
163### 3. Embed samples
165```bash
166waypoint embed \
167 --model outpost-bio/Waypoint-6m \
168 --data dataset.parquet \
169 --output embeddings.parquet
170```
172Output is indexed by sample ID with columns `dim_0 … dim_{H-1}` (`H` = 256 for 6m, 512 for 45m,
173768 for 170m). Defaults: `--pooling last_token`, `--batch_size 32`, `--max_length 512`, device
174auto-detected (`cuda` → `mps` → `cpu`).
176Record the fraction of samples truncated at the chosen `max_length`, separately from vocabulary coverage. Samples can have excellent vocabulary coverage and still lose lower-ranked taxa after abundance/z-score sorting. Keep this limit consistent across embedding comparisons and report any sensitivity analysis.
178Use `--pooling last_token` to match the supervised `benchmark` and `finetune` default.
179Pretraining itself uses a next-token loss, without a sample-level pooling objective. `mean` is a reasonable alternative for
180unsupervised use; `first_token`/`cls_token` return the BOS position and carry little signal in a
181causal LM.

3. Embed samples

waypoint embed \
    --model outpost-bio/Waypoint-6m \
    --data dataset.parquet \
    --output embeddings.parquet

Output is indexed by sample ID with columns dim_0 … dim_{H-1} (H = 256 for 6m, 512 for 45m, 768 for 170m). Defaults: --pooling last_token, --batch_size 32, --max_length 512, device auto-detected (cuda → mps → cpu).

Record the fraction of samples truncated at the chosen max_length, separately from vocabulary coverage. Samples can have excellent vocabulary coverage and still lose lower-ranked taxa after abundance/z-score sorting. Keep this limit consistent across embedding comparisons and report any sensitivity analysis.

Use --pooling last_token to match the supervised benchmark and finetune default. Pretraining itself uses a next-token loss, without a sample-level pooling objective. mean is a reasonable alternative for unsupervised use; first_token/cls_token return the BOS position and carry little signal in a causal LM.

Raw lines 163 to 182
183### 4. Fine-tune on your labels
185```bash
186# classification
187waypoint finetune \
188 --model outpost-bio/Waypoint-45m \
189 --data dataset.parquet \
190 --output_dir outputs/ft_disease \
191 --task_type classification \
192 --target "Disease Status" \
193 --config configs/finetune_classification.yaml
195# regression, with a categorical covariate one-hot appended to the pooled embedding
196waypoint finetune \
197 --model outpost-bio/Waypoint-45m \
198 --data dataset.parquet \
199 --output_dir outputs/ft_degradation \
200 --task_type regression \
201 --target "Degradation Rate" \
202 --covariate_column Drug \
203 --config configs/finetune_regression.yaml
204```
206Config paths resolve against the bundled `waypoint_bio/configs/` tree, so `configs/...` works from
207any directory without cloning.
209For small datasets, choose warmup and evaluation intervals that actually fit the number of
210optimizer steps, and enough epochs for validation and early stopping. The shipped one-epoch
211benchmark config differs from the paper's up-to-300-epoch protocol. On PyPI 1.0.2, keep
212`use_lora: false` for export compatible with plain `AutoModel`; automatic adapter merging
213is only in GitHub 1.0.4. LoRA reduces trainable parameters but still needs the base model.
215Splits default to a random 80/10/10. **Set `split_column` to a `Split` column whenever samples are
216correlated** — repeated measures, one donor sampled over time, technical replicates — or a random
217split leaks and the test score is meaningless.
219Outputs land in `--output_dir`: `best_model/` (loadable by `embed`/`benchmark`),
220`test_metrics.json` and `finetune_results.json` after successful serialization. Training logs
221(`training_log.csv` + `.html`) and prediction CSVs are GitHub 1.0.4 additions.

4. Fine-tune on your labels

# classification
waypoint finetune \
    --model outpost-bio/Waypoint-45m \
    --data dataset.parquet \
    --output_dir outputs/ft_disease \
    --task_type classification \
    --target "Disease Status" \
    --config configs/finetune_classification.yaml

# regression, with a categorical covariate one-hot appended to the pooled embedding
waypoint finetune \
    --model outpost-bio/Waypoint-45m \
    --data dataset.parquet \
    --output_dir outputs/ft_degradation \
    --task_type regression \
    --target "Degradation Rate" \
    --covariate_column Drug \
    --config configs/finetune_regression.yaml

Config paths resolve against the bundled waypoint_bio/configs/ tree, so configs/... works from any directory without cloning.

For small datasets, choose warmup and evaluation intervals that actually fit the number of optimizer steps, and enough epochs for validation and early stopping. The shipped one-epoch benchmark config differs from the paper's up-to-300-epoch protocol. On PyPI 1.0.2, keep use_lora: false for export compatible with plain AutoModel; automatic adapter merging is only in GitHub 1.0.4. LoRA reduces trainable parameters but still needs the base model.

Splits default to a random 80/10/10. **Set split_column to a Split column whenever samples are correlated** — repeated measures, one donor sampled over time, technical replicates — or a random split leaks and the test score is meaningless.

Outputs land in --output_dir: best_model/ (loadable by embed/benchmark), test_metrics.json and finetune_results.json after successful serialization. Training logs (training_log.csv + .html) and prediction CSVs are GitHub 1.0.4 additions.

Raw lines 183 to 222
223### 5. Benchmark on Compass
225```bash
226waypoint benchmark --model outpost-bio/Waypoint-6m --output_dir outputs/benchmark
227waypoint benchmark --model outputs/pretrain/best_model --tasks 1 6 --output_dir outputs/smoke
228```
230Fine-tunes a fresh head per task and writes `benchmark_results.json`. Classification tasks score
231macro-F1; the one regression task scores R² clamped to [0, 1]; `final_score` is the unweighted mean
232across tasks. Full task table, metric keys, and result-file schema: `references/compass-benchmark.md`.

5. Benchmark on Compass

waypoint benchmark --model outpost-bio/Waypoint-6m --output_dir outputs/benchmark
waypoint benchmark --model outputs/pretrain/best_model --tasks 1 6 --output_dir outputs/smoke

Fine-tunes a fresh head per task and writes benchmark_results.json. Classification tasks score macro-F1; the one regression task scores R² clamped to [0, 1]; final_score is the unweighted mean across tasks. Full task table, metric keys, and result-file schema: references/compass-benchmark.md.

Raw lines 223 to 233
234### 6. Pretrain
236The current upstream local tokenizer cannot serialize its vocabulary. Treat this command as
237illustrative until `save_pretrained` passes a local save/reload smoke test in a repaired upstream
238checkout; reducing `--max_samples` does not avoid the error.
240```bash
241waypoint pretrain \
242 --model_config configs/models/gpt2-45m.yaml \
243 --pretrain_config configs/pretraining.yaml \
244 --output_dir outputs/pretrain_45m
245```
247Downloads Atlas, builds a taxonomic tokenizer from the corpus, computes per-token abundance
248mean/std for z-score ordering, then trains with next-token prediction and early stopping. Add
249`--data my_corpus.parquet` to pretrain on your own waypoint-format corpus instead, and
250`--max_samples N` for a smoke test.
252Nine architectures ship, from `gpt2-6m.yaml` (8 layers, 256 hidden) to `gpt2-170m.yaml` (24 layers,
253768 hidden); per-head dimension is 64 except for the MGM comparison config (32). `references/cli-reference.md` has the
254full table and every config key.

6. Pretrain

The current upstream local tokenizer cannot serialize its vocabulary. Treat this command as illustrative until save_pretrained passes a local save/reload smoke test in a repaired upstream checkout; reducing --max_samples does not avoid the error.

waypoint pretrain \
    --model_config configs/models/gpt2-45m.yaml \
    --pretrain_config configs/pretraining.yaml \
    --output_dir outputs/pretrain_45m

Downloads Atlas, builds a taxonomic tokenizer from the corpus, computes per-token abundance mean/std for z-score ordering, then trains with next-token prediction and early stopping. Add --data my_corpus.parquet to pretrain on your own waypoint-format corpus instead, and --max_samples N for a smoke test.

Nine architectures ship, from gpt2-6m.yaml (8 layers, 256 hidden) to gpt2-170m.yaml (24 layers, 768 hidden); per-head dimension is 64 except for the MGM comparison config (32). references/cli-reference.md has the full table and every config key.

Raw lines 234 to 255
Reads a file references/cli-reference.md :253
256## Scientific caveats
258These are load-bearing. Ignoring them produces numbers that look fine and mean nothing.
260- **Small-data performance is study-dependent.** The paper reports a crossover near **10,000**
261 training examples in its experiments. Fit relative-abundance baselines with the same split;
262 select methods using validation data and reserve the test set for final evaluation.
263- **Out-of-vocabulary taxa are dropped, not flagged.** Every Compass dataset carries some. Run
264 `scripts/vocab_coverage.py` and report the coverage alongside your results.
265- **45M, not 170M, was the best benchmark model.** Pretraining loss keeps falling with scale, but
266 downstream Compass score does not — start at 6m or 45m and only scale up if it demonstrably helps.
267- **Genus-level tokenisation is the default.** Species labels map to genus tokens, but upstream
268 does not sum abundances of lineages mapping to the same token: repeated genus IDs can remain.
269 Document your profiler rank and aggregation convention; changing either changes model inputs.
270 A new `taxon_rank` requires a compatible new vocabulary and pretraining.
271- **Compositional data.** Relative abundances are constrained to sum to 1; differences in one taxon
272 induce apparent changes in others. This affects interpretation of any per-taxon attribution.
273- **Batch and study effects dominate microbiome data.** Atlas spans MGnify pipelines v1.0–v5.0 and
274 four sequencing modalities. Never let a study or run boundary coincide with your label boundary.
275- **Predictions are not experimental validation.** Embeddings, co-occurrence patterns, predicted
276 drug degradation and generated taxa do not establish mechanism, causality, viability or safety.
277 These models are not validated clinical or diagnostic tools.

Scientific caveats

These are load-bearing. Ignoring them produces numbers that look fine and mean nothing.

  • Small-data performance is study-dependent. The paper reports a crossover near 10,000 training examples in its experiments. Fit relative-abundance baselines with the same split; select methods using validation data and reserve the test set for final evaluation.
  • Out-of-vocabulary taxa are dropped, not flagged. Every Compass dataset carries some. Run scripts/vocab_coverage.py and report the coverage alongside your results.
  • 45M, not 170M, was the best benchmark model. Pretraining loss keeps falling with scale, but downstream Compass score does not — start at 6m or 45m and only scale up if it demonstrably helps.
  • Genus-level tokenisation is the default. Species labels map to genus tokens, but upstream does not sum abundances of lineages mapping to the same token: repeated genus IDs can remain. Document your profiler rank and aggregation convention; changing either changes model inputs. A new taxon_rank requires a compatible new vocabulary and pretraining.
  • Compositional data. Relative abundances are constrained to sum to 1; differences in one taxon induce apparent changes in others. This affects interpretation of any per-taxon attribution.
  • Batch and study effects dominate microbiome data. Atlas spans MGnify pipelines v1.0–v5.0 and four sequencing modalities. Never let a study or run boundary coincide with your label boundary.
  • Predictions are not experimental validation. Embeddings, co-occurrence patterns, predicted drug degradation and generated taxa do not establish mechanism, causality, viability or safety. These models are not validated clinical or diagnostic tools.
Raw lines 256 to 278
Reads a file scripts/vocab_coverage.py :264
279## References
281- `references/cli-reference.md` — every subcommand flag, every config key, the model-size table.
282- `references/compass-benchmark.md` — the eight tasks, filters, metrics, `benchmark_results.json` schema.
283- `references/data-preparation.md` — waypoint format, profiler conversions, taxonomy string rules.
284- `references/python-api.md` — using the tokenizer, datasets, heads, and checkpoints from Python.
285- `references/upstream-review.md` — release distinctions, tested defects and verification boundaries.

References

Raw lines 279 to 286
287## Scripts
289- `scripts/profiler_to_waypoint.py` — MetaPhlAn / Kraken2 / QIIME 2 / generic lineage tables → waypoint format.
290- `scripts/vocab_coverage.py` — tokenizer coverage report for a waypoint-format file.

Scripts

Raw lines 287 to 291
292## Upstream
294Code [github.com/Outpost-Bio/waypoint](https://github.com/Outpost-Bio/waypoint) ·
295package `waypoint-bio` ·
296paper [bioRxiv 2026.05.02.722381](https://www.biorxiv.org/content/10.64898/2026.05.02.722381v2) ·
297community [Waypoint Slack](https://join.slack.com/t/outpostbio-waypoint/shared_invite/zt-3w6ivgtba-WJOCkdxiISxQpwVq9ZZxTA) ·
298contact `waypoint@outpost.bio`.
300Cite Treloar, N. J., Ur-Rehman, S., & Yang, J. (2026). *Learning the Language of the
301Microbiome with Transformers.* bioRxiv. Per-artefact DOIs are listed at
302[outpost.bio/citations](https://www.outpost.bio/citations).

Upstream

Code github.com/Outpost-Bio/waypoint · package waypoint-bio · paper bioRxiv 2026.05.02.722381 · community Waypoint Slack · contact waypoint@outpost.bio.

Cite Treloar, N. J., Ur-Rehman, S., & Yang, J. (2026). Learning the Language of the Microbiome with Transformers. bioRxiv. Per-artefact DOIs are listed at outpost.bio/citations.

Raw lines 292 to 303
Boilerplate, lines 304 to 319. The same text appears in 125 other files here. Close
304## Citing Scientific Agent Skills
306This skill is part of Scientific Agent Skills by K-Dense. If it materially contributed to a
307manuscript, report, presentation, or code release, add the paper to the references or
308software section and tell the user you did so:
310> Kassis, T., Agarwal, V., He, Y., Patel, D., & Brueckner, A. M. (2026). Scientific Agent
311> Skills: A Library of Procedural Knowledge for Research Agents. arXiv:2609.00065.
312> https://doi.org/10.48550/arXiv.2609.00065
314Always cite the current version. The DOI and https://arxiv.org/abs/2609.00065 resolve to the
315latest arXiv version, so never append a version suffix such as `v1`. When network access is
316available, fetch https://arxiv.org/abs/2609.00065 (or
317http://export.arxiv.org/api/query?id_list=2609.00065) before writing the reference and take
318the author list, year, and version from that record. If the record lists a journal reference
319or publisher DOI, cite the published version instead.

From K-Dense-AI/scientific-agent-skills at 5f2bc03, 2026-10-26. Not read by a model yet. Summary and techniques by Claude Opus 5.5 on 2026-11-06.