O BioTrainer é uma ferramenta de código aberto para simplificar o processo de treinamento de modelos de aprendizado de máquina para aplicações biológicas. É especialista em modelos para prever recursos para proteínas . A biotrainer suporta ambos, treinando novos modelos e empregando o modelo treinado para inferência . O uso do BioTrainer é tão simples quanto fornecer seus dados de sequência e etiqueta no formato correto, juntamente com um arquivo de configuração.
curl -sSL https://install.python-poetry.org/ | python3 -poetry : # In the base directory:
poetry install
# Adding jupyter notebook (if needed):
poetry add jupyter
# [WINDOWS] Explicitly install torch libraries suited for your hardware:
# Select hardware and get install command here: https://pytorch.org/get-started/locally/
# Then run for example:
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 Certifique -se de usar a mesma versão da tocha, conforme fornecido no pyproject.toml para reprodutibilidade do modelo!
Se você deseja usar o BioTrainer com um belo front -end da GUI, confira Biocentral :
cd examples/residue_to_class
poetry run biotrainer config.yml Você também pode usar o arquivo run-biotrainer.py fornecido para desenvolvimento e depuração (você pode querer configurar seu IDE para executar diretamente o run-biotrainer.py com o ambiente virtual fornecido):
# residue_to_class
poetry run python3 run-biotrainer.py examples/residue_to_class/config.yml
# sequence_to_class
poetry run python3 run-biotrainer.py examples/sequence_to_class/config.yml # Build
docker build -t biotrainer .
# Run
docker run --rm
-v " $( pwd ) /examples/docker " :/mnt
-u $( id -u ${USER} ) : $( id -g ${USER} )
biotrainer:latest /mnt/config.ymlA saída pode ser encontrada posteriormente no diretório do arquivo de configuração fornecido.
Depois que seu modelo for treinado, você encontrará um arquivo out.yml no diretório output por padrão. Agora você pode usá -lo para criar previsões com seu modelo para novos dados, o módulo inferencer cuida de carregar seus pontos de verificação automaticamente:
from biotrainer . inference import Inferencer
from biotrainer . embedders import OneHotEncodingEmbedder
sequences = [
"PROVTEIN" ,
"SEQVENCESEQVENCE"
]
out_file_path = '../residue_to_class/output/out.yml'
inferencer , out_file = Inferencer . create_from_out_file ( out_file_path = out_file_path , allow_torch_pt_loading = True )
print ( f"For the { out_file [ 'model_choice' ] } , the metrics on the test set are:" )
for metric in out_file [ 'test_iterations_results' ][ 'metrics' ]:
print ( f" t { metric } : { out_file [ 'test_iterations_results' ][ 'metrics' ][ metric ] } " )
embedder = OneHotEncodingEmbedder ()
embeddings = list ( embedder . embed_many ( sequences ))
# Note that for per-sequence embeddings, you would have to reduce the embeddings now:
# embeddings = [[embedder.reduce_per_protein(embedding)] for embedding in embeddings]
predictions = inferencer . from_embeddings ( embeddings , split_name = "hold_out" )
for sequence , prediction in zip ( sequences , predictions [ "mapped_predictions" ]. values ()):
print ( sequence )
print ( prediction )
# If your checkpoints are stored as .pt, consider converting them to safetensors (supported by biotrainer >=0.9.1)
inferencer . convert_all_checkpoints_to_safetensors ()Veja o exemplo completo aqui.
O módulo inferencer também apresenta previsão de bootstrapping e monte carlo dropout .
A BioTrainer fornece muitos padrões de dados, projetados para facilitar o uso do aprendizado de máquina para a biologia. Espera -se também que esse processo de padronização melhore a comunicação entre diferentes disciplinas científicas e ajude a manter a visão geral sobre o rápido desenvolvimento do campo de previsão de proteínas.
O protocolo define, como os dados de entrada devem ser interpretados e que tipo de tarefa de previsão deve ser aplicada. Os seguintes protocolos já foram implementados:
D=embedding dimension (e.g. 1024)
B=batch dimension (e.g. 30)
L=sequence dimension (e.g. 350)
C=number of classes (e.g. 13)
- residue_to_class --> Predict a class C for each residue encoded in D dimensions in a sequence of length L. Input BxLxD --> output BxLxC
- residues_to_class --> Predict a class C for all residues encoded in D dimensions in a sequence of length L. Input BxLxD --> output BxC
- residues_to_value --> Predict a value V for all residues encoded in D dimensions in a sequence of length L. Input BxLxD --> output Bx1
- sequence_to_class --> Predict a class C for each sequence encoded in a fixed dimension D. Input BxD --> output BxC
- sequence_to_value --> Predict a value V for each sequence encoded in a fixed dimension D. Input BxD --> output Bx1
Para cada protocolo, criamos uma padronização sobre como os dados de entrada devem ser fornecidos. Você pode encontrar informações detalhadas para cada protocolo aqui.
Abaixo, mostramos um exemplo de como a sequência e o arquivo de etiqueta devem se parecer com o protocolo resale_to_class :
sequências.fasta
>Seq1
SEQWENCE
RABELS.FASTA
>Seq1 SET=train VALIDATION=False
DVCDVVDD
Para executar o BioTrainer , você precisa fornecer um arquivo de configuração no formato .yaml , juntamente com os dados de sequência e rótulo. Aqui você pode encontrar um arquivo exemplar para o protocolo resale_to_class . Todas as opções de configuração estão listadas aqui.
Exemplo de configuração para residue_to_class :
protocol : residue_to_class
sequence_file : sequences.fasta # Specify your sequence file
labels_file : labels.fasta # Specify your label file
model_choice : CNN # Model architecture
optimizer_choice : adam # Model optimizer
learning_rate : 1e-3 # Optimizer learning rate
loss_choice : cross_entropy_loss # Loss function
use_class_weights : True # Balance class weights by using class sample size in the given dataset
num_epochs : 200 # Number of maximum epochs
batch_size : 128 # Batch size
embedder_name : Rostlab/prot_t5_xl_uniref50 # Embedder to use Para converter os dados da sequência em entrada mais significativa para um modelo, incorporadas geradas por modelos de linguagem de proteínas (PLMs) tornaram -se amplamente aplicadas nos últimos anos. Portanto, o BioTrainer permite o cálculo automático de incorporações em um nível por sequência e por resíduos , dependendo do protocolo. Dê uma olhada nas opções de incorporação para descobrir todos os métodos de incorporação disponíveis. Também é possível fornecer seu próprio arquivo de incorporação usando seu próprio incorporador, independentemente do pipeline de cálculo fornecido. Consulte o documento de padronização de dados e os exemplos relevantes para aprender como fazer isso. As incorporações pré-calculadas podem ser usadas para o processo de treinamento por meio do parâmetro embeddings_file , conforme descrito nas opções de configuração.
Se você estiver enfrentando algum problema durante a instalação ou em execução, verifique primeiro o guia de solução de problemas.
Se o seu problema não estiver coberto lá, crie um problema.
Se você estiver usando o BioTrainer para o seu trabalho, adicione uma citação:
@inproceedings{
sanchez2022standards,
title={Standards, tooling and benchmarks to probe representation learning on proteins},
author={Joaquin Gomez Sanchez and Sebastian Franz and Michael Heinzinger and Burkhard Rost and Christian Dallago},
booktitle={NeurIPS 2022 Workshop on Learning Meaningful Representations of Life},
year={2022},
url={https://openreview.net/forum?id=adODyN-eeJ8}
}