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

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

前処理とQC:

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

class SingleCellProcessor:
    """scRNA-seq前処理パイプライン"""
    
    def __init__(self, min_genes=200, min_cells=3):
        self.min_genes = min_genes
        self.min_cells = min_cells
        
    def quality_control(self, adata):
        """
        品質管理とフィルタリング
        
        Args:
            adata: AnnData object
        """
        # ミトコンドリア遺伝子の割合計算
        mito_genes = adata.var_names.str.startswith('MT-')
        adata.obs['percent_mito'] = np.sum(
            adata[:, mito_genes].X, axis=1).A1 / np.sum(adata.X, axis=1).A1
        
        # 品質指標の計算
        adata.obs['n_genes'] = (adata.X > 0).sum(axis=1)
        
        # フィルタリング
        sc.pp.filter_cells(adata, min_genes=self.min_genes)
        sc.pp.filter_genes(adata, min_cells=self.min_cells)
        
        # 外れ値除去
        adata = adata[adata.obs['percent_mito'] < 0.2]
        adata = adata[adata.obs['n_genes'] < 2500]
        
        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

クラスタリング:

def cluster_cells(adata, resolution=0.5):
    """
    Louvainクラスタリング
    """
    sc.tl.louvain(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 空間トランスクリプトミクス

空間データ解析:

class SpatialTranscriptomics:
    """空間発現解析"""
    
    def __init__(self, adata, spatial_coords):
        self.adata = adata
        self.spatial_coords = spatial_coords
        
    def identify_spatial_patterns(self):
        """空間的発現パターンの同定"""
        # 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 > 0.3:  # 閾値
                spatial_genes.append(gene)
                
        return spatial_genes

🎯 認定試験ポイント

重要概念チェックリスト

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:
- 全組織レベルでの細胞たかの釣り可能
- 空間情報は失われる
- 細胞間相互作用は推定によらざるを得ない

関連する付録・章

  • 付録G: 認定試験全体の対策情報
  • 付録H: single-cell解析ツール・データベース一覧
  • 第5章: トランスクリプトーム解析(bulk RNA-seqとの比較)
  • 第7章: 機械学習・AI手法(次元削減・クラスタリング)
  • 第14章: 臨床応用(精密医療への応用)

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