Percepat prediksi struktur protein dengan model bahasa ESMFold di Amazon SageMaker

Percepat prediksi struktur protein dengan model bahasa ESMFold di Amazon SageMaker

Protein menggerakkan banyak proses biologis, seperti aktivitas enzim, transportasi molekuler, dan dukungan seluler. Struktur tiga dimensi protein memberikan wawasan tentang fungsinya dan bagaimana ia berinteraksi dengan biomolekul lain. Metode eksperimental untuk menentukan struktur protein, seperti kristalografi sinar-X dan spektroskopi NMR, mahal dan memakan waktu.

Sebaliknya, metode komputasi yang dikembangkan baru-baru ini dapat dengan cepat dan akurat memprediksi struktur protein dari urutan asam aminonya. Metode ini sangat penting untuk protein yang sulit dipelajari secara eksperimental, seperti protein membran, target banyak obat. Salah satu contoh terkenal dari ini adalah Lipatan Alfa, algoritme berbasis pembelajaran mendalam yang terkenal karena prediksi akuratnya.

Lipatan ES adalah metode berbasis pembelajaran mendalam yang sangat akurat yang dikembangkan untuk memprediksi struktur protein dari urutan asam aminonya. ESMFold menggunakan model bahasa protein besar (pLM) sebagai tulang punggung dan beroperasi dari ujung ke ujung. Tidak seperti AlphaFold2, itu tidak memerlukan pencarian atau Penjajaran Urutan Berganda (MSA), juga tidak bergantung pada database eksternal untuk menghasilkan prediksi. Sebaliknya, tim pengembangan melatih model pada jutaan urutan protein dari UniRef. Selama pelatihan, model tersebut mengembangkan pola perhatian yang secara elegan mewakili interaksi evolusioner antara asam amino dalam urutannya. Penggunaan pLM ini sebagai pengganti MSA memungkinkan waktu prediksi hingga 60 kali lebih cepat daripada model canggih lainnya.

Dalam postingan ini, kami menggunakan model ESMFold pra-pelatihan dari Hugging Face with Amazon SageMaker untuk memprediksi struktur rantai berat trastuzumab, Sebuah antibodi monoklonal pertama kali dikembangkan oleh Genentech untuk perawatan Kanker payudara HER2-positif. Memprediksi dengan cepat struktur protein ini dapat bermanfaat jika peneliti ingin menguji efek modifikasi urutan. Ini berpotensi meningkatkan kelangsungan hidup pasien atau lebih sedikit efek samping.

Posting ini memberikan contoh notebook Jupyter dan skrip terkait berikut ini Repositori GitHub.

Prasyarat

Kami merekomendasikan untuk menjalankan contoh ini dalam file Studio Amazon SageMaker buku catatan menjalankan gambar PyTorch 1.13 Python 3.9 yang dioptimalkan CPU pada jenis instans ml.r5.xlarge.

Visualisasikan struktur eksperimental trastuzumab

Untuk memulai, kami menggunakan biopython perpustakaan dan skrip pembantu untuk mengunduh struktur trastuzumab dari Bank Data Protein 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)

Selanjutnya, kami menggunakan py3Dmol perpustakaan untuk memvisualisasikan struktur sebagai visualisasi 3D interaktif:

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()

Gambar berikut mewakili struktur protein 3D 1N8Z dari Protein Data Bank (PDB). Pada gambar ini, rantai ringan trastuzumab ditampilkan dalam warna oranye, rantai berat berwarna biru (dengan wilayah variabel berwarna biru muda), dan antigen HER2 berwarna hijau.

Mempercepat prediksi struktur protein dengan model bahasa ESMFold di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Kami pertama-tama akan menggunakan ESMFold untuk memprediksi struktur rantai berat (Rantai B) dari urutan asam aminonya. Kemudian, kami akan membandingkan prediksi dengan struktur yang ditentukan secara eksperimental yang ditunjukkan di atas.

Prediksi struktur rantai berat trastuzumab dari urutannya menggunakan ESMFold

Mari gunakan model ESMFold untuk memprediksi struktur rantai berat dan membandingkannya dengan hasil eksperimen. Untuk memulai, kita akan menggunakan lingkungan notebook bawaan di Studio yang dilengkapi dengan beberapa pustaka penting, seperti PyTorch, pra-instal. Meskipun kami dapat menggunakan jenis instans yang dipercepat untuk meningkatkan kinerja analisis notebook kami, sebagai gantinya kami akan menggunakan instans non-akselerasi dan menjalankan prediksi ESMFold pada CPU.

