AlphaFold 3

AlphaFold 3 是由 Google DeepMind 和 Isomorphic Labs 開發的深度學習模型,這項工具可預測蛋白質、DNA、RNA、配體和離子的 3D 結構和互動。本文說明如何使用 Gemini Enterprise Agent Platform 的 Model Garden,部署及使用 AlphaFold 3 模型。

主要功能

在 Agent Platform 上部署 AlphaFold 3,可提供進階研發和商業藥物探索工作流程所需的下列功能:

  • 商業用途:Model Garden 中的 AlphaFold 3 可用於商業用途。

  • 任意自訂配體:AlphaFold 3 支援蛋白質、DNA 和 RNA 的統一共摺疊,以及使用 SMILES 字串或 CIF 化學成分字典 (CCD) 代碼定義的自訂配體。

  • 工作流程彈性:Model Garden 上的 AlphaFold 3 支援完整的端對端摺疊管道 (結合資料庫搜尋和模型預測),或僅限推論模式,您可提供預先計算的 MSA 比對,以縮短執行時間並提高 GPU 使用率。

注意事項

評估工作負載的 AlphaFold 3 時,請注意下列限制:

  • 並行:AlphaFold 3 端點的並行上限為每個節點一個。如要提高並行處理量,端點可以擴充至多個節點。如果傳送預測要求時,另一個預測正在執行中,且要求數量超過節點數量,端點會拒絕新要求並傳回 HTTP 429 Too Many Requests 錯誤。

  • 權杖限制:Agent Platform 端點的預測時間上限為 60 分鐘。由於 MSA 搜尋的負擔會有所變動,A3 GPU 支援的最大序列大小約為 4,500 個生物標記 (例如胺基酸、核苷酸或配體原子) 負擔。提供預先計算的對齊方式可略過 MSA 搜尋執行作業,因此可進行複雜的摺疊,最多可達硬體限制的約 5,400 個權杖。

  • 酬載限制:標準預測 REST 要求的大小上限為 8 MB。如果使用僅供推論模式,則必須使用 Cloud Storage URI 參照大型預先計算的對齊方式 (.a3m 檔案),而不是內嵌為內嵌字串,以免酬載遭到拒絕。

  • 網路設定:由於預測是長時間執行的作業,最多可能需要 60 分鐘才能完成,因此您應只使用 Private Service Connect (PSC) 部署端點,略過標準端點 10 分鐘的逾時限制。

部署作業操作說明

本節將詳細說明如何將 AlphaFold 3 部署至 Cloud de Confiance by S3NS 專案中 Agent Platform 提供的端點。

事前準備

部署 AlphaFold 3 前,請務必完成下列事項:

  • 要求模型存取權。
  • 採購 GPU 資源。
  • 設定必要的 Identity and Access Management (IAM) 權限:
    • 建立服務帳戶並授予 Agent Platform 管理員 IAM 角色。
    • 請確認 IAM 主體具備 roles/iam.serviceAccountCreator 角色,可在部署模型時做為服務帳戶。
  • 確認資源配額。

資源需求

AlphaFold 3 需要 a3-highgpu-1g 虛擬機器 (VM)。

部署前,請確認 Cloud de Confiance by S3NS 專案在目標部署區域中,有下列資源的足夠配額:

  • 加速器:至少一個 a3-highgpu-1g 機型。

  • 本機 SSD:A3 VM 佈建了 750 GB 的本機 SSD 空間。這是為了永久快取參考序列資料庫 (UniProt、MGnify、Rfam),以便在所有預測要求中,於基因資料庫搜尋 (Jackhmmer/Nhmmer) 期間實現低延遲讀取。

Cloud Storage bucket

AlphaFold 3 需要 Cloud Storage bucket 儲存提供的 MSA 檔案,並匯出完整預測輸出內容。為避免跨區域傳輸,建議您使用與端點位於同一區域的 Cloud Storage bucket,或是使用多區域 bucket。

身分與存取權管理角色

