mcpField
S
scanpy

scanpy

github.com/crazymsnデータ・データベース2336 回インストール22 週間前に更新
リポジトリ

scanpy について

scanpy は、AnnData を用いたスケーラブルなシングルセル RNA-seq 解析のための Python ツールキットおよびスキルです。品質管理から前処理、クラスタリング、細胞注釈、軌跡解析、可視化まで扱います。

主な機能

  1. 01AnnData によるデータ管理
  2. 02品質管理と正規化
  3. 03PCA、UMAP、t-SNE
  4. 04クラスタリングとマーカー検出
  5. 05細胞注釈と軌跡解析
  6. 06作図と解析テンプレート

活用シーン

  1. 01scRNA-seq データの選別と前処理
  2. 02細胞クラスターとマーカー遺伝子の特定
  3. 03発現データに基づく細胞型の注釈
  4. 04軌跡と疑似時間の可視化

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/crazymsn/academic-skills --skill scanpy

インストール後、Claude Code で/scanpyを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

assets/
analysis_template.py
references/
api_reference.md
plotting_guide.md
standard_workflow.md
scripts/
qc_analysis.py

詳細

Scanpy: シングルセル解析

概要

Scanpy は、AnnData 上に構築された、スケーラブルな単一細胞 RNA-seq データ解析用の Python ツールキットです。品質管理、正規化、次元削減、クラスタリング、マーカー遺伝子の特定、可視化、軌跡解析を含む、単一細胞ワークフロー全体にこのスキルを適用します。

このスキルを使用するタイミング

このスキルは次の場合に使用します:

  • 単一細胞 RNA-seq データ(.h5ad、10X、CSV 形式)を解析するとき
  • scRNA-seq データセットの品質管理を行うとき
  • UMAP、t-SNE、または PCA の可視化を作成するとき
  • 細胞クラスターを特定し、マーカー遺伝子を見つけるとき
  • 遺伝子発現に基づいて細胞型をアノテーションするとき
  • 軌跡推定または擬時間解析を実施するとき
  • 論文品質の単一細胞プロットを生成するとき

クイックスタート

基本的なインポートとセットアップ
import scanpy as sc
import pandas as pd
import numpy as np

# Configure settings
sc.settings.verbosity = 3
sc.settings.set_figure_params(dpi=80, facecolor='white')
sc.settings.figdir = './figures/'
データの読み込み
# From 10X Genomics
adata = sc.read_10x_mtx('path/to/data/')
adata = sc.read_10x_h5('path/to/data.h5')

# From h5ad (AnnData format)
adata = sc.read_h5ad('path/to/data.h5ad')

# From CSV
adata = sc.read_csv('path/to/data.csv')
AnnData 構造の理解

AnnData オブジェクトは、scanpy におけるコアのデータ構造です:

adata.X          # Expression matrix (cells × genes)
adata.obs        # Cell metadata (DataFrame)
adata.var        # Gene metadata (DataFrame)
adata.uns        # Unstructured annotations (dict)
adata.obsm       # Multi-dimensional cell data (PCA, UMAP)
adata.raw        # Raw data backup

# Access cell and gene names
adata.obs_names  # Cell barcodes
adata.var_names  # Gene names

標準的な解析ワークフロー

1. 品質管理

低品質の細胞と遺伝子を特定してフィルタリングします:

# Identify mitochondrial genes
adata.var['mt'] = adata.var_names.str.startswith('MT-')

# Calculate QC metrics
sc.pp.calculate_qc_metrics(adata, qc_vars=['mt'], inplace=True)

# Visualize QC metrics
sc.pl.violin(adata, ['n_genes_by_counts', 'total_counts', 'pct_counts_mt'],
             jitter=0.4, multi_panel=True)

# Filter cells and genes
sc.pp.filter_cells(adata, min_genes=200)
sc.pp.filter_genes(adata, min_cells=3)
adata = adata[adata.obs.pct_counts_mt < 5, :]  # Remove high MT% cells

自動解析には QC スクリプトを使用します:

python scripts/qc_analysis.py input_file.h5ad --output filtered.h5ad
2. 正規化と前処理
# Normalize to 10,000 counts per cell
sc.pp.normalize_total(adata, target_sum=1e4)

# Log-transform
sc.pp.log1p(adata)

# Save raw counts for later
adata.raw = adata

# Identify highly variable genes
sc.pp.highly_variable_genes(adata, n_top_genes=2000)
sc.pl.highly_variable_genes(adata)

