第8章: シングルセル・空間解析

8. シングルセル・空間解析

学習目標

  • 本章の主要概念を説明できる(用語/前提条件含む)
  • 現実データ/ユースケースでの適用手順を述べられる
  • ベストプラクティスや落とし穴を理由とともに指摘できる
  • QC閾値、クラスタリング、UMAP表示をデータセット依存の判断として扱い、固定値を機械的に流用しない

なぜ IT 技術者に必要か

single-cell / spatial omics は、行列データ、疎行列、画像座標、細胞メタデータ、batch、サンプル由来情報をまとめて扱う解析です。IT 技術者がこの章を理解しておくと、AnnDataMuDataSeurat objectSpatialData のようなデータ構造を単なる表として扱わず、前処理・QC・バージョン・座標・ラベル由来を追跡できます。

また、UMAP やクラスタリング結果は見た目が分かりやすいため、固定QC閾値、クラスタ名、cell-cell communication、trajectory を過大解釈しやすい領域です。本章では、解析結果を可視化するだけでなく、入力、QC、正規化、次元削減、クラスタリング、アノテーション、結果解釈、限界を成果物として説明できる状態を目指します。

前提知識

  • 第5章の bulk RNA-seq、count matrix、normalization、batch、annotation version の考え方。
  • 第7章の次元削減、クラスタリング、model evaluation、data leakage、foundation model の限界。
  • 第10章の accession、version、checksum、provenance、metadata、data license / terms of use の記録方法。
  • 第11章・第12章のヒト由来データ、医療・臨床応用、公開データ利用、同意・アクセス制御の責任境界。
  • Python / R の sparse matrix、category metadata、random seed、package version を解析ログに残せること。

基本概念

single-cell / spatial 解析では、raw count matrix、feature-barcode matrix、AnnDataMuDataSeurat objectSpatialData で行・列の意味が異なる。たとえば AnnData では cells / spots などの observations が行(.obs)、genes / features が列(.var)に対応し、raw 行列やツール出力では転置が必要な場合がある。sample、batch、cell type、cluster、spatial coordinate、image metadata は、どの軸に対応する metadata かを確認してから重ねて読む。これらの object は行列、metadata、embedding、graph、画像、座標をまとめる入れ物であり、単なる表ではない。

UMAP / t-SNE の距離、cluster number、trajectory、cell-cell communication score、foundation model prediction は、前処理、QC、正規化、batch correction、random seed、参照 atlas に依存する。可視化やクラスタ名を生物学的事実や臨床判断としてそのまま扱わない。

入力データと出力データ

区分 記録すること
入力 FASTQ、count matrix、AnnDataSeurat object、画像、座標 accession、chemistry、reference、sample / batch、利用条件
QC gene/UMI count、mitochondrial fraction、doublet score、画像品質 閾値の根拠、除外数、サンプル別分布、希少細胞保持方針
中間成果物 normalized object、HVG、PCA、neighbors、UMAP package version、random seed、parameters、batch correction
出力 cluster table、marker table、cell type annotation、spatial report annotation 根拠、unknown cluster、限界、再現手順

実務上の落とし穴

  • QC 閾値を固定値として流用し、組織、核 RNA / 全細胞 RNA、希少細胞、サンプル品質の違いを無視する。
  • UMAP / t-SNE 上の距離や見た目の近さを、発生順序、系統関係、臨床的類似性として断定する。
  • cluster resolution を 1 回だけ決め、marker、metadata、参照 atlas、手動レビューを確認しない。
  • batch correction / integration で biological signal を消す、または label leakage を起こす。
  • spatial coordinate、segmentation、bin / spot / cell label を混同し、画像品質や組織切片の制約を記録しない。

標準的なワークフロー

