はじめに:SeuratとScanpyとは?
- Seurat:R言語ベースのシングルセルRNA-seq解析パッケージ。豊富な可視化と柔軟なクラスタリング機能が特徴。
- Scanpy:Pythonベースで高速処理が得意。大規模データ解析や自動化に向く。
両者は解析の目的や使用環境に応じて使い分けられます。
【共通】解析ワークフローの全体像
- データ読み込み
- 前処理(フィルタリング、正規化、スケーリング)
- 次元圧縮(PCA, UMAP, t-SNE)
- クラスタリング
- マーカー遺伝子の抽出
- 注釈(細胞タイプの同定)
- 差次的発現解析(DEG)
- 可視化
Seurat(R)の解析手順(例:10xデータ)
rコピーする編集するlibrary(Seurat)
# 1. データ読み込み
data <- Read10X(data.dir = "path/to/data")
seurat_obj <- CreateSeuratObject(counts = data)
# 2. 前処理
seurat_obj <- subset(seurat_obj, subset = nFeature_RNA > 200 & percent.mt < 5)
seurat_obj <- NormalizeData(seurat_obj)
seurat_obj <- FindVariableFeatures(seurat_obj)
# 3. 次元圧縮とクラスタリング
seurat_obj <- ScaleData(seurat_obj)
seurat_obj <- RunPCA(seurat_obj)
seurat_obj <- FindNeighbors(seurat_obj, dims = 1:10)
seurat_obj <- FindClusters(seurat_obj, resolution = 0.5)
seurat_obj <- RunUMAP(seurat_obj, dims = 1:10)
# 4. 可視化
DimPlot(seurat_obj, reduction = "umap", label = TRUE)
# 5. マーカー遺伝子と注釈
markers <- FindAllMarkers(seurat_obj)
Scanpy(Python)の解析手順(例:h5ファイル)
pythonコピーする編集するimport scanpy as sc
# 1. データ読み込み
adata = sc.read_10x_h5("path/to/data.h5")
# 2. 前処理
sc.pp.filter_cells(adata, min_genes=200)
sc.pp.filter_genes(adata, min_cells=3)
adata.var['mt'] = adata.var_names.str.startswith('MT-')
sc.pp.calculate_qc_metrics(adata, inplace=True)
adata = adata[adata.obs.pct_counts_mt < 5, :]
sc.pp.normalize_total(adata)
sc.pp.log1p(adata)
sc.pp.highly_variable_genes(adata, n_top_genes=2000)
adata = adata[:, adata.var.highly_variable]
# 3. 次元圧縮とクラスタリング
sc.pp.scale(adata)
sc.tl.pca(adata)
sc.pp.neighbors(adata)
sc.tl.umap(adata)
sc.tl.leiden(adata)
# 4. 可視化
sc.pl.umap(adata, color=['leiden'])
# 5. マーカー遺伝子
sc.tl.rank_genes_groups(adata, 'leiden', method='t-test')
sc.pl.rank_genes_groups(adata, n_genes=10)
Seurat vs Scanpy:どっちがオススメ?
項目 | Seurat(R) | Scanpy(Python) |
---|---|---|
言語 | R | Python |
学習コスト | Rユーザー向き | Python経験者向き |
データ規模 | 中規模(数万細胞まで) | 大規模(数十万細胞以上もOK) |
可視化 | 洗練されたグラフィック | カスタマイズ性高い |
処理速度 | やや遅い(とくに大規模) | 高速 |
外部ツール連携 | Rパッケージとの連携強い | NumPy/Pandasとの相性が良い |
まとめ:まずは使いやすい方から始めよう!
- 少数~中規模データで直感的に解析したい人 → Seurat
- Pythonが得意で大規模データや自動化を視野に入れたい人 → Scanpy
どちらも無料でドキュメントが豊富なので、まずはチュートリアルを動かしながら覚えていくのが最短ルートです!