mcpField
A
alphafold-database

alphafold-database

github.com/davila7データ・データベース33.0k326 回インストール今日更新
リポジトリ

alphafold-database について

AlphaFold Databaseは、AI予測タンパク質構造の公開データベースで、このスキルはデータの取得と分析手順を解説します。構造ファイル、信頼度指標、一括プロテオームデータへのアクセスを、研究者や計算生物学の実務者向けに扱います。

主な機能

  1. 01UniProt IDによる予測検索
  2. 02mmCIFとPDBファイルのダウンロード
  3. 03pLDDTとPAE信頼度データの確認
  4. 04一括プロテオームデータへのアクセス
  5. 05Biopythonによる構造解析
  6. 06タンパク質予測の一括処理

活用シーン

  1. 01実験モデルのないタンパク質構造の取得
  2. 02予測構造の信頼度評価
  3. 03プロテオーム規模の予測データ取得
  4. 04創薬研究用の構造準備

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/davila7/claude-code-templates --skill alphafold-database

インストール後、Claude Code で/alphafold-databaseを入力して読み込まれたか確認します。

同梱ファイルreferences/api_reference.md

詳細

AlphaFold Database

概要

AlphaFold DB は、DeepMind と EMBL-EBI が管理する、2億を超えるタンパク質の AI 予測 3D 構造の公開リポジトリです。信頼性指標付きの構造予測へのアクセス、座標ファイルのダウンロード、一括データセットの取得、予測結果の計算ワークフローへの統合が可能です。

このスキルを使用するタイミング

このスキルは、次のようなシナリオで AI 予測タンパク質構造を扱う際に使用します。

  • UniProt ID またはタンパク質名で構造予測を取得する
  • 構造解析のために PDB/mmCIF 座標ファイルをダウンロードする
  • 予測信頼度指標(pLDDT、PAE)を分析し、信頼性を評価する
  • Google Cloud Platform 経由で一括プロテオームデータセットにアクセスする
  • 予測構造を実験データと比較する
  • 構造ベースの創薬またはタンパク質工学を行う
  • 実験構造が存在しないタンパク質の構造モデルを構築する
  • AlphaFold の予測を計算パイプラインに統合する

主な機能

1. 予測結果の検索と取得

Biopython の使用(推奨):

Biopython ライブラリは、AlphaFold 構造を取得するための最も簡単なインターフェースを提供します。

from Bio.PDB import alphafold_db

# Get all predictions for a UniProt accession
predictions = list(alphafold_db.get_predictions("P00520"))

# Download structure file (mmCIF format)
for prediction in predictions:
    cif_file = alphafold_db.download_cif_for(prediction, directory="./structures")
    print(f"Downloaded: {cif_file}")

# Get Structure objects directly
from Bio.PDB import MMCIFParser
structures = list(alphafold_db.get_structural_models_for("P00520"))

直接的な API アクセス:

REST エンドポイントを使用して予測結果を照会します。

import requests

# Get prediction metadata for a UniProt accession
uniprot_id = "P00520"
api_url = f"https://alphafold.ebi.ac.uk/api/prediction/{uniprot_id}"
response = requests.get(api_url)
prediction_data = response.json()

# Extract AlphaFold ID
alphafold_id = prediction_data[0]['entryId']
print(f"AlphaFold ID: {alphafold_id}")

UniProt を使用したアクセッション番号の検索:

まず UniProt を検索して、タンパク質のアクセッション番号を取得します。

import urllib.parse, urllib.request

def get_uniprot_ids(query, query_type='PDB_ID'):
    """Query UniProt to get accession IDs"""
    url = 'https://www.uniprot.org/uploadlists/'
    params = {
        'from': query_type,
        'to': 'ACC',
        'format': 'txt',
        'query': query
    }
    data = urllib.parse.urlencode(params).encode('ascii')
    with urllib.request.urlopen(urllib.request.Request(url, data)) as response:
        return response.read().decode('utf-8').splitlines()

# Example: Find UniProt IDs for a protein name
protein_ids = get_uniprot_ids("hemoglobin", query_type="GENE_NAME")
2. 構造ファイルのダウンロード

AlphaFold は、各予測結果に対して複数のファイル形式を提供します。

利用可能なファイルの種類:

  • モデル座標(model_v4.cif): mmCIF/PDBx 形式の原子座標
  • 信頼度スコア(confidence_v4.json): 残基ごとの pLDDT スコア(0〜100)
  • 予測整列誤差(predicted_aligned_error_v4.json): 残基ペアの信頼度を示す PAE 行列

