「Amazon SageMakerを使用して、薬剤探索を加速するためのタンパク質折り畳みワークフローを構築する」
Building protein folding workflows to accelerate drug discovery using Amazon SageMaker
薬剤の開発は、数千の候補薬をスクリーニングし、計算機または実験的な手法を用いてリードを評価するという複雑で長いプロセスです。マッキンゼーによると、1つの薬剤には疾患ターゲットの特定、薬剤のスクリーニング、薬剤ターゲットの検証、そして最終的な商業展開を経るのに10年かかり、平均で26億ドルの費用がかかります。薬物探索は、患者に対する最小の害と最も効果的な候補薬を生成する、このパイプラインの研究コンポーネントです。機械学習(ML)手法は、薬物探索プロセスの各段階で適切な化合物を特定するのに役立ち、より効率的な薬剤の優先順位付けとテストを実現し、数十億ドルの薬物開発コストを節約することができます(詳細については、「バイオファーマ研究におけるAI: 焦点と拡大の時代」を参照)。
薬剤のターゲットは通常、生命の構成要素であるタンパク質と呼ばれる生物エンティティです。タンパク質の3D構造は、薬物化合物とどのように相互作用するかを決定します。したがって、ターゲットタンパク質の3D構造を理解することは、ターゲットタンパク質構造により適合する薬物化合物をスクリーニングすることによって、薬物開発プロセスに重要な改善をもたらすことができます。タンパク質構造予測が役立つもう1つの領域は、タンパク質の多様性を理解することです。これにより、特定のタンパク質を選択的にターゲットにすることなく、体内の他のタンパク質に影響を与えずに薬物を選択できます(詳細については、「バイオ医学研究におけるターゲット評価の改善:GOT-IT勧告」を参照)。ターゲットタンパク質の正確な3D構造は、高い特異性と他のタンパク質とのクロス相互作用の可能性の低い薬物設計を可能にします。
しかし、タンパク質がどのようにして3D構造に折り畳まれるかを予測することは難しい問題であり、X線結晶構造解析やNMR分光法などの従来の実験的手法は時間と費用がかかります。タンパク質研究の深層学習手法の最近の進展は、ニューラルネットワークを使用して驚くほど正確にタンパク質の折り畳みを予測することを示しています。AlphaFold2、ESMFold、OpenFold、RoseTTAFoldなどの折り畳みアルゴリズムは、正確なタンパク質構造モデルを迅速に構築するために使用することができます。ただし、これらのモデルは計算コストが高く、数千の候補タンパク質構造のスケールでの比較は煩雑です。これらのさまざまなツールを使用するためのスケーラブルなソリューションは、研究者や商業のR&Dチームが最新のタンパク質構造予測の進歩を迅速に取り入れ、実験プロセスを管理し、研究パートナーと共同作業することを可能にします。
Amazon SageMakerは、幅広い機能を統合した完全に管理されたサービスであり、ML向けに特別に構築されたもので、高品質なMLモデルを準備、構築、トレーニング、展開するための環境を提供しています。インフラストラクチャ、データ管理、スケーラビリティの要件を抽象化することで、MLに集中してモデルの構築、トレーニング、テストに注力することができます。
この記事では、SageMakerを使用した完全に管理されたMLソリューションを紹介し、タンパク質の折り畳み構造予測ワークフローの操作を簡素化する方法を説明します。まず、高レベルでのソリューションとユーザーエクスペリエンスについて説明します。次に、SageMakerでAlphaFold2とOpenFoldの計算最適化ワークフローを簡単に設定する方法を説明します。最後に、典型的な分析の一環としてタンパク質構造予測を追跡および比較する方法を示します。このソリューションのコードは、以下のGitHubリポジトリで入手できます。
ソリューションの概要
このソリューションでは、科学者はAmazon SageMaker Studioでタンパク質の折り畳み実験を対話的に実行し、3D構造を分析し、ジョブの進行状況を監視し、実験を追跡することができます。
次のスクリーンショットは、Amazon SageMaker Studioでのタンパク質の折り畳みワークフローの単一の実行を示しています。ノートブック内での3D構造の可視化、ワークフロー内のSageMakerジョブの実行ステータス、および入力パラメータと出力データとログへのリンクが含まれています。
次の図は、高レベルのソリューションアーキテクチャを示しています。
アーキテクチャを理解するために、まずタンパク質の折り畳み実験の主要なコンポーネントを次のように定義します:
- FASTAターゲットシーケンスファイル – FASTA形式は、核酸配列またはアミノ酸(タンパク質)配列を表すためのテキストベースの形式であり、核酸またはアミノ酸は一文字のコードを使用して表されます。
- 遺伝子データベース – 遺伝子データベースは、遺伝子データを取得できるようにするためのソフトウェアと共に1つ以上の遺伝子データのセットを格納するためのものです。AlphaFoldやOpenFoldのアルゴリズムを実行するためには、BFD、MGnify、PDB70、PDB、PDB seqres、UniRef30(旧UniClust30)、UniProt、UniRef90などの遺伝子データベースが必要です。
- 多重配列アライメント(MSA) – 配列アライメントは、タンパク質の主要な配列を配置して、配列間の類似領域を特定し、これらの配列間の機能的、構造的、進化的な関係の結果である可能性がある領域を識別する方法です。予測のための入力特徴には、MSAデータが含まれます。
- タンパク質構造予測 – 入力ターゲット配列の構造は、既知のタンパク質テンプレートに基づいてトレーニングされたマルチトラックトランスフォーマーアーキテクチャを使用したAlphaFold2やOpenFoldなどの折り畳みアルゴリズムで予測されます。
- 可視化とメトリクス – py3Dmolライブラリを使用して3D構造をインタラクティブな3D可視化と
ワークフローには以下のステップが含まれます:
- 科学者は、ウェブベースのSageMaker ML IDEを使用して、コードベースを探索し、SageMaker Studioノートブックでタンパク質配列解析のワークフローを構築し、SageMaker StudioのグラフィカルユーザーインターフェースまたはSageMaker SDKを使用してタンパク質の折り畳みパイプラインを実行します。
- AlphaFoldとOpenFoldに必要な遺伝子および構造データベースは、パイプラインのセットアップ前に、Amazon SageMaker Processingを使用して、MLデータ処理のためのフレームレスコンピューティング機能であるAmazon Simple Storage Service(Amazon S3)バケットにダウンロードされます。SageMaker Processingを使用すると、適切なコンピューティングを使用して長時間実行されるジョブを実行できます。コンピューティングクラスタやストレージのセットアップは必要なく、クラスタをシャットダウンする必要もありません。データは指定したS3バケットの場所に自動的に保存されます。
- データリポジトリが遺伝子および構造データベースが保存されているS3バケットの場所で、Amazon FSx for Lustreファイルシステムが設定されます。FSx for Lustreは、低遅延のファイル検索を伴う数百GB/sのスループットと数百万のIOPSにスケーリングできます。エスティメータージョブを開始すると、SageMakerはFSx for Lustreファイルシステムをインスタンスファイルシステムにマウントし、スクリプトを開始します。
- Amazon SageMaker Pipelinesを使用して、タンパク質の折り畳みアルゴリズムの複数の実行をオーケストレートします。SageMaker Pipelinesは、インタラクティブなジョブの提出、進行状況のトレース、および繰り返し可能性のための望ましいビジュアルインターフェースを提供します。
- パイプライン内では、2つの計算上の重いタンパク質の折り畳みアルゴリズムであるAlphaFoldとOpenFoldをSageMakerエスティメーターで実行します。この設定では、アルゴリズムの高スループットデータベース検索のためにFSx for Lustreファイルシステムをマウントすることができます。単一の推論ランは、最適なCPUインスタンスを使用したMSA構築ステップとGPUインスタンスを使用した構造予測ステップの2つのステップに分割されます。このようなサブステップは、ステップ2のSageMaker Processingと同様に、フレームレスでオンデマンドで完全に管理されます。MSAファイル、予測されたpdb構造ファイル、およびその他のメタデータファイルなどのジョブの出力は、指定されたS3の場所に保存されます。パイプラインは、共通のMSA構築の後に単一のタンパク質の折り畳みアルゴリズムを実行するか、AlphaFoldとOpenFoldの両方を実行するように設計できます。
- タンパク質の折り畳み予測の実行は、Amazon SageMaker Experimentsによって自動的に追跡され、さらなる分析と比較のために保存されます。ジョブログはAmazon CloudWatchに保持され、モニタリングされます。
前提条件
この投稿をフォローし、このソリューションを実行するには、いくつかの前提条件を満たす必要があります。各ステップの詳細な説明については、GitHubリポジトリを参照してください。
- SageMakerドメインとユーザープロファイル– SageMaker Studioドメインを持っていない場合は、「クイックセットアップを使用したAmazon SageMakerドメインへのオンボード」を参照してください。
- IAMポリシー– ユーザーには、AWS Identity and Access Management(IAM)AmazonSageMakerFullAccessポリシーがアタッチされており、Amazon Elastic Container Registry(Amazon ECR)にカスタムのDockerコンテナイメージをビルドし、FSx for Lustreファイルシステムを作成する権限が必要です。詳細については、readmeを参照してください。
- ネットワーク– 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ステップの実行中にアイドル状態になるため、コスト効率が悪くなります。そのため、ワークフローを2つのステップに最適化します。まず、特定のFASTA入力配列とソース遺伝子データベースを使用してMSAアラインメントを計算するために、CPUインスタンス上でSageMakerエスティメータージョブを実行します。その後、入力のMSAアラインメントとAlphaFoldやOpenFoldなどの折りたたみアルゴリズムを使用して、GPUインスタンス上でSageMakerエスティメータージョブを実行してタンパク質構造を予測します。
MSA生成の実行
MSAの計算には、既存のAlphaFold予測ソースであるrun_alphafold.pyから採用されたカスタムスクリプトrun_create_alignment.shおよびcreate_alignments.pyを含めます。なお、このスクリプトは、ソースのAlphaFoldコードが更新された場合に更新する必要がある場合があります。カスタムスクリプトは、スクリプトモードを介してSageMakerエスティメーターに提供されます。コンテナイメージ、スクリプトモードの実装、およびSageMakerエスティメータージョブのセットアップの主要なコンポーネントは、折りたたみアルゴリズムの実行の次のステップでもあり、以下のセクションで詳しく説明されています。
AlphaFoldの実行
SageMakerを使用して、単一のタンパク質配列でAlphaFold構造予測を実行します。AlphaFoldジョブの実行には、
01-run_stepbystep.ipynb
に示されているように、3つの簡単なステップが必要です。まず、AlphaFoldのDockerfileを基にDockerコンテナイメージを構築し、SageMakerでもAlphaFoldを実行できるようにします。次に、AlphaFoldの実行方法を指示するスクリプトrun_alphafold.sh
を作成します。最後に、スクリプト、コンテナ、インスタンスタイプ、データ、およびジョブの設定を指定して、SageMakerエスティメーターを構築および実行します。コンテナイメージ
SageMakerでAlphaFold(およびOpenFold)を実行するためのコンテナイメージのランタイム要件は、AlphaFoldのDockerfileにより大幅に簡素化できます。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
入力スクリプト
次に、AlphaFoldリポジトリ内のrun_alphafold.pyを実行するスクリプト
run_alphafold.sh
を提供します。このスクリプトが実行されると、遺伝子データベースの場所と入力FASTA配列の場所が環境変数(SM_CHANNEL_GENETIC
およびSM_CHANNEL_FASTA
)によってSageMakerによって自動的に設定されます。詳細については、入力データの構成を参照してください。エスティメータージョブ
次に、SageMakerエスティメーターを使用してジョブを作成します。指定されたコンテナを使用して特定のスクリプトを実行するようSageMakerに指示し、インスタンスタイプまたはカウント、ネットワーキングオプション、およびジョブのその他のパラメータを指定します。
vpc_subnet_ids
およびsecurity_group_ids
は、SageMakerジョブ内でFSx for Lustreファイルシステムがある特定のVPC内で実行するようジョブに指示し、SageMakerが自動的にジョブの成功時にAlphaFoldの最終成果物をアップロードするS3バケットの場所を指定します。以下のコードを参照してください: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
として定義されます。Lustre ファイルシステムとしての FSx の使用により、3 TB 近くのデータを反復的に S3 バケットからコンピューティングインスタンスにダウンロードする必要がなくなります。AlphaFold ジョブを開始するために.fit
メソッドを呼び出します: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 プレフィックス。バケットは sagemaker のデフォルトバケットです 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
の後半に示されているように、同様のパターンに従います。まず、OpenFold の Dockerfile の上に SageMaker 互換なコンテナイメージを作成するために、SageMaker 固有のライブラリを追加します。次に、SageMaker ジョブのエントリポイントとしてrun_openfold.sh
を作成します。run_openfold.sh
では、OpenFold の run_pretrained_openfold.py を実行します。このスクリプトは、同じ遺伝子データベースを AlphaFold および OpenFold のモデルの重み(--openfold_checkpoint_path
)とともにコンテナイメージに含まれています。入力データの場所に関しては、遺伝子データベースチャネルと FASTA チャネルに加えて、サードチャネルとしてSM_CHANNEL_PARAM
を導入しています。これにより、エスティメータ構築時に選択したモデルの重みを柔軟にジョブに渡すことができます。SageMaker エスティメータを使用すると、同じシグネチャで OpenFold のための異なるentry_point
、image_uri
、environment
、inputs
、およびその他の設定でジョブを簡単に送信できます。データチャネルには、Amazon S3 入力として新しいチャネルparam
を追加します。このチャネルは、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アラインメントと折りたたみアルゴリズムを2つのジョブに分割した場合の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パイプラインを使用して繰り返し可能なワークフローを構築する
SageMakerパイプラインを使用すると、データの管理、実行のオーケストレーション、およびログの取得を自動化するMLワークフローを作成することができます。SageMakerパイプラインはまた、パイプラインを視覚化し、簡単にMLワークフローを実行するためのUIを提供します。
パイプラインは複数のステップを組み合わせて作成されます。このパイプラインでは、3つのトレーニングステップを組み合わせています。これらのステップはSageMakerエスティメータを必要とします。このノートブックで定義されているエスティメータは、SDK、Boto3、または手動でアップロードされた入力と出力を指すためにAmazon S3の場所を使用しています。動的変数により、SageMakerパイプラインはステップを順番に実行し、失敗したステップを再試行することができます。以下のスクリーンショットは、パイプラインの各ステップの要件と関係に関する情報を提供する有向非巡回グラフ(DAG)を示しています。
動的変数
SageMakerパイプラインは、各パイプライン実行の開始時にユーザー入力を受け取ることができます。以下の動的変数を定義し、各実験ごとに変更したいと考えています:
- FastaInputS3URI – SDK、Boto3、または手動でアップロードされたFASTAファイルのAmazon S3 URI。
- FastFileName – FASTAファイルの名前。
- db_preset –
full_dbs
またはreduced_dbs
の選択。 - MaxTemplateDate – AlphaFoldのMSAステップは、このパラメータで指定された日付よりも前に利用可能なテンプレートを検索します。
- ModelPreset –
monomer
、monomer_casp14
、monomer_ptm
、multimer
などのAlphaFoldモデルの選択。 - 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個のアミノ酸があります。この入力配列のタンパク質構造をOpenFoldおよびAlphaFoldアルゴリズムの両方で予測するために、SageMakerパイプラインを実行します。
パイプラインが完了したら、各折りたたみジョブから予測された.pdbファイルをダウンロードし、ノートブック内でpy3Dmolを使用して構造を視覚化します。これは
04-compare_alphafold_openfold.ipynb
のノートブックと同様です。次のスクリーンショットは、AlphaFoldの予測ジョブからの予測結果を示しています。
予測された構造は、RCSBにアーカイブされたPDBコード6pooの既知の基準構造と比較されます。我々は、比較のためにPDBコード6pooとの間で3つの指標(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パイプラインでの
ProteinFoldWorkflow
の3つのFASTA入力シーケンスの実行を示しています:また、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ページでこれらの実行を分析および可視化します。
以下のチャートは、T1030、T1076、T1090の3つのシーケンスにおけるAlphaFoldとOpenFoldのRMSD値を示しています。
結論
この投稿では、SageMakerパイプラインを使用して、二つの人気のある構造予測アルゴリズム、AlphaFold2とOpenFoldを使用してタンパク質の折りたたみワークフローを設定および実行する方法について説明しました。 MSAの生成に必要な計算要件と構造予測の計算要件を分離した、複数のジョブの価格パフォーマントなソリューションアーキテクチャを示しました。また、SageMaker Studioで予測されたタンパク質の3D構造を視覚化、評価、比較する方法も強調しました。
SageMaker上でタンパク質の折りたたみワークフローを開始するには、GitHubリポジトリ内のサンプルコードを参照してください。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles