在Amazon SageMaker上构建蛋白质折叠工作流,加速药物发现

在Amazon SageMaker上构建蛋白质折叠工作流,加速药物发现' 'Build protein folding workflow on Amazon SageMaker to accelerate drug discovery

药物开发是一个复杂而漫长的过程,涉及筛选数千个候选药物,并使用计算或实验方法评估先导化合物。根据麦肯锡的数据,一种药物需要花费10年时间和平均26亿美元才能通过疾病靶标鉴定、药物筛选、药物-靶标验证和最终商业推出的过程。药物发现是这个流程的研究组成部分,它能够产生潜在药物候选物,具有对患者造成最小伤害的最高有效性。机器学习(ML)方法可以帮助在药物发现过程的每个阶段中识别合适的化合物,从而实现更加简化的药物优先级和测试,节省数十亿的药物开发成本(更多信息,请参阅AI在生物医药研究中的应用:聚焦和扩展的时机)。

药物靶点通常是生物实体,称为蛋白质,它们是生命的基本组成单元。蛋白质的三维结构决定了它与药物化合物的相互作用方式;因此,了解蛋白质的三维结构可以显著改善药物开发过程,通过筛选适应目标蛋白质结构更好的药物化合物。蛋白质结构预测在了解蛋白质的多样性方面也非常有用,以便我们只选择有选择性作用于特定蛋白质而不影响体内其他蛋白质的药物(更多信息,请参阅改进生物医学研究中的靶点评估:GOT-IT建议)。目标蛋白质的精确三维结构可以实现更高特异性的药物设计,并降低与其他蛋白质的交叉作用的可能性。

然而,预测蛋白质如何折叠成其三维结构是一个困难的问题,传统的实验方法,如X射线晶体学和NMR光谱学,可能耗时且昂贵。近年来,深度学习方法在蛋白质研究领域取得了显著进展,使用神经网络预测蛋白质折叠具有令人瞩目的准确性。AlphaFold2、ESMFold、OpenFold和RoseTTAFold等折叠算法可以用于快速构建准确的蛋白质结构模型。不幸的是,这些模型的计算成本很高,并且在比较成千上万个候选蛋白质结构的规模上结果会很繁琐。使用这些各种工具的可扩展解决方案将使研究人员和商业研发团队能够快速融入蛋白质结构预测的最新进展,管理他们的实验过程,并与研究合作伙伴进行协作。

Amazon SageMaker是一个全面托管的服务,通过汇集一系列专为机器学习而构建的功能,快速准备、构建、训练和部署高质量的机器学习模型。它提供了一个全面托管的机器学习环境,抽象出基础架构、数据管理和可扩展性要求,使您可以专注于构建、训练和测试模型。

在本文中,我们介绍了一个使用SageMaker简化蛋白质折叠结构预测工作流程的全面托管机器学习解决方案。我们首先讨论了高级别的解决方案及其用户体验。接下来,我们将向您展示如何使用SageMaker轻松设置AlphaFold2和OpenFold的计算优化工作流程。最后,我们演示了如何作为典型分析的一部分跟踪和比较蛋白质结构预测。此解决方案的代码可在以下GitHub存储库中找到。

解决方案概述

在此解决方案中,科学家可以交互式地启动蛋白质折叠实验,分析三维结构,监视作业进度,并在Amazon SageMaker Studio中跟踪实验。

下图显示了使用Amazon SageMaker Studio运行的单个蛋白质折叠工作流程的屏幕截图。它包括在笔记本中可视化的三维结构,工作流程中SageMaker作业的运行状态,以及输入参数和输出数据和日志的链接。

下图说明了高级解决方案架构。

为了理解架构,我们首先定义蛋白质折叠实验的关键组件如下:

  • FASTA目标序列文件 – FASTA格式是一种用于表示核苷酸序列或氨基酸(蛋白质)序列的基于文本的格式,其中核苷酸或氨基酸使用单字母代码表示。
  • 基因数据库 – 基因数据库是一种或多种基因数据与软件一起存储以使用户能够检索基因数据的集合。运行AlphaFold和OpenFold算法需要几个基因数据库,如BFD、MGnify、PDB70、PDB、PDB seqres、UniRef30(曾用名UniClust30)、UniProt和UniRef90。
  • 多序列比对(MSA) – 序列比对是一种排列蛋白质的主要序列以识别可能是功能、结构或进化关系的相似性区域的方法。预测的输入特征包括MSA数据。
  • 蛋白质结构预测 – 使用AlphaFold2和OpenFold等折叠算法预测输入目标序列的结构,这些算法使用在已知蛋白质模板上训练的多轨变压器架构。
  • 可视化和指标 – 使用py3Dmol库将三维结构可视化为交互式的三维可视化。您可以使用指标评估和比较结构预测,尤其是均方根偏差(RMSD)和模板建模分数(TM-score)。