# Subset to highly variable genes
adata = adata[:, adata.var.highly_variable]

# Regress out unwanted variation
sc.pp.regress_out(adata, ['total_counts', 'pct_counts_mt'])

# Scale data
sc.pp.scale(adata, max_value=10)
3. 次元削減
# PCA
sc.tl.pca(adata, svd_solver='arpack')
sc.pl.pca_variance_ratio(adata, log=True)  # Check elbow plot

# Compute neighborhood graph
sc.pp.neighbors(adata, n_neighbors=10, n_pcs=40)

# UMAP for visualization
sc.tl.umap(adata)
sc.pl.umap(adata, color='leiden')

# Alternative: t-SNE
sc.tl.tsne(adata)
4. クラスタリング
# Leiden clustering (recommended)
sc.tl.leiden(adata, resolution=0.5)
sc.pl.umap(adata, color='leiden', legend_loc='on data')

# Try multiple resolutions to find optimal granularity
for res in [0.3, 0.5, 0.8, 1.0]:
    sc.tl.leiden(adata, resolution=res, key_added=f'leiden_{res}')
5. マーカー遺伝子の特定
# Find marker genes for each cluster
sc.tl.rank_genes_groups(adata, 'leiden', method='wilcoxon')

# Visualize results
sc.pl.rank_genes_groups(adata, n_genes=25, sharey=False)
sc.pl.rank_genes_groups_heatmap(adata, n_genes=10)
sc.pl.rank_genes_groups_dotplot(adata, n_genes=5)

# Get results as DataFrame
markers = sc.get.rank_genes_groups_df(adata, group='0')
6. 細胞型のアノテーション
# Define marker genes for known cell types
marker_genes = ['CD3D', 'CD14', 'MS4A1', 'NKG7', 'FCGR3A']

# Visualize markers
sc.pl.umap(adata, color=marker_genes, use_raw=True)
sc.pl.dotplot(adata, var_names=marker_genes, groupby='leiden')

# Manual annotation
cluster_to_celltype = {
    '0': 'CD4 T cells',
    '1': 'CD14+ Monocytes',
    '2': 'B cells',
    '3': 'CD8 T cells',
}
adata.obs['cell_type'] = adata.obs['leiden'].map(cluster_to_celltype)

# Visualize annotated types
sc.pl.umap(adata, color='cell_type', legend_loc='on data')
7. 結果の保存
# Save processed data
adata.write('results/processed_data.h5ad')

# Export metadata
adata.obs.to_csv('results/cell_metadata.csv')
adata.var.to_csv('results/gene_metadata.csv')

よくあるタスク

論文品質のプロットの作成
# Set high-quality defaults
sc.settings.set_figure_params(dpi=300, frameon=False, figsize=(5, 5))
sc.settings.file_format_figs = 'pdf'

# UMAP with custom styling
sc.pl.umap(adata, color='cell_type',
           palette='Set2',
           legend_loc='on data',
           legend_fontsize=12,
           legend_fontoutline=2,
           frameon=False,
           save='_publication.pdf')

# Heatmap of marker genes
sc.pl.heatmap(adata, var_names=genes, groupby='cell_type',
              swap_axes=True, show_gene_labels=True,
              save='_markers.pdf')

# Dot plot
sc.pl.dotplot(adata, var_names=genes, groupby='cell_type',
              save='_dotplot.pdf')

包括的な可視化の例については、references/plotting_guide.md を参照してください。

軌跡推定
# PAGA (Partition-based graph abstraction)
sc.tl.paga(adata, groups='leiden')
sc.pl.paga(adata, color='leiden')

# Diffusion pseudotime
adata.uns['iroot'] = np.flatnonzero(adata.obs['leiden'] == '0')[0]
sc.tl.dpt(adata)
sc.pl.umap(adata, color='dpt_pseudotime')
条件間の差次的発現解析
# Compare treated vs control within cell types
adata_subset = adata[adata.obs['cell_type'] == 'T cells']
sc.tl.rank_genes_groups(adata_subset, groupby='condition',
                         groups=['treated'], reference='control')
sc.pl.rank_genes_groups(adata_subset, groups=['treated'])
遺伝子セットスコアリング
# Score cells for gene set expression
gene_set = ['CD3D', 'CD3E', 'CD3G']
sc.tl.score_genes(adata, gene_set, score_name='T_cell_score')
sc.pl.umap(adata, color='T_cell_score')
バッチ補正
# ComBat batch correction
sc.pp.combat(adata, key='batch')