ダウンロード URL:

import requests

alphafold_id = "AF-P00520-F1"
version = "v4"

# Model coordinates (mmCIF)
model_url = f"https://alphafold.ebi.ac.uk/files/{alphafold_id}-model_{version}.cif"
response = requests.get(model_url)
with open(f"{alphafold_id}.cif", "w") as f:
    f.write(response.text)

# Confidence scores (JSON)
confidence_url = f"https://alphafold.ebi.ac.uk/files/{alphafold_id}-confidence_{version}.json"
response = requests.get(confidence_url)
confidence_data = response.json()

# Predicted Aligned Error (JSON)
pae_url = f"https://alphafold.ebi.ac.uk/files/{alphafold_id}-predicted_aligned_error_{version}.json"
response = requests.get(pae_url)
pae_data = response.json()

PDB 形式(代替):

# Download as PDB format instead of mmCIF
pdb_url = f"https://alphafold.ebi.ac.uk/files/{alphafold_id}-model_{version}.pdb"
response = requests.get(pdb_url)
with open(f"{alphafold_id}.pdb", "wb") as f:
    f.write(response.content)
3. 信頼度指標の利用

AlphaFold の予測には、結果を解釈するうえで重要な信頼度の推定値が含まれています。

pLDDT(残基ごとの信頼度):

import json
import requests

# Load confidence scores
alphafold_id = "AF-P00520-F1"
confidence_url = f"https://alphafold.ebi.ac.uk/files/{alphafold_id}-confidence_v4.json"
confidence = requests.get(confidence_url).json()

# Extract pLDDT scores
plddt_scores = confidence['confidenceScore']

# Interpret confidence levels
# pLDDT > 90: Very high confidence
# pLDDT 70-90: High confidence
# pLDDT 50-70: Low confidence
# pLDDT < 50: Very low confidence

high_confidence_residues = [i for i, score in enumerate(plddt_scores) if score > 90]
print(f"High confidence residues: {len(high_confidence_residues)}/{len(plddt_scores)}")

PAE(予測整列誤差):

PAE は、ドメインの相対的な位置に対する信頼度を示します。

import numpy as np
import matplotlib.pyplot as plt

# Load PAE matrix
pae_url = f"https://alphafold.ebi.ac.uk/files/{alphafold_id}-predicted_aligned_error_v4.json"
pae = requests.get(pae_url).json()

# Visualize PAE matrix
pae_matrix = np.array(pae['distance'])
plt.figure(figsize=(10, 8))
plt.imshow(pae_matrix, cmap='viridis_r', vmin=0, vmax=30)
plt.colorbar(label='PAE (Å)')
plt.title(f'Predicted Aligned Error: {alphafold_id}')
plt.xlabel('Residue')
plt.ylabel('Residue')
plt.savefig(f'{alphafold_id}_pae.png', dpi=300, bbox_inches='tight')

# Low PAE values (<5 Å) indicate confident relative positioning
# High PAE values (>15 Å) suggest uncertain domain arrangements
4. Google Cloud による一括データアクセス

大規模な解析には、Google Cloud のデータセットを使用します。

Google Cloud Storage:

# Install gsutil
uv pip install gsutil

# List available data
gsutil ls gs://public-datasets-deepmind-alphafold-v4/

# Download entire proteomes (by taxonomy ID)
gsutil -m cp gs://public-datasets-deepmind-alphafold-v4/proteomes/proteome-tax_id-9606-*.tar .

# Download specific files
gsutil cp gs://public-datasets-deepmind-alphafold-v4/accession_ids.csv .

BigQuery のメタデータアクセス:

from google.cloud import bigquery

# Initialize client
client = bigquery.Client()

# Query metadata
query = """
SELECT
  entryId,
  uniprotAccession,
  organismScientificName,
  globalMetricValue,
  fractionPlddtVeryHigh
FROM `bigquery-public-data.deepmind_alphafold.metadata`
WHERE organismScientificName = 'Homo sapiens'
  AND fractionPlddtVeryHigh > 0.8
LIMIT 100
"""

results = client.query(query).to_dataframe()
print(f"Found {len(results)} high-confidence human proteins")

生物種ごとのダウンロード:

import subprocess