工作流程包含以下步骤:

  1. 科学家使用基于Web的SageMaker ML IDE来探索代码库,在SageMaker Studio笔记本中构建蛋白质序列分析工作流,并通过SageMaker Studio的图形用户界面或SageMaker SDK运行蛋白质折叠流水线。
  2. 在设置流水线之前,使用Amazon SageMaker Processing下载AlphaFold和OpenFold所需的遗传和结构数据库,Amazon SageMaker Processing是用于ML数据处理的暂时计算功能,将其下载到Amazon Simple Storage Service(Amazon S3)存储桶中。通过SageMaker Processing,您可以在不设置任何计算集群和存储以及不需要关闭集群的情况下运行长时间运行的作业。数据会自动保存到指定的S3存储桶位置。
  3. 设置Amazon FSx for Lustre文件系统,数据存储库为保存数据库的S3存储桶位置。FSx for Lustre可以实现高达数百GB/s的吞吐量和数百万的IOPS,并具有低延迟的文件检索。在启动估算器作业时,SageMaker将FSx for Lustre文件系统挂载到实例文件系统,然后启动脚本。
  4. 使用Amazon SageMaker Pipelines来编排多次蛋白质折叠算法的运行。SageMaker Pipelines提供了一个理想的可视化界面,用于交互式作业提交、进度追踪和可重复性。
  5. 在流水线中,使用SageMaker估算器运行两个计算密集型的蛋白质折叠算法——AlphaFold和OpenFold。此配置支持在算法中进行高吞吐量数据库搜索的FSx for Lustre文件系统挂载。单个推理运行分为两个步骤:使用优化的CPU实例进行MSA构建步骤,使用GPU实例进行结构预测步骤。这些子步骤与第2步中的SageMaker Processing一样,是临时的、按需的和完全托管的。作业输出,如MSA文件、预测的pdb结构文件和其他元数据文件,保存在指定的S3位置。可以设计一个流水线以运行单个蛋白质折叠算法,或在共同的MSA构建之后运行AlphaFold和OpenFold。
  6. 蛋白质折叠预测的运行会被Amazon SageMaker Experiments自动跟踪,以进行进一步的分析和比较。作业日志保存在Amazon CloudWatch中以进行监控。

先决条件

要按照本文并运行此解决方案,您需要完成几个先决条件。请参阅GitHub存储库,详细说明每个步骤。

  • SageMaker域和用户配置文件 – 如果您没有SageMaker Studio域,请参阅使用快速设置进行Amazon SageMaker域上的登记。
  • IAM策略 – 您的用户应该附加了AWS Identity and Access Management(IAM)AmazonSageMakerFullAccess策略,可以构建Docker容器映像到Amazon Elastic Container Registry(Amazon ECR),并创建FSx for Lustre文件系统。有关更多详细信息,请参阅自述文件。
  • 网络 – 带有Amazon S3 VPC终端节点的VPC。我们使用此VPC位置来提供FSx for Lustre文件系统和SageMaker作业。
  • Docker资源 – 从存储库中运行00-prerequisite.ipynb来构建Docker映像,将遗传数据库下载到Amazon S3,并创建一个与S3存储桶相关联的FSx for Lustre文件系统。

在SageMaker上运行蛋白质折叠

我们使用SageMaker的完全托管能力来运行计算密集型的蛋白质折叠作业,减少基础架构开销。SageMaker使用容器映像来运行通用数据处理、训练和托管的自定义脚本。您可以只用几行SageMaker SDK的代码轻松地按需启动一个临时作业,该作业使用容器映像运行程序,而无需自行管理任何计算基础架构。具体而言,SageMaker估算器作业在选择容器映像、运行脚本和实例配置方面提供了灵活性,并支持多种存储选项,包括FSx for Lustre等文件系统。以下图示了这种架构。

