Communitygithub.com

ESM2 Modelo de Linguagem Proteica

Uma coleção selecionada de habilidades de agentes de IA para pesquisa biomédica, cobrindo genômica, proteômica, análise de célula única, IA clínica e design de proteínas.

O que é ESM2 Modelo de Linguagem Proteica?

Esta habilidade de agente de IA, desenvolvida para a suíte Modal e biomodals, capacita agentes (como Claude, Cursor ou Codex) a executar o modelo de linguagem proteica ESM2 para tarefas como pontuação de plausibilidade de sequência, geração de embeddings e previsão de efeitos de variantes. Ela suporta modelos que variam de 8M a 3B de parâmetros, com a variante 650M oferecendo um equilíbrio ideal entre velocidade e qualidade para aplicações padrão. A habilidade fornece uma interface de linha de comando via Modal (`modal run modal_esm2_predict_masked.py`) e uma API Python direta usando a biblioteca `esm`, produzindo saídas como embeddings (matriz .npy), pontuações de log-verossimilhança pseudo (CSV) e metadados. Os usuários podem interpretar resultados usando diretrizes de PLL normalizado para filtrar sequências naturais, analisar diversidade ou realizar varredura de mutações, com dicas de desempenho e solução de problemas integradas para implantação eficiente em GPUs.

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

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Modelo de Linguagem Proteica ESM2

Pré-requisitos

RequisitoMínimoRecomendado
Python3.8+3.10
PyTorch1.10+2.0+
CUDA11.0+11.7+
VRAM da GPU8GB24GB (A10G)
RAM16GB32GB

Como executar

Primeira vez? Consulte o Guia de Instalação para configurar Modal e biomodals.

Opção 1: Modal

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

GPU: A10G (24GB) | Timeout: 300s padrão

Opção 2: API Python (recomendada)

import torch
import esm

# Carregar modelo
model, alphabet = esm.pretrained.esm2_t33_650M_UR50D()
batch_converter = alphabet.get_batch_converter()
model = model.eval().cuda()

# Processar sequências
data = [("seq1", "MKTAYIAKQRQISFVK...")]
batch_labels, batch_strs, batch_tokens = batch_converter(data)

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

# Obter embeddings
embeddings = results["representations"][33]

Parâmetros principais

Modelos ESM2

ModeloParâmetrosVelocidadeQualidade
esm2_t6_8M8MMais rápidoTriagem rápida
esm2_t12_35M35MRápidoBom
esm2_t33_650M650MMédioMelhor
esm2_t36_3B3BLentoÓtimo

Formato de saída

embeddings/
├── embeddings.npy       # Array (N, 1280)
├── pll_scores.csv       # PLL para cada sequência
└── metadata.json        # Informações das sequências

Exemplo de saída

Execução bem-sucedida

$ modal run modal_esm2_predict_masked.py --input-faa designs.fasta
[INFO] Carregando modelo ESM2-650M...
[INFO] Processando 100 sequências...
[INFO] Calculando pseudo-log-verossimilhança...

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
...

Resumo:
  PLL média: -0.91
  Sequências com PLL > 0: 42/100 (42%)

O que é uma saída boa:

  • PLL_normalized: > 0.0 (mais semelhante ao natural)
  • Forma dos embeddings: (N, 1280) para modelo 650M
  • PLL maior = sequência mais natural

Árvore de decisão

Devo usar ESM2?
│
├─ O que você precisa?
│  ├─ Pontuação de plausibilidade de sequência → ESM2 PLL ✓
│  ├─ Embeddings para agrupamento → ESM2 ✓
│  ├─ Previsão de efeito de variante → ESM2 ✓
│  └─ Previsão de estrutura → Use ESMFold
│
├─ Qual tamanho de modelo?
│  ├─ Triagem rápida → esm2_t12_35M
│  ├─ Uso padrão → esm2_t33_650M ✓
│  └─ Melhor qualidade → esm2_t36_3B
│
└─ Caso de uso?
   ├─ Filtragem de QC → Limiar PLL > 0.0
   ├─ Análise de diversidade → Embeddings com média por pool
   └─ Varredura de mutações → Log-odds por posição

Interpretação do PLL

PLL NormalizadoInterpretação
> 0.2Sequência muito natural
0.0 - 0.2Bom, semelhante ao natural
-0.5 - 0.0Aceitável
< -0.5Pode ser não natural

Desempenho típico

Tamanho da campanhaTempo (A10G)Custo (Modal)Observações
100 sequências5-10 min~$1Triagem rápida
1000 sequências30-60 min~$5Padrão
5000 sequências2-3h~$20Lote grande

Throughput: ~100-200 sequências/minuto com modelo 650M.


Verificar

wc -l embeddings/pll_scores.csv  # Deve corresponder à entrada + 1 (cabeçalho)

Solução de problemas

Erros OOM: Use modelo menor ou lote de sequências menor Processamento lento: Use esm2_t12_35M para velocidade Pontuações PLL baixas: Pode indicar sequências incomuns/projetadas

Interpretação de erros

ErroCausaSolução
RuntimeError: CUDA out of memorySequência muito longa ou lote grandeReduza o tamanho do lote
KeyError: representationCamada solicitada erradaUse camada 33 para modelo 650M
ValueError: sequenceAminoácido inválidoVerifique AAs não padrão

Próximo: Previsão de estrutura com chai ou boltz → protein-qc para filtragem.

Habilidades Relacionadas