AlphaGenomeを用いたバリアント解析
前提条件
-
uv:uvスキルを読み、そのセットアップ手順に従ってuvがインストールされ、PATH が通っていることを確認してください。 -
ユーザー通知: ワークスペースルートディレクトリに
.licenses/alphagenome_single_variant_analysis_LICENSE.txtが存在しない場合は、(1) https://deepmind.google.com/science/alphagenome/ の利用規約を確認するようユーザーに明示的に通知し、(2) 通知テキストとタイムスタンプを記録したファイルを作成してください。 -
.envファイル: ホームディレクトリに.envファイルが存在することを確認してください。存在しない場合は作成します。 -
ALPHAGENOME_API_KEY: このスキルが機能するにはAPIキーが必要です。https://deepmind.google.com/science/alphagenome/ からキーを登録できます。 このスキルがユーザーのリクエストに関連していると思われる場合は、
credentialsスキルの安全な認証情報プロトコルを使用してこのキーを確認し、要求する必要があります。 -
ALPHAGENOME_GTF_PATH(オプション): GCSからダウンロードする代わりに、ローカルコピーのGTF featherファイルを指定して、遺伝子/転写産物のルックアップを高速化します。echo "ALPHAGENOME_GTF_PATH=/path/to/local/gencode.v46.annotation.gtf.gz.feather" >> ~/.env
基本ルール
- 決して
python3またはpython3 -cを直接実行しないでください。 システムのPythonにはpandas、numpyなどの主要な依存関係が必ずしも含まれているとは限りません。すべてのPythonコード(スクリプト、アドホックな解析ファイル、ワンライナーを含む)を実行するには、常にuv runを使用してください。pip installや新しいvenvの作成を試みないでください。uvが自動的に分離された環境を管理します。 - オフラインのみ: 遺伝子/転写産物のルックアップには、外部API(例:MyGene.info、Ensembl REST)を決して使用しないでください。ローカルのGTFと共に
lookup_gene_info.pyを使用してください。失敗した場合は、環境/パスを修正し、外部APIに切り替えないでください。 - APIキー必須: スクリプトを実行する前に
ALPHAGENOME_API_KEYを設定する必要があります。 - 通知: このスキルを使用した場合は、出力にその旨を明記してください。
- レポート形式: 解析レポートを生成する際は、常に
docs/report-templates.mdのテンプレートを使用し、ディスカバリースキャンからのトップヒットの表を含めることを確認してください。
環境セットアップとトラブルシューティング
Python環境
すべてのスクリプトは uv run を使用して実行する必要があります。これにより、uv を介して正しい依存関係を持つ分離された仮想環境が管理されます。
uv run <script_name> [args...]
アドホックスクリプト(例:一時ファイルに保存されたインライン解析コード)の場合は、短い名前ではなくフルパスを渡します。
uv run --project $SKILL_DIR /tmp/my_analysis.py --arg1 val1
[!NOTE] 最初の呼び出しで依存関係が解決およびインストールされます(約10秒)。 以降の実行ではキャッシュされた環境が使用され、即座に起動します。キャッシュは
~/.cache/uv/にあります。
一般的な問題
- カラム名:
tidy_scoresとメタデータは、しばしばgene_name(gene_symbolではない)とoutput_type(modalityではない)を使用します。フィルタリングする前に常にdf.columnsを確認してください。 - 大きな遺伝子: 500kbを超える遺伝子(例:
USH2A)はwhole_geneビューで問題が発生します。代わりに--view detailまたは手動のリージョナルウィンドウを使用してください。 - Sashimiストランドエラー:
plot_components.Sashimiはstrand引数を直接受け付けません。代わりに入力トラックをフィルタリングしてください。 - KeyError: 'ontology_curie': すべてのトラックに
ontology_curieがあるわけではありません。フィルタリングする前にtrack.metadata.columnsを確認してください。 - Pythonパス:
exec: "python": executable file not foundが発生した場合は、ベアpython/python3の代わりにuv runを使用していることを確認してください。 - NotImplementedError(pandas):「整数型のiLocationベースのブールインデックスは利用できません」。これは、新しいバージョンのpandasで、整数インデックスのDataFrameに対して
.ilocでブールマスクを使用する場合に発生します。修正方法:np.flatnonzero(mask)を使用してブールマスクを整数インデックスに変換します。 - GTF Featherの大文字小文字の区別: AlphaGenome GTF Featherファイルは、標準のGTFファイルとは異なり、大文字のカラム名(
Feature、Start、End、Strand)を使用します。KeyErrorが発生した場合は、常にdf.columnsを確認してください。 score_variantのオントロジーフィルタリング:score_variantは引数としてontology_termsを受け付けません。返されたAnnDataオブジェクトを手動でフィルタリングするには、adata.varカラムを検査する必要があります。対照的に、predict_variantはontology_termsを直接受け付けます。- Sashimiズームロジック: 「スキッピング」アークを確実に表示するには、ジャンクションの重複のみに依存するのではなく、フランキングエクソンを含むようにズームを拡張します。
- ジャンクションスコア:
predictionからの生のJunctionオブジェクトは単純なIntervalである場合があります。.k(存在量/スコア)属性を持つオブジェクトを取得するには、junction_data.get_junctions_to_plot(predictions=..., name=...)を使用します。 uvが見つからない:exec: uv: not foundの場合は、前提条件のインストール手順に従ってください。- レジストリ認証エラー(401): プライベートレジストリに対して
uvが401 Unauthorizedで失敗する場合は、スクリプトを実行する前にUV_INDEX_URL=https://pypi.org/simpleを設定します。
リファレンス
- alphagenome-api.md — APIリファレンスとコードパターン
- interpretation-guide.md — 解釈ガイド、スコアの大きさのルール、ISM、チェックリスト。
- report-templates.md — 完全なレポートテンプレート
scripts/visualize_variant_effects.py— シングルバリアント可視化テンプレート(Ref/Alt比較、スプライシング)。- スプライシングズーム戦略: 最適な可視性のためにハイブリッドアプローチを使用します。
- 基本間隔: バリアント +/- 1 下流および上流エクソン(構造的コンテキスト)。
- ジャンクション拡張: 任意の重要なスプライシングジャンクション(例:複数のエクソンにまたがるエクソンスキッピングイベント)の全スパンを含むように拡張します。
- アンカー強制: これらの長いジャンクションをアンカーするエクソンが完全に表示されるようにします。教訓: 単純な固定ウィンドウ(例:2kb)や最近接エクソンロジックは、スキッピングイベントではしばしば失敗します。ズームレベルを決定するには、常に観測されたジャンクションデータを使用してください。
- スプライシングズーム戦略: 最適な可視性のためにハイブリッドアプローチを使用します。
examples/splicing/— スプライシング解析の例examples/model_limitation_RNU4ATAC/— ncRNA構造の制限に関するケーススタディexamples/polyadenylation_HBA2/— 3' UTR / ポリアデニル化のケーススタディexamples/regulatory/— 調節バリアントの例examples/negative_result_GATA4/— 否定的結果(数学的アーティファクト)examples/negative_result_TGFB3/— 否定的結果(プロキシ)scripts/lookup_gene_info.py— 遺伝子および転写産物のルックアップscripts/resolve_ontology_terms.py— オントロジー用語の解決(UBERON/CL ID)
コードパターン
広範なディスカバリースキャン
score_variant を差動スコアラーのみで使用して、予期しない組織への影響を発見します。
from alphagenome.models import dna_client
from alphagenome.models import variant_scorers
from alphagenome.data import genome
import os
import pandas as pd
import dotenv
# ~/.env から環境変数を読み込む
dotenv.load_dotenv(os.path.expanduser('~/.env'))
# APIキーとクライアントのセットアップ
dna_model = dna_client.create(api_key=os.environ.get('ALPHAGENOME_API_KEY'),
address='dns:///gdmscience.googleapis.com:443')
# バリアントの定義 (例)
variant_str = "chr2:1234:A>C"
chrom, pos_str, ref_alt = variant_str.split(':')
ref, alt = ref_alt.split('>')
pos = int(pos_str)
# サポートされているシーケンス長を使用 (例:最適なパフォーマンスのために 2**20)
SEQ_LENGTH = 2**20
interval = genome.Interval(chrom, pos - SEQ_LENGTH // 2, pos + SEQ_LENGTH // 2)
variant = genome.Variant(chrom, pos, ref, alt)
scorers = [
variant_scorers.RECOMMENDED_VARIANT_SCORERS[m]
for m in variant_scorers.RECOMMENDED_VARIANT_SCORERS
if "ACTIVE" not in m and "CAGE" not in m and "PROCAP" not in m
]
print(f"バリアント {variant_str} をスコアリング中...")
scores_list = dna_model.score_variant(interval=interval, variant=variant, variant_scorers=scorers)
# 結果の処理と表示
all_dfs = []
for score_adata in scores_list:
df = variant_scorers.tidy_scores([score_adata], match_gene_strand=True)
if df is not None:
all_dfs.append(df)
if all_dfs:
df = pd.concat(all_dfs)
significant = df[df['quantile_score'].abs() > 0.995]
ranked = significant.sort_values('raw_score', key=abs, ascending=False)
print("トップの有意なヒット:")
print(ranked[['biosample_name', 'gene_name', 'output_type', 'quantile_score', 'raw_score']])
疾患関連組織の拡張検索
# 疾患のコンテキストに基づいてキーワードを定義
disease_keywords = ["liver", "hepatocyte"]
# いずれかのキーワードに一致するものをフィルタリング
mask = df['biosample_name'].str.contains('|'.join(disease_keywords), case=False, na=False)
relevant_hits = df[mask].sort_values('raw_score', key=abs, ascending=False)
print(f"\n--- 拡張分析 (キーワード: {disease_keywords}) ---")
print(relevant_hits.head(20)[['biosample_name', 'output_type', 'raw_score', 'quantile_score']])
ワークフローチェックリスト
バリアント解析の進捗:
- [ ] ステップ 0: ゴールデンサンプルを確認 (必須)
- [ ] ステップ 1: 出力フォルダとセットアップを作成
- [ ] ステップ 2: ユーザークエリを解析 & 調査
- [ ] ステップ 3: 組織とモダリティを解決
- [ ] ステップ 4: プロットを可視化 & 保存
- [ ] ステップ 5: 予測を分析 (プロットを確認、コードなし)。必須: 結果を解釈する前に [interpretation-guide.md](docs/interpretation-guide.md) を読んでください。
- [ ] ステップ 6: レポートを作成し、`report.md` として保存 (必須)
- [ ] ステップ 7: 自己批評 (`report.md` を確認してリンクと主張を検証)
- [ ] ステップ 8: `report.md` をアーティファクトとして出力
マルチバリアントワークフロー
複数のバリアントが指定された場合は、サブエージェントを生成して各バリアントの解析を実行させ、その後各 report.md を1つのレポートに統合します。
スクリプトリファレンス
| スクリプト | 目的 |
|---|---|
lookup_gene_info | GTFデータを使用した包括的な遺伝子および転写産物のルックアップ |
| : : : | |
resolve_ontology_terms | 生物学用語 → UBERON/CL/EFO ID |
visualize_variant_effects | REF/ALT可視化 (発現、調節、スプライシング) |
| : : : | |
analyze_ism | In-Silico Mutagenesis SeqLogo生成 |
interpret_splicing | 定量的スプライシング解析 (デルタスコア、ジャンクション) |
| : : : | |
visualize_genome_tracks | ゲノムトラックの領域可視化 |