Прискоріть прогнозування структури білка за допомогою моделі мови ESMFold на Amazon SageMaker

Прискоріть прогнозування структури білка за допомогою моделі мови ESMFold на Amazon SageMaker

Білки керують багатьма біологічними процесами, такими як активність ферментів, молекулярний транспорт і підтримка клітин. Тривимірна структура білка дає розуміння його функції та того, як він взаємодіє з іншими біомолекулами. Експериментальні методи визначення структури білка, такі як рентгенівська кристалографія та ЯМР-спектроскопія, є дорогими та трудомісткими.

Навпаки, нещодавно розроблені обчислювальні методи можуть швидко й точно передбачити структуру білка за його амінокислотною послідовністю. Ці методи мають вирішальне значення для білків, які важко дослідити експериментально, таких як мембранні білки, мішені для багатьох ліків. Одним із відомих прикладів цього є AlphaFold, алгоритм на основі глибокого навчання, відомий своїми точними передбаченнями.

ESMFold це ще один високоточний метод, заснований на глибокому навчанні, розроблений для прогнозування структури білка за його амінокислотною послідовністю. ESMFold використовує модель великої білкової мови (pLM) як основу та працює наскрізно. На відміну від AlphaFold2, він не потребує пошуку або Вирівнювання кількох послідовностей (MSA), а також не покладається на зовнішні бази даних для створення прогнозів. Замість цього команда розробників навчила модель на мільйонах білкових послідовностей з UniRef. Під час навчання модель розробила шаблони уваги, які елегантно представляють еволюційні взаємодії між амінокислотами в послідовності. Таке використання pLM замість MSA забезпечує до 60 разів швидший час прогнозування, ніж інші найсучасніші моделі.

У цій публікації ми використовуємо попередньо підготовлену модель ESMFold від Hugging Face with Amazon SageMaker для прогнозування структури важкого ланцюга трастузумаб, то моноклональне антитіло вперше розроблено Genentech для лікування HER2-позитивний рак молочної залози. Швидке передбачення структури цього білка може бути корисним, якщо дослідники хочуть перевірити ефект модифікації послідовності. Це потенційно може призвести до покращення виживаності пацієнтів або зменшення побічних ефектів.

У цьому дописі наведено приклад блокнота Jupyter і пов’язаних із ним сценаріїв GitHub сховище.

Передумови

Ми рекомендуємо запустити цей приклад у Студія Amazon SageMaker ноутбук запуск зображення PyTorch 1.13 Python 3.9, оптимізованого для ЦП, на типі примірника ml.r5.xlarge.

Візуалізуйте експериментальну структуру трастузумабу

Для початку використовуємо biopython бібліотеку та допоміжний сценарій для завантаження структури трастузумабу з Банк даних білка RCSB:

from Bio.PDB import PDBList, MMCIFParser
from prothelpers.structure import atoms_to_pdb target_id = "1N8Z"
pdbl = PDBList()
filename = pdbl.retrieve_pdb_file(target_id, pdir="data")
parser = MMCIFParser()
structure = parser.get_structure(target_id, filename)
pdb_string = atoms_to_pdb(structure)

Далі використовуємо py3Dmol бібліотека для візуалізації конструкції як інтерактивної 3D візуалізації:

view = py3Dmol.view()
view.addModel(pdb_string)
view.setStyle({'chain':'A'},{"cartoon": {'color': 'orange'}})
view.setStyle({'chain':'B'},{"cartoon": {'color': 'blue'}})
view.setStyle({'chain':'C'},{"cartoon": {'color': 'green'}})
view.show()

На наступному малюнку зображено тривимірну структуру білка 3N1Z з банку даних про білки (PDB). На цьому зображенні легкий ланцюг трастузумабу позначено помаранчевим кольором, важкий ланцюг — синім (з варіабельною областю світло-блакитним), а антиген HER8 — зеленим.

Прискорення прогнозування структури білка за допомогою моделі мови ESMFold на Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Спочатку ми використаємо ESMFold, щоб передбачити структуру важкого ланцюга (ланцюг B) за його амінокислотною послідовністю. Потім ми порівняємо передбачення з експериментально визначеною структурою, показаною вище.

Передбачте структуру важкого ланцюга трастузумабу за його послідовністю за допомогою ESMFold

Давайте використаємо модель ESMFold, щоб передбачити структуру важкого ланцюга та порівняти її з експериментальним результатом. Для початку ми використаємо попередньо створене середовище блокнота в Studio, яке постачається з кількома важливими бібліотеками, як-от PyTorch, попередньо встановлено. Хоча ми могли б використовувати прискорений тип екземпляра для покращення продуктивності нашого аналізу блокнота, натомість ми використаємо неприскорений екземпляр і запустимо передбачення ESMFold на ЦП.

Спочатку ми завантажуємо попередньо навчену модель ESMFold і токенізер з Hugging Face Hub:

from transformers import AutoTokenizer, EsmForProteinFolding tokenizer = AutoTokenizer.from_pretrained("facebook/esmfold_v1")
model = EsmForProteinFolding.from_pretrained("facebook/esmfold_v1", low_cpu_mem_usage=True)