段階 主な入力 確認すること 代表的な成果物
1. 入力確認 FASTQ、count matrix、AnnData / MuData / Seurat object、画像、座標、サンプル表 assay、species、reference、chemistry、sample / batch、利用条件、公開可否 input manifest、metadata、version、checksum
2. QC gene / UMI counts、mitochondrial fraction、doublet score、empty droplet、画像品質 固定値ではなく、組織、核 RNA / 全細胞 RNA、希少細胞保持方針、サンプル別分布で閾値を決める QC plots、除外理由、閾値変更ログ
3. 正規化・特徴選択 filtered matrix、batch metadata library size、HVG、scTransform 等の前提、batch と biological signal の混同 normalized object、HVG list、parameter log
4. 次元削減・統合 PCA、neighbors、batch labels random seed、neighbors、resolution、integration によるラベル循環や過補正 PCA / UMAP、integration diagnostics
5. クラスタリング・注釈 cluster labels、marker genes、reference atlas marker、metadata、参照データ、手動レビュー、unknown cluster の扱い cluster table、marker table、cell type annotation
6. 発展解析 trajectory、cell-cell communication、spatial neighborhood、CITE-seq / multiome / Perturb-seq 因果や時間順序の過大解釈、空間座標・画像品質、modalities の欠測 trajectory / spatial report、assumption log
7. 結果解釈・限界 figures、tables、notebook、workflow log UMAP距離、クラスタ数、communication score、foundation model prediction を単独で結論にしない report、data / code availability、limitations

8.1 シングルセルRNA-seq解析

前処理とQC:

single-cell RNA-seq の QC は、組織、サンプル調製、プラットフォーム、細胞型構成、核 RNA か全細胞 RNA かによって妥当な範囲が変わります。以下は処理の流れを示す概念例であり、max_mito_fractionmax_genes のような除外閾値は、QC 分布図、空滴・ダブレット推定、実験メタデータ、既知マーカーを確認してからデータセットごとに決めます。

QC 判定は、少なくとも次の順序で確認します。まず n_genes、総カウント、ミトコンドリア比率、ダブレット候補の分布を可視化します。次に、サンプルごとの実験メタデータと既知マーカーを照合し、最後に閾値を変えたときに主要クラスタや細胞型注釈が不自然に崩れないかを確認します。

2026年時点の運用メモ(確認日: 2026-07-15 JST):

  • Scanpy / Seurat v5 は single-cell 解析の代表的な実装だが、同じ処理名でも既定値、データ構造、拡張パッケージ、version により結果が変わる。PyPIで確認できるScanpyの最新リリースは1.12.2(2026-06-29)であり、レポートでは AnnDataMuDataSeurat objectSpatialData などのデータ構造とライブラリ version を記録する。単なるpatch releaseを本文の固定環境指定とはみなさない。
  • Visium HD / HD 3’ のような single-cell-scale spatial assay は 2 µm x 2 µm のバーコード領域や画像位置合わせを扱うため、bin、spot、segmentation、cell label を混同しない。
  • QC 閾値は「本書推奨の固定値」ではなく、QC metric の分布、サンプル品質、核 RNA / 全細胞 RNA、組織、希少細胞の保持方針を明示して決める。確認済み出典は Source notes の監査メモに集約する。

🧪 概念例

import scanpy as sc
import pandas as pd
import numpy as np

class SingleCellProcessor:
    """single-cell RNA-seq(scRNA-seq)前処理パイプライン"""
    
    def __init__(self, min_genes=200, min_cells=3,
                 max_mito_fraction=None, max_genes=None):
        self.min_genes = min_genes
        self.min_cells = min_cells
        self.max_mito_fraction = max_mito_fraction
        self.max_genes = max_genes
        
    def quality_control(self, adata):
        """
        品質管理とフィルタリング
        
        Args:
            adata: AnnData object
        """
        # sparse / dense の違いを吸収するため、Scanpy のQC指標計算を使う
        adata.var['mt'] = adata.var_names.str.startswith('MT-')
        sc.pp.calculate_qc_metrics(
            adata, qc_vars=['mt'], percent_top=None, log1p=False, inplace=True
        )
        adata.obs['percent_mito'] = adata.obs['pct_counts_mt'] / 100
        adata.obs['n_genes'] = adata.obs['n_genes_by_counts']
        
        # フィルタリング
        sc.pp.filter_cells(adata, min_genes=self.min_genes)
        sc.pp.filter_genes(adata, min_cells=self.min_cells)
        
        # 外れ値除去の閾値は固定値ではなく、データセットごとに決める。
        if self.max_mito_fraction is not None:
            adata = adata[
                adata.obs['percent_mito'] < self.max_mito_fraction
            ].copy()
        if self.max_genes is not None:
            adata = adata[adata.obs['n_genes'] < self.max_genes].copy()
        
        return adata

