scanpy
シングルセルRNA-seqデータの解析を行うスキルです。.h5adや10X形式のデータの読み込み、品質管理、正規化、PCA/UMAP/t-SNEによる次元削減、Leidenクラスタリング、マーカー遺伝子の同定、細胞タイプのアノテーション、トラジェクトリ解析など、scRNA-seq解析に必要な一連の処理をサポートします。
description の原文を見る
Single-cell RNA-seq analysis. Load .h5ad/10X data, QC, normalization, PCA/UMAP/t-SNE, Leiden clustering, marker genes, cell type annotation, trajectory, for scRNA-seq analysis.
SKILL.md 本文
Scanpy: Single-Cell Analysis
概要
Scanpy は、AnnData に基づいて構築されたスケーラブルな Python ツールキットで、単一細胞 RNA-seq データを分析します。このスキルは、品質管理、正規化、次元削減、クラスタリング、マーカー遺伝子の同定、可視化、軌跡解析を含む完全な単一細胞ワークフローに適用できます。
このスキルを使用する時期
このスキルは以下の場合に使用してください:
- 単一細胞 RNA-seq データの分析(.h5ad, 10X, CSV 形式)
- scRNA-seq データセットの品質管理の実施
- UMAP、t-SNE、または PCA 可視化の作成
- 細胞クラスタの同定とマーカー遺伝子の検出
- 遺伝子発現に基づく細胞タイプのアノテーション
- 軌跡推論または疑似時間解析の実施
- 出版品質の単一細胞プロットの生成
クイックスタート
基本的なインポートとセットアップ
import scanpy as sc
import pandas as pd
import numpy as np
# 設定を構成
sc.settings.verbosity = 3
sc.settings.set_figure_params(dpi=80, facecolor='white')
sc.settings.figdir = './figures/'
データの読み込み
# 10X Genomics から
adata = sc.read_10x_mtx('path/to/data/')
adata = sc.read_10x_h5('path/to/data.h5')
# h5ad(AnnData 形式)から
adata = sc.read_h5ad('path/to/data.h5ad')
# CSV から
adata = sc.read_csv('path/to/data.csv')
AnnData 構造の理解
AnnData オブジェクトは scanpy のコア データ構造です:
adata.X # 発現行列(細胞 × 遺伝子)
adata.obs # 細胞メタデータ(DataFrame)
adata.var # 遺伝子メタデータ(DataFrame)
adata.uns # 構造化されていないアノテーション(dict)
adata.obsm # 多次元細胞データ(PCA, UMAP)
adata.raw # 生データのバックアップ
# 細胞および遺伝子名にアクセス
adata.obs_names # 細胞バーコード
adata.var_names # 遺伝子名
標準分析ワークフロー
1. 品質管理
低品質な細胞と遺伝子を特定してフィルタリングします:
# ミトコンドリア遺伝子を特定
adata.var['mt'] = adata.var_names.str.startswith('MT-')
# QC メトリクスを計算
sc.pp.calculate_qc_metrics(adata, qc_vars=['mt'], inplace=True)
# QC メトリクスを可視化
sc.pl.violin(adata, ['n_genes_by_counts', 'total_counts', 'pct_counts_mt'],
jitter=0.4, multi_panel=True)
# 細胞と遺伝子をフィルタリング
sc.pp.filter_cells(adata, min_genes=200)
sc.pp.filter_genes(adata, min_cells=3)
adata = adata[adata.obs.pct_counts_mt < 5, :] # 高 MT% 細胞を除去
自動分析用の QC スクリプトを使用してください:
python scripts/qc_analysis.py input_file.h5ad --output filtered.h5ad
2. 正規化と前処理
# 細胞あたり 10,000 カウントに正規化
sc.pp.normalize_total(adata, target_sum=1e4)
# ログ変換
sc.pp.log1p(adata)
# 後で使用するため生カウントを保存
adata.raw = adata
# 高可変性遺伝子を同定
sc.pp.highly_variable_genes(adata, n_top_genes=2000)
sc.pl.highly_variable_genes(adata)
# 高可変性遺伝子のサブセット
adata = adata[:, adata.var.highly_variable]
# 不要な変動を回帰
sc.pp.regress_out(adata, ['total_counts', 'pct_counts_mt'])
# データをスケーリング
sc.pp.scale(adata, max_value=10)
3. 次元削減
# PCA
sc.tl.pca(adata, svd_solver='arpack')
sc.pl.pca_variance_ratio(adata, log=True) # エルボープロットを確認
# 近傍グラフを計算
sc.pp.neighbors(adata, n_neighbors=10, n_pcs=40)
# 可視化用の UMAP
sc.tl.umap(adata)
sc.pl.umap(adata, color='leiden')
# 代替: t-SNE
sc.tl.tsne(adata)
4. クラスタリング
# Leiden クラスタリング(推奨)
sc.tl.leiden(adata, resolution=0.5)
sc.pl.umap(adata, color='leiden', legend_loc='on data')
# 複数の解像度を試して最適な粒度を見つけます
for res in [0.3, 0.5, 0.8, 1.0]:
sc.tl.leiden(adata, resolution=res, key_added=f'leiden_{res}')
5. マーカー遺伝子の同定
# 各クラスタのマーカー遺伝子を検出
sc.tl.rank_genes_groups(adata, 'leiden', method='wilcoxon')
# 結果を可視化
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)
# 結果を DataFrame として取得
markers = sc.get.rank_genes_groups_df(adata, group='0')
6. 細胞タイプのアノテーション
# 既知の細胞タイプのマーカー遺伝子を定義
marker_genes = ['CD3D', 'CD14', 'MS4A1', 'NKG7', 'FCGR3A']
# マーカーを可視化
sc.pl.umap(adata, color=marker_genes, use_raw=True)
sc.pl.dotplot(adata, var_names=marker_genes, groupby='leiden')
# 手動アノテーション
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)
# アノテーション済みの種を可視化
sc.pl.umap(adata, color='cell_type', legend_loc='on data')
7. 結果を保存
# 処理済みデータを保存
adata.write('results/processed_data.h5ad')
# メタデータをエクスポート
adata.obs.to_csv('results/cell_metadata.csv')
adata.var.to_csv('results/gene_metadata.csv')
一般的なタスク
出版品質のプロットの作成
# 高品質のデフォルトを設定
sc.settings.set_figure_params(dpi=300, frameon=False, figsize=(5, 5))
sc.settings.file_format_figs = 'pdf'
# カスタムスタイルの UMAP
sc.pl.umap(adata, color='cell_type',
palette='Set2',
legend_loc='on data',
legend_fontsize=12,
legend_fontoutline=2,
frameon=False,
save='_publication.pdf')
# マーカー遺伝子のヒートマップ
sc.pl.heatmap(adata, var_names=genes, groupby='cell_type',
swap_axes=True, show_gene_labels=True,
save='_markers.pdf')
# ドットプロット
sc.pl.dotplot(adata, var_names=genes, groupby='cell_type',
save='_dotplot.pdf')
総合的な可視化の例については references/plotting_guide.md を参照してください。
軌跡推論
# PAGA(パーティション基準グラフ抽象化)
sc.tl.paga(adata, groups='leiden')
sc.pl.paga(adata, color='leiden')
# 拡散疑似時間
adata.uns['iroot'] = np.flatnonzero(adata.obs['leiden'] == '0')[0]
sc.tl.dpt(adata)
sc.pl.umap(adata, color='dpt_pseudotime')
条件間の差分発現
# 細胞タイプ内での処理対照の比較
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'])
遺伝子セットスコアリング
# 遺伝子セット発現の細胞スコア
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 バッチ補正
sc.pp.combat(adata, key='batch')
# 代替: Harmony または scVI を使用(個別パッケージ)
調整する主要パラメータ
品質管理
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、高いほどクラスタが多い)
一般的な落とし穴とベストプラクティス
- 生カウントを常に保存する: 遺伝子をフィルタリングする前に
adata.raw = adata - QC プロットを注意深く確認する: データセットの品質に基づいて閾値を調整
- Louvain より Leiden を使用する: より効率的でより良い結果
- 複数のクラスタリング解像度を試す: 最適な粒度を見つける
- 細胞タイプのアノテーションを検証する: 複数のマーカー遺伝子を使用
- 遺伝子発現プロットで
use_raw=Trueを使用する: 元のカウントを表示 - PCA 分散比を確認する: 最適な PC 数を決定
- 中間結果を保存する: 長いワークフローは途中で失敗する可能性があります
バンドルされたリソース
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
# パラメータを編集して実行
python my_analysis.py
テンプレートには、すべての標準的なステップと構成可能なパラメータおよび有用なコメントが含まれています。
追加のリソース
- scanpy 公式ドキュメント: https://scanpy.readthedocs.io/
- Scanpy チュートリアル: https://scanpy-tutorials.readthedocs.io/
- scverse エコシステム: https://scverse.org/(関連ツール: squidpy、scvi-tools、cellrank)
- ベストプラクティス: Luecken & Theis (2019) "Current best practices in single-cell RNA-seq"
効果的な分析のためのヒント
- テンプレートから始める:
assets/analysis_template.pyを出発点として使用 - 最初に QC スクリプトを実行する:
scripts/qc_analysis.pyを初期フィルタリングに使用 - 必要に応じてリファレンスを参照する: ワークフローと API リファレンスをコンテキストに読み込む
- クラスタリングを反復する: 複数の解像度と可視化方法を試す
- 生物学的に検証する: マーカー遺伝子が予想される細胞タイプと一致することを確認
- パラメータを文書化する: QC 閾値と分析設定を記録
- チェックポイントを保存する: 主要なステップで中間結果を記述
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- davila7
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/davila7/claude-code-templates / ライセンス: MIT
関連スキル
hugging-face-trackio
Trackioを使用してMLトレーニング実験を追跡・可視化できます。トレーニング中のメトリクスログ記録(Python API)、トレーニング診断のアラート発火、ログされたメトリクスの取得・分析(CLI)が必要な場合に活用してください。リアルタイムダッシュボード表示、Webhookを使用したアラート、HF Space同期、自動化向けのJSON出力に対応しています。
btc-bottom-model
ビットコインのサイクルタイミングモデルで、加重スコアリングシステムを搭載しています。日次パルス(4指標、32ポイント)とウィークリー構造(9指標、68ポイント)の2カテゴリーにわたる13の指標を追跡し、0~100のマーケットヒートスコアを算出します。ETFフロー、ファンディングレート、ロング/ショート比率、恐怖・貪欲指数、LTH-MVRV、NUPL、SOPR(LTH+STH)、LTH供給率、移動平均倍率(365日MA、200週MA)、週次RSI、出来高トレンドに対応します。市場サイクル全体を通じて買いと売りの両方の推奨を提供します。ビットコインの底値拾い、BTCサイクルポジション、買い時・売り時、オンチェーン指標、MVRV、NUPL、SOPR、LTH動向、ETFの流出入、ファンディングレート、恐怖指数、ビットコインが過熱状態か、マイナーコスト、暗号資産市場のセンチメント、BTCのポジションサイジング、「今ビットコインを買うべきか」「BTCが天井をつけているか」「オンチェーン指標は何を示しているか」といった質問の際にこのスキルを活用します。
protein_solubility_optimization
タンパク質の溶解性最適化 - タンパク質の溶解性を最適化します。タンパク質の特性を計算し、溶解性と親水性を予測し、有効な変異を提案します。タンパク質配列の特性計算、タンパク質機能の予測、親水性計算、ゼロショット配列予測を含むタンパク質エンジニアリング業務に使用できます。3つのSCPサーバーから4つのツールを統合しています。
research-lookup
Parallel Chat APIまたはPerplexity sonar-pro-searchを使用して、最新の研究情報を検索できます。学術論文の検索にも対応しています。クエリは自動的に最適なバックエンドにルーティングされるため、論文の検索、研究データの収集、科学情報の検証に活用できます。
tree-formatting
ggtree(R)またはiTOL(ウェブ)を使用して、系統樹の可視化とフォーマットを行います。系統樹を図として描画する際、ツリーレイアウトの選択、分類学に基づく枝やラベルの色付け、クレードの折りたたみ、サポート値の表示、またはツリーへのオーバーレイ追加が必要な場合に使用してください。系統推定(protein-phylogenyスキルを使用)やドメイン注釈(今後の独立したスキル)には使用しないでください。
querying-indonesian-gov-data
インドネシア政府の50以上のAPIとデータソースに接続できます。BPJPH(ハラール認証)、BOM(食品安全)、OJK(金融適正性)、BPS(統計)、BMKG(気象・地震)、インドネシア中央銀行(為替レート)、IDX(株式)、CKAN公開データポータル、pasal.id(第三者法MCP)に対応しています。インドネシア政府データを活用したアプリ開発、.go.idウェブサイトのスクレイピング、ハラール認証の確認、企業の法的適正性の検証、金融機関ステータスの照会、またはインドネシアMCPサーバーへの接続時に使用できます。CSRF処理、CKAN API使用方法、IP制限回避など、すぐに実行可能なPythonパターンを含んでいます。