mcpField
S
single2spatial-spatial-mapping

single2spatial-spatial-mapping

github.com/omicverseデータ・データベース1.4k44 回インストール2 日前に更新
リポジトリ

single2spatial-spatial-mapping について

omicverse の Single2Spatial で単一細胞データを空間トランスクリプトームに対応付け、結果を評価、可視化、出力するワークフローを案内します。空間発現解析に利用できます。

主な機能

  1. 01深層フォレスト空間マッピングの学習
  2. 02学習済みモデル重みの読み込み
  3. 03スポット単位の結果評価
  4. 04発現と細胞比率のプロット
  5. 05AnnData と集計データの出力

活用シーン

  1. 01scRNA-seq と Visium から空間細胞比率を再構成
  2. 02チェックポイントからスポット単位の結果を再生成
  3. 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 データで学習し、スポットレベルの割合を再構成して、マーカー発現を可視化する方法を紹介します。

手順

  1. 依存関係とスタイルを読み込む
    • 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 に合わせます。
  2. 単一細胞データセットと空間データセットを読み込む
    • pd.read_csv(...) で処理済みの行列を読み込み、AnnData オブジェクト(anndata.AnnData(raw_df.T))を作成します。
    • メタデータを割り当てます。single_data.obs = pd.read_csv(...)[['Cell_type']] とし、spatial_data.obs = pd.read_csv(... ) には座標とスライドのメタデータを含めます。
  3. 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 が空間座標の列と一致していることを確認します。
  4. ディープフォレストモデルを学習する
    • 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 はスポットごとに抽出する細胞数を制御することを説明します。
  5. 事前学習済みの重みを読み込む
    • チェックポイントがすでに存在する場合は、st_model.load(modelsize=14478, df_load_dir='.../pdac_df.pth', k=10, predicted_size=32) を使用して学習を省略します。
  6. スポットレベルの出力を評価する
    • st_model.spot_assess() を呼び出して、QC 用の集約済みスポット AnnData(sp_adata_spot)を計算します。
    • sc.pl.embedding(sp_adata, basis='X_spatial', color=['REG1A', 'CLDN1', ...], frameon=False, ncols=4) でマーカー遺伝子をプロットします。
  7. 割合と細胞型マップを可視化する
    • sc.pl.embedding(sp_adata_spot, basis='X_spatial', color=['Acinar cells', ...], frameon=False) を使って、スポットごとの細胞割合を強調表示します。
    • palette=ov.utils.ov_palette()[11:] を指定して Cell_type で色分けした sp_adata をプロットし、再構成された割り当てを表示します。
  8. 結果をエクスポートする
    • 生成した AnnData オブジェクト(sp_adata.write_h5ad(...)、sp_adata_spot.write_h5ad(...))と、後続のレポート用に算出した CSV サマリーを保存することを推奨します。
  9. 防御的な検証
    # 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"
    
  10. トラブルシューティングのヒント
  • 学習が発散する場合は、キーワード引数で learning_rate を下げるか、predicted_size を小さくしてフォレストを安定化させます。
  • scRNA-seq の入力が対数正規化済みであることを確認します。生カウントではスケールの不一致が生じ、空間予測の精度が低下することがあります。
  • gpu がゼロ以外の場合は、GPU が利用可能であることを確認します。引数を省略するか、gpu=-1 を設定すると CPU に切り替えられます。

例

  • 「PDAC の scRNA-seq データと Visium スライドで Single2Spatial を学習し、REG1A と CLDN1 の空間発現を可視化する。」
  • 「保存済みの Single2Spatial チェックポイントを読み込み、レポート用にスポットレベルの細胞型割合を再生成する。」
  • 「omicverse のパレットで再構成された細胞型マップをプロットし、組織学的画像と比較する。」

参考資料

コメント