為參與身分設定下列角色:

  • 模型部署者 (又稱 IT 管理員):部署模型的身分必須具備 roles/aiplatform.admin 權限,才能建立端點及管理部署作業。

  • 服務身分:執行推論時,AlphaFold 3 端點會使用租戶專案服務帳戶,將輸出結構直接寫入 Cloud Storage。對應的服務帳戶必須具備目標 Cloud Storage bucket 的 roles/storage.objectUser。

  • 模型使用者:開始預測的帳戶必須符合下列條件:

    • roles/aiplatform.user,向端點傳送預測要求。
    • roles/storage.objectUser,即可存取 Cloud Storage bucket 中的預測輸出內容。

部署 AlphaFold 3

使用 Agent Platform SDK 以程式輔助方式部署 AlphaFold 3,但只能做為 Google Cloud 專屬端點或 Private Service Connect 端點。視 GPU 可用性而定,端點可能需要 10 到 15 分鐘才能準備好進行推論。

以下是 Python 程式碼片段範例,說明如何在 Cloud de Confiance by S3NS 專案中部署模型,包括延長推論逾時時間:

import google.auth
from google.auth.transport.requests import AuthorizedSession
import vertexai
from vertexai import model_garden

PROJECT_ID = "YOUR_PROJECT_ID"
LOCATION = "us-west1"
MODEL_ID = "google/alphafold3@v3_0_4"
MACHINE_TYPE = "a3-highgpu-1g"

vertexai.init(project=PROJECT_ID, location=LOCATION)

# 1. Deploy Model Garden OpenModel to Dedicated Endpoint
af3_model = model_garden.OpenModel(MODEL_ID)
endpoint = af3_model.deploy(
    endpoint_display_name="af3-dedicated-ep",
    model_display_name="af3-on-mg",
    machine_type=MACHINE_TYPE,
    accelerator_type="NVIDIA_H100_80GB",
    accelerator_count=1,
    reservation_affinity_type="ANY_RESERVATION",
    use_dedicated_endpoint=True,
    accept_eula=True,
    min_replica_count=1,
    max_replica_count=1,
    serving_container_deployment_timeout=3600,
)

# 2. Update inference timeout to 3,600 seconds
credentials, _ = google.auth.default(
    scopes=["https://www.googleapis.com/auth/cloud-platform"]
)
session = AuthorizedSession(credentials)
url = f"https://{LOCATION}-aiplatform.googleapis.com/v1/{endpoint.resource_name}:update"
payload = {
    "endpoint": {
        "name": endpoint.resource_name,
        "clientConnectionConfig": {
            "inferenceTimeout": {
                "seconds": 3600
            }
        }
    }
}
response = session.post(url, json=payload)
response.raise_for_status()
print(f"Endpoint Resource Name: {endpoint.resource_name}")

API 參考資料

本節說明端點位置、網址格式、路徑參數和要求酬載結構定義。

HTTP 要求

POST https://HOST/v1/projects/PROJECT_ID/locations/LOCATION/endpoints/ENDPOINT_ID:predict

更改下列內容:

  • HOST:服務端點主機。這取決於部署類型是專屬公開端點,還是使用 Private Service Connect。

  • PROJECT_ID:代管已部署端點的 Cloud de Confiance by S3NS 專案 ID。

  • LOCATION:端點部署的 Cloud de Confiance by S3NS 區域 (例如 us-central1)。

  • ENDPOINT_ID:已部署的 Agent Platform 端點專屬 ID。

要求主體

要求主體包含採用下列 JSON 結構的資料:

{
  "instances": [
    {
      # The AlphaFold 3 input JSON - see the input documentation at
      # https://github.com/google-deepmind/alphafold3/blob/main/docs/input.md
    }
  ],
  "parameters": {
    "output_dir": "string",
    "dry_run": boolean,
    "run_data_pipeline": boolean,
    "force_output_dir": boolean,
    "resolve_msa_overlaps": boolean,
    "max_template_date": "string",
    "conformer_max_iterations": integer,
    "fix_standalone_glycans": boolean,
    "flash_attention_implementation": "string",
    "num_recycles": integer,
    "num_diffusion_samples": integer,
    "save_embeddings": boolean,
    "save_distogram": boolean,
    "compress_large_output_files": boolean,
    "num_seeds": integer
  }
}