正規化と変動遺伝子選択: 🧪 概念例

def normalize_and_select_features(adata):
    """
    データ正規化と高変動遺伝子の選択
    """
    # Library size normalization
    sc.pp.normalize_total(adata, target_sum=1e4)
    
    # Log transformation
    sc.pp.log1p(adata)
    
    # Highly variable genes selection
    sc.pp.highly_variable_genes(
        adata, min_mean=0.0125, max_mean=3, min_disp=0.5
    )
    
    # Keep only HVGs
    adata = adata[:, adata.var.highly_variable]
    
    return adata

8.2 次元削減とクラスタリング

次元削減手法: 🧪 概念例

class DimensionReduction:
    """次元削減手法の実装"""
    
    def perform_pca(self, adata, n_comps=50):
        """主成分分析"""
        sc.pp.scale(adata, max_value=10)
        sc.tl.pca(adata, n_comps=n_comps)
        return adata
    
    def perform_umap(self, adata, n_neighbors=30):
        """UMAP埋め込み"""
        sc.pp.neighbors(adata, n_neighbors=n_neighbors)
        sc.tl.umap(adata)
        return adata

UMAP や t-SNE は高次元構造を二次元に圧縮した可視化です。図上の距離、クラスタ間の空白、枝分かれは、近傍数、前処理、バッチ補正、乱数の影響を受けます。クラスタの生物学的意味は、マーカー遺伝子、メタデータ、独立データ、実験知識で検証してから解釈します。

クラスタリング: 🧪 概念例

def cluster_cells(adata, resolution=0.5):
    """
    Leidenクラスタリング(推奨)
    """
    sc.tl.leiden(adata, resolution=resolution)
    return adata

8.3 軌跡推定と擬時間解析

軌跡推定: 🧪 概念例

class TrajectoryInference:
    """細胞分化軌跡の推定"""
    
    def perform_diffusion_map(self, adata):
        """拡散マップによる軌跡推定"""
        sc.tl.diffmap(adata)
        return adata
    
    def pseudotime_ordering(self, adata, root_cell):
        """擬時間順序付け"""
        # DPT (Diffusion Pseudotime)
        adata.uns['iroot'] = root_cell
        sc.tl.dpt(adata)
        return adata

8.4 空間トランスクリプトミクス

空間データ解析: 🔁 疑似コード(Moran’s I の計算は Squidpy 等の空間自己相関関数で実装する)

class SpatialTranscriptomics:
    """空間発現解析"""
    
    def __init__(self, adata, spatial_coords):
        self.adata = adata
        self.spatial_coords = spatial_coords
        
    def identify_spatial_patterns(self, morans_i_cutoff):
        """空間的発現パターンの同定"""
        # Moran's I統計量による空間相関
        spatial_genes = []
        
        for gene in self.adata.var_names:
            morans_i = self.calculate_morans_i(
                self.adata[:, gene].X,
                self.spatial_coords
            )
            # 閾値は空間解像度、スポット数、組織構造、検定補正に応じて設定する。
            if morans_i > morans_i_cutoff:
                spatial_genes.append(gene)
                
        return spatial_genes

8.4.1 Spatial omics のデータ単位と座標系