Pertama, kami memuat model dan tokenizer ESMFold yang telah dilatih sebelumnya Memeluk Wajah 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)

Selanjutnya, kami menyalin model ke perangkat kami (CPU dalam hal ini) dan mengatur beberapa parameter model:

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

Untuk menyiapkan sekuen protein untuk dianalisis, kita perlu menandainya. Ini menerjemahkan simbol asam amino (EVQLVโ€ฆ) ke dalam format numerik yang dapat dipahami oleh model 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)

Selanjutnya, kami menyalin input token ke mode, membuat prediksi, dan menyimpan hasilnya ke file:

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

Ini membutuhkan waktu sekitar 3 menit pada jenis instans non-akselerasi, seperti r5.

Kami dapat memeriksa keakuratan prediksi ESMFold dengan membandingkannya dengan struktur eksperimental. Kami melakukan ini menggunakan AS-Selaraskan alat yang dikembangkan oleh Zhang Lab di University of Michigan:

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

rantai PDB1 rantai PDB2 Skor TM
data/prediksi.pdb:A data/eksperimental.pdb:B 0.802

Grafik skor pemodelan template (skor TM) adalah metrik untuk menilai kesamaan struktur protein. Skor 1.0 menunjukkan kecocokan yang sempurna. Skor di atas 0.7 menunjukkan bahwa protein memiliki struktur tulang punggung yang sama. Skor di atas 0.9 menunjukkan bahwa protein tersebut fungsional dapat dipertukarkan untuk penggunaan hilir. Dalam kasus kami untuk mencapai TM-Score 0.802, prediksi ESMFold kemungkinan akan sesuai untuk aplikasi seperti skoring struktur atau eksperimen pengikatan ligan, tetapi mungkin tidak cocok untuk kasus penggunaan seperti penggantian molekul yang membutuhkan ketelitian yang sangat tinggi.

Kami dapat memvalidasi hasil ini dengan memvisualisasikan struktur yang selaras. Kedua struktur menunjukkan tingkat tumpang tindih yang tinggi, tetapi tidak sempurna. Prediksi struktur protein adalah bidang yang berkembang pesat dan banyak tim peneliti sedang mengembangkan algoritme yang semakin akurat!

Terapkan ESMFold sebagai titik akhir inferensi SageMaker

Menjalankan inferensi model di notebook bagus untuk eksperimen, tetapi bagaimana jika Anda perlu mengintegrasikan model Anda dengan aplikasi? Atau pipa MLOps? Dalam hal ini, opsi yang lebih baik adalah menerapkan model Anda sebagai titik akhir inferensi. Dalam contoh berikut, kami akan menerapkan ESMFold sebagai titik akhir inferensi real-time SageMaker pada instans yang dipercepat. Titik akhir real-time SageMaker menyediakan cara yang dapat diskalakan, hemat biaya, dan aman untuk menerapkan dan menghosting model machine learning (ML). Dengan penskalaan otomatis, Anda dapat menyesuaikan jumlah instans yang menjalankan titik akhir untuk memenuhi permintaan aplikasi Anda, mengoptimalkan biaya, dan memastikan ketersediaan yang tinggi.

Yang dibuat sebelumnya Wadah SageMaker untuk Memeluk Wajah memudahkan penerapan model deep learning untuk tugas-tugas umum. Namun, untuk kasus penggunaan baru seperti prediksi struktur protein, kami perlu menentukan kebiasaan inference.py skrip untuk memuat model, menjalankan prediksi, dan memformat output. Skrip ini mencakup banyak kode yang sama yang kami gunakan di notebook kami. Kami juga membuat requirements.txt file untuk menentukan beberapa dependensi Python untuk titik akhir kami untuk digunakan. Anda dapat melihat file yang kami buat di Repositori GitHub.

Pada gambar berikut, struktur eksperimental (biru) dan prediksi (merah) dari rantai berat trastuzumab sangat mirip, tetapi tidak identik.

Mempercepat prediksi struktur protein dengan model bahasa ESMFold di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Setelah kami membuat file yang diperlukan di code direktori, kami menerapkan model kami menggunakan SageMaker HuggingFaceModel kelas. Ini menggunakan wadah bawaan untuk menyederhanakan proses penerapan model Hugging Face ke SageMaker. Perhatikan bahwa mungkin diperlukan waktu 10 menit atau lebih untuk membuat titik akhir, bergantung pada ketersediaan ml.g4dn jenis instans di Wilayah kami.

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()
)

Saat penyebaran titik akhir selesai, kami dapat mengirimkan kembali urutan protein dan menampilkan beberapa baris pertama dari prediksi:

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

