scanpy について
Scanpyは、単一細胞RNAシーケンシングを分析するPythonツールです。細胞集団や状態を研究する人向けに、AnnDataによるデータ管理、次元削減、クラスタリング、軌跡解析を提供します。
主な機能
- 01AnnDataによる発現・メタデータ管理
- 02品質管理と正規化
- 03PCA、UMAP、t-SNEによる次元削減
- 04細胞クラスタリングとマーカー遺伝子解析
- 05発生軌跡の推定
活用シーン
- 01単一細胞RNAシーケンシングデータの分析
- 02不均一な組織での細胞型の特定
- 03条件間での細胞集団の比較
- 04発生軌跡の調査
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ tondevrel/ scientific-agent-skills --skill scanpyインストール後、Claude Code で/scanpyを入力して読み込まれたか確認します。
詳細
Scanpy - 単一細胞解析
Scanpy は高次元の生物学的データを処理し、PCA/UMAP によって次元を削減して、組織やマイクロバイオーム内の希少な細胞集団を特定します。
使用する場面
- 単一細胞 RNA シーケンシング(scRNA-seq)データを解析する場合。
- 不均一な組織内の細胞種や細胞状態を特定する場合。
- 発生軌跡を再構築する場合。
- 条件間で細胞集団を比較する場合。
- 希少な細胞種を発見する場合。
基本原則
AnnData 形式
Scanpy は AnnData オブジェクトを使用し、発現行列、細胞メタデータ、遺伝子アノテーションをまとめて格納します。
次元削減
高次元の遺伝子発現データ(20,000 以上の遺伝子)を、可視化用に 2D/3D へ削減します(PCA → UMAP/t-SNE)。
クラスタリング
遺伝子発現空間での類似性に基づいて細胞をグループ化し、細胞種を特定します。
クイックリファレンス
標準的なインポート
import scanpy as sc
import pandas as pd
import numpy as np
基本的なパターン
# 1. Load dataset (AnnData object)
adata = sc.read_h5ad("cells.h5ad")
# Or: adata = sc.read_10x_mtx("path/to/mtx")
# 2. QC and Normalization
sc.pp.filter_cells(adata, min_genes=200)
sc.pp.filter_genes(adata, min_cells=3)
sc.pp.normalize_total(adata, target_sum=1e4)
sc.pp.log1p(adata)
# 3. Dimensionality Reduction & Visualization
sc.pp.highly_variable_genes(adata)
sc.tl.pca(adata)
sc.tl.umap(adata)
sc.pl.umap(adata, color=['cell_type', 'gene_A'])
# 4. Clustering
sc.tl.leiden(adata, resolution=0.5)
sc.pl.umap(adata, color='leiden')
重要なルール
✅ 実施すること
- scanpy の設定を行う - 進行状況を確認できるよう、
sc.settings.verbosity = 3を使用します。 - 品質の低い細胞をフィルタリングする - 遺伝子数が少なすぎる細胞や、ミトコンドリア含有量が高い細胞を除外します。
- 解析前に正規化する - シーケンシング深度の違いを考慮します。
- 高変動遺伝子を使用する - 情報量の多い遺伝子に解析対象を絞ります。
❌ 実施しないこと
- QC を省略しない - 品質の低い細胞がクラスタリングを大きく左右する場合があります。
- PCA に生のカウント値を使用しない - 必ず最初に正規化して対数変換します。
- バッチ効果を無視しない - データセットを統合する際は、バッチ補正(例:
sc.pp.harmony_integrate)を使用します。
応用パターン
軌跡推定
import cellrank as cr
# Reconstruct developmental trajectories
sc.tl.paga(adata)
sc.pl.paga(adata)
adata.uns['iroot'] = np.flatnonzero(adata.obs['cell_type'] == 'stem')[0]
sc.tl.dpt(adata)
差次的発現
# Find marker genes for each cluster
sc.tl.rank_genes_groups(adata, 'leiden', method='wilcoxon')
sc.pl.rank_genes_groups(adata, n_genes=20)
Scanpy は単一細胞生物学に革新をもたらし、研究者が組織の細胞多様性をマッピングし、細胞の分化や機能を理解できるようにしています。
コメント
Markdown 対応