Przyspiesz przewidywanie struktury białek dzięki modelowi językowemu ESMFold w Amazon SageMaker

Przyspiesz przewidywanie struktury białek dzięki modelowi językowemu ESMFold w Amazon SageMaker

Białka napędzają wiele procesów biologicznych, takich jak aktywność enzymów, transport molekularny i wsparcie komórkowe. Trójwymiarowa struktura białka zapewnia wgląd w jego funkcję i sposób interakcji z innymi biomolekułami. Eksperymentalne metody określania struktury białek, takie jak krystalografia rentgenowska i spektroskopia NMR, są drogie i czasochłonne.

W przeciwieństwie do tego, niedawno opracowane metody obliczeniowe mogą szybko i dokładnie przewidzieć strukturę białka na podstawie jego sekwencji aminokwasowej. Metody te mają kluczowe znaczenie dla białek trudnych do badania eksperymentalnego, takich jak białka błonowe, będące celem wielu leków. Jednym z dobrze znanych przykładów jest to AlfaFold, algorytm oparty na głębokim uczeniu się, znany ze swoich dokładnych prognoz.

ESMfold to kolejna bardzo dokładna metoda oparta na głębokim uczeniu się, opracowana w celu przewidywania struktury białka na podstawie jego sekwencji aminokwasowej. ESMFold wykorzystuje duży model języka białek (pLM) jako szkielet i działa od początku do końca. W przeciwieństwie do AlphaFold2, nie wymaga wyszukiwania ani Dopasowanie wielu sekwencji (MSA), ani nie polega na zewnętrznych bazach danych do generowania prognoz. Zamiast tego zespół programistów przeszkolił model na milionach sekwencji białkowych z UniRef. Podczas treningu model rozwinął wzorce uwagi, które elegancko reprezentują ewolucyjne interakcje między aminokwasami w sekwencji. To zastosowanie pLM zamiast MSA zapewnia do 60 razy szybsze czasy przewidywania niż inne najnowocześniejsze modele.

W tym poście używamy wstępnie wytrenowanego modelu ESMFold z Hugging Face with Amazon Sage Maker przewidzieć strukturę łańcucha ciężkiego trastuzumab, A przeciwciało monoklonalne po raz pierwszy opracowany przez Genentech do leczenia HER2-dodatni rak piersi. Szybkie przewidywanie struktury tego białka może być przydatne, jeśli naukowcy chcą przetestować wpływ modyfikacji sekwencji. Może to potencjalnie prowadzić do poprawy przeżycia pacjentów lub mniejszej liczby skutków ubocznych.

Ten post zawiera przykładowy notatnik Jupyter i powiązane skrypty poniżej Repozytorium GitHub.

Wymagania wstępne

Zalecamy uruchomienie tego przykładu w pliku Studio Amazon SageMaker notatnik uruchomienie zoptymalizowanego pod kątem procesora obrazu PyTorch 1.13 Python 3.9 na instancji typu ml.r5.xlarge.

Wizualizuj eksperymentalną strukturę trastuzumabu

Na początek używamy biopython bibliotekę i skrypt pomocniczy do pobierania struktury trastuzumabu z pliku Bank danych białek 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)

Następnie używamy py3Dmol biblioteka do wizualizacji konstrukcji jako interaktywnej wizualizacji 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()

Poniższy rysunek przedstawia trójwymiarową strukturę białka 3N1Z z Protein Data Bank (PDB). Na tym obrazie łańcuch lekki trastuzumabu jest zaznaczony na pomarańczowo, łańcuch ciężki na niebiesko (z regionem zmiennym na jasnoniebiesko), a antygen HER8 na zielono.

Przyspiesz przewidywanie struktury białek dzięki modelowi języka ESMFold w Amazon SageMaker PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Najpierw użyjemy ESMFold do przewidywania struktury łańcucha ciężkiego (łańcuch B) na podstawie jego sekwencji aminokwasowej. Następnie porównamy prognozę z eksperymentalnie określoną strukturą pokazaną powyżej.

Przewiduj strukturę łańcucha ciężkiego trastuzumabu na podstawie jego sekwencji za pomocą ESMFold

Użyjmy modelu ESMFold do przewidzenia struktury łańcucha ciężkiego i porównajmy go z wynikiem eksperymentalnym. Na początek użyjemy gotowego środowiska notatnika w Studio, które zawiera kilka ważnych bibliotek, takich jak PyTorch, preinstalowany. Chociaż moglibyśmy użyć przyspieszonego typu instancji, aby poprawić wydajność naszej analizy notatnika, zamiast tego użyjemy instancji bez przyspieszenia i uruchomimy prognozę ESMFold na procesorze.