Spatial omics では、genes x cells の表だけでなく、画像、座標、segmentation、分子位置、細胞または組織領域、注釈 table を同じ来歴で扱う。したがって、最初に「何を 1 つの観測単位として集計したか」を決める。SpatialData は、Images、Labels、Points、Shapes、Tables と座標変換をまとめる multimodal spatial omics 用のデータ構造であり、クラスタリングや cell-cell communication の解析アルゴリズムそのものではない。実務では、データ構造・reader・座標変換・segmentation の version を固定し、別ツールへ渡す前に単位と座標系を確認する。

観点 記録すること
molecular unit spot、bin、molecule、cell、nucleus、region 何を 1 観測単位として count / feature / protein signal へ集約したか、panel または feature set
coordinate system pixel、tissue coordinate、slide coordinate、image pyramid 原点、単位、scale、rotation / crop、affine transform、画像 pyramid の level
segmentation nucleus-based、cell-boundary-based、transcript-based tool / model / version、staining channel、confidence、manual correction、境界外 molecule の扱い
registration H&E / IF image と molecular data の位置合わせ fiducial / landmark、preprocessing、transform、QC画像、失敗した領域
neighborhood 距離、kNN、隣接グラフ、組織領域、細胞型ペア radius / k、metric、mask、edge filtering、region definition、cell type annotation source

SpatialData / spatialdata-io を使う場合は、Visium、Visium HD、Xenium、CosMx、MERSCOPE / MERFISH、Akoya PhenoCycler(formerly CODEX)、Stereo-seq などの reader が、どの raw output をどの要素へ変換するかを確認する。reader が存在しても、ベンダーの format 更新、segmentation 出力、画像解像度、table の列名が変わることがある。sdata.zarr のような保存形式、reader version、元ファイルの checksum、coordinate system 名、table が注釈する region key を manifest に残す。

プラットフォーム 主な単位 強み 注意点
Visium / Visium HD spot / bin 組織全体と H&E / IF 画像を対応づけやすい。Visium HD は 2 µm x 2 µm の barcoded squares と binning を扱える。 spot / bin は細胞そのものではない。bin size、deconvolution、cell segmentation、Space Ranger version、画像位置合わせを記録しないと single-cell 解像度の解釈が過大になる。
Xenium / CosMx / MERFISH molecule / cell in situ imaging により molecule 座標、cell segmentation、targeted gene panel を高解像度で扱える。 gene panel、molecule decoding / filtering、cell boundary、nucleus-only segmentation、画像登録の誤差が結果に影響する。panel 外遺伝子の欠測を発現しない遺伝子と混同しない。
CODEX / spatial proteomics protein / cell / region 抗体 panel によるタンパク質レベルの空間 phenotype と tissue region を扱える。 antibody panel、cycle / staining batch、画像正規化、segmentation、channel spillover、batch effect を記録し、RNA-seq の発現量と直接同一視しない。

解析レポートには、少なくとも次を残す。

  • platformchemistry_or_kit_versionreaderreader_versionraw_file_checksum
  • image_preprocessingcoordinate_systemtransformregistration_qc
  • segmentation_methodsegmentation_model_versionsegmentation_input_channelbinning_resolution
  • normalization_methodcell_type_annotation_sourceneighborhood_definition
  • cell_cell_communication_assumptionsexcluded_regionslicense_or_termsretrieved_at

spatial neighborhood や cell-cell communication は、距離・隣接グラフ・組織 mask・annotation の定義に依存する仮説生成である。近い細胞型ペアや ligand-receptor score は、物理的接触、時間順序、因果、臨床的有効性を直接証明しない。図には radius / k、segmentation、cell type annotation、背景 tissue region を併記し、主要結論は別データ、染色、機能実験、専門家レビューで確認する。

8.5 最新のsingle-cell / spatial手法と評価

統合・バッチ補正:

  • scVI/Harmony等でバッチ効果を抑えつつクラスタリングや可視化を行う。
  • 統合後もバッチ残存やラベル循環がないかを確認する。

Foundation Modelの活用:

  • scGPT等は注釈、バッチ補正、摂動予測などの補助に使われる。
  • ゼロショットの過信を避け、参照データや実験検証と併用する。