Далі ми копіюємо модель на наш пристрій (у цьому випадку ЦП) і встановлюємо деякі параметри моделі:

device = torch.device("cpu")
model.esm = model.esm.float()
model = model.to(device)
model.trunk.set_chunk_size(64)

Щоб підготувати білкову послідовність для аналізу, нам потрібно її токенізувати. Це переводить символи амінокислот (EVQLV…) у числовий формат, який може зрозуміти модель ESMFold (6,19,5,10,19,…):

tokenized_input = tokenizer([experimental_sequence], return_tensors="pt", add_special_tokens=False)["input_ids"]
tokenized_input = tokenized_input.to(device)

Далі ми копіюємо токенізоване введення в режим, робимо прогноз і зберігаємо результат у файл:

with torch.no_grad():
notebook_prediction = model.infer_pdb(experimental_sequence)
with open("data/prediction.pdb", "w") as f:
f.write(notebook_prediction)

Це займає приблизно 3 хвилини на неприскореному типі екземпляра, наприклад r5.

Ми можемо перевірити точність прогнозу ESMFold, порівнявши його з експериментальною структурою. Ми робимо це за допомогою US-Align Інструмент, розроблений лабораторією Zhang Lab Мічиганського університету:

from prothelpers.usalign import tmscore tmscore("data/prediction.pdb", "data/experimental.pdb", pymol="data/superimposed")

PDBchain1 PDBchain2 TM-Score
data/prediction.pdb:A data/experimental.pdb:B 0.802

Команда шаблон моделювання партитури (TM-score) є показником для оцінки подібності білкових структур. Оцінка 1.0 означає ідеальний збіг. Оцінки вище 0.7 вказують на те, що білки мають однакову структуру магістралі. Оцінки вище 0.9 вказують на наявність білків функціонально взаємозамінні для подальшого використання. У нашому випадку досягнення TM-Score 0.802 прогноз ESMFold, ймовірно, підійде для таких застосувань, як оцінка структури або експерименти зі зв’язуванням ліганду, але може не підійти для таких випадків використання молекулярна заміна які вимагають надзвичайно високої точності.

Ми можемо підтвердити цей результат, візуалізувавши вирівняні структури. Дві структури демонструють високий, але не ідеальний ступінь перекриття. Прогнозування структури білка – це галузь, що швидко розвивається, і багато дослідницьких груп розробляють дедалі точніші алгоритми!

Розгорніть ESMFold як кінцеву точку висновку SageMaker

Запуск моделювання в блокноті чудово підходить для експериментів, але що, якщо вам потрібно інтегрувати свою модель із програмою? Або конвеєр MLOps? У цьому випадку кращим варіантом є розгортання вашої моделі як кінцевої точки висновку. У наступному прикладі ми розгорнемо ESMFold як кінцеву точку висновку SageMaker у реальному часі на прискореному екземплярі. Кінцеві точки реального часу SageMaker забезпечують масштабований, економічно ефективний і безпечний спосіб розгортання та розміщення моделей машинного навчання (ML). За допомогою автоматичного масштабування ви можете регулювати кількість екземплярів, на яких працює кінцева точка, щоб відповідати вимогам вашої програми, оптимізуючи витрати та забезпечуючи високу доступність.

Попередньо побудований Контейнер SageMaker для Hugging Face дозволяє легко розгортати моделі глибокого навчання для звичайних завдань. Однак для нових випадків використання, як-от передбачення структури білка, нам потрібно визначити настроювання inference.py сценарій для завантаження моделі, запуску прогнозу та форматування виводу. Цей сценарій містить майже той самий код, який ми використовували в нашому блокноті. Ми також створюємо a requirements.txt файл для визначення деяких залежностей Python для використання нашою кінцевою точкою. Ви можете переглянути створені нами файли в GitHub сховище.

На наступному малюнку експериментальна (синій) і прогнозована (червоний) структури важкого ланцюга трастузумабу дуже схожі, але не ідентичні.

Прискорення прогнозування структури білка за допомогою моделі мови ESMFold на Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Після того як ми створили необхідні файли в code ми розгортаємо нашу модель за допомогою SageMaker HuggingFaceModel клас. Для цього використовується попередньо створений контейнер для спрощення процесу розгортання моделей Hugging Face у SageMaker. Зверніть увагу, що створення кінцевої точки може зайняти 10 хвилин або більше, залежно від доступності ml.g4dn типи примірників у нашому регіоні.

from sagemaker.huggingface import HuggingFaceModel
from datetime import datetime huggingface_model = HuggingFaceModel(
model_data = model_artifact_s3_uri, # Previously staged in S3
name = f"emsfold-v1-model-" + datetime.now().strftime("%Y%m%d%s"),
transformers_version='4.17',
pytorch_version='1.10',
py_version='py38',
role=role,
source_dir = "code",
entry_point = "inference.py"
) rt_predictor = huggingface_model.deploy(
initial_instance_count = 1,
instance_type="ml.g4dn.2xlarge",
endpoint_name=f"my-esmfold-endpoint",
serializer = sagemaker.serializers.JSONSerializer(),
deserializer = sagemaker.deserializers.JSONDeserializer()
)

