File size: 5,241 Bytes
189e0ad
 
 
 
 
 
 
 
e697bd2
189e0ad
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e697bd2
189e0ad
e697bd2
189e0ad
e697bd2
189e0ad
 
 
e697bd2
189e0ad
 
 
 
 
 
e697bd2
 
 
 
 
 
189e0ad
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e697bd2
 
189e0ad
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e697bd2
 
 
 
 
 
 
189e0ad
 
 
 
 
 
 
 
 
 
e697bd2
 
 
 
 
 
 
 
189e0ad
 
 
 
 
 
 
 
 
 
 
 
 
 
e697bd2
 
 
189e0ad
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
---
license: mit
tags:
  - single-cell
  - biology
  - geneformer
  - scvi
  - self-supervised-learning
  - scimilarity
  - pca
  - safetensors
inference: false
---

# scFM-dataselection pretraining checkpoints

Model checkpoints and PCA components for **Evaluating the role of pretraining
dataset size and diversity on single-cell foundation model performance**,
DenAdel et al., *Nature Methods* (2026).

- [Paper](https://doi.org/10.1038/s41592-026-03120-y)
- [Code and preprocessing](https://github.com/microsoft/scFM-dataselection)

## Models

| Model | Count |
|---|---:|
| Geneformer | 125 |
| scVI | 125 |
| SSL/MLP | 125 |
| SCimilarity | 80 |
| PCA components | 80 |
| **Total** | **535** |

The full download is approximately **36.5 GB**: 455 neural network checkpoints
and 80 PCA component matrices.

Within `portable-checkpoints/`, models are grouped into `geneformer/`,
`scvi/`, `ssl/`, `scimilarity/` and `pca/`.

The Geneformer, scVI and SSL models cover random sampling, cell-type
reweighting and geometric sketching at 1, 10, 25, 50, 75 and 100 percent of
the pretraining corpus. The collection also includes perturbation spike-in
experiments. See `model-index.csv` for model folders and training settings.

SCimilarity includes five seeds at each of 1, 10, 25, 50 and 75 percent for
`random`, `celltype_reweighted` and `geometric_sketching` sampling, plus five
100-percent random models. Each folder contains the native encoder and
decoder weights, gene order, layer sizes and cell-type labels. These are
study-trained models, not the upstream SCimilarity pretrained models.

## Download

Use Python **3.10**. The examples below were tested on CPU.

```python
from huggingface_hub import snapshot_download

root = snapshot_download(
    repo_id="microsoft/scFM-dataselection",
    local_dir="scFM-dataselection",
)
```

From the downloaded directory:

```bash
python -m pip install -r requirements.txt
```

To download individual models, use `allow_patterns` with the model folders
listed in `model-index.csv`. Include `model-index.csv`, `tools/*`,
`public-resources/*` and `requirements.txt` to use the loading code below.
For SCimilarity alone, PyTorch is sufficient; download the model's five files
and `tools/*.py`. No cell-search database is included or required.

## Load a checkpoint

Run these examples from the downloaded directory. They use small dummy inputs.

```python
import csv
import sys
import numpy as np
import torch

sys.path.insert(0, "tools")
from portable_models import load_model

with open("model-index.csv", newline="") as stream:
    rows = list(csv.DictReader(stream))

geneformer = load_model(
    "portable-checkpoints/geneformer/random/idx_100pct_seed25"
)
with torch.no_grad():
    logits = geneformer(input_ids=torch.tensor([[2, 3, 4, 5]])).logits

ssl = load_model("portable-checkpoints/ssl/random/idx_100pct_seed25")
with torch.no_grad():
    latent, reconstruction = ssl(torch.ones(2, 19331))

scimilarity = load_model(
    "portable-checkpoints/scimilarity/random/idx_100pct_seed25"
)
with torch.no_grad():
    embedding, reconstruction = scimilarity(torch.ones(2, scimilarity.n_genes))
    # Embeddings have shape (2, 128); reconstructions have shape (2, 19331).

pca_row = next(row for row in rows if row["family"] == "PCA")
components = load_model(pca_row["portable_directory"])
projection = np.ones((2, 19331), dtype=components.dtype) @ components
```

For your own data, follow the paper's preprocessing. Geneformer requires
ranked gene inputs and normalization using the tokenizer dictionaries in
`public-resources/geneformer/`. SSL and PCA use the paper's 19,331-gene
scTab order.

SCimilarity takes expression values aligned to `scimilarity.gene_order`
(also in each model's `gene_order.tsv`), normalized to 10,000 counts per cell
and transformed with `log1p`. Its encoder returns L2-normalized embeddings.
Use `scimilarity.encoder(expression)` when only embeddings are needed;
`scimilarity.decoder(embedding)` returns reconstructed log-normalized values,
not raw counts. The bundled network classes are from SCimilarity 0.4.1 and
do not require its atlas/search dependencies.

For scVI, provide an AnnData object with raw counts in `X` and `var_names`
matching the `gene_names` order in the model's `config.json`.

```python
scvi_model = load_model(
    "portable-checkpoints/scvi/random/idx_100pct_seed25",
    adata=your_anndata,
)
latent = scvi_model.get_latent_representation()
```

## License

The model weights, PCA components and loading code are licensed under
**MIT**, except for the bundled SCimilarity network implementation, which
uses **Apache-2.0**. Geneformer tokenizer files also use Apache-2.0, and the
included SSL code uses MIT. See `LICENSE` and `THIRD_PARTY_NOTICES.md` for the full terms
and copyright notices.

## Citation

Please cite the paper when using these checkpoints:

> DenAdel, A., Hughes, M., Thoutam, A., et al. Evaluating the role of pretraining
> dataset size and diversity on single-cell foundation model performance.
> Nature Methods 23, 1447-1457 (2026).
> https://doi.org/10.1038/s41592-026-03120-y

Questions about the checkpoints can be raised in the
[paper's code repository](https://github.com/microsoft/scFM-dataselection/issues).