Karena kami menerapkan titik akhir kami ke instans yang dipercepat, prediksi hanya akan memakan waktu beberapa detik. Setiap baris dalam hasil sesuai dengan satu atom dan mencakup identitas asam amino, tiga koordinat spasial, dan a skor pLDDT mewakili kepercayaan prediksi di lokasi itu.

PDB_GROUP ID ATOM_LABEL RES_ID RANTAI_ID SEQ_ID KARTN_X KARTN_Y KARTN_Z OKUPANSI PLDDT ATOM_ID
ATOM 1 N Glu A 1 14.578 -19.953 1.47 1 0.83 N
ATOM 2 CA Glu A 1 13.166 -19.595 1.577 1 0.84 C
ATOM 3 CA Glu A 1 12.737 -18.693 0.423 1 0.86 C
ATOM 4 CB Glu A 1 12.886 -18.906 2.915 1 0.8 C
ATOM 5 O Glu A 1 13.417 -17.715 0.106 1 0.83 O
ATOM 6 cg Glu A 1 11.407 -18.694 3.2 1 0.71 C
ATOM 7 cd Glu A 1 11.141 -18.042 4.548 1 0.68 C
ATOM 8 OE1 Glu A 1 12.108 -17.805 5.307 1 0.68 O
ATOM 9 OE2 Glu 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

Dengan menggunakan metode yang sama seperti sebelumnya, kami melihat bahwa prediksi notebook dan titik akhir identik.

rantai PDB1 rantai PDB2 Skor TM
data/prediksi_titik akhir.pdb:A data/prediksi.pdb:A 1.0

Seperti yang diamati pada gambar berikut, prediksi ESMFold yang dihasilkan di dalam notebook (merah) dan pada titik akhir (biru) menunjukkan keselarasan yang sempurna.

Mempercepat prediksi struktur protein dengan model bahasa ESMFold di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Membersihkan

Untuk menghindari biaya lebih lanjut, kami menghapus titik akhir inferensi dan data pengujian kami:

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

Kesimpulan

Prediksi struktur protein komputasi adalah alat penting untuk memahami fungsi protein. Selain penelitian dasar, algoritme seperti AlphaFold dan ESMFold memiliki banyak aplikasi dalam bidang kedokteran dan bioteknologi. Wawasan struktural yang dihasilkan oleh model ini membantu kita lebih memahami bagaimana biomolekul berinteraksi. Ini kemudian dapat mengarah pada alat diagnostik dan terapi yang lebih baik untuk pasien.

Dalam postingan ini, kami menunjukkan cara menerapkan model bahasa protein ESMFold dari Hugging Face Hub sebagai titik akhir inferensi yang dapat diskalakan menggunakan SageMaker. Untuk informasi selengkapnya tentang penerapan model Hugging Face di SageMaker, lihat Gunakan Memeluk Wajah dengan Amazon SageMaker. Anda juga dapat menemukan lebih banyak contoh ilmu protein di Analisis Protein Luar Biasa di AWS repo GitHub. Silakan tinggalkan kami komentar jika ada contoh lain yang ingin Anda lihat!


Tentang Penulis

Mempercepat prediksi struktur protein dengan model bahasa ESMFold di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.Brian Setia adalah Arsitek Solusi AI/ML Senior di tim Kesehatan Global dan Ilmu Hayati di Amazon Web Services. Dia memiliki pengalaman lebih dari 17 tahun dalam bioteknologi dan pembelajaran mesin, dan bersemangat membantu pelanggan memecahkan tantangan genomik dan proteomik. Di waktu luangnya, ia menikmati memasak dan makan bersama teman dan keluarganya.

Mempercepat prediksi struktur protein dengan model bahasa ESMFold di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.Shamika Ariyawansa adalah Arsitek Solusi Spesialis AI/ML di tim Kesehatan Global dan Ilmu Hayati di Amazon Web Services. Dia dengan penuh semangat bekerja dengan pelanggan untuk mempercepat adopsi AI dan ML mereka dengan memberikan panduan teknis dan membantu mereka berinovasi dan membangun solusi cloud yang aman di AWS. Di luar pekerjaan, dia suka bermain ski dan off-road.

YanjunqiYanjunqi adalah Manajer Sains Terapan Senior di AWS Machine Learning Solution Lab. Dia berinovasi dan menerapkan pembelajaran mesin untuk membantu pelanggan AWS mempercepat penerapan AI dan cloud mereka.

Stempel Waktu:

Lebih dari Pembelajaran Mesin AWS