Cherimoya Accessibility aTlas (CATv1)
This is the first release of the Cherimoya Accessibility aTlas (CATv1): a collection of over 7,500 Cherimoya models trained on DNase-seq and ATAC-seq experiments from the ENCODE Project. Cherimoya models are state-of-the-art predictors of local chromatin accessibility, mapping a DNA sequence to a base-resolution accessibility profile together with its total read count.
This release covers 1,518 ENCODE experiments (1,149 DNase-seq and 369 ATAC-seq). Every experiment is trained and evaluated across 5 folds (fold_0โfold_4) of a chromosome-held-out cross-validation. Each model predicts accessibility for a single experiment, so download only the model(s) you need.
Model description
Each Cherimoya model is a compact residual convolutional network (~0.6M parameters; 9 layers, 128 filters) in the BPNet / ChromBPNet family. It takes a one-hot DNA sequence of in_window=2114 bp and produces two outputs over the central out_window=1000 bp: a profile head (base-resolution logits, shape (N, 1, 1000)) describing the shape of the accessibility signal, and a count head (log total counts, shape (N, 1)) describing the overall magnitude. The published checkpoints are the exponential-moving-average (EMA) shadow weights selected on validation performance.
See https://github.com/jmschrei/cherimoya for more details on the Cherimoya model.
Training data
Models are trained on the human genome (GRCh38 / hg38) against the observed ENCODE accessibility signal for each experiment. Training loci are the experiment's peak regions plus GC-matched background (non-peak) negatives, with ENCODE blacklist regions excluded. The five folds partition the genome by chromosome, so for every fold the validation and test chromosomes are held out of training; reported metrics are validation-set performance, not the test set.
Repository layout
Checkpoints live under models/, one directory per experiment:
| file | description |
|---|---|
models/<encid>/cherimoya.fold_<i>.torch |
checkpoint for fold i (EMA shadow weights) |
Repository-level files:
| file | description |
|---|---|
performance.tsv |
validation metrics for every experiment and fold |
CATv1-metadata.tsv |
experiment metadata, keyed by experiment_accession |
manifest.csv |
the full list of experiments and folds included |
fit.json / evaluate.json |
a representative example of the per-fold training / evaluation settings |
performance.tsv has one row per experiment-fold: the first two columns are experiment_accession and fold, followed by profile_mnll profile_jsd profile_pearson profile_spearman count_pearson count_spearman count_mse. The headline metrics are profile_pearson (profile shape) and count_pearson (total accessibility).
Each experiment_accession is the source ENCODE experiment the models were trained on (https://www.encodeproject.org/experiments/<experiment_accession>/), and the paired annotation_accession points to the ENCODE ChromBPNet model annotation for that same experiment (https://www.encodeproject.org/annotations/<annotation_accession>/).
Which model should I use?
Pick the experiment that matches your assay and biosample using CATv1-metadata.tsv, then download that experiment's checkpoint(s). The five folds are cross-validation replicates of the same experiment: use a single fold (e.g. fold_0), or average the predictions of all five folds for a more robust estimate. A model only reflects the experiment it was trained on, so do not use it for a different cell type or assay.
Intended uses and limitations
Beyond profile and count prediction, the models support downstream sequence analyses such as attribution, motif marginalization, and in-silico mutagenesis. They are human (GRCh38) only, are specific to the experiment they were trained on, and report validation (not test) metrics.
Installation
pip install cherimoya # PyPI (Python 3.10+)
Install-from-source, Docker images, and GPU/Triton notes: https://github.com/jmschrei/cherimoya
Usage
import torch
from huggingface_hub import hf_hub_download
from cherimoya import Cherimoya
path = hf_hub_download("programmable-genomics/CATv1", "models/<encid>/cherimoya.fold_0.torch")
model = Cherimoya.load(path, device="cuda", compile=False).eval()
# Input: one-hot DNA, shape (batch, 4, in_window=2114), ACGT channels.
X = torch.zeros(2, 4, 2114, device="cuda")
X[:, 0] = 1.0 # placeholder: replace with your encoded sequences
# Option A: call the model directly.
profile_logits, log_counts = model(X) # (N,1,1000), (N,1)
profile = torch.softmax(profile_logits.float(), dim=-1)
# Option B: via tangermeme (auto-batches, handles device/dtype).
from tangermeme.predict import predict
profile_logits, log_counts = predict(model, X, device="cuda", batch_size=64)
Contact
Jacob Schreiber jacob.schreiber@umassmed.edu โ Programmable Genomics Laboratory @ UMass Chan.