# Alternative: use Harmony or scVI (separate packages)

調整すべき主要パラメーター

品質管理
  • min_genes: 細胞あたりの最小遺伝子数(通常 200〜500)
  • min_cells: 遺伝子あたりの最小細胞数(通常 3〜10)
  • pct_counts_mt: ミトコンドリア割合の閾値(通常 5〜20%)
正規化
  • target_sum: 細胞あたりの目標カウント数(デフォルトは 1e4)
特徴量選択
  • n_top_genes: HVG の数(通常 2000〜3000)
  • min_mean、max_mean、min_disp: HVG 選択のパラメーター
次元削減
  • n_pcs: 主成分の数(分散比プロットで確認)
  • n_neighbors: 近傍数(通常 10〜30)
クラスタリング
  • resolution: クラスタリングの粒度(0.4〜1.2、値が大きいほどクラスター数が増加)

よくある落とし穴とベストプラクティス

  1. 必ず生カウントを保存する: 遺伝子をフィルタリングする前に adata.raw = adata を実行します
  2. QC プロットを慎重に確認する: データセットの品質に基づいて閾値を調整します
  3. Louvain より Leiden を使用する: より効率的で、より良い結果が得られます
  4. 複数のクラスタリング解像度を試す: 最適な粒度を見つけます
  5. 細胞型アノテーションを検証する: 複数のマーカー遺伝子を使用します
  6. 遺伝子発現プロットには use_raw=True を使用する: 元のカウントを表示します
  7. PCA の分散比を確認する: 最適な PC の数を決定します
  8. 中間結果を保存する: 長いワークフローは途中で失敗することがあります

同梱リソース

scripts/qc_analysis.py

指標の計算、プロットの生成、データのフィルタリングを行う自動品質管理スクリプト:

python scripts/qc_analysis.py input.h5ad --output filtered.h5ad \
    --mt-threshold 5 --min-genes 200 --min-cells 3
references/standard_workflow.md

次の内容について、詳細な説明とコード例を含む完全な段階的ワークフロー:

  • データの読み込みとセットアップ
  • 可視化を伴う品質管理
  • 正規化とスケーリング
  • 特徴量選択
  • 次元削減(PCA、UMAP、t-SNE)
  • クラスタリング(Leiden、Louvain)
  • マーカー遺伝子の特定
  • 細胞型のアノテーション
  • 軌跡推定
  • 差次的発現解析

ゼロから完全な解析を行うときは、このリファレンスを読んでください。

references/api_reference.md

モジュール別に整理された scanpy 関数のクイックリファレンスガイド:

  • データの読み書き(sc.read_*、adata.write_*)
  • 前処理(sc.pp.*)
  • ツール(sc.tl.*)
  • プロット(sc.pl.*)
  • AnnData の構造と操作
  • 設定とユーティリティ

関数のシグネチャや一般的なパラメーターを素早く調べるときに使用してください。

references/plotting_guide.md

以下を含む包括的な可視化ガイドです。

  • 品質管理プロット
  • 次元削減の可視化
  • クラスタリングの可視化
  • マーカー遺伝子プロット(ヒートマップ、ドットプロット、バイオリンプロット)
  • 軌跡および擬時間プロット
  • 出版品質のカスタマイズ
  • マルチパネル図
  • カラーパレットとスタイル設定

論文投稿用の図を作成する際は、このガイドを参照してください。

assets/analysis_template.py

データの読み込みから細胞タイプのアノテーションまでの完全なワークフローを提供する分析テンプレートです。新しい分析にはこのテンプレートをコピーしてカスタマイズしてください。

cp assets/analysis_template.py my_analysis.py
# Edit parameters and run
python my_analysis.py

このテンプレートには、設定可能なパラメータと分かりやすいコメント付きで、標準的なすべてのステップが含まれています。

追加リソース

効果的な分析のためのヒント

  1. テンプレートから始める: assets/analysis_template.py を出発点として使用します
  2. まず QC スクリプトを実行する: 初期フィルタリングには scripts/qc_analysis.py を使用します
  3. 必要に応じて参照資料を確認する: ワークフローと API のリファレンスをコンテキストに読み込みます
  4. クラスタリングを繰り返し調整する: 複数の解像度と可視化手法を試します
  5. 生物学的に検証する: マーカー遺伝子が想定される細胞タイプと一致するか確認します
  6. パラメータを記録する: QC のしきい値と分析設定を記録します
  7. チェックポイントを保存する: 主要なステップで中間結果を書き出します

コメント