def download_proteome(taxonomy_id, output_dir="./proteomes"):
    """Download all AlphaFold predictions for a species"""
    pattern = f"gs://public-datasets-deepmind-alphafold-v4/proteomes/proteome-tax_id-{taxonomy_id}-*_v4.tar"
    cmd = f"gsutil -m cp {pattern} {output_dir}/"
    subprocess.run(cmd, shell=True, check=True)

# Download E. coli proteome (tax ID: 83333)
download_proteome(83333)

# Download human proteome (tax ID: 9606)
download_proteome(9606)
5. 構造の解析と処理

BioPython を使用して、ダウンロードした AlphaFold 構造を扱います。

from Bio.PDB import MMCIFParser, PDBIO
import numpy as np

# Parse mmCIF file
parser = MMCIFParser(QUIET=True)
structure = parser.get_structure("protein", "AF-P00520-F1-model_v4.cif")

# Extract coordinates
coords = []
for model in structure:
    for chain in model:
        for residue in chain:
            if 'CA' in residue:  # Alpha carbons only
                coords.append(residue['CA'].get_coord())

coords = np.array(coords)
print(f"Structure has {len(coords)} residues")

# Calculate distances
from scipy.spatial.distance import pdist, squareform
distance_matrix = squareform(pdist(coords))

# Identify contacts (< 8 Å)
contacts = np.where((distance_matrix > 0) & (distance_matrix < 8))
print(f"Number of contacts: {len(contacts[0]) // 2}")

B-factor(pLDDT 値)の抽出:

AlphaFold は pLDDT スコアを B-factor 列に格納します。

from Bio.PDB import MMCIFParser

parser = MMCIFParser(QUIET=True)
structure = parser.get_structure("protein", "AF-P00520-F1-model_v4.cif")

# Extract pLDDT from B-factors
plddt_scores = []
for model in structure:
    for chain in model:
        for residue in chain:
            if 'CA' in residue:
                plddt_scores.append(residue['CA'].get_bfactor())

# Identify high-confidence regions
high_conf_regions = [(i, score) for i, score in enumerate(plddt_scores, 1) if score > 90]
print(f"High confidence residues: {len(high_conf_regions)}")
6. 複数タンパク質のバッチ処理

複数の予測結果を効率的に処理します。

from Bio.PDB import alphafold_db
import pandas as pd

uniprot_ids = ["P00520", "P12931", "P04637"]  # Multiple proteins
results = []

for uniprot_id in uniprot_ids:
    try:
        # Get prediction
        predictions = list(alphafold_db.get_predictions(uniprot_id))

        if predictions:
            pred = predictions[0]

            # Download structure
            cif_file = alphafold_db.download_cif_for(pred, directory="./batch_structures")

            # Get confidence data
            alphafold_id = pred['entryId']
            conf_url = f"https://alphafold.ebi.ac.uk/files/{alphafold_id}-confidence_v4.json"
            conf_data = requests.get(conf_url).json()

            # Calculate statistics
            plddt_scores = conf_data['confidenceScore']
            avg_plddt = np.mean(plddt_scores)
            high_conf_fraction = sum(1 for s in plddt_scores if s > 90) / len(plddt_scores)

            results.append({
                'uniprot_id': uniprot_id,
                'alphafold_id': alphafold_id,
                'avg_plddt': avg_plddt,
                'high_conf_fraction': high_conf_fraction,
                'length': len(plddt_scores)
            })
    except Exception as e:
        print(f"Error processing {uniprot_id}: {e}")

# Create summary DataFrame
df = pd.DataFrame(results)
print(df)

インストールとセットアップ

Python ライブラリ
# Install Biopython for structure access
uv pip install biopython

# Install requests for API access
uv pip install requests

# For visualization and analysis
uv pip install numpy matplotlib pandas scipy

# For Google Cloud access (optional)
uv pip install google-cloud-bigquery gsutil
3D-Beacons API による代替手段

AlphaFold には、3D-Beacons フェデレーテッド API を介してもアクセスできます。

import requests

# Query via 3D-Beacons
uniprot_id = "P00520"
url = f"https://www.ebi.ac.uk/pdbe/pdbe-kb/3dbeacons/api/uniprot/summary/{uniprot_id}.json"
response = requests.get(url)
data = response.json()

# Filter for AlphaFold structures
af_structures = [s for s in data['structures'] if s['provider'] == 'AlphaFold DB']

一般的なユースケース

構造プロテオミクス
  • 解析のためにプロテオーム全体の予測結果をダウンロードする
  • タンパク質全体で信頼度の高い構造領域を特定する
  • 予測構造を実験データと比較する
  • タンパク質ファミリーの構造モデルを構築する