空間解析の実務的な流れ:

  • Squidpy等の専用ライブラリで空間近傍・共局在・空間クラスタリングを扱う。
  • SpatialData などのデータ構造で、画像、labels、points、shapes、tables、座標変換をまとめて管理する。
  • 空間情報は解釈に影響が大きいため、画像品質、座標精度、segmentation、neighborhood 定義を前提条件として明記する。

評価の注意点:

  • データリーク(学習・評価の混在)を避ける。
  • バッチ効果・ラベル循環の影響を検証する。
  • 再現性のために前処理・パラメータ・バージョンを固定する。

小さな実例

PBMC 3k のような小規模公開データでは、count matrix、sample metadata、QC plot、filtered object、PCA / UMAP、cluster table、marker table を最小成果物としてそろえる。目的は「きれいな UMAP」を作ることではなく、QC と annotation の判断根拠を追跡できる形にすることである。

手順 確認すること 失敗例
入力確認 chemistry、reference、sample、利用条件 データ由来を記録しない
QC gene/UMI分布、mitochondrial fraction、doublet 固定閾値だけで除外する
正規化 library size、HVG、batch batch と phenotype を混同する
次元削減 PCA、neighbors、random seed UMAPの見た目だけで判断する
注釈 marker、reference atlas、manual review cluster名を自動で確定する

結果の読み方

single-cell / spatial の結果は、QC 前後の細胞数、除外理由、normalization、HVG、neighbors、resolution、random seed、annotation 根拠と一緒に読む。UMAP / t-SNE は可視化であり、軸や距離に直接的な生物学的単位はない。

marker gene や cluster label は仮説生成に有用だが、細胞型や疾患状態を単独で確定しない。spatial 解析では、bin、spot、cell segmentation、画像位置合わせ、組織切片品質の違いが結果に影響する。

限界と注意点

scRNA-seq は解離バイアス、dropout、doublet、ambient RNA、batch、cell type composition の影響を受ける。spatial 解析は解像度、画像位置合わせ、segmentation、組織処理条件に依存する。臨床応用や患者層別化へ接続する場合は、外部検証、専門家レビュー、同意・アクセス制御、規制・倫理手続きを別途確認する。

🎯 認定試験ポイント

重要概念チェックリスト

single-cell RNA-seq基礎 ⭐⭐⭐

  • scRNA-seqとbulk RNA-seqの技術的違いと特徴を理解している
  • ドロップアウト(零過多データ)の原因と対処法を把握している
  • 品質管理指標(遺伝子数・ミトコンドリア比率等)を説明できる
  • 細胞周期・アポトーシスの影響と除去方法を理解している

次元削減・クラスタリング ⭐⭐⭐

  • PCA・t-SNE・UMAPの特徴とscRNA-seqでの使い分けを理解している
  • クラスタリング手法(k-means・Louvain・Leiden)の原理と適用
  • クラスター数の決定方法と解像度パラメータの調整
  • バッチ効果の検出と補正(統合)手法を把握している

細胞型同定・機能解析 ⭐⭐

  • マーカー遺伝子の同定手法と統計的有意性検定
  • 細胞型アノテーションの手順と参照データベースの活用
  • GO enrichment解析とパスウェイ解析の細胞型特異的適用
  • 細胞間相互作用の推定手法とネットワーク解析

軌跡推定・擬時間解析 ⭐⭐

  • 擬時間(pseudotime)の概念と生物学的意義を理解している
  • 軌跡推定手法(Monocle・Slingshot・PAGA)の原理と特徴
  • 分岐点の同定と細胞運命決定メカニズムの推定
  • RNA velocity解析の原理とスプライシング情報の活用

典型的な出題パターン

【技術的課題】 🧪 概念例

問題例: scRNA-seqデータで多くの遺伝子の発現値が0となる
「ドロップアウト」現象の主な原因を3つ挙げ、
それぞれの対処法を述べよ。