AlphaFold和OpenFold等折叠算法使用在已知蛋白质模板上训练的多轨变压器架构来预测未知多肽序列的结构。这些预测可以在GPU实例上运行,以提供最佳的吞吐量和最低的延迟。然而,这些预测的输入特征包括MSA数据。MSA算法依赖于CPU,并可能需要几个小时的处理时间。

在同一计算环境中同时运行MSA和结构预测步骤可能效率低下,因为昂贵的GPU资源在MSA步骤运行时保持空闲。因此,我们将工作流程优化为两个步骤。首先,在CPU实例上运行一个SageMaker estimator作业,专门用于计算给定特定FASTA输入序列和源遗传数据库的MSA对齐。然后,在GPU实例上运行SageMaker estimator作业,使用给定的输入MSA对齐和AlphaFold或OpenFold等折叠算法预测蛋白质结构。

运行MSA生成

对于MSA计算,我们包括一个自定义脚本run_create_alignment.shcreate_alignments.py脚本,这些脚本是从现有的AlphaFold预测源run_alphafold.py中采用的。请注意,如果源AlphaFold代码更新,可能需要更新此脚本。通过脚本模式,将自定义脚本提供给SageMaker estimator。容器映像的关键组件、脚本模式实现以及设置SageMaker estimator作业的过程也是运行折叠算法的下一步的一部分,并在以下部分中进一步描述。

运行AlphaFold

我们从使用SageMaker运行AlphaFold进行单个蛋白质序列的结构预测开始。运行AlphaFold作业涉及三个简单的步骤,如01-run_stepbystep.ipynb所示。首先,我们基于AlphaFold的Dockerfile构建一个Docker容器映像,以便我们也可以在SageMaker中运行AlphaFold。其次,我们构建脚本run_alphafold.sh,指示如何运行AlphaFold。第三,我们构建并运行一个SageMaker estimator,其中包括脚本、容器、实例类型、数据和作业的配置。

容器映像

在SageMaker中运行AlphaFold(OpenFold也是如此)所需的容器映像的运行时要求可以通过AlphaFold的Dockerfile大大简化。我们只需要在其上添加几个简单的层,以安装一个SageMaker特定的Python库,以便SageMaker作业可以与容器映像进行通信。请参阅以下代码:

# 在Dockerfile.alphafold中
## SageMaker特定
RUN pip3 install sagemaker-training --upgrade --no-cache-dir
ENV PATH="/opt/ml/code:${PATH}"
# 此环境变量用于SageMaker Estimator确定我们的用户代码目录
ENV SAGEMAKER_SUBMIT_DIRECTORY /opt/ml/code

输入脚本

然后,我们提供脚本run_alphafold.sh,该脚本从当前放置在容器/app/alphafold/run_alphafold.py中的AlphaFold存储库运行run_alphafold.py。当运行此脚本时,遗传数据库的位置和输入FASTA序列的位置将由SageMaker作为环境变量(分别为SM_CHANNEL_GENETICSM_CHANNEL_FASTA)填充。有关更多信息,请参阅输入数据配置。

Estimator作业

接下来,我们使用SageMaker estimator创建一个作业,其中包括以下关键输入参数,它们指示SageMaker使用指定的容器和实例类型或数量以及您选择的网络选项以及作业的其他参数运行特定脚本。vpc_subnet_idssecurity_group_ids指示作业在特定的VPC中运行,其中FSx for Lustre文件系统位于其中,以便我们可以在SageMaker作业中挂载和访问文件系统。输出路径是指AlphaFold的最终产品将被SageMaker自动上传到的S3存储桶位置的路径。在这里,我们还设置了一个参数DB_PRESET,例如,在运行时作为环境变量传递并在run_alphafold.sh中访问。请参阅以下代码:

from sagemaker.estimator import Estimator
alphafold_image_uri=f'{account}.dkr.ecr.{region}.amazonaws.com/sagemaker-studio-alphafold:v2.3.0'
instance_type='ml.g5.2xlarge'
instance_count=1
vpc_subnet_ids=['subnet-xxxxxxxxx'] # 可以使用默认VPC
security_group_ids=['sg-xxxxxxxxx']
env={'DB_PRESET': db_preset} # <full_dbs|reduced_dbs>
output_path='s3://%s/%s/job-output/'%(default_bucket, prefix)