頂層要求欄位

欄位 類型 說明
instances array 必要。要預測的生物序列設定清單。這個清單必須包含一個元素。如果傳遞零個或多個元素,就會導致 HTTP 422 Unprocessable Entity 錯誤。instances 主體應根據 AlphaFold 3 說明文件中發布的規格,指定輸入內容。
parameters object 選填。包含執行參數的物件,用於設定預測執行作業 (例如 dry_run、output_dir)。

參數

設定 AlphaFold 3 執行的執行旗標。

欄位 類型 預設值 說明
dry_run boolean false 選填。如果 true,API 會執行要求驗證,但略過模型執行作業,並立即傳回空白回應。有助於檢查連線和語法。
run_data_pipeline boolean true 選填。如果 true,則執行完整管道 (MSA 搜尋和推論)。如果為 false,則只會執行推論 (略過資料庫搜尋;需要預先計算的 MSA)。詳情請參閱 GitHub 說明文件。
output_dir string null 選填。Cloud Storage URI (例如 gs://bucket/path),成功執行後,系統會將完整的原始輸出檔案 (包括 CIF 結構、PAE 和排名 CSV) 上傳至這個位置。
force_output_dir boolean false 選填。如果是 true,則允許覆寫指定 output_dir 中的現有檔案。如果 false,API 會在 Cloud Storage 路徑不為空時立即傳回 HTTP 400 Bad Request 錯誤,避免資料意外遺失。
resolve_msa_overlaps boolean true 選填。是否要針對已配對的 MSA,對未配對的 MSA 進行重複資料刪除。如需最佳做法,請參閱 GitHub AlphaFold 3 說明文件中的指南。
max_template_date string null 選填。要納入考量的範本最晚發布日期,格式為 YYYY-MM-DD (例如 "2024-05-15")。如果格式不正確,驗證會失敗並顯示 HTTP 422 錯誤。
conformer_max_iterations integer null 選填。覆寫 RDKit 構形搜尋的疊代次數上限。必須為非負整數 (大於或等於零)。驗證失敗,負值出現 HTTP 422 錯誤。
fix_standalone_glycans boolean false 選填。啟用獨立的聚醣位置修正功能。
flash_attention_implementation string null 選填。要使用的 Flash attention 後端實作項目。允許的值為 "triton"、"cudnn"、"xla"。
num_recycles integer 10 選填。在推論期間使用的回收疊代次數。 必須是正整數 (大於零)。請參閱最佳做法一節,瞭解相關取捨。
num_diffusion_samples integer 5 選填。要生成的擴散樣本數。必須是正整數 (大於零)。請參閱最佳做法一節,瞭解相關取捨。
save_embeddings boolean false 選填。是否要將最終主幹單一和配對嵌入儲存在 output_dir 位置。如果 true,嵌入內容會以 .npz 檔案的形式寫入名為 seed-{SEED}_embeddings/ 的子資料夾下 (例如 outputs_config_job_seed-50_embeddings.npz)。
save_distogram boolean false 選填。是否要將最終預測的距離圖儲存在 output_dir 位置。如果 true,嵌入內容會以 .npz 檔案的形式寫入名為 seed-{SEED}_embeddings/ 的子資料夾下 (例如 outputs_config_job_seed-50_embeddings.npz)。
compress_large_output_files boolean false 選填。如果 true,則使用 zstandard 壓縮大型輸出檔案 (mmCIF 結構和信賴度 JSON)。這會輸出副檔名為 .cif.zst 和 .json.zst 的檔案,而非 .cif 和 .json。小型檔案 (例如 ranking_scores.csv) 仍會維持未壓縮狀態。
num_seeds integer null 選填。用於推論的隨機種子數量。一般來說,您應在 instances.modelSeeds 欄位中設定種子,以利重現結果。請參閱最佳做法一節,瞭解相關取捨。

回覆 (輸出)

本節說明成功執行後,API 回應中傳回的欄位。

回應主體

執行成功後,端點會以標準 Agent Platform 線上預測結構定義格式傳回回應:

{
  "deployedModelId": "string",
  "model": "string",
  "modelDisplayName": "string",
  "modelVersionId": "string",
  "predictions": [
    {
      "structure_cif": "string",
      "plddt": [
        number
      ],
      "pae": [
        [
          number
        ]
      ],
      "summary": {
        "ptm": number,
        "iptm": number,
        "fraction_disordered": number,
        "has_clash": boolean,
        "ranking_score": number,
        "chain_pair_pae_min": [
          [
            number
          ]
        ],
        "chain_pair_iptm": [
          [
            number
          ]
        ],
        "chain_ptm": [
          number
        ],
        "chain_iptm": [
          number
        ],
        "chain_ids": [
          string
        ]
      },
      "output_dir": "string"
    }
  ]
}

頂層回應欄位

欄位 類型 說明
deployedModelId string 部署在 Agent Platform 端點上的模型 ID。
model string 模型的完整資源名稱。
modelDisplayName string 已部署模型的顯示名稱 (一律為 "alphafold3")。
modelVersionId string 已部署模型的版本 ID。
predictions array 預測結果清單。如果是 AlphaFold 3,這個陣列只會包含一個預測結果物件。

預測結果詳細資料 (predictions[])

AlphaFold 3 預測端點會傳回 HTTP 200 JSON 回應,其中包含 predictions 陣列,內含排名最高的候選結構的結構座標和信賴度指標。如需完整的欄位定義和輸出檔案規格,請參閱 GitHub 上的 AlphaFold 3 官方說明文件。

視要求中是否提供 parameters.output_dir 而定,API 回應中的輸出結構可能有所不同:

  • HTTP 回應中的預測結果:內嵌回應會直接在 HTTP JSON 回應酬載主體中,傳回全域摘要指標 (summary)、3D 結構座標 (structure_cif)、每個原子的信賴分數 (plddt) 和 2D 預測對齊錯誤矩陣 (pae)。指定輸出目錄時,HTTP 回應酬載會省略 (空值) 大型酬載欄位 (structure_cif、plddt 和 pae),避免序列化瓶頸。所有原始模型輸出內容都會非同步匯出至指定的 Cloud Storage 值區。

  • 儲存在 Cloud Storage bucket 中的構件:指定輸出目錄 (parameters.output_dir) 後,系統會將完整的預測結果上傳至 Cloud Storage。輸出資料夾包含的資料符合 GitHub 上的 AlphaFold 3 說明文件中發布的規格。

進行預測

Model Garden 部署作業可簡化端對端預測管道的執行作業,包括在單一 API 呼叫中執行資料管道和模型推論。下圖顯示 AlphaFold 3 預測的高階架構:

AlphaFold 3 管道的流程圖。第 1 階段 (基因資料庫搜尋管道) 會使用 Jackhmmer 等搜尋引擎和 UniProt 等資料庫,輸出 MSA 和結構範本。第 2 階段 (結構模型推論管道) 會使用 AlphaFold 3 擴散轉換器類神經網路處理這些輸入內容。系統會將產生的 3D mmCIF 結構和信賴分數 (pLDDT、PAE、ipTM) 儲存至 Cloud Storage。

圖 1:完整的預測管道

執行預測時,強烈建議直接在參數中提供 Cloud Storage 值區,以匯出完整原始資料集,包括每個樣本的子目錄、排名資訊清單和原始輸出內容。如要查看所有可設定的要求欄位完整細目,包括多重隨機取樣、神經網路回收、擴散軌跡和自訂共價鍵的參數調整,請參閱 API 參考資料部分。

啟動長時間執行的摺疊工作或批次管道前,您可以執行模擬測試,快速驗證驗證、IAM 權限和端點網路連線。

預測選項

視工作流程而定,AlphaFold 3 處理作業可分為四種不同的執行模式:

模擬測試模式

如要驗證 API 連線、驗證、網路和 JSON 結構定義,而不啟動預測管道,可以在 parameters 物件中提交含有 "dry_run": true 的要求。端點會執行所有驗證常式 (包括檢查 Cloud Storage 值區寫入權限和驗證序列字元),但會略過執行作業,並立即傳回空白的預測回應。

以下是模擬測試模式的 Python 指令碼範例:

from google.cloud import aiplatform

PROJECT_ID = "YOUR_PROJECT_ID"
LOCATION = "us-west1"
ENDPOINT_ID = "YOUR_ENDPOINT_ID"

# Initialize AI Platform SDK
aiplatform.init(project=PROJECT_ID, location=LOCATION)

# Connect to Dedicated Endpoint
endpoint = aiplatform.Endpoint(ENDPOINT_ID)

# Define prediction payload
instances = [
    {
        "name": "preflight_check",
        "dialect": "alphafold3",
        "version": 4,
        "modelSeeds": [1],
        "sequences": [
            {
                "protein": {
                    "id": "A",
                    "sequence": "PVLSCGEWQL",
                }
            }
        ],
    }
]

parameters = {
    "dry_run": True,
}

# Execute prediction request
response = endpoint.predict(
    instances=instances,
    parameters=parameters
)
print(response.predictions)

端對端預測模式

如要執行端對端預測,請在單一要求中提交原始生物序列 (蛋白質、DNA、RNA、配體和 PTM)。端點會自動執行基因資料庫搜尋,並立即進行模型推論。如果摺疊作業沒有預先對齊,建議使用這項功能。

以下是端對端預測模式的 Python 指令碼範例:

from google.cloud import aiplatform

# Configuration
PROJECT_ID = "YOUR_PROJECT_ID"
LOCATION = "us-west1"
ENDPOINT_ID = "YOUR_ENDPOINT_ID"
STORAGE_OUTPUT_DIR = "gs://YOUR_BUCKET_NAME/alphafold_output/"

# Initialize AI Platform SDK
aiplatform.init(project=PROJECT_ID, location=LOCATION)

# Instantiate Endpoint reference
endpoint = aiplatform.Endpoint(ENDPOINT_ID)

# Define Prediction Payload
instances = [
    {
        "name": "e2e_protein_ligand_complex",
        "dialect": "alphafold3",
        "version": 4,
        "modelSeeds": [1],
        "sequences": [
            {
                "protein": {
                    "id": "A",
                    "sequence": "PVLSCGEWQL",
                    "modifications": [
                        {"ptmType": "HY3", "ptmPosition": 1}
                    ],
                }
            },
            {
                "ligand": {
                    "id": "B",
                    "ccdCodes": ["MG"],
                }
            },
        ],
    }
]

parameters = {
    "output_dir": STORAGE_OUTPUT_DIR,
}

# Execute Prediction
response = endpoint.predict(
    instances=instances,
    parameters=parameters
)

print(response.predictions)

僅使用預先計算的 MSA 和範本進行推論

您可能已經有預先計算的 MSA 和 mmCIF 範本,這些範本來自先前的執行作業,或是在模型端點外產生。在這些情況下,只要提供比對結果和範本,即可完全略過基因資料庫搜尋,直接將要求傳送至結構預測程序。這也能大幅縮短推論回應時間。在下列情況下,建議採用這種做法:

  • 如果針對單一靜態蛋白質目標對接多種不同的小分子配體,則可重複使用 MSA。
  • 在多個隨機種子中,以疊代方式執行相同的分子序列,繪製結構彈性圖。
  • 離線比對私人非公開基因體資料庫中的序列。
  • 最佳化 AlphaFold 3 的 GPU 資源,只專注於結構生成。

以下是僅供推論模式使用的 Python 指令碼範例:

from google.cloud import aiplatform

# Configuration
PROJECT_ID = "YOUR_PROJECT_ID"
LOCATION = "us-west1"
ENDPOINT_ID = "YOUR_ENDPOINT_ID"
STORAGE_OUTPUT_DIR = "gs://YOUR_BUCKET_NAME/af3_results/inference_only"

# Initialize AI Platform SDK
aiplatform.init(project=PROJECT_ID, location=LOCATION)

# Instantiate Endpoint reference
endpoint = aiplatform.Endpoint(ENDPOINT_ID)

# Define Prediction Payload
instances = [
    {
        "name": "inference_protein_ligand_complex",
        "dialect": "alphafold3",
        "version": 4,
        "modelSeeds": [1],
        "sequences": [
            {
                "protein": {
                    "id": "A",
                    "sequence": "PVLSCGEWQL",
                    "modifications": [
                        {"ptmType": "HY3", "ptmPosition": 1}
                    ],
                    "unpairedMsaPath": "gs://YOUR_BUCKET_NAME/path/to/unpaired.a3m",
                    "pairedMsa": "",
                    "templates": [],
                }
            },
            {
                "ligand": {
                    "id": "B",
                    "ccdCodes": ["MG"],
                }
            },
        ],
    }
]

parameters = {
    "run_data_pipeline": False,
    "output_dir": STORAGE_OUTPUT_DIR,
    "force_output_dir": True,
}

# Execute Prediction
response = endpoint.predict(
    instances=instances,
    parameters=parameters
)

print(response.predictions)

不使用 MSA 和範本執行

您也可以選擇完全略過基因資料庫搜尋和範本比對。模型只會使用查詢序列預測 3D 結構,不會使用同源序列或共同演化資訊。如要觸發此模式,請在執行個體中為 MSA 參數 unpairedMsa 和 pairedMsa 提供空字串,並為 templates 提供空清單,然後在參數中將 run_data_pipeline 設為 false。這項功能有助於設計合成或工程分子,或在沒有演化脈絡的情況下測試結構預測。

以下是執行 AlphaFold 3 MSA 和無範本的 Python 指令碼範例:

from google.cloud import aiplatform

# Configuration
PROJECT_ID = "YOUR_PROJECT_ID"
LOCATION = "us-west1"
ENDPOINT_ID = "YOUR_ENDPOINT_ID"
STORAGE_OUTPUT_DIR = "gs://YOUR_BUCKET_NAME/af3_results/inference_only_gcs_job"

# Initialize AI Platform SDK
aiplatform.init(project=PROJECT_ID, location=LOCATION)

# Instantiate Endpoint reference
endpoint = aiplatform.Endpoint(ENDPOINT_ID)

# Define Prediction Payload
instances = [
    {
        "name": "inference_only_gcs_job",
        "dialect": "alphafold3",
        "version": 4,
        "modelSeeds": [1, 2, 3],
        "sequences": [
            {
                "protein": {
                    "id": "A",
                    "sequence": "PVLSCGEWQL",
                    "unpairedMsa": "",
                    "pairedMsa": "",
                    "templates": [],
                }
            }
        ],
    }
]

parameters = {
    "output_dir": STORAGE_OUTPUT_DIR,
    "run_data_pipeline": False,
}

# Execute Prediction
response = endpoint.predict(
    instances=instances,
    parameters=parameters,
    timeout=3600.0,
)

print(response.predictions)

如需詳細規格、實體參數和輸出信賴度指標,請參閱 GitHub 上的 AlphaFold 3 說明文件。

預測輸出內容

AlphaFold 3 預測服務提供兩種互補的傳送機制,可擷取預測輸出內容。根據預設,API 回應會針對排名最高的候選人,以同步方式傳回預測結果。您可以選擇指定 Cloud Storage 目錄。

以下各節將概述預測輸出內容。如需更多詳細資料,請參閱 GitHub 上的 AlphaFold 3 說明文件。

內嵌回覆與已儲存構件

AlphaFold 3 預測服務支援兩種主要輸出模式:

  • 內嵌回應:只會傳回排名最高的候選項目,並直接在 HTTP REST 回應酬載中提供 3D 結構座標和信賴度指標。非常適合快速互動式原型設計或單一序列查詢。
  • 儲存的構件 (Cloud Storage):指定輸出目錄會將完整的多樣本資料集匯出至 Cloud Storage。包括每個產生的隨機種子和擴散樣本的個別座標檔案、信賴度 JSON、距離圖、嵌入和摘要指標。建議您使用 Cloud Storage 處理實際工作環境負載、對應構象集合,以及略過要求酬載大小限制。

以下 Python 範例說明如何從 Cloud Storage 擷取已儲存的構件,以進行後續分析:

from google.cloud import storage

BUCKET_NAME = "your-bucket-name"
JOB_NAME = "my_alphafold_job"
STORAGE_PREFIX = f"af3_results/my_folder/{JOB_NAME}"

# Initialize GCS client
client = storage.Client(project="your-project-id")
bucket = client.bucket(BUCKET_NAME)

# Download the top-ranked 3D structure and global ranking ledger
bucket.blob(f"{STORAGE_PREFIX}/{JOB_NAME}_model.cif").download_to_filename("model.cif")
bucket.blob(f"{STORAGE_PREFIX}/{JOB_NAME}_ranking_scores.csv").download_to_filename("ranking_scores.csv")
bucket.blob(f"{STORAGE_PREFIX}/{JOB_NAME}_summary_confidences.json").download_to_filename("summary.json")

由於 AlphaFold 3 採用生成式擴散模型,因此每次預測執行作業都會在種子和取樣軌跡中,生成一組候選 3D 結構。評估及比較這些候選執行作業,有助於在執行詳細的結構分析前,解讀預測輸出內容。

您可以使用下列三個核心檔案,調查完整的複合樣本構件資料集:

  • ranking_scores.csv:主要分類帳,列出所有產生的軌跡配對及其複合 ranking_score。資料列會依軌跡執行順序儲存 (先依種子遞增排序,再依樣本索引遞增排序),不會預先依分數排序。使用者應依 ranking_score 遞減排序,找出候選排名。

  • summary_confidences.json:包含頂尖候選人的全域品質指標 (pTM、 ipTM、has_clash、fraction_disordered)。

  • 每個樣本 summary_confidences.json:位於個別 seed-{SEED}_sample-{INDEX}/ 資料夾內,可讓您視需要檢查特定非頂尖候選項目執行的鏈結層級 pTM 和 ipTM 矩陣。

下列 Python 範例會剖析 ranking_scores.csv 和 summary_confidences.json,以排列候選樣本的優先順序,並驗證最高候選樣本的品質:

import csv
import json

print("=== Candidate Samples Ledger (ranking_scores.csv) ===")
with open("ranking_scores.csv", "r", newline="", encoding="utf-8") as f:
    rows = sorted(
        csv.DictReader(f), key=lambda x: float(x["ranking_score"]), reverse=True
    )

# Calculate column widths cleanly and readably
headers = list(rows[0].keys())
widths = {}
for col in headers:
    lengths = [len(col)] + [len(r[col]) for r in rows]
    widths[col] = max(lengths)

print("  ".join(col.rjust(widths[col]) for col in headers))
for r in rows:
    print("  ".join(r[col].rjust(widths[col]) for col in headers))

top = rows[0]
print(
    f"\nPromoted Top Candidate: Seed {int(top['seed'])}, Sample"
    f" {int(top['sample'])} (Score: {float(top['ranking_score']):.4f})"
)

print("\n=== Top Candidate Quality Validation (summary.json) ===")
with open("summary.json", "r", encoding="utf-8") as f:
    summary = json.load(f)

clash_str = (
    "DETECTED (FAIL)" if summary.get("has_clash") else "None Detected (PASS)"
)
print("Top Candidate Metrics:")
print(f"  • Ranking Score : {summary.get('ranking_score', 'N/A')}")
print(f"  • Global pTM    : {summary.get('ptm', 'N/A')}")
print(f"  • Interface ipTM: {summary.get('iptm', 'N/A')}")
print(f"  • Steric Clash  : {clash_str}")

如要查看儲存檔案和 mmCIF 屬性的完整結構定義規格,請參閱 GitHub 上的 AlphaFold 3 說明文件。此外,請參閱 EMBL-EBI 的「如何評估 AlphaFold 3 預測的品質」指南,瞭解如何評估預測品質。

最佳做法

以下各節說明在 Agent Platform 上使用 AlphaFold 3 的最佳做法:

減少要求逾時

Agent Platform 上的端點會對每個要求強制執行預設的執行逾時上限,即 60 分鐘。為確保預測作業順利完成,不會逾時,請遵守下列規範:

  • 避免在單一要求中過度取樣:在單一 API 呼叫中初始化大量種子或過高的反向擴散參數,可能會導致執行時間超過 60 分鐘上限。
  • 分解大型掃描:對於大規模研究,請將種子和參數掃描分成多個較小的預測有效負載,並以個別工作形式提交。這項功能也會充分運用端點的自動調整容量。

基因資料庫搜尋管道是 AlphaFold 管道中最耗時的階段。對相同序列執行疊代預測時 (例如對固定蛋白質目標執行配體篩選掃描),完全略過資料庫搜尋可大幅縮短執行時間:

  • 擷取 MSA:執行初始端對端預測,並指定 Cloud Storage 輸出目錄 (output_dir)。從輸出 Cloud Storage bucket 下載產生的 {JOB_NAME}_data.json 檔案。
  • 只提交推論預測:在 JSON 檔案中找出 unpairedMsa 和 pairedMsa 欄位。擷取這些 MSA 字串,並使用 unpairedMsaPath 和 pairedMsaPath 指向 Cloud Storage URI,將這些字串傳遞至後續的預測要求。

或者,您也可以在自己的基礎架構上執行 MSA 搜尋,並在預測要求中輸入預先計算的 MSA 範本。

處理可信度偏低的執行作業

如果預測輸出內容產生低信賴度指標,請嘗試進行有目標的補救,而不是將其視為無法復原的預測失敗。最佳化特定參數可讓您探查其他潛在軌跡。本節列出一些方法,可在預測結果的信賴度偏低時進行復原。

使用多重隨機數取樣

AlphaFold 3 會從潛在空間中的隨機雜訊,初始化 3D 座標生成作業。如果使用特定單一隨機數提交預測,擴散軌跡可能會與其他隨機數不同。傳遞種子陣列會強制模型從不同狀態開始取樣軌跡。

多重隨機數產生器取樣有兩項重要優點:驗證獨立執行作業的結構一致性,以及探查功能構象動態。舉例來說,如果五個種子都收斂到相同的 3D 座標,您就能對全域摺疊有高度信心。反之,如果不同的種子產生不同的高信賴度結合姿勢,則整體可能揭示具有生物學意義的構象狀態,例如開放與封閉的活性部位迴路,或替代的網域交換二聚物。

擴展擴散軌跡

modelSeeds 會改變潛在空間中的起始雜訊狀態,而 num_diffusion_samples 參數 (預設為 5) 則會控制在反向擴散過程中,每個種子產生的候選 3D 結構數量。如果是彈性迴路區域或淺層繫結口袋,增加取樣會擴大每個種子的候選集區。如果特定迴圈的本機信賴分數偏低 (pLDDT < 70),但整體網域摺疊仍具信賴度 (pTM > 0.80),這項做法就特別有效。這有助於發掘高信賴度的候選結構,這些結構可能在初始執行時遭到忽略。

增加回收疊代次數

在擴散模組生成 3D 座標之前,AlphaFold 3 會先處理序列和成對特徵。num_recycles 參數會決定中間結構表示法和成對空間嵌入內容,透過網路反覆饋送的次數。

對於大型複雜分子或共演化訊號較弱的目標,增加 num_recycles 可讓主幹網路進行額外疊代,以解析遠距鏈之間的空間關係,再將輸入內容傳遞至擴散模組。如果個別鏈結顯示高區域摺疊信賴度 (pLDDT > 70),但非對角 PAE 矩陣顯示高鏈結間不確定度 (> 15 Å),即可嘗試這種做法。請注意,回收次數增加會導致預測執行階段時間線性增加,因此應保留給難以處理的介面目標。

使用自訂對齊管道

AlphaFold 3 會自動執行基因資料庫搜尋管道,產生 MSA 範本。使用者也可以使用 unpairedMsaPath 和 pairedMsaPath,透過 Cloud Storage URI 提供 .a3m 格式的私密預先計算自訂對齊方式。提供深層 MSA 可產生強大的共同演化限制,經常將低信賴度預測轉換為高信賴度模型。