解答:
1) 技術的限界: mRNA捕捉効率の低さ → 深いシークエンシング
2) 生物学的原因: 細胞型特異的低発現 → 細胞型参照データ活用
3) サンプル品質: 細胞ダメージ・RNA分解 → 品質フィルタリング

【解析手順】 🧪 概念例

問題例: scRNA-seqデータから稀少細胞集団を同定したい場合、
適切な解析パラメータ設定を述べよ。

解答:
1) 細胞フィルタリング: 低品質細胞を除外しつつ稀少細胞を保持
2) 正規化: 稀少細胞の発現パターンを保持する手法選択
3) クラスタリング: 高解像度設定で細かいクラスターを検出(低解像度は粗いクラスター)
4) 統計的検定: 稀少性を考慮した有意性閾値の調整

【空間解析】 🧪 概念例

問題例: 空間トランスクリプトーム解析で得られる情報と
従来のscRNA-seqで得られる情報の違いを説明せよ。

解答:
空間トランスクリプトーム:
- 組織内空間座標情報を保持
- 組織アーキテクチャや細胞間相互作用の空間的パターンを解析
- 病理的変化の空間分布を直接観察

従来scRNA-seq:
- 全組織レベルでの細胞タイプの同定・構成比推定が可能
- 空間情報は失われる
- 細胞間相互作用は推定によらざるを得ない

関連する付録・章

最小入出力(期待成果物/期待ログ)

  • 入力: カウント行列(genes×cells)またはFASTQ(10x等)、サンプル/バッチ情報
  • 出力(期待成果物): QC後データ(フィルタ済み)、埋め込み(UMAP等)とクラスタ、マーカー遺伝子リスト(最小限)
  • 期待ログ(例): QC前後の細胞数/遺伝子数、フィルタ条件、正規化・次元削減の主要パラメータが残る

Source notes / 次の一歩

2026年時点の更新メモ

  • Scanpy、Seurat v5、AnnData、MuData、SpatialData、Visium HD などは version、データ構造、既定値、入力単位が異なるため、解析ログに確認日と version を残す。
  • SpatialData / spatialdata-io は画像、labels、points、shapes、tables、座標変換を束ねる相互運用レイヤーとして扱い、解析アルゴリズムや生物学的結論と混同しない。
  • QC 閾値、UMAP / t-SNE、cluster、trajectory、cell-cell communication、spatial neighborhood、foundation model prediction は、単独で生物学的・臨床的結論を確定しない。
  • 更新根拠は 2026年版出典監査メモの single-cell / spatial 項目と、付録F/Hの参照一覧へ集約する(確認日: 2026-06-05 JST)。

前へ: 機械学習・AI応用 目次 次へ: 集団ゲノミクス

演習

  1. 本章の手順をサンプルデータで再現し、各ステップのログと主要指標を記録して提出せよ。
  2. 代替ツール/パラメータで同等の分析を実施し、結果差分と選定理由を考察せよ。

具体課題例

  • 公開データを用いた再現(SRA/GEO/ArrayExpressから実在アクセッションを選定し)、前処理→主解析→結果要約まで実施。
  • 代替ツールの比較 (例: ツールA vs ツールB)。処理時間/メモリ/精度など評価指標を定義し、比較表を作成。
  • 成果物一式(レポート、使用コマンド/パラメータ、ツール/ライブラリのバージョン、入力/出力、実行ログ、MultiQC等のレポート、図表)を添付。

データセット選定ガイダンス(参考)

  • 小規模(総容量≲1GB、サンプル数≲数点)を優先し、短時間で再現可能なものを選ぶ。
  • レビュアブル(権利許諾・再配布条件)を確認。個人情報・機微情報は扱わない。
  • 例: (RNA-seq)GEOで「RNA-seq AND muscle」等のクエリで小規模を選定/(single-cell)10x GenomicsのPBMC 3k 公開データ/(集団ゲノミクス)1000 Genomesの一部サブセット。