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 يرجى التأكد من استخدام نفس إصدار الشعلة كما هو منصوص عليه في 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
لكل بروتوكول ، أنشأنا توحيدًا حول كيفية توفير بيانات الإدخال. يمكنك العثور على معلومات مفصلة لكل بروتوكول هنا.
أدناه ، نعرض مثالاً على كيفية ظهور ملف التسلسل والتسمية لبروتوكول Residue_To_Class :
Sequences.fasta
>Seq1
SEQWENCE
العلامات
>Seq1 SET=train VALIDATION=False
DVCDVVDD
لتشغيل Biotrainer ، تحتاج إلى توفير ملف تكوين بتنسيق .yaml مع بيانات التسلسل والتسمية. هنا يمكنك العثور على ملف مثالي لبروتوكول Residue_To_Class . يتم سرد جميع خيارات التكوين هنا.
مثال على التكوين ل 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 لتحويل بيانات التسلسل إلى مدخلات أكثر جدوى لنموذج ما ، تم تطبيق التضمينات التي تم إنشاؤها بواسطة نماذج لغة البروتين (PLMs) على نطاق واسع في السنوات الأخيرة. وبالتالي ، يتيح Biotrainer الحساب التلقائي للتضمين على مستوى لكل تسلسل ومستوى لكل مصل ، اعتمادًا على البروتوكول. ألقِ نظرة على خيارات التضمينات لمعرفة جميع طرق التضمين المتاحة. من الممكن أيضًا توفير ملف التضمين الخاص بك باستخدام تضمينك ، بغض النظر عن خط أنابيب الحساب المقدم. يرجى الرجوع إلى مستند توحيد البيانات والأمثلة ذات الصلة لمعرفة كيفية القيام بذلك. يمكن استخدام التضمينات المحسوبة مسبقًا لعملية التدريب عبر معلمة 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}
}