A foundation model for marker-gene DNA. It scores how expected each base of a sequence is and writes sequence from a lineage prompt. Placement among reference lineages is served alongside it, by comparing 4-mer profiles — no database search either way.
Press Score or Generate.
Research use. Outputs can be wrong, and nothing here is a diagnostic result or medical advice. Sequences sent to this demo are used to compute the answer and are not stored. Terms.
This box runs the model through a public endpoint that
is rate limited and needs no key, so you can see what comes back before asking for one. The Shell
and Python tabs show the same call against /v1, which is what a key gets you, and
they follow whatever you set on the left.
| score | a likelihood for a whole sequence and a probability for every base |
| place | puts a read among 60 reference groups by comparing 4-mer profiles — no database search, so a sequence that matches nothing named still gets an answer |
| write | continues a sequence, or writes one for a lineage you name |
| fragments | trained on windows of 384, 768 and 1,536 tokens, so a 150-base read and a full-length reference both go in |
| name | noctua-1 | trained to 206 million tokens, then measured against 4-mer counting and beaten by it; the endpoints answer with the first-generation engine, stamped eh18-m/1 |
| parameters | 10,155,906 | small on purpose: it trains on a laptop |
| alphabet | 48 tokens | four bases, N, and a taxonomy prefix in Evo 2's format |
| objectives | 3 | next base, lineage contrast, strand invariance |
| total | 1,132,584 sequences | 1.04 billion bases of ribosomal RNA genes |
| SILVA NR99 | 431,156 | curated references, with lineage |
| PR2 | 194,068 | 18S eukaryote references, with lineage |
| ENA | 507,360 | environmental reads, no name attached |
Nearly half the data has no name on it. That is the part reference databases leave out, and the reason the model can say anything about a read that matches nothing.
On 40 taxa held out of training entirely — whole groups, not random records — with 400 known and 400 novel queries, read without a taxonomy prefix, the way a pasted sequence arrives. Accuracy depends on how much sequence you give it, so it is reported that way: references are full length, the question is as long as you make it.
| your read | placement | novel AUC |
|---|---|---|
| 150 bases | 0.347 ±0.047 | 0.564 ±0.049 |
| 300 bases | 0.560 ±0.049 | 0.609 ±0.048 |
| 600 bases | 0.718 ±0.044 | 0.766 ±0.042 |
| full length | 0.820 ±0.038 | 0.774 ±0.041 |
Placement is top-1 among 60 groups, where guessing is 0.017. Novel AUC is the chance that a record of a known taxon outranks one from a taxon nobody trained on. Give it a longer read and both improve; that is the honest shape of the job, and it is why the length you send is worth thinking about.
Those are the 4-mer numbers. noctua-1 was measured on the same split and placed 0.423 ±0.048 against that 0.820, with a novel AUC of 0.544 ±0.049 against 0.774 — a ten-million-parameter network read 1.04 billion bases and lost to counting four-letter words. So counting is what serves placement here, and it says so in every answer.
Scoring and generation come from the first-generation engine, stamped eh18-m/1: a likelihood for the sequence, a probability for every base, and sequence written to a lineage prompt. Every answer carries the version that produced it, so a result can be traced back to what made it.
Candidate detection sites: stretches present in nearly every sequence of one pathogen genus and in almost nothing else. Counted across the corpus, and worth checking against the full public databases before anyone orders one.
| organism | site | in target | elsewhere |
|---|---|---|---|
| Cryptosporidium | GAGAAAATTAGAGTGCTTAAAG | 99% | 0.190% |
| Trypanosoma | GCGAAGGCATTCTTCAAGGATA | 95% | 0.100% |
| Trichomonas | CCCATATTGTTGCAGTTAAAAC | 96% | 0.035% |
It also separates Plasmodium (malaria) from its free-living relatives at 96% and Candida from its own family at 91%, from the sequence alone.
A key goes in an Authorization header. There is no console and nothing to log
into. Take a key with an e-mail address and it comes back in a link: 50 calls a
day, every endpoint, no expiry. If your work needs more than that, say what you are doing on the
request form and a person reads it. Either way the key is shown once
and only its hash is stored.
Authorization: Bearer bx_live_…
calls_left, and a 429 says which limit you crossed.https://<host>/v1
Whether the service is up, and which weights answer. No key needed.
| field | type | meaning |
|---|---|---|
| sequence | string, required | DNA: A, C, G, T, N |
| place | bool, default true | compare with reference lineages |
| per_base | bool, default true | include the per-position arrays |
| reading_frames | bool, default false | annotate open reading frames |
| nll | mean negative log likelihood, in nats |
| perplexity | exp(nll) |
| probs | [length][4] — probability of A, C, G, T at each position |
| conservation | [length] — information content in bits |
| entropy | [length] — the same the other way round |
| placement | closest reference groups, with a cosine each |
| model_version | the weights that produced this answer |
| field | type | meaning |
|---|---|---|
| sequence | string, optional | a prompt to continue |
| organism | string, optional | a lineage group; with no sequence it is the whole prompt |
| num_tokens | int, default 200 | how many bases to write |
| temperature | number, default 0.9 | sampling randomness |
| top_k | int, default 4 | candidates per step |
The tensors themselves, as a base64 NPZ — the same shape the Evo 2 forward endpoint returns, so code written against that needs little more than a new URL.
| field | type | meaning |
|---|---|---|
| sequence | string, required | DNA |
| output_layers | array, default ["probs"] | any of probs, entropy, conservation |
| 401 | no key, or a key that has been revoked |
| 429 | over the hourly limit |
| 400 | the sequence could not be read, with a reason |