Najpierw ładujemy wstępnie wytrenowany model ESMFold i tokenizer z Przytulanie twarzy 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)

Następnie kopiujemy model na nasze urządzenie (w tym przypadku CPU) i ustawiamy kilka parametrów modelu:

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

Aby przygotować sekwencję białka do analizy, musimy ją stokenizować. To tłumaczy symbole aminokwasów (EVQLV…) na format numeryczny zrozumiały dla modelu 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)

Następnie kopiujemy tokenizowane dane wejściowe do trybu, dokonujemy prognozy i zapisujemy wynik do pliku:

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

Zajmuje to około 3 minut w przypadku typu instancji bez przyspieszenia, takiego jak r5.

Dokładność predykcji ESMFold możemy sprawdzić, porównując ją ze strukturą eksperymentalną. Robimy to za pomocą Wyrównaj do USA narzędzie opracowane przez Zhang Lab na Uniwersytecie Michigan:

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

Łańcuch PDB1 Łańcuch PDB2 Wynik TM
data/prediction.pdb:A data/experimental.pdb:B 0.802

Połączenia wynik modelowania szablonów (TM-score) jest miarą służącą do oceny podobieństwa struktur białek. Wynik 1.0 oznacza idealne dopasowanie. Wyniki powyżej 0.7 wskazują, że białka mają tę samą strukturę szkieletu. Wyniki powyżej 0.9 wskazują, że białka są funkcjonalnie wymienne do dalszego użytku. W naszym przypadku osiągnięcia TM-Score 0.802 prognoza ESMFold byłaby prawdopodobnie odpowiednia do zastosowań takich jak ocenianie struktury lub eksperymenty z wiązaniem ligandów, ale może nie być odpowiednia w przypadkach użycia, takich jak wymiana molekularna które wymagają bardzo dużej dokładności.

Możemy zweryfikować ten wynik, wizualizując wyrównane struktury. Obie struktury wykazują wysoki, ale nie doskonały stopień nakładania się. Przewidywanie struktury białek to szybko rozwijająca się dziedzina, a wiele zespołów badawczych opracowuje coraz dokładniejsze algorytmy!

Wdróż ESMFold jako punkt końcowy wnioskowania SageMaker

Uruchamianie wnioskowania o modelu w notesie jest dobre do eksperymentowania, ale co zrobić, jeśli trzeba zintegrować model z aplikacją? A może potok MLOps? W takim przypadku lepszą opcją jest wdrożenie modelu jako punktu końcowego wnioskowania. W poniższym przykładzie wdrożymy ESMFold jako punkt końcowy wnioskowania w czasie rzeczywistym SageMaker w przyspieszonej instancji. Punkty końcowe SageMaker działające w czasie rzeczywistym zapewniają skalowalny, ekonomiczny i bezpieczny sposób wdrażania i hostowania modeli uczenia maszynowego (ML). Dzięki automatycznemu skalowaniu możesz dostosować liczbę instancji z uruchomionym punktem końcowym, aby sprostać wymaganiom aplikacji, optymalizując koszty i zapewniając wysoką dostępność.

Gotowy Pojemnik SageMaker do przytulania twarzy ułatwia wdrażanie modeli głębokiego uczenia do typowych zadań. Jednak w przypadku nowych przypadków użycia, takich jak przewidywanie struktury białek, musimy zdefiniować zwyczaj inference.py skrypt, aby załadować model, uruchomić prognozę i sformatować dane wyjściowe. Ten skrypt zawiera większość tego samego kodu, którego użyliśmy w naszym notatniku. Tworzymy również requirements.txt plik, aby zdefiniować niektóre zależności Pythona do użycia przez nasz punkt końcowy. Możesz zobaczyć pliki, które stworzyliśmy w Repozytorium GitHub.

Na poniższym rysunku eksperymentalna (niebieska) i przewidywana (czerwona) struktura łańcucha ciężkiego trastuzumabu jest bardzo podobna, ale nie identyczna.

