BioTrainer es una herramienta de código abierto para simplificar el proceso de capacitación de los modelos de aprendizaje automático para aplicaciones biológicas. Se especializa en modelos para predecir características para proteínas . BioTrainer admite ambos, capacitación de nuevos modelos y empleando el modelo capacitado para la inferencia . El uso de BioTrainer es tan simple como proporcionar sus datos de secuencia y etiqueta en el formato correcto, junto con un archivo de configuración.
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 ¡Asegúrese de usar la misma versión de antorcha que se proporciona en pyproject.toml para la reproducibilidad del modelo!
Si desea usar BioTrainer con una buena GUI Frontend, consulte BioCentral :
cd examples/residue_to_class
poetry run biotrainer config.yml También puede usar el archivo run-biotrainer.py proporcionado para el desarrollo y la depuración (es posible que desee configurar su IDE para ejecutar directamente Run-BioTrainer.py con el entorno virtual proporcionado):
# 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 salida se puede encontrar después en el directorio del archivo de configuración proporcionado.
Después de capacitar a su modelo, encontrará un archivo out.yml en el directorio output de forma predeterminada. Ahora puede usar eso para crear predicciones con su modelo para nuevos datos, el módulo inferencer se encarga de cargar sus puntos de control automáticamente:
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 ()Vea el ejemplo completo aquí.
El módulo inferencer también presenta predecir con bootstrapping y monte carlo dropout .
BioTrainer proporciona una gran cantidad de estándares de datos, diseñados para aliviar el uso del aprendizaje automático para la biología. También se espera que este proceso de estandarización mejore la comunicación entre diferentes disciplinas científicas y ayude a mantener la descripción general sobre el campo de predicción de proteínas en desarrollo rápido.
El protocolo define cómo deben interpretarse los datos de entrada y qué tipo de tarea de predicción debe aplicarse. Los siguientes protocolos ya están 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, creamos una estandarización sobre cómo se deben proporcionar los datos de entrada. Puede encontrar información detallada para cada protocolo aquí.
A continuación, mostramos un ejemplo sobre cómo debe verse la secuencia y el archivo de la etiqueta para el protocolo residual_to_class :
secuencias.
>Seq1
SEQWENCE
etiquetas.
>Seq1 SET=train VALIDATION=False
DVCDVVDD
Para ejecutar BioTrainer , debe proporcionar un archivo de configuración en formato .yaml junto con sus datos de secuencia y etiqueta. Aquí puede encontrar un archivo ejemplar para el protocolo residual_to_class . Todas las opciones de configuración se enumeran aquí.
Ejemplo de configuración para residuos_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 convertir los datos de secuencia en información más significativa para un modelo, los incrustaciones generados por los modelos de lenguaje de proteínas (PLM) se han aplicado ampliamente en los últimos años. Por lo tanto, el biotrainer permite el cálculo automático de incrustaciones en un nivel de secuencia y por residuos , dependiendo del protocolo. Eche un vistazo a las opciones de incrustaciones para conocer todos los métodos de incrustación disponibles. También es posible proporcionar su propio archivo de incrustaciones utilizando su propio incrustador, independientemente de la tubería de cálculo proporcionada. Consulte el documento de estandarización de datos y los ejemplos relevantes para aprender a hacerlo. Los incrustaciones precalculadas se pueden utilizar para el proceso de capacitación a través del parámetro embeddings_file , como se describe en las opciones de configuración.
Si está experimentando algún problema durante la instalación o en ejecución, consulte primero la guía de solución de problemas.
Si su problema no está cubierto allí, cree un problema.
Si está utilizando BioTrainer para su trabajo, agregue una cita:
@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}
}