single2spatial-spatial-mapping について
omicverse の Single2Spatial で単一細胞データを空間トランスクリプトームに対応付け、結果を評価、可視化、出力するワークフローを案内します。空間発現解析に利用できます。
主な機能
- 01深層フォレスト空間マッピングの学習
- 02学習済みモデル重みの読み込み
- 03スポット単位の結果評価
- 04発現と細胞比率のプロット
- 05AnnData と集計データの出力
活用シーン
- 01scRNA-seq と Visium から空間細胞比率を再構成
- 02チェックポイントからスポット単位の結果を再生成
- 03マーカー遺伝子の空間発現をプロット
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ omicverse/ omicverse --skill single2spatial-spatial-mappingインストール後、Claude Code で/single2spatial-spatial-mappingを入力して読み込まれたか確認します。
同梱ファイルreference.md
詳細
Single2Spatial による空間マッピング
概要
単一細胞の参照データを空間分解されたプロファイルに変換する場合に、このスキルを適用します。t_single2spatial.ipynb に沿って、Single2Spatial を用いて PDAC の scRNA-seq データと Visium データで学習し、スポットレベルの割合を再構成して、マーカー発現を可視化する方法を紹介します。
手順
- 依存関係とスタイルを読み込む
omicverse as ov、scanpy as sc、anndata、pandas as pd、numpy as np、matplotlib.pyplot as pltを読み込みます。ov.utils.ov_plot_set()(古いバージョンではov.plot_set())を呼び出して、プロットのスタイルを omicverse に合わせます。
- 単一細胞データセットと空間データセットを読み込む
pd.read_csv(...)で処理済みの行列を読み込み、AnnData オブジェクト(anndata.AnnData(raw_df.T))を作成します。- メタデータを割り当てます。
single_data.obs = pd.read_csv(...)[['Cell_type']]とし、spatial_data.obs = pd.read_csv(... )には座標とスライドのメタデータを含めます。
- Single2Spatial を初期化する
ov.bulk2single.Single2Spatial(single_data=single_data, spatial_data=spatial_data, celltype_key='Cell_type', spot_key=['xcoord','ycoord'], gpu=0)をインスタンス化します。- 入力には正規化済み/対数スケール済みの scRNA-seq 行列を使用してください。また、
spot_keyが空間座標の列と一致していることを確認します。
- ディープフォレストモデルを学習する
st_model.train(spot_num=500, cell_num=10, df_save_dir='...', df_save_name='pdac_df', k=10, num_epochs=1000, batch_size=1000, predicted_size=32)を実行してマッパーを適合させ、再構成された空間 AnnData(sp_adata)を生成します。spot_numは各反復でサンプリングする疑似スポット数を定義し、cell_numはスポットごとに抽出する細胞数を制御することを説明します。
- 事前学習済みの重みを読み込む
- チェックポイントがすでに存在する場合は、
st_model.load(modelsize=14478, df_load_dir='.../pdac_df.pth', k=10, predicted_size=32)を使用して学習を省略します。
- チェックポイントがすでに存在する場合は、
- スポットレベルの出力を評価する
st_model.spot_assess()を呼び出して、QC 用の集約済みスポット AnnData(sp_adata_spot)を計算します。sc.pl.embedding(sp_adata, basis='X_spatial', color=['REG1A', 'CLDN1', ...], frameon=False, ncols=4)でマーカー遺伝子をプロットします。
- 割合と細胞型マップを可視化する
sc.pl.embedding(sp_adata_spot, basis='X_spatial', color=['Acinar cells', ...], frameon=False)を使って、スポットごとの細胞割合を強調表示します。palette=ov.utils.ov_palette()[11:]を指定してCell_typeで色分けしたsp_adataをプロットし、再構成された割り当てを表示します。
- 結果をエクスポートする
- 生成した AnnData オブジェクト(
sp_adata.write_h5ad(...)、sp_adata_spot.write_h5ad(...))と、後続のレポート用に算出した CSV サマリーを保存することを推奨します。
- 生成した AnnData オブジェクト(
- 防御的な検証
# Before Single2Spatial: verify spatial coordinates exist for col in spot_key: assert col in spatial_data.obs.columns, f"Spatial coordinate column '{col}' not found in spatial_data.obs" # Verify scRNA-seq is log-normalized (max should be <~15, not hundreds/thousands) if single_data.X.max() > 50: print("WARNING: scRNA-seq data may not be log-normalized. Raw counts cause scale mismatches.") # Verify cell type column exists assert celltype_key in single_data.obs.columns, f"Cell type column '{celltype_key}' not found" - トラブルシューティングのヒント
- 学習が発散する場合は、キーワード引数で
learning_rateを下げるか、predicted_sizeを小さくしてフォレストを安定化させます。 - scRNA-seq の入力が対数正規化済みであることを確認します。生カウントではスケールの不一致が生じ、空間予測の精度が低下することがあります。
gpuがゼロ以外の場合は、GPU が利用可能であることを確認します。引数を省略するか、gpu=-1を設定すると CPU に切り替えられます。
例
- 「PDAC の scRNA-seq データと Visium スライドで Single2Spatial を学習し、REG1A と CLDN1 の空間発現を可視化する。」
- 「保存済みの Single2Spatial チェックポイントを読み込み、レポート用にスポットレベルの細胞型割合を再生成する。」
- 「omicverse のパレットで再構成された細胞型マップをプロットし、組織学的画像と比較する。」
参考資料
- チュートリアルノートブック:
t_single2spatial.ipynb - サンプルデータセットとモデル:
omicverse_guide/docs/Tutorials-bulk2single/data/pdac/ - コピーしてすぐに使えるコマンド:
reference.md
コメント
Markdown 対応