Коли розгортання кінцевої точки завершено, ми можемо повторно надіслати послідовність білка та відобразити кілька перших рядків прогнозу:

endpoint_prediction = rt_predictor.predict(experimental_sequence)[0]
print(endpoint_prediction[:900])

Оскільки ми розгорнули нашу кінцеву точку в прискореному екземплярі, передбачення має тривати лише кілька секунд. Кожен рядок результату відповідає одному атому та містить ідентичність амінокислоти, три просторові координати та оцінка pLDDT що представляє достовірність передбачення в цьому місці.

PDB_GROUP ID ATOM_LABEL RES_ID CHAIN_ID SEQ_ID CARTN_X CARTN_Y CARTN_Z ЗАСЕЛЕННЯ PLDDT ATOM_ID
ATOM 1 N ГЛУ A 1 14.578 -19.953 1.47 1 0.83 N
ATOM 2 CA ГЛУ A 1 13.166 -19.595 1.577 1 0.84 C
ATOM 3 CA ГЛУ A 1 12.737 -18.693 0.423 1 0.86 C
ATOM 4 CB ГЛУ A 1 12.886 -18.906 2.915 1 0.8 C
ATOM 5 O ГЛУ A 1 13.417 -17.715 0.106 1 0.83 O
ATOM 6 cg ГЛУ A 1 11.407 -18.694 3.2 1 0.71 C
ATOM 7 cd ГЛУ A 1 11.141 -18.042 4.548 1 0.68 C
ATOM 8 OE1 ГЛУ A 1 12.108 -17.805 5.307 1 0.68 O
ATOM 9 OE2 ГЛУ A 1 9.958 -17.767 4.847 1 0.61 O
ATOM 10 N VAL A 2 11.678 -19.063 -0.258 1 0.87 N
ATOM 11 CA VAL A 2 11.207 -18.309 -1.415 1 0.87 C

Використовуючи той самий метод, що й раніше, ми бачимо, що блокнот і передбачення кінцевої точки ідентичні.

PDBchain1 PDBchain2 TM-Score
data/endpoint_prediction.pdb:A data/prediction.pdb:A 1.0

Як показано на наступному малюнку, передбачення ESMFold, створені в блокноті (червоний) і кінцевою точкою (синій), демонструють ідеальне вирівнювання.

Прискорення прогнозування структури білка за допомогою моделі мови ESMFold на Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Прибирати

Щоб уникнути подальших платежів, ми видаляємо нашу кінцеву точку висновку та дані тестування:

rt_predictor.delete_endpoint()
bucket = boto_session.resource("s3").Bucket(bucket)
bucket.objects.filter(Prefix=prefix).delete()
os.system("rm -rf data obsolete code")

Підсумки

Обчислювальне прогнозування структури білків є критичним інструментом для розуміння функції білків. Окрім фундаментальних досліджень, такі алгоритми, як AlphaFold і ESMFold, мають багато застосувань у медицині та біотехнологіях. Структурні ідеї, отримані за допомогою цих моделей, допомагають нам краще зрозуміти, як взаємодіють біомолекули. Це може призвести до кращих діагностичних інструментів і терапії для пацієнтів.

У цій публікації ми показуємо, як розгорнути модель білкової мови ESMFold із Hugging Face Hub як масштабовану кінцеву точку висновку за допомогою SageMaker. Додаткову інформацію про розгортання моделей Hugging Face на SageMaker див Використовуйте Hugging Face з Amazon SageMaker. Ви також можете знайти більше наукових прикладів білків у Чудовий аналіз білка на AWS Репо GitHub. Будь ласка, залиште нам коментар, якщо є інші приклади, які ви хотіли б побачити!


Про авторів

Прискорення прогнозування структури білка за допомогою моделі мови ESMFold на Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Браян Лоял є старшим архітектором рішень AI/ML у глобальній команді охорони здоров’я та наук про життя в Amazon Web Services. Він має понад 17 років досвіду в біотехнологіях і машинному навчанні, і він захоплений тим, що допомагає клієнтам вирішувати геномні та протеомні проблеми. У вільний час він любить готувати та їсти з друзями та родиною.

Прискорення прогнозування структури білка за допомогою моделі мови ESMFold на Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Шаміка Аріяванса є архітектором спеціалістів із штучного інтелекту та ML у групі Global Healthcare and Life Sciences у Amazon Web Services. Він пристрасно працює з клієнтами, щоб прискорити впровадження штучного інтелекту та машинного навчання, надаючи технічне керівництво та допомагаючи їм впроваджувати інновації та створювати безпечні хмарні рішення на AWS. Поза роботою любить кататися на лижах і бездоріжжі.

Яньцзюнь ЦіЯньцзюнь Ці є старшим менеджером із прикладних наук у лабораторії рішень машинного навчання AWS. Вона впроваджує інновації та застосовує машинне навчання, щоб допомогти клієнтам AWS прискорити впровадження ШІ та хмари.

Часова мітка:

Більше від AWS Машинне навчання