estimator_alphafold = Estimator(
source_dir='src', # 包含run_alphafold.sh和其他运行时文件的目录
entry_point='run_alphafold.sh', # 我们运行/app/alphafold/run_alphafold.py的脚本
image_uri=alphafold_image_uri, # 要使用的容器映像
instance_count=instance_count, #
instance_type=instance_type,
subnets=vpc_subnet_ids,
security_group_ids=security_group_ids,
environment=env,
output_path=output_path,
...)

最后,我们收集数据并让作业知道它们的位置。 fasta 数据通道被定义为一个 S3 数据输入,它将从 S3 位置下载到计算实例中的作业开始时。 这样可以非常灵活地管理和指定输入序列。 另一方面,genetic 数据通道被定义为一个 FileSystemInput,它将在作业开始时挂载到实例上。 使用 FSx for Lustre 文件系统的方式将近 3TB 的数据导入避免了重复从 S3 存储桶下载数据到计算实例的过程。 我们调用 .fit 方法启动 AlphaFold 作业:

from sagemaker.inputs import FileSystemInput
file_system_id='fs-xxxxxxxxx'
fsx_mount_id='xxxxxxxx'
file_system_directory_path=f'/{fsx_mount_id}/{prefix}/alphafold-genetic-db' # 应该是 S3 数据仓库的完整前缀

file_system_access_mode='ro' # 指定访问模式(只读)
file_system_type='FSxLustre' # 指定文件系统类型

genetic_db = FileSystemInput(
file_system_id=file_system_id,
file_system_type=file_system_type,
directory_path=file_system_directory_path,
file_system_access_mode=file_system_access_mode)

s3_fasta=sess.upload_data(path='sequence_input/T1030.fasta', # FASTA 本地位置
key_prefix='alphafoldv2/sequence_input') # S3 前缀。Bucket 是 sagemaker 默认 bucket
fasta = sagemaker.inputs.TrainingInput(s3_fasta,
distribution='FullyReplicated',
s3_data_type='S3Prefix',
input_mode='File')
data_channels_alphafold = {'genetic': genetic_db, 'fasta': fasta}

estimator_alphafold.fit(inputs=data_channels_alphafold,
wait=False) # wait=False 可以将单元格返回到笔记本;设置为 True 可以查看作业进展的日志

就是这样。我们刚刚向 SageMaker 提交了一个运行 AlphaFold 的作业。日志和输出,包括 .pdb 预测文件将写入 Amazon S3。

运行 OpenFold

在 SageMaker 中运行 OpenFold 遵循类似的模式,如01-run_stepbystep.ipynb的后半部分所示。我们首先添加一个简单的层,以获取 SageMaker 特定的库,以使容器镜像与 OpenFold 的 Dockerfile 兼容。其次,我们构建一个 run_openfold.sh 作为 SageMaker 作业的入口点。在 run_openfold.sh 中,我们运行来自 OpenFold 的 run_pretrained_openfold.py,该脚本可在具有与 AlphaFold 下载的相同的基因数据库和 OpenFold 模型权重(--openfold_checkpoint_path)的容器镜像中使用。在输入数据位置方面,除了基因数据库通道和 FASTA 通道之外,我们引入了第三个通道 SM_CHANNEL_PARAM,以便在定义和提交作业时可以灵活地传递所选的模型权重。使用 SageMaker estimator,我们可以轻松提交带有不同 entry_pointimage_urienvironmentinputs 和其他 OpenFold 配置的作业,但拥有相同的签名。对于数据通道,我们添加了一个新通道 param,作为 Amazon S3 输入,与来自 FSx for Lustre 文件系统的相同基因数据库和来自 Amazon S3 的 FASTA 文件一起使用。这样,我们可以轻松地从作业构造中指定要使用的模型权重。请参阅以下代码:

s3_param=sess.upload_data(path='openfold_params/finetuning_ptm_2.pt',
key_prefix=f'{prefix}/openfold_params')
param = sagemaker.inputs.TrainingInput(s3_param,
distribution="FullyReplicated",
s3_data_type="S3Prefix",
input_mode='File')

data_channels_openfold = {"genetic": genetic_db, 'fasta': fasta, 'param': param}

estimator_openfold.fit(inputs=data_channels_openfold,
wait=False)

在作业完成后访问最终输出的方法如下:

!aws s3 cp {estimator_openfold.model_data} openfold_output/model.tar.gz
!tar zxfv openfold_output/model.tar.gz -C openfold_output/

运行时性能