創薬
  • ドッキング試験のために標的タンパク質の構造を取得する
  • 結合部位の立体構造を解析する
  • 予測構造内で創薬可能なポケットを特定する
  • ホモログ間で構造を比較する
タンパク質工学
  • pLDDT を用いて安定・不安定な領域を特定する
  • 信頼度の高い領域に変異を設計する
  • PAE を用いてドメインアーキテクチャを解析する
  • タンパク質のバリアントや変異をモデル化する
進化研究
  • 生物種間でオーソログの構造を比較する
  • 構造的特徴の保存性を解析する
  • ドメインの進化パターンを調べる
  • 機能的に重要な領域を特定する

主要な概念

UniProt アクセッション: タンパク質の主要な識別子(例: "P00520")。AlphaFold DB への問い合わせに必須です。

AlphaFold ID: 内部識別子の形式: AF-[UniProt アクセッション]-F[フラグメント番号](例: "AF-P00520-F1")。

pLDDT(predicted Local Distance Difference Test): 残基ごとの信頼度指標(0〜100)。値が高いほど予測の信頼性が高いことを示します。

PAE(Predicted Aligned Error): 残基ペア間の相対位置の信頼度を示す行列です。低い値(<5 Å)は、相対位置が確実であることを示唆します。

データベースバージョン: 現在のバージョンは v4 です。ファイル URL にはバージョンのサフィックスが含まれます(例: model_v4.cif)。

フラグメント番号: 大きなタンパク質は複数のフラグメントに分割されることがあります。フラグメント番号は AlphaFold ID に含まれます(例: F1、F2)。

信頼度の解釈ガイドライン

pLDDT のしきい値:

  • >90: 非常に高い信頼度 - 詳細な解析に適しています
  • 70-90: 高い信頼度 - 一般に信頼できるバックボーン構造です
  • 50-70: 低い信頼度 - 注意して使用してください。柔軟な領域である可能性があります
  • <50: 非常に低い信頼度 - 秩序を欠いている、または信頼できない可能性が高いです

PAE のガイドライン:

  • <5 Å: ドメインの相対位置が確実です
  • 5-10 Å: 配置の信頼度は中程度です
  • >15 Å: 相対位置が不確実で、ドメインが可動性を持つ可能性があります

リソース

references/api_reference.md

以下を網羅する包括的な API ドキュメントです:

  • REST API エンドポイントの完全な仕様
  • ファイル形式の詳細とデータスキーマ
  • Google Cloud データセットの構造とアクセスパターン
  • 高度なクエリの例とバッチ処理の戦略
  • レート制限、キャッシュ、ベストプラクティス
  • よくある問題のトラブルシューティング

詳細な API 情報、一括ダウンロードの戦略、または大規模データセットを扱う際には、このリファレンスを参照してください。

重要な注意事項

データの利用と帰属表示
  • AlphaFold DB は CC-BY-4.0 ライセンスのもとで自由に利用できます
  • 引用: Jumper et al. (2021) Nature および Varadi et al. (2022) Nucleic Acids Research
  • 予測は計算モデルであり、実験による構造ではありません
  • 後続の解析の前に、必ず信頼度指標を評価してください
バージョン管理
  • 現在のデータベースバージョン: v4(2024〜2025年時点)
  • ファイル URL にはバージョンのサフィックスが含まれます(例: _v4.cif)
  • データベースの更新を定期的に確認してください
  • 古いバージョンは時間の経過とともに非推奨になる場合があります
データ品質に関する考慮事項
  • pLDDT が高くても、機能的な正確性が保証されるわけではありません
  • 信頼度の低い領域は、生体内では秩序を欠いている可能性があります
  • PAE は、ドメインの絶対的な位置ではなく、ドメイン間の相対的な信頼度を示します
  • 予測には、リガンド、翻訳後修飾、補因子は含まれません
  • マルチチェーン複合体は予測されません(単一鎖のみ)
パフォーマンスのヒント
  • 単一タンパク質への簡単なアクセスには Biopython を使用してください
  • 一括ダウンロードには Google Cloud を使用してください(個別ファイルよりはるかに高速です)
  • 繰り返しのダウンロードを避けるため、ダウンロードしたファイルはローカルにキャッシュしてください
  • BigQuery の無料枠: 月あたり 1 TB の処理データ
  • 大規模なダウンロードでは、ネットワーク帯域幅を考慮してください

追加リソース

コメント