Human variants. It reads the DNA around a single-letter change — once as the reference has it, once with the change — and scores how likely that change is to cause disease.
| score a change | one base swapped for another, anywhere in the genome, with 128 bases of context either side |
| rank a list | a score per variant, so a list of candidates from a sequencing run comes back in order of concern |
| work on new genes | measured with whole genes held out, so the number describes a gene it has never seen |
| variants | 1,370,524 | ClinVar, GRCh38, single-letter changes with a reviewed verdict |
| genes | 5,053 | at least twenty variants each |
| pathogenic | 170,958 | the rest, 1,199,566, are benign — so the model is weighted, not fed a class it can ignore |
| context | 257 bases | cut from the human reference held locally, not fetched per variant |
505 genes held out whole — 136,137 variants in genes the model never trained on. Reported as AUC, because seven variants in eight are benign and a model that always says benign is right 88% of the time while being worth nothing.
| AUC, genes held out | |
|---|---|
| hand-written features | 0.632 |
| atlas-1 | 0.815 |
The features are the standard cheap ones: which base became which, transition or transversion, CpG context, local GC and repetitiveness. They are the bar, and atlas-1 clears it by 0.183 on genes it has never seen — 133,009 parameters, six passes over the data, seventy-eight minutes on a laptop.
An earlier version trained on three genes came out level with those features. Nothing about the network changed; it was given 127 times as much data. That is worth knowing before anyone reaches for a bigger model.
One number over all of ClinVar is mostly a statement about synonymous variants: they are 45% of the reviewed set and almost none of them are harmful. The kinds a clinical geneticist is actually stuck on are rarer and harder, so they are reported separately. Measured inside each class, on the same held-out genes.
| kind | atlas-1 | features | variants | |
|---|---|---|---|---|
| splice_region | 0.773 | 0.617 | 11,044 | within eight bases of an intron edge |
| intronic | 0.667 | 0.593 | 33,123 | deeper inside an intron |
| utr3 | 0.663 | 0.460 | 1,746 | after the coding stretch |
| missense | 0.595 | 0.554 | 15,846 | one amino acid replaced |
| synonymous | 0.424 | 0.518 | 60,224 | 27 harmful ones in the whole set |
The headline is an average over 505 genes. For a particular gene, held out whole and fitted on everything else:
| gene | atlas-1 | features | variants | |
|---|---|---|---|---|
| DMD | 0.893 | 0.684 | 4,763 | Duchenne muscular dystrophy |
| BRCA1 | 0.862 | 0.758 | 4,403 | breast and ovarian cancer |
| BRCA2 | 0.853 | 0.768 | 6,877 | breast and ovarian cancer |
| TP53 | 0.813 | 0.632 | 1,473 | many cancers |
A variant is written the way a VCF writes it: the chromosome, the position counting from one, the base the reference has there, and the base you are asking about. Send one or a list of up to 512.
curl -s https://<host>/v1/atlas/score \ -H "Authorization: Bearer $BIOX_KEY" \ -H "Content-Type: application/json" \ -d '{"variants": [{"chrom": "17", "pos": 7675088, "ref": "C", "alt": "T"}]}'
| field | |
|---|---|
| score | 0 to 1. Higher means the change looks more like the ones labs have called pathogenic. |
| error | instead of a score, when the position is not in GRCh38 or the reference base does not match what the genome has there. A coordinate from the wrong build is rejected rather than scored. |
| model | the weights that produced it, so a result can be traced back. |