下表显示了将MSA对齐和折叠算法分为两个作业与单个计算作业相比,AlphaFold和OpenFold分别节省了57%和51%的成本。这样可以为每个作业选择合适的计算资源:MSA对齐选择ml.m5.4xlarge,AlphaFold和OpenFold选择ml.g5.2xlarge。

作业详情 实例类型 输入FASTA序列 运行时间 成本
MSA对齐 + OpenFold ml.g5.4xlarge T1030 50分钟 $1.69
MSA对齐 + AlphaFold ml.g5.4xlarge T1030 65分钟 $2.19
MSA对齐 ml.m5.4xlarge T1030 46分钟 $0.71
OpenFold ml.g5.2xlarge T1030 6分钟 $0.15
AlphaFold ml.g5.2xlarge T1030 21分钟 $0.53

使用SageMaker Pipelines构建可重复的工作流

使用SageMaker Pipelines,我们可以创建一个机器学习工作流,它可以负责管理步骤之间的数据、编排它们的运行和日志记录。SageMaker Pipelines还提供了一个用户界面,用于可视化我们的工作流程并轻松运行我们的机器学习工作流。

一个流水线是由多个步骤组合而成的。在这个流水线中,我们结合了三个训练步骤,这些步骤需要一个SageMaker估计器。这个笔记本中定义的估计器与01-run_stepbystep.ipynb中定义的估计器非常相似,只是我们使用亚马逊S3位置来指向我们的输入和输出。动态变量使得SageMaker Pipelines能够依次运行步骤,还允许用户重试失败的步骤。下面的截图显示了一个有向无环图(DAG),它提供了我们的流水线每个步骤的需求和关系的信息。

动态变量

SageMaker Pipelines能够在每次流水线运行开始时接受用户输入。我们定义了以下动态变量,我们希望在每个实验中更改:

  • FastaInputS3URI – 通过SDK、Boto3或手动上传的FASTA文件的亚马逊S3 URI。
  • FastFileName – FASTA文件的名称。
  • db_preset – 在full_dbsreduced_dbs之间进行选择。
  • MaxTemplateDate – AlphaFold的MSA步骤将在此参数指定的日期之前搜索可用的模板。
  • ModelPreset – 选择AlphaFold模型,包括monomermonomer_casp14monomer_ptmmultimer
  • NumMultimerPredictionsPerModel – 使用多聚体系统时每个模型运行的种子数量。
  • InferenceInstanceType – 用于推理步骤(AlphaFold和OpenFold)的实例类型。默认值为ml.g5.2xlarge。
  • MSAInstanceType – 用于MSA步骤的实例类型。默认值为ml.m5.4xlarge。

请看以下代码:

fasta_file = ParameterString(name="FastaFileName")
fasta_input = ParameterString(name="FastaInputS3URI")
pipeline_db_preset = ParameterString(name="db_preset",
default_value='full_dbs',
enum_values=['full_dbs', 'reduced_dbs'])
max_template_date = ParameterString(name="MaxTemplateDate")
model_preset = ParameterString(name="ModelPreset")
num_multimer_predictions_per_model = ParameterString(name="NumMultimerPredictionsPerModel")
msa_instance_type = ParameterString(name="MSAInstanceType", default_value='ml.m5.4xlarge')
instance_type = ParameterString(name="InferenceInstanceType", default_value='ml.g5.2xlarge')

通过定义一系列步骤并按特定顺序将它们连接在一起,可以构建SageMaker流水线,其中前一步骤的输出成为后一步骤的输入。步骤可以并行运行,并可以定义依赖于前一步骤的步骤。在此流水线中,我们定义了一个MSA步骤,它是AlphaFold推断步骤和OpenFold推断步骤的依赖项,它们并行运行。请看以下代码:

step_msa = TrainingStep(
name="RunMSA",
step_args=pipeline_msa_args,
)

step_alphafold = TrainingStep(
name="RunAlphaFold",
step_args=pipeline_alphafold_default_args,
)
step_alphafold.add_depends_on([step_msa])