Przyspiesz przewidywanie struktury białek dzięki modelowi języka ESMFold w Amazon SageMaker PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Po utworzeniu niezbędnych plików w code katalogu, wdrażamy nasz model za pomocą SageMaker HuggingFaceModel klasa. Wykorzystuje to gotowy kontener, aby uprościć proces wdrażania modeli Hugging Face w SageMaker. Pamiętaj, że utworzenie punktu końcowego może zająć 10 minut lub więcej, w zależności od dostępności ml.g4dn typów instancji w naszym Regionie.

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

Po zakończeniu wdrażania punktu końcowego możemy ponownie przesłać sekwencję białek i wyświetlić kilka pierwszych wierszy prognozy:

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

Ponieważ wdrożyliśmy nasz punkt końcowy w przyspieszonej instancji, przewidywanie powinno zająć tylko kilka sekund. Każdy wiersz w wyniku odpowiada pojedynczemu atomowi i zawiera tożsamość aminokwasu, trzy współrzędne przestrzenne i a wynik pLDDT reprezentujący pewność prognozy w tej lokalizacji.

PDB_GROUP ID ATOM_LABEL RES_ID ID_ŁAŃCUCHA SEQ_ID CARTN_X CARTN_Y CARTN_Z OKUPACJA PLDDDT 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

Używając tej samej metody co poprzednio, widzimy, że przewidywania notatnika i punktu końcowego są identyczne.

Łańcuch PDB1 Łańcuch PDB2 Wynik TM
data/endpoint_prediction.pdb:A data/prediction.pdb:A 1.0

Jak widać na poniższym rysunku, prognozy ESMFold generowane w notatniku (czerwony) i przez punkt końcowy (niebieski) wykazują doskonałe wyrównanie.

Przyspiesz przewidywanie struktury białek dzięki modelowi języka ESMFold w Amazon SageMaker PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Sprzątać

Aby uniknąć dalszych opłat, usuwamy nasz punkt końcowy wnioskowania i dane testowe:

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

Podsumowanie

Obliczeniowe przewidywanie struktury białek jest kluczowym narzędziem do zrozumienia funkcji białek. Oprócz badań podstawowych algorytmy takie jak AlphaFold i ESMFold mają wiele zastosowań w medycynie i biotechnologii. Wgląd strukturalny generowany przez te modele pomaga nam lepiej zrozumieć, w jaki sposób wchodzą w interakcje biomolekuły. Może to następnie prowadzić do lepszych narzędzi diagnostycznych i terapii dla pacjentów.

W tym poście pokazujemy, jak wdrożyć model języka białkowego ESMFold z Hugging Face Hub jako skalowalny punkt końcowy wnioskowania przy użyciu SageMaker. Aby uzyskać więcej informacji na temat wdrażania modeli Hugging Face w SageMaker, zobacz Użyj Przytulanie twarzy z Amazon SageMaker. Możesz także znaleźć więcej przykładów nauki o białkach w Niesamowita analiza białek na AWS Repozytorium GitHub. Zostaw nam komentarz, jeśli są jakieś inne przykłady, które chciałbyś zobaczyć!


O autorach

Przyspiesz przewidywanie struktury białek dzięki modelowi języka ESMFold w Amazon SageMaker PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Briana Loyala jest starszym architektem rozwiązań AI/ML w zespole Global Healthcare and Life Sciences w Amazon Web Services. Ma ponad 17-letnie doświadczenie w biotechnologii i uczeniu maszynowym, a jego pasją jest pomaganie klientom w rozwiązywaniu problemów genomicznych i proteomicznych. W wolnym czasie lubi gotować i jeść z przyjaciółmi i rodziną.

Przyspiesz przewidywanie struktury białek dzięki modelowi języka ESMFold w Amazon SageMaker PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Shamika Ariyawanę jest Architektem Rozwiązań Specjalistycznych AI/ML w zespole Global Healthcare and Life Sciences w Amazon Web Services. Z pasją współpracuje z klientami, aby przyspieszyć wdrażanie AI i ML, udzielając wskazówek technicznych i pomagając im wprowadzać innowacje i budować bezpieczne rozwiązania chmurowe na AWS. Poza pracą uwielbia jeździć na nartach i w terenie.

Yanjun QiYanjun Qi jest starszym kierownikiem ds. nauk stosowanych w AWS Machine Learning Solution Lab. Wprowadza innowacje i stosuje uczenie maszynowe, aby pomóc klientom AWS przyspieszyć wdrażanie sztucznej inteligencji i chmury.

Znak czasu:

Więcej z Uczenie maszynowe AWS