Acelere a previsão da estrutura da proteína com o modelo de linguagem ESMFold no Amazon SageMaker

Acelere a previsão da estrutura da proteína com o modelo de linguagem ESMFold no Amazon SageMaker

As proteínas conduzem muitos processos biológicos, como atividade enzimática, transporte molecular e suporte celular. A estrutura tridimensional de uma proteína fornece informações sobre sua função e como ela interage com outras biomoléculas. Métodos experimentais para determinar a estrutura da proteína, como cristalografia de raios X e espectroscopia de RMN, são caros e demorados.

Em contraste, métodos computacionais desenvolvidos recentemente podem prever com rapidez e precisão a estrutura de uma proteína a partir de sua sequência de aminoácidos. Esses métodos são críticos para proteínas difíceis de estudar experimentalmente, como proteínas de membrana, alvos de muitos medicamentos. Um exemplo bem conhecido disso é AlfaFold, um algoritmo baseado em aprendizado profundo celebrado por suas previsões precisas.

ESMFold é outro método baseado em aprendizado profundo altamente preciso desenvolvido para prever a estrutura da proteína a partir de sua sequência de aminoácidos. O ESMFold usa um grande modelo de linguagem de proteína (pLM) como backbone e opera de ponta a ponta. Ao contrário do AlphaFold2, ele não precisa de uma pesquisa ou Alinhamento de Múltiplas Sequências (MSA), nem depende de bancos de dados externos para gerar previsões. Em vez disso, a equipe de desenvolvimento treinou o modelo em milhões de sequências de proteínas da UniRef. Durante o treinamento, o modelo desenvolveu padrões de atenção que representam elegantemente as interações evolutivas entre os aminoácidos da sequência. Esse uso de um pLM em vez de um MSA permite tempos de previsão até 60 vezes mais rápidos do que outros modelos de última geração.

Nesta postagem, usamos o modelo ESMFold pré-treinado de Hugging Face com Amazon Sage Maker para prever a estrutura da cadeia pesada de trastuzumab, um anticorpo monoclonal desenvolvido pela primeira vez por Genentech para o tratamento de Câncer de mama HER2-positivo. Prever rapidamente a estrutura dessa proteína pode ser útil se os pesquisadores quiserem testar o efeito das modificações na sequência. Isso poderia potencialmente levar a uma melhor sobrevida do paciente ou a menos efeitos colaterais.

Esta postagem fornece um exemplo de notebook Jupyter e scripts relacionados a seguir Repositório GitHub.

Pré-requisitos

Recomendamos executar este exemplo em um Estúdio Amazon SageMaker caderno executando a imagem otimizada para CPU PyTorch 1.13 Python 3.9 em um tipo de instância ml.r5.xlarge.

Visualize a estrutura experimental do trastuzumabe

Para começar, usamos o biopython biblioteca e um script auxiliar para baixar a estrutura trastuzumab do Banco de Dados de Proteína 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)

Em seguida, usamos o py3Dmol biblioteca para visualizar a estrutura como uma visualização 3D interativa:

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

A figura a seguir representa a estrutura 3D da proteína 1N8Z do Protein Data Bank (PDB). Nesta imagem, a cadeia leve do trastuzumabe é exibida em laranja, a cadeia pesada é azul (com a região variável em azul claro) e o antígeno HER2 é verde.

Acelere a previsão da estrutura de proteínas com o modelo de linguagem ESMFold no Amazon SageMaker PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

Primeiro usaremos o ESMFold para prever a estrutura da cadeia pesada (Cadeia B) a partir de sua sequência de aminoácidos. Em seguida, compararemos a previsão com a estrutura determinada experimentalmente mostrada acima.

Preveja a estrutura da cadeia pesada do trastuzumabe a partir de sua sequência usando o ESMFold

