Communitygithub.com

ESM2 Protein Language Model

Collection de compétences d'IA pour la recherche biomédicale, couvrant la génomique, la protéomique, l'analyse unicellulaire, l'IA clinique et la conception de protéines.

Qu'est-ce que ESM2 Protein Language Model ?

Cette compétence permet d'exécuter le modèle de langage protéique ESM2 pour la génération d'embeddings de séquences et le calcul de scores de pseudo-log-vraisemblance (PLL). Elle est utile pour évaluer la plausibilité de séquences protéiques, réaliser du clustering, prédire des effets de variants, ou encore filtrer des banques de protéines conçues. Compatible avec les plateformes Modal et Python natif, elle propose plusieurs tailles de modèles (8M à 3B paramètres). Le workflow standard charge le modèle, transforme les séquences en tokens, calcule les embeddings (couche 33 pour le modèle 650M) et exporte un tableau NumPy, un CSV des scores PLL et un fichier de métadonnées. Un arbre de décision guide l'utilisateur vers le bon modèle et la bonne utilisation selon l'objectif (score de plausibilité, embeddings, qualité). L'interprétation des PLL normalisées est fournie, ainsi que des performances typiques et un guide de dépannage pour les erreurs mémoire ou de format.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add BioTender-max/awesome-bio-agent-skills

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Modèle de Langage Protéique ESM2

Prérequis

ExigenceMinimumRecommandé
Python3.8+3.10
PyTorch1.10+2.0+
CUDA11.0+11.7+
VRAM GPU8 Go24 Go (A10G)
RAM16 Go32 Go

Exécution

Première fois ? Consultez le Guide d'installation pour configurer Modal et biomodals.

Option 1 : Modal

cd biomodals
modal run modal_esm2_predict_masked.py \
  --input-faa sequences.fasta \
  --out-dir embeddings/

GPU : A10G (24 Go) | Time out : 300 s par défaut

Option 2 : API Python (recommandée)

import torch
import esm

# Charger le modèle
model, alphabet = esm.pretrained.esm2_t33_650M_UR50D()
batch_converter = alphabet.get_batch_converter()
model = model.eval().cuda()

# Traiter les séquences
data = [("seq1", "MKTAYIAKQRQISFVK...")]
batch_labels, batch_strs, batch_tokens = batch_converter(data)

with torch.no_grad():
    results = model(batch_tokens.cuda(), repr_layers=[33])

# Obtenir les embeddings
embeddings = results["representations"][33]

Paramètres clés

Modèles ESM2

ModèleParamètresVitesseQualité
esm2_t6_8M8MTrès rapideCriblage rapide
esm2_t12_35M35MRapideBonne
esm2_t33_650M650MMoyenneMeilleure
esm2_t36_3B3BLenteExcellente

Format de sortie

embeddings/
├── embeddings.npy       # Tableau (N, 1280)
├── pll_scores.csv       # PLL pour chaque séquence
└── metadata.json        # Informations sur les séquences

Exemple de résultat

Exécution réussie

$ modal run modal_esm2_predict_masked.py --input-faa designs.fasta
[INFO] Chargement du modèle ESM2-650M...
[INFO] Traitement de 100 séquences...
[INFO] Calcul de la pseudo-log-vraisemblance...

embeddings/pll_scores.csv :
sequence_id,pll,pll_normalized,length
design_0,-0.82,0.15,78
design_1,-0.95,0.08,85
design_2,-1.23,-0.12,72
...

Résumé :
  PLL moyenne : -0.91
  Séquences avec PLL > 0 : 42/100 (42 %)

Ce qu'indique un bon résultat :

  • PLL_normalisée > 0,0 (séquence plus naturelle)
  • Forme des embeddings : (N, 1280) pour le modèle 650M
  • Une PLL plus élevée = séquence plus naturelle

Arbre de décision

Dois-je utiliser ESM2 ?
│
├─ De quoi avez-vous besoin ?
│  ├─ Score de plausibilité de séquence → ESM2 PLL ✓
│  ├─ Embeddings pour clustering → ESM2 ✓
│  ├─ Prédiction d'effet de variants → ESM2 ✓
│  └─ Prédiction de structure → Utilisez ESMFold
│
├─ Quelle taille de modèle ?
│  ├─ Criblage rapide → esm2_t12_35M
│  ├─ Usage standard → esm2_t33_650M ✓
│  └─ Meilleure qualité → esm2_t36_3B
│
└─ Cas d'utilisation ?
   ├─ Filtrage QC → Seuil PLL > 0,0
   ├─ Analyse de diversité → Embeddings moyennés
   └─ Balayage de mutations → Log-odds par position

Interprétation de la PLL

PLL normaliséeInterprétation
> 0,2Séquence très naturelle
0,0 - 0,2Bonne, semblable au naturel
-0,5 - 0,0Acceptable
< -0,5Peut être non naturelle

Performances typiques

Taille de campagneTemps (A10G)Coût (Modal)Notes
100 séquences5-10 min~1 $Criblage rapide
1000 séquences30-60 min~5 $Standard
5000 séquences2-3 h~20 $Gros lot

Débit : ~100-200 séquences/minute avec le modèle 650M.


Vérification

wc -l embeddings/pll_scores.csv  # Doit correspondre à l'entrée + 1 (en-tête)

Dépannage

Erreurs OOM : Utilisez un modèle plus petit ou traitez les séquences par lots Traitement lent : Utilisez esm2_t12_35M pour la vitesse Faibles scores PLL : Peut indiquer des séquences inhabituelles/conçues

Interprétation des erreurs

ErreurCauseCorrectif
RuntimeError: CUDA out of memorySéquence trop longue ou lot trop grandRéduire la taille du lot
KeyError: representationMauvaise couche demandéeUtiliser la couche 33 pour le modèle 650M
ValueError: sequenceAcide aminé invalideVérifier la présence d'AA non standards

Suite : Prédiction de structure avec chai ou boltz → protein-qc pour le filtrage.

Skills associés