ProteomeLM-ess
Gene-essentiality classifier of ProteomeLM (PNAS 2026, Fig. 5). Given a whole proteome, it gives each protein a probability of being essential.
Model
- Input: a whole proteome (one genome), as a protein FASTA file.
- Embeddings: every protein is embedded with ESM-C 600M (mean over residues, first 4096 residues). The frozen backbone Bitbol-Lab/ProteomeLM-L then reads the whole proteome at once, in bfloat16, with each protein's own ESM-C embedding as input and group embedding.
- Head: a two-layer classifier (linear 1152 β 2048, ReLU, dropout 0.5, linear
2048 β 2) on the backbone's
hidden_states[8](index 0 is the input projection). Class 0 is essential, class 1 non-essential; the output isp_essential= softmax class 0. - Files:
config.json(backbone, layer, dimensions, labels) andmodel.safetensors(2,365,442 parameters, stored in bfloat16; inference runs the head in float32).
Training data
Essentiality labels (E / NE) from OGEE for 82 genomes, mostly bacteria plus several eukaryotes (e.g. mouse, zebrafish, Drosophila, C. elegans, Arabidopsis, fission yeast). The head was trained on the training folds of the paper's gene-level train / validation / test split, with Adam (learning rate 1e-3) and early stopping on the validation-fold AUPR (ProteomeLM-L layer 8, seed 42).
Seven OGEE genomes were held out of training entirely: S. cerevisiae S288C (taxid 580240), E. coli K-12 MG1655 (83333), and taxids 199310, 679895, 941322, 1380365 and 1124478.
Performance
Whole-genome predictions on genomes held out of training (as in Fig. 5B of the paper): the N highest-ranked proteins are called essential, with N the number of labelled essential genes. AUROC is computed on the genes labelled essential or non-essential.
| genome | proteins | labelled essential (N) | AUROC | labelled essential genes in the top N |
|---|---|---|---|---|
| E. coli K-12 MG1655 (taxid 83333) | 4,361 | 286 | 0.952 | 201 (70.3%) |
| S. cerevisiae S288C (taxid 580240) | 5,975 | 937 | 0.810 | 432 (46.1%) |
| JCVI-Syn1.0 (taxid 766747) | 820 | 202 | 0.879 | 121 (59.9%) |
| JCVI-Syn3A (taxid 2144189) | 455 | 199 | 0.830 | 130 (65.3%) |
Labels: OGEE (E. coli, S. cerevisiae), Hutchison et al. 2016 (JCVI-Syn1.0) and SynWiki (JCVI-Syn3A). The embeddings are computed in bfloat16, so scores vary slightly across GPUs and library versions (top-N counts by a gene or two).
Usage
pip install "proteomelm @ git+https://github.com/Bitbol-Lab/ProteomeLM"
python -m proteomelm.essentiality --fasta proteome.fasta --out scores.tsv --top-fraction 0.1
The TSV lists every protein, most essential first: protein_id, p_essential, rank and,
with --top-n N, --top-fraction F or --threshold T, predicted_essential. Ranks are
more reliable than the raw probabilities, which are not calibrated across organisms (the
fraction of essential genes ranges from a few percent in free-living bacteria to about half
in minimal cells), so a top-N or top-fraction rule is recommended.
or, from Python:
from proteomelm.essentiality import EssentialityPredictor, read_fasta
ids, sequences = read_fasta("proteome.fasta")
predictor = EssentialityPredictor.from_pretrained("Bitbol-Lab/ProteomeLM-ess", device="cuda")
table = predictor.predict(ids, sequences, top_fraction=0.1) # pandas DataFrame, sorted by rank
The input should be one complete proteome: ProteomeLM scores every protein in the context of all the others. A GPU is recommended (a bacterial proteome takes about a minute, most of it ESM-C); the first run downloads ESM-C 600M and Bitbol-Lab/ProteomeLM-L.
Citation
@article{malbranke2026proteomelm,
title={ProteomeLM: A proteome-scale language model enables accurate and rapid prediction of protein-protein interactions and gene essentiality across taxa},
author={Malbranke, Cyril and Zalaffi, Gionata Paolo and Bitbol, Anne-Florence},
journal={Proceedings of the National Academy of Sciences},
volume={123},
number={21},
pages={e2524201123},
year={2026},
publisher={National Academy of Sciences},
doi={10.1073/pnas.2524201123},
url={https://www.pnas.org/doi/10.1073/pnas.2524201123}
}
- Downloads last month
- 25
Model tree for Bitbol-Lab/ProteomeLM-ess
Base model
Bitbol-Lab/ProteomeLM-L