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応用 | 目次 | 次へ: 集団ゲノミクス |