Biotrainer ist ein Open-Source-Tool, um den Trainingsprozess von maschinellen Lernmodellen für biologische Anwendungen zu vereinfachen. Es ist auf Modelle spezialisiert, um Merkmale für Proteine vorherzusagen. Biotrainer unterstützt beide, schulen neue Modelle und verwenden das geschulte Modell für Inferenz . Die Verwendung von Biotrainer ist so einfach wie die Bereitstellung Ihrer Sequenz- und Beschriftungsdaten im richtigen Format zusammen mit einer Konfigurationsdatei.
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 Bitte stellen Sie sicher, dass Sie dieselbe Torchversion wie in pyproject.toml zur Modellreproduzierbarkeit der Modell verwenden!
Wenn Sie Biotrainer mit einem schönen GUI -Frontend verwenden möchten, lesen Sie bitte Biocentral :
cd examples/residue_to_class
poetry run biotrainer config.yml Sie können auch die bereitgestellte run-biotrainer.py -Datei für Entwicklung und Debugging verwenden (Sie möchten Ihre IDE möglicherweise einrichten, um Run-biotrainer.py direkt mit der bereitgestellten virtuellen Umgebung auszuführen):
# 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.ymlDie Ausgabe kann anschließend im Verzeichnis der bereitgestellten Konfigurationsdatei gefunden werden.
Nachdem Ihr Modell trainiert wurde, finden Sie standardmäßig eine out.yml -Datei im output . Jetzt können Sie dies verwenden, um Vorhersagen mit Ihrem Modell für neue Daten zu erstellen. Das inferencer kümmert sich um das Laden Ihrer Kontrollpunkte automatisch:
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 ()Siehe das vollständige Beispiel hier.
Das inferencer verfügt auch über Vorhersage mit bootstrapping und monte carlo dropout .
Biotrainer bietet viele Datenstandards, die die Verwendung des maschinellen Lernens für die Biologie erleichtern. Es wird auch erwartet, dass dieser Standardisierungsprozess die Kommunikation zwischen verschiedenen wissenschaftlichen Disziplinen verbessert und dazu beiträgt, den Überblick über das sich schnell entwickelnde Bereich der Proteinvorhersage zu erhalten.
Das Protokoll definiert, wie die Eingabedaten interpretiert werden sollten und welche Art von Vorhersageaufgabe angewendet werden muss. Die folgenden Protokolle sind bereits implementiert:
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
Für jedes Protokoll haben wir eine Standardisierung darüber erstellt, wie die Eingabedaten bereitgestellt werden müssen. Für jedes Protokoll finden Sie hier detaillierte Informationen.
Im Folgenden zeigen wir ein Beispiel, wie die Sequenz- und Etikettendatei für das Protokoll rESSUE_TO_CLASS aussehen muss:
Sequenzen.Fasta
>Seq1
SEQWENCE
Labels.Fasta
>Seq1 SET=train VALIDATION=False
DVCDVVDD
Um Biotrainer auszuführen, müssen Sie eine Konfigurationsdatei im .yaml -Format zusammen mit Ihren Sequenz- und Beschriftungsdaten bereitstellen. Hier finden Sie eine beispielhafte Datei für das Protokoll rESSUE_TO_CLASS . Alle Konfigurationsoptionen sind hier aufgeführt.
Beispielkonfiguration für Reste_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 Um die Sequenzdaten in eine aussagekräftigere Eingabe für ein Modell umzuwandeln, wurden in den letzten Jahren die von Proteinsprachmodellen (PLMS) generierten Einbettungsdings weit verbreitet. Daher ermöglicht Biotrainer die automatische Berechnung von Einbettungen auf einer Pro-Sequenz- und pro-Residue -Ebene, abhängig vom Protokoll. Schauen Sie sich die Einbettungsoptionen an, um alle verfügbaren Einbettungsmethoden zu erfahren. Es ist auch möglich, Ihre eigene Einbettungsdatei mit Ihrem eigenen Einbettder unabhängig von der bereitgestellten Berechnungspipeline bereitzustellen. Weitere Informationen finden Sie im Datenstandardungsdokument und die relevanten Beispiele, um zu erfahren, wie dies zu tun ist. Vorbereitete Einbettungen können für den Trainingsprozess über den Parameter embeddings_file verwendet werden, wie in den Konfigurationsoptionen beschrieben.
Wenn Sie während der Installation oder des Laufens Probleme haben, überprüfen Sie zuerst die Fehlerbehebung.
Wenn Ihr Problem dort nicht behandelt wird, erstellen Sie bitte ein Problem.
Wenn Sie Biotrainer für Ihre Arbeit verwenden, fügen Sie bitte ein Zitat hinzu:
@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}
}