step_openfold = TrainingStep(
name="RunOpenFold",
step_args=pipeline_openfold_args,
)
step_openfold.add_depends_on([step_msa]

为了将所有步骤组合在一起,我们调用Pipeline类,并提供流水线名称、流水线输入变量以及各个步骤:

pipeline_name = f"ProteinFoldWorkflow"
pipeline = Pipeline(
name=pipeline_name,
parameters=[
fasta_input,
instance_type,
msa_instance_type,
pipeline_db_preset
],
steps=[step_msa, step_alphafold, step_openfold],
)

pipeline.upsert(role_arn=role, # 如果是首次设置流水线则运行此步骤
description='Protein_Workflow_MSA')

运行流水线

在笔记本的最后一个单元格02-define_pipeline.ipynb中,我们展示了如何使用SageMaker SDK运行流水线。我们提供了前面描述的动态变量,如下所示:

!mkdir ./sequence_input/
!curl 'https://www.predictioncenter.org/casp14/target.cgi?target=T1030&view=sequence' > ./sequence_input/T1030.fasta
fasta_file_name = 'T1030.fasta'

pathName = f'./sequence_input/{fasta_file_name}'
s3_fasta=sess.upload_data(path=pathName,
key_prefix='alphafoldv2/sequence_input')

PipelineParameters={
'FastaInputS3URI':s3_fasta,
'db_preset': 'full_dbs',
'FastaFileName': fasta_file_name,
'MaxTemplateDate': '2020-05-14',
'ModelPreset': 'monomer',
'NumMultimerPredictionsPerModel': '5',
'InferenceInstanceType':'ml.g5.2xlarge',
'MSAInstanceType':'ml.m5.4xlarge'
}
execution = pipeline.start(execution_display_name='SDK-Executetd',
execution_description='This pipeline was executed via SageMaker SDK',
parameters=PipelineParameters
)

跟踪实验并比较蛋白质结构

在我们的实验中,我们使用了来自CASP14竞赛的一个示例蛋白质序列,该竞赛提供了一种独立的机制来评估蛋白质结构建模方法。目标T1030源自PDB 6P00蛋白质,原始序列中有237个氨基酸。我们使用SageMaker流水线预测该输入序列的蛋白质结构,同时使用OpenFold和AlphaFold算法。

当流水线完成后,我们从每个折叠作业中下载预测的.pdb文件,并在笔记本中使用py3Dmol可视化结构,就像在笔记本04-compare_alphafold_openfold.ipynb中一样。

以下截图显示了AlphaFold预测作业的预测结果。

预测的结构与存档在RCSB中的PDB代码为6poo的已知基准结构进行比较。我们使用三个指标对其与基准PDB代码6poo的预测性能进行分析:RMSD,具有超定位的RMSD和模板建模分数,如在结构比较中所述。

. 输入序列 与之比较 RMSD 具有超定位的RMSD 模板建模分数
AlphaFold T1030 6poo 247.26 3.87 0.3515

折叠算法现在在多个FASTA序列(T1030,T1090和T1076)之间进行比较。由于新的目标序列可能没有参考数据库中的基准PDB结构,因此比较折叠算法之间的变异性是有用的。

. 输入序列 与之比较 RMSD 具有超定位的RMSD 模板建模分数
AlphaFold T1030 OpenFold 73.21 24.8 0.0018
AlphaFold T1076 OpenFold 38.71 28.87 0.0047
AlphaFold T1090 OpenFold 30.03 20.45 0.005

以下截图显示了使用SageMaker Pipeline对三个FASTA输入序列运行的ProteinFoldWorkflow

我们还使用SageMaker Experiments将这些运行的指标进行记录,作为由管道创建的同一实验的新运行:

from sagemaker.experiments.run import Run, load_run
metric_type='compare:'
experiment_name = 'proteinfoldworkflow'
with Run(experiment_name=experiment_name, run_name=input_name_1, sagemaker_session=sess) as run:
run.log_metric(name=metric_type + "rmsd_cur", value=rmsd_cur_one, step=1)
run.log_metric(name=metric_type + "rmds_fit", value=rmsd_fit_one, step=1)
run.log_metric(name=metric_type + "tm_score", value=tmscore_one, step=1)

然后我们在SageMaker Studio的Experiments页面上对这些运行进行分析和可视化。

下图显示了AlphaFold和OpenFold之间在三个序列(T1030,T1076和T1090)上的RMSD值。

结论

在本文中,我们介绍了如何使用SageMaker Pipelines设置和运行蛋白质折叠工作流,使用了两种流行的结构预测算法:AlphaFold2和OpenFold。我们展示了一个性价比高的解决方案架构,可以将MSA生成的计算需求与结构预测分开。我们还强调了如何在SageMaker Studio中可视化、评估和比较预测的蛋白质三维结构。

要开始使用SageMaker上的蛋白质折叠工作流,请参考GitHub存储库中的示例代码。