Biotrainer adalah alat sumber terbuka untuk menyederhanakan proses pelatihan model pembelajaran mesin untuk aplikasi biologis. Ini mengkhususkan diri pada model untuk memprediksi fitur untuk protein . Biotrainer mendukung keduanya, melatih model baru dan menggunakan model yang terlatih untuk inferensi . Menggunakan Biotrainer sesederhana menyediakan urutan dan label data Anda dalam format yang benar, bersama dengan file konfigurasi.
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 Pastikan untuk menggunakan versi obor yang sama seperti yang disediakan di pyproject.toml untuk reproduktifitas model!
Jika Anda ingin menggunakan Biotrainer dengan frontend GUI yang bagus, silakan periksa Biocentral :
cd examples/residue_to_class
poetry run biotrainer config.yml Anda juga dapat menggunakan file run-biotrainer.py yang disediakan untuk pengembangan dan debugging (Anda mungkin ingin mengatur IDE Anda untuk secara langsung menjalankan run-biotrainer.py dengan lingkungan virtual yang disediakan):
# 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.ymlOutput dapat ditemukan sesudahnya di direktori file konfigurasi yang disediakan.
Setelah model Anda dilatih, Anda akan menemukan file out.yml di direktori output secara default. Sekarang Anda dapat menggunakannya untuk membuat prediksi dengan model Anda untuk data baru, modul inferencer menangani pemuatan pos pemeriksaan Anda secara otomatis:
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 ()Lihat contoh lengkapnya di sini.
Modul inferencer juga fitur yang diprediksi dengan bootstrapping dan monte carlo dropout .
Biotrainer memberikan banyak standar data, yang dirancang untuk memudahkan penggunaan pembelajaran mesin untuk biologi. Proses standardisasi ini juga diharapkan untuk meningkatkan komunikasi antara berbagai disiplin ilmu dan membantu menjaga ikhtisar tentang bidang prediksi protein yang berkembang pesat.
Protokol mendefinisikan, bagaimana data input harus ditafsirkan dan jenis tugas prediksi apa yang harus diterapkan. Protokol berikut sudah diimplementasikan:
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
Untuk setiap protokol, kami membuat standardisasi tentang bagaimana data input harus disediakan. Anda dapat menemukan informasi terperinci untuk setiap protokol di sini.
Di bawah ini, kami menunjukkan contoh tentang bagaimana urutan file dan label harus terlihat seperti protokol residue_to_class :
sekuens.fasta
>Seq1
SEQWENCE
label.fasta
>Seq1 SET=train VALIDATION=False
DVCDVVDD
Untuk menjalankan Biotrainer , Anda perlu menyediakan file konfigurasi dalam format .yaml bersama dengan urutan dan data label Anda. Di sini Anda dapat menemukan file teladan untuk protokol residue_to_class . Semua opsi konfigurasi tercantum di sini.
Contoh konfigurasi untuk 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 Untuk mengonversi data urutan menjadi input yang lebih bermakna untuk suatu model, embeddings yang dihasilkan oleh model bahasa protein (PLM) telah diterapkan secara luas dalam beberapa tahun terakhir. Oleh karena itu, Biotrainer memungkinkan perhitungan otomatis embedding pada tingkat per-urutan dan per-residu , tergantung pada protokol. Lihatlah opsi embeddings untuk mengetahui semua metode penyematan yang tersedia. Dimungkinkan juga untuk menyediakan file embeddings Anda sendiri menggunakan embedder Anda sendiri, terlepas dari pipa perhitungan yang disediakan. Silakan merujuk ke dokumen standardisasi data dan contoh yang relevan untuk mempelajari cara melakukan ini. Embeddings yang telah dihitung sebelumnya dapat digunakan untuk proses pelatihan melalui parameter embeddings_file , seperti yang dijelaskan dalam opsi konfigurasi.
Jika Anda mengalami masalah selama instalasi atau berjalan, silakan periksa panduan pemecahan masalah terlebih dahulu.
Jika masalah Anda tidak tercakup di sana, silakan buat masalah.
Jika Anda menggunakan Biotrainer untuk pekerjaan Anda, silakan tambahkan kutipan:
@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}
}