Biotrainer est un outil open source pour simplifier le processus de formation des modèles d'apprentissage automatique pour les applications biologiques. Il se spécialise sur les modèles pour prédire les caractéristiques des protéines . Biotrainer soutient les deux, la formation de nouveaux modèles et l'utilisation du modèle formé pour l'inférence . L'utilisation de Biotrainer est aussi simple que de fournir vos données de séquence et d'étiquette dans le format correct, ainsi qu'un fichier de configuration.
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 Veuillez vous assurer d'utiliser la même version de torche que celle fournie dans pyproject.toml pour la reproductibilité du modèle!
Si vous souhaitez utiliser Biotrainer avec un joli frontend GUI, veuillez consulter Biocentral :
cd examples/residue_to_class
poetry run biotrainer config.yml Vous pouvez également utiliser le fichier run-biotrainer.py fourni pour le développement et le débogage (vous pouvez configurer votre IDE pour exécuter directement Run-BiotRainer.py avec l'environnement virtuel fourni):
# 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.ymlLa sortie peut être trouvée par la suite dans le répertoire du fichier de configuration fourni.
Une fois votre modèle formé, vous trouverez un fichier out.yml dans le répertoire output par défaut. Vous pouvez maintenant l'utiliser pour créer des prédictions avec votre modèle pour de nouvelles données, le module inferencer s'occupe automatiquement de vos points de contrôle:
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 ()Voir l'exemple complet ici.
Le module inferencer comprend également une prévision avec bootstrapping et monte carlo dropout .
Biotrainer fournit de nombreuses normes de données, conçues pour faciliter l'utilisation de l'apprentissage automatique pour la biologie. Ce processus de standardisation devrait également améliorer la communication entre différentes disciplines scientifiques et aider à maintenir l'aperçu du domaine en développement rapide de la prédiction des protéines.
Le protocole définit comment les données d'entrée doivent être interprétées et quel type de tâche de prédiction doit être appliquée. Les protocoles suivants sont déjà mis en œuvre:
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
Pour chaque protocole, nous avons créé une normalisation sur la façon dont les données d'entrée doivent être fournies. Vous pouvez trouver des informations détaillées pour chaque protocole ici.
Ci-dessous, nous montrons un exemple sur la façon dont la séquence et le fichier d'étiquette doivent ressembler au protocole résidu_to_class :
séquences.fasta
>Seq1
SEQWENCE
libellés.fasta
>Seq1 SET=train VALIDATION=False
DVCDVVDD
Pour exécuter Biotrainer , vous devez fournir un fichier de configuration au format .yaml avec vos données de séquence et d'étiquette. Ici, vous pouvez trouver un fichier exemplaire pour le protocole résidu_to_class . Toutes les options de configuration sont répertoriées ici.
Exemple de configuration pour résidu_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 Pour convertir les données de séquence en entrée plus significative pour un modèle, les intérêts générés par les modèles de langage protéique (PLMS) sont devenus largement appliqués au cours des dernières années. Par conséquent, le biotrainer permet un calcul automatique des intérêts au niveau par séquence et par résidence par rapport, selon le protocole. Jetez un œil aux options d'intégration pour découvrir toutes les méthodes d'intégration disponibles. Il est également possible de fournir votre propre fichier d'intégration à l'aide de votre propre intégration, indépendamment du pipeline de calcul fourni. Veuillez vous référer au document de normalisation des données et aux exemples pertinents pour savoir comment procéder. Les intégres pré-calculés peuvent être utilisés pour le processus de formation via le paramètre embeddings_file , comme décrit dans les options de configuration.
Si vous rencontrez des problèmes lors de l'installation ou de la course, veuillez d'abord vérifier le guide de dépannage.
Si votre problème n'y est pas couvert, veuillez créer un problème.
Si vous utilisez Biotrainer pour votre travail, veuillez ajouter une citation:
@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}
}