Biotrainer -это инструмент с открытым исходным кодом для упрощения учебного процесса моделей машинного обучения для биологических применений. Он специализируется на моделях для прогнозирования функций для белков . Biotrainer поддерживает оба, обучая новые модели и используя обученную модель для вывода . Использование Biotrainer происходит так же просто, как предоставление данных вашей последовательности и метки в правильном формате, а также файл конфигурации.
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 Пожалуйста, обязательно используйте ту же версию Torch, что и в pyproject.toml для воспроизводимости модели!
Если вы хотите использовать Biotrainer с хорошим графическим интерфейсом, пожалуйста, ознакомьтесь с Biocentral :
cd examples/residue_to_class
poetry run biotrainer config.yml Вы также можете использовать предоставленный файл run-biotrainer.py для разработки и отладки (вы можете настроить свой IDE для непосредственного выполнения run-biotrainer.py с предоставленной виртуальной средой):
# 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.ymlВывод можно найти впоследствии в каталоге предоставленного файла конфигурации.
После обучения вашей модели вы найдете файл out.yml в output каталоге по умолчанию. Теперь вы можете использовать это для создания прогнозов с вашей моделью для новых данных, модуль inferencer позаботится об автоматической загрузке ваших контрольных точек:
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 ()Смотрите полный пример здесь.
Модуль inferencer также показывает прогнозирование с bootstrapping и monte carlo dropout .
Biotrainer предоставляет много стандартов данных, предназначенных для облегчения использования машинного обучения для биологии. Ожидается, что этот процесс стандартизации улучшит связь между различными научными дисциплинами и поможет сохранить обзор быстро развивающейся области прогнозирования белка.
Протокол определяет, как следует интерпретировать входные данные и какая задача прогнозирования должна быть применена. Следующие протоколы уже реализованы:
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
Для каждого протокола мы создали стандартизацию того, как должны быть предоставлены входные данные. Вы можете найти подробную информацию для каждого протокола здесь.
Ниже мы показываем пример того, как следует выглядеть последовательность и файл метки для протокола остаточной_TO_CLASS :
последовательности
>Seq1
SEQWENCE
Labels.fasta
>Seq1 SET=train VALIDATION=False
DVCDVVDD
Для запуска Biotrainer вам необходимо предоставить файл конфигурации в формате .yaml , а также данные о последовательности и метке. Здесь вы можете найти примерный файл для протокола остатков_TO_CLASS . Все параметры конфигурации перечислены здесь.
Пример конфигурации для остатка_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 Чтобы преобразовать данные последовательности в более значимый вход для модели, в последних годах встраиваемые встраиваемые модели белкового языка (PLMS) стали широко применяемыми. Следовательно, Biotrainer обеспечивает автоматическое расчет встроенных встроенных поступлений на уровне последовательности и каждого ресурса , в зависимости от протокола. Взгляните на варианты встраивания, чтобы узнать обо всех доступных методах внедрения. Также возможно предоставить свой собственный файл встроенных встроений, используя свой собственный Embedder, независимо от предоставленного расчетного трубопровода. Пожалуйста, обратитесь к документу по стандартизации данных и соответствующим примерам, чтобы узнать, как это сделать. Предварительные вставки могут использоваться для учебного процесса через параметр embeddings_file , как описано в параметрах конфигурации.
Если вы испытываете какие -либо проблемы во время установки или запуска, сначала проверьте руководство по устранению неполадок.
Если ваша проблема не покрыта там, пожалуйста, создайте проблему.
Если вы используете Biotrainer для работы, добавьте цитату:
@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}
}