Vamos usar o modelo ESMFold para prever a estrutura da cadeia pesada e compará-la com o resultado experimental. Para começar, usaremos um ambiente de notebook pré-construído no Studio que vem com várias bibliotecas importantes, como PyTorch, pré-instalado. Embora possamos usar um tipo de instância acelerada para melhorar o desempenho de nossa análise de notebook, usaremos uma instância não acelerada e executaremos a previsão ESMFold em uma CPU.

Primeiro, carregamos o modelo ESMFold pré-treinado e o tokenizador de Abraçando o 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)

Em seguida, copiamos o modelo para o nosso dispositivo (CPU neste caso) e definimos alguns parâmetros do modelo:

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

Para preparar a sequência de proteínas para análise, precisamos tokenizá-la. Isso traduz os símbolos de aminoácidos (EVQLV…) em um formato numérico que o modelo ESMFold pode entender (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)

Em seguida, copiamos a entrada tokenizada para o modo, fazemos uma previsão e salvamos o resultado em um arquivo:

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

Isso leva cerca de 3 minutos em um tipo de instância não acelerada, como uma r5.

Podemos verificar a precisão da previsão do ESMFold comparando-a com a estrutura experimental. Fazemos isso usando o Alinhamento dos EUA ferramenta desenvolvida pelo Zhang Lab da Universidade de Michigan:

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

Cadeia PDB1 Cadeia PDB2 Pontuação TM
data/previsão.pdb:A dados/experimental.pdb:B 0.802

A pontuação de modelagem de modelo (TM-score) é uma métrica para avaliar a similaridade de estruturas de proteínas. Uma pontuação de 1.0 indica uma correspondência perfeita. Pontuações acima de 0.7 indicam que as proteínas compartilham a mesma estrutura principal. Pontuações acima de 0.9 indicam que as proteínas são funcionalmente intercambiável para uso a jusante. Em nosso caso de atingir TM-Score 0.802, a previsão ESMFold provavelmente seria apropriada para aplicações como pontuação de estrutura ou experimentos de ligação de ligante, mas pode não ser adequada para casos de uso como substituição molecular que exigem precisão extremamente alta.

Podemos validar este resultado visualizando as estruturas alinhadas. As duas estruturas mostram um alto, mas não perfeito, grau de sobreposição. A previsão da estrutura de proteínas é um campo em rápida evolução e muitas equipes de pesquisa estão desenvolvendo algoritmos cada vez mais precisos!

Implante o ESMFold como um endpoint de inferência do SageMaker

Executar inferência de modelo em um notebook é bom para experimentação, mas e se você precisar integrar seu modelo a um aplicativo? Ou um pipeline MLOps? Nesse caso, uma opção melhor é implantar seu modelo como um endpoint de inferência. No exemplo a seguir, implantaremos o ESMFold como um endpoint de inferência em tempo real do SageMaker em uma instância acelerada. Os endpoints em tempo real do SageMaker fornecem uma maneira escalonável, econômica e segura de implantar e hospedar modelos de aprendizado de máquina (ML). Com o dimensionamento automático, você pode ajustar o número de instâncias que executam o endpoint para atender às demandas de seu aplicativo, otimizando custos e garantindo alta disponibilidade.

O pré-construído Contêiner SageMaker para abraçar o rosto facilita a implantação de modelos de aprendizado profundo para tarefas comuns. No entanto, para novos casos de uso, como previsão da estrutura da proteína, precisamos definir um padrão personalizado inference.py script para carregar o modelo, executar a previsão e formatar a saída. Esse script inclui muito do mesmo código que usamos em nosso notebook. Também criamos um requirements.txt arquivo para definir algumas dependências Python para nosso endpoint usar. Você pode ver os arquivos que criamos no Repositório GitHub.

Na figura a seguir, as estruturas experimentais (azul) e previstas (vermelho) da cadeia pesada do trastuzumabe são muito semelhantes, mas não idênticas.

Acelere a previsão da estrutura de proteínas com o modelo de linguagem ESMFold no Amazon SageMaker PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

