ProteomeLM-ess / README.md
CyrilMa's picture
Upload folder using huggingface_hub
7618068 verified
|
Raw History Blame Contribute Delete
4.59 kB
---
license: apache-2.0
library_name: pytorch
base_model: Bitbol-Lab/ProteomeLM-L
tags:
- biology
- proteomics
- gene-essentiality
- protein-language-model
- proteomelm
---
# ProteomeLM-ess
Gene-essentiality classifier of [ProteomeLM](https://github.com/Bitbol-Lab/ProteomeLM)
([PNAS 2026](https://www.pnas.org/doi/10.1073/pnas.2524201123), 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](https://huggingface.co/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 is `p_essential` = softmax class 0.
- **Files**: `config.json` (backbone, layer, dimensions, labels) and `model.safetensors`
(2,365,442 parameters, stored in bfloat16; inference runs the head in float32).
## Training data
Essentiality labels (E / NE) from [OGEE](https://v3.ogee.info) 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
```bash
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:
```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
```bibtex
@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}
}
```