Depois de criarmos os arquivos necessários no code diretório, implantamos nosso modelo usando o SageMaker HuggingFaceModel aula. Isso usa um contêiner pré-construído para simplificar o processo de implantação de modelos Hugging Face no SageMaker. Observe que pode levar 10 minutos ou mais para criar o endpoint, dependendo da disponibilidade de ml.g4dn tipos de instância em nossa região.

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

Quando a implantação do endpoint estiver concluída, podemos reenviar a sequência da proteína e exibir as primeiras linhas da previsão:

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

Como implantamos nosso endpoint em uma instância acelerada, a previsão deve levar apenas alguns segundos. Cada linha no resultado corresponde a um único átomo e inclui a identidade do aminoácido, três coordenadas espaciais e um pontuação pLDDT representando a confiança da previsão naquele local.

PDB_GROUP ID ATOM_LABEL RES_ID CHAIN_ID SEQ_ID CARTN_X CARTN_Y CARTN_Z OCUPAÇÃO 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

Usando o mesmo método de antes, vemos que as previsões de notebook e endpoint são idênticas.

Cadeia PDB1 Cadeia PDB2 Pontuação TM
dados/endpoint_prediction.pdb:A data/previsão.pdb:A 1.0

Conforme observado na figura a seguir, as previsões do ESMFold geradas no notebook (vermelho) e pelo endpoint (azul) mostram um alinhamento perfeito.

Acelere a previsão da estrutura de proteínas com o modelo de linguagem ESMFold no Amazon SageMaker PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

limpar

Para evitar cobranças adicionais, excluímos nosso endpoint de inferência e dados de teste:

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

Resumo

A previsão computacional da estrutura da proteína é uma ferramenta crítica para entender a função das proteínas. Além da pesquisa básica, algoritmos como AlphaFold e ESMFold têm muitas aplicações em medicina e biotecnologia. Os insights estruturais gerados por esses modelos nos ajudam a entender melhor como as biomoléculas interagem. Isso pode levar a melhores ferramentas de diagnóstico e terapias para os pacientes.

Nesta postagem, mostramos como implantar o modelo de linguagem de proteína ESMFold do Hugging Face Hub como um endpoint de inferência escalável usando o SageMaker. Para obter mais informações sobre a implantação de modelos Hugging Face no SageMaker, consulte Use o rosto abraçado com o Amazon SageMaker. Você também pode encontrar mais exemplos de ciência de proteínas no Análise de proteína incrível na AWS repositório GitHub. Por favor, deixe-nos um comentário se houver outros exemplos que você gostaria de ver!


Sobre os autores

Acelere a previsão da estrutura de proteínas com o modelo de linguagem ESMFold no Amazon SageMaker PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.Brian Leal é arquiteto sênior de soluções de IA/ML da equipe global de saúde e ciências biológicas da Amazon Web Services. Ele tem mais de 17 anos de experiência em biotecnologia e aprendizado de máquina e é apaixonado por ajudar os clientes a resolver desafios genômicos e proteômicos. Em seu tempo livre, ele gosta de cozinhar e comer com seus amigos e familiares.

Acelere a previsão da estrutura de proteínas com o modelo de linguagem ESMFold no Amazon SageMaker PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.Shamika Ariyawansa é arquiteto de soluções especialista em IA/ML da equipe global de saúde e ciências biológicas da Amazon Web Services. Ele trabalha com entusiasmo com os clientes para acelerar a adoção de IA e ML, fornecendo orientação técnica e ajudando-os a inovar e criar soluções de nuvem seguras na AWS. Fora do trabalho, ele adora esquiar e praticar off-road.

Yanjun QiYanjun Qi é gerente sênior de ciência aplicada no Laboratório de soluções de aprendizado de máquina da AWS. Ela inova e aplica aprendizado de máquina para ajudar os clientes da AWS a acelerar a adoção de IA e nuvem.

Carimbo de hora:

Mais de Aprendizado de máquina da AWS