mcpField
T
tooluniverse-single-cell

tooluniverse-single-cell

github.com/mims-harvardデータ・データベース1.8k339 回インストール2 日前に更新
リポジトリ

tooluniverse-single-cell について

単一細胞データを扱う研究者向けに、単一細胞 RNA-seq と発現行列の処理を支援する ToolUniverse スキルです。QC、クラスタリング、細胞タイプ解析、差次的発現を扱い、再解析の前に計算済み結果を確認する手順も示します。

主な機能

  1. 01h5ad、10X、CSV/TSV データの読み込み
  2. 02分布に基づく細胞 QC
  3. 03発現データのクラスタリングと可視化
  4. 04細胞タイプとマーカー遺伝子の特定
  5. 05差次的発現解析と統計検定
  6. 06Harmony によるバッチ補正

活用シーン

  1. 01生の単一細胞 RNA-seq データの解析
  2. 02低品質細胞の除外とダブレットの判定
  3. 03細胞タイプ間または条件間の発現比較
  4. 04PCA、UMAP、t-SNE によるクラスター探索

MCP 対応

このスキルは、実行済みノートブックの読み込みや DESeq2 などの解析に使う ToolUniverse ツールを案内し、scanpy と AnnData を用いるワークフローも示します。

インストール

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

$npx skills add https://github.com/mims-harvard/tooluniverse --skill tooluniverse-single-cell

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

同梱ファイル

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

.env.template
analysis_patterns.md
test_skill.py
references/
cell_communication.md
clustering_guide.md
marker_identification.md
scanpy_workflow.md
scrna_qc.md
seurat_workflow.md
trajectory_analysis.md
troubleshooting.md
scripts/
find_markers.py
normalize_data.py
qc_metrics.py
scrna_qc.py

詳細

単一細胞ゲノミクスと発現行列の解析

ルール 0 — 事前計算済みの結果を最初に確認してください

以下の指示に従う前に、データフォルダーをスキャンして、次のものがないか確認してください。

  • *_executed.ipynb → tu run read_executed_notebook '{"data_folder":"<path>","search":"<keyword>"}' で読み込み、セルの出力を信頼できる回答として引用してください
  • 事前計算済みの結果ファイル(*results*、*deseq*、*enrich*、*stats*、*_simplified.csv などの名前が付いた CSV/TSV)→ 直接読み込み、求められている値を報告してください
  • 標準的な解析スクリプト(analysis.R、run_*.py、find_*.R、*.Rmd)→ そのまま実行し、出力を読み取ってください

上記のいずれも存在しない場合に限り、以下のこのスキルの再解析手順に従ってください。生データから再実行すると、公開済みの回答とは数値が異なり、処理もはるかに遅くなります(ターン数が 5〜10 倍になることもよくあります)。


scanpy、anndata、scipy、ToolUniverse を使用した、包括的な単一細胞 RNA-seq 解析と発現行列の処理です。


推測せず、調べてください

科学的事実に確信が持てない場合は、記憶に頼って推論するのではなく、まずデータベース(PubMed、UniProt、ChEMBL、ClinVar など)を検索してください。データベースで検証された回答は、推測よりも常に信頼できます。


このスキルを使用する場面

次のような場合に使用してください。

  • scRNA-seq データ(h5ad、10X、CSV のカウント行列)があり、解析したい
  • scRNA-seq の品質管理/QC ゲーティングが必要:ミトコンドリア比率(pct_counts_mt)、遺伝子数/UMI 数、ダブレット、アンビエント RNA、空のドロップレットに基づいて細胞フィルターを決定したい
  • 細胞型の特定、クラスタリング、アノテーションについて質問したい
  • 細胞型または条件ごとの差次的発現解析が必要
  • 遺伝子発現の相関解析を行いたい(例:細胞型ごとの遺伝子長と発現の関係)
  • 発現データの PCA、UMAP、t-SNE について質問したい
  • 発現行列に対する Leiden/Louvain クラスタリングが必要
  • 細胞型間の統計的比較(t 検定、ANOVA、フォールドチェンジ)を行いたい
  • マーカー遺伝子、バッチ補正、軌跡、細胞間コミュニケーションについて質問したい

対象外(代わりに他のスキルを使用してください):

  • バルク RNA-seq の DESeq2 のみ → tooluniverse-rnaseq-deseq2
  • 遺伝子エンリッチメントのみ → tooluniverse-gene-enrichment
  • VCF/バリアント解析 → tooluniverse-variant-analysis
  • ディープラーニングによる統合/バッチ補正(scVI、scANVI、totalVI、PeakVI、MultiVI、DestVI、veloVI)→ tooluniverse-scvi-tools

基本原則

  1. データを優先 - 解析の前に、読み込み、確認、検証する
  2. AnnData を中心にする - すべてのデータを anndata オブジェクト経由で処理する
  3. 細胞型を考慮する - 必要に応じて細胞型ごとにサブセット化する
  4. 統計的厳密さ - 正規化、多重検定補正、効果量を用いる
  5. 質問に沿って進める - ユーザーが実際に尋ねていることを把握する

必須パッケージ

import scanpy as sc, anndata as ad, pandas as pd, numpy as np
from scipy import stats
from scipy.cluster.hierarchy import linkage, fcluster
from sklearn.decomposition import PCA
from statsmodels.stats.multitest import multipletests
import gseapy as gp  # enrichment
import harmonypy     # batch correction (optional)

インストール:pip install scanpy anndata leidenalg umap-learn harmonypy gseapy pandas numpy scipy scikit-learn statsmodels


ワークフローの判断ツリー

START: User question about scRNA-seq data
|
+-- FULL PIPELINE (raw counts -> annotated clusters)
|   Workflow: QC -> Normalize -> HVG -> PCA -> Cluster -> Annotate -> DE
|   See: references/scanpy_workflow.md
|
+-- DIFFERENTIAL EXPRESSION (per-cell-type comparison)
|   Most common pattern: per-cell-type DE
|   See: analysis_patterns.md "Pattern 1"
|
+-- CORRELATION ANALYSIS (gene property vs expression)
|   Pattern: Gene length vs expression correlation
|   See: analysis_patterns.md "Pattern 2"
|
+-- CLUSTERING & PCA (expression matrix analysis)
|   See: references/clustering_guide.md
|
+-- CELL COMMUNICATION (ligand-receptor interactions)
|   See: references/cell_communication.md
|
+-- TRAJECTORY ANALYSIS (pseudotime)
    See: references/trajectory_analysis.md

データ形式の処理:

  • h5ad → sc.read_h5ad()
  • 10X → sc.read_10x_mtx() または sc.read_10x_h5()
  • CSV/TSV → pd.read_csv() → AnnData に変換(向きに注意してください!)

データの読み込み

AnnData では、**行が細胞/サンプル(obs)、列が遺伝子(var)**である必要があります。

adata = sc.read_h5ad("data.h5ad")  # h5ad already oriented

# CSV/TSV: check orientation
df = pd.read_csv("counts.csv", index_col=0)
if df.shape[0] > df.shape[1] * 5:  # genes > samples by 5x => transpose
    df = df.T
adata = ad.AnnData(df)

# Load metadata
meta = pd.read_csv("metadata.csv", index_col=0)
common = adata.obs_names.intersection(meta.index)
adata = adata[common].copy()
for col in meta.columns:
    adata.obs[col] = meta.loc[common, col]

品質管理と QC ゲーティング(下流解析の前に実施してください)

QC ゲーティングでは、正規化、クラスタリング、DE の前に、実際の細胞と遺伝子を判定します。これを省略したり、性急に行ったりすると、問題が気づかれないまま伝播します。ダブレットが偽の「中間」状態になり、アンビエント RNA がクラスター間にマーカーを拡散させ、空のドロップレットが細胞数を水増しします。ゲートを適用せずにフィルター後の細胞数を報告してはならず、実際に適用していない閾値を報告してはなりません。

正直に実行すること:QC は Bash/Python 経由で scanpy/AnnData を実行します。scanpy がインストールされていない場合は、指標を捏造せず、インストール手順を表示して停止してください。 python scripts/scrna_qc.py --install-plan(終了コード 0。不足しているものを列挙し、pip install scanpy anndata scrublet を提案します)。

細胞ごとの QC 指標(算出するもの)
vn = adata.var_names.str.upper()
adata.var['mt']   = vn.str.startswith('MT-')            # mitochondrial
adata.var['ribo'] = vn.str.startswith(('RPS', 'RPL'))   # ribosomal protein
adata.var['hb']   = vn.str.contains(r'^HB[^P]', regex=True)  # hemoglobin (RBC)
sc.pp.calculate_qc_metrics(
    adata, qc_vars=['mt', 'ribo', 'hb'],
    percent_top=None,   # REQUIRED for small gene panels (<500) — else IndexError
    log1p=True, inplace=True)

adata.obs の主要な指標:n_genes_by_counts、total_counts、 pct_counts_mt、pct_counts_ribo、pct_counts_hb。

各指標が問題を示す理由(魔法の数値ではなく、生物学的な根拠)
  • pct_counts_mt が高い -> 死にかけている/ストレスを受けた細胞。 膜が破れると細胞質の mRNA が漏れ出す一方、ミトコンドリアの転写産物は内部にとどまるため、捕捉された RNA に占めるミトコンドリア由来の割合が高くなります。閾値は組織によって異なります(心筋細胞/肝細胞は通常時からミトコンドリアが豊富なため、一律に 10% とすると健康な細胞まで除外されます)。
  • n_genes_by_counts/total_counts が低い -> 空のドロップレットまたはデブリ (環境 RNA のみが捕捉されており、遺伝子数が少なく、シーケンス深度も低い状態です)。
  • カウント数/遺伝子数が非常に多い -> ダブレット(2 つのトランスクリプトームがあるため、深度と多様性がおよそ 2 倍になります)。ただし、カウント数の高さだけでは根拠として不十分です。ダブレット検出ツールを使用してください(後述)。
  • pct_counts_hb が高い -> 固形組織への赤血球/血液の混入。
閾値の選択 — 固定値ではなく、分布を考慮する(MAD)

固定のカットオフ値(mt<5%、n_genes<2500 など)は出発点にすぎません。ミトコンドリアが豊富な組織や、シーケンス深度の浅い/深いライブラリでは機能しません。MAD ベースのルールを推奨します(除去対象となる外れ値の影響を受けにくいため)。中央値からの絶対偏差が nmads を超える細胞をフラグ付けします。log1p を適用したカウント数/遺伝子数(両側)には nmads=5、pct_counts_mt(上側のみ)には nmads=3 を使用し、ミトコンドリアの基準値に生物学的な上限も併用して、サンプル全体が一様に劣化していても通過しないようにします。 まず必ず分布を可視化してください(バイオリンプロットと、total_counts 対 pct_counts_mt の散布図を使用します。死にかけた細胞はカウント数が低く、ミトコンドリアの割合が高い領域に集まります)。

ヘルパーを実行します(指標を算出し、MAD によるフィルタリングを行い、各ステップで除去された細胞数を報告します)。

python scripts/scrna_qc.py data.h5ad --doublets        # or --install-plan first
ダブレット、環境 RNA、空のドロップレット(細胞ごとの指標では見逃されます)
  • ダブレット:Scrublet(sc.pp.scrublet、scanpy >=1.10)または scDblFinder(R)。 統合前にサンプルごとに実行し、フラグ付け -> クラスター化 -> 除去の順に進めます(ダブレットは橋渡し状のクラスターを形成します)。expected_doublet_rate は、回収された細胞 1,000 個あたり約 0.8% です(10x)。
  • 環境 RNA:すべてのドロップレットに含まれる、細胞を含まない「スープ」状の mRNA です。カウント補正のステップ(SoupX/DecontX、R)で対処し、細胞のフィルタリングには使いません。細胞ごとの QC では検出できません。マーカーが不自然なほど広く発現している場合は、環境 RNA を疑ってください。
  • 空のドロップレット:細胞ごとの QC より前の段階で対処します。CellRanger のフィルタリング済みマトリクスには、すでに EmptyDrops に類する判定が適用されています。未加工のマトリクスしかない場合は、細胞ごとの QC の前に EmptyDrops(DropletUtils、R)またはバーコード順位の膝点を用いてください。
QC 解釈表(指標 -> 懸念事項 -> 対応)
QC 指標方向典型的な懸念事項推奨される対応
pct_counts_mt高い死にかけている/ストレスを受けた細胞(膜の破損)フィルタリング(MAD の上側閾値 + 組織を考慮した上限。ミトコンドリアが豊富な組織では上限を引き上げる)
n_genes_by_counts非常に低い空のドロップレット/デブリフィルタリング(min_genes は約 200 + 下側 MAD)
total_counts非常に低いシーケンス深度が浅い/捕捉の失敗フィルタリング(下側 MAD。バーコード順位の膝点を確認)
n_genes_by_counts/total_counts非常に高いダブレット(1 つのドロップレットに 2 個の細胞)フラグ付けし、Scrublet/scDblFinder を実行してから除去します。カウント数だけを基準に上限を設けないでください
predicted_doublet(Scrublet)True多重細胞サンプルごとにフィルタリングします。不確かな場合は、クラスター化してから除去します
pct_counts_hb高い赤血球/血液の混入血液以外の組織ではフィルタリングし、血液では調査します
pct_counts_ribo非常に高い/低い低複雑性/ストレス、または細胞型のシグナルフラグ付け/調査します(リボソームの割合は細胞型によって異なるため、厳格なフィルタリング基準にすることはほとんどありません)
クラスター間でマーカーが遍在—環境 RNA の混入調査します — SoupX/DecontX を実行し、気付かないまま処理を続行しないでください
細胞数が多く、中央値のカウント数が低い—空のドロップレットが除去されていない調査します — EmptyDrops/膝点を適用し、再度フィルタリングします

詳細な根拠、MAD のコード、Scrublet/SoupX/EmptyDrops の手順、および処理順序については、references/scrna_qc.md を参照してください。パイプライン内の QC については、references/scanpy_workflow.md の Phase 2 を参照してください。


パイプライン全体(クイックリファレンス)

import scanpy as sc

adata = sc.read_10x_h5("filtered_feature_bc_matrix.h5")

# QC
adata.var['mt'] = adata.var_names.str.startswith('MT-')
sc.pp.calculate_qc_metrics(adata, qc_vars=['mt'], inplace=True)
adata = adata[adata.obs['pct_counts_mt'] < 20].copy()
sc.pp.filter_cells(adata, min_genes=200)
sc.pp.filter_genes(adata, min_cells=3)

# Normalize + HVG + PCA
sc.pp.normalize_total(adata, target_sum=1e4)
sc.pp.log1p(adata)
adata.raw = adata.copy()
sc.pp.highly_variable_genes(adata, n_top_genes=2000)
sc.tl.pca(adata, n_comps=50)

# Cluster + UMAP
sc.pp.neighbors(adata, n_pcs=30)
sc.tl.leiden(adata, resolution=0.5)
sc.tl.umap(adata)

# Find markers + Annotate + Per-cell-type DE
sc.tl.rank_genes_groups(adata, groupby='leiden', method='wilcoxon')

差次的発現の判定ツリー

Single-Cell DE (many cells per condition):
  Use: sc.tl.rank_genes_groups(), methods: wilcoxon, t-test, logreg
  Best for: Per-cell-type DE, marker gene finding

Pseudo-Bulk DE (aggregate counts by sample):
  Use: R DESeq2 via `tu run run_deseq2_analysis` or Rscript (NOT pydeseq2 — gives different DEG counts)
  Best for: Sample-level comparisons with replicates

Statistical Tests Only:
  Use: scipy.stats (ttest_ind, f_oneway, pearsonr)
  Best for: Correlation, ANOVA, t-tests on summaries

統計検定(クイックリファレンス)

from scipy import stats
from statsmodels.stats.multitest import multipletests

# Pearson/Spearman correlation
r, p = stats.pearsonr(gene_lengths, mean_expression)

# Welch's t-test
t_stat, p_val = stats.ttest_ind(group1, group2, equal_var=False)

# ANOVA
f_stat, p_val = stats.f_oneway(group1, group2, group3)

# Multiple testing correction (BH)
reject, pvals_adj, _, _ = multipletests(pvals, method='fdr_bh')

バッチ補正(Harmony)

import harmonypy
sc.tl.pca(adata, n_comps=50)
ho = harmonypy.run_harmony(adata.obsm['X_pca'][:, :30], adata.obs, 'batch', random_state=0)
adata.obsm['X_pca_harmony'] = ho.Z_corr.T
sc.pp.neighbors(adata, use_rep='X_pca_harmony')
sc.tl.leiden(adata, resolution=0.5)
sc.tl.umap(adata)

ToolUniverse との連携

データの検出(解析前)
  • CxGDisc_search_datasets:CELLxGENE Discover で、疾患、組織、生物種から scRNA-seq データセットを検索します。疾患名は広い用語(例:「トリプルネガティブ」ではなく「乳がん」)を使用してください。
  • GEO_search_rnaseq_datasets / geo_search_datasets:GEO で scRNA-seq 研究を検索します
  • NCBI_SRA_search_runs:SRA でシーケンスランを検索します(query="single cell RNA-seq [disease]")
  • OmicsDI_search_datasets:複数のリポジトリを横断してデータセットを検索します
  • SCXA_list_experiments / SCXA_search_gene:EBI Single Cell Expression Atlas — 種やキーワード、または遺伝子が発現している実験から検索できる、380 件以上のキュレーション済み scRNA-seq データセットです。SCXA_search_gene は処理に時間がかかる場合があります(実際の呼び出しでは 1 回あたり 10~40 秒以上かかることが確認されています)。ほかの検索より時間がかかるというだけで、失敗したと判断しないでください。
  • SCXA_get_cluster_marker_genes:特定の SCXA 実験について、クラスター別/細胞種別に事前計算されたマーカー遺伝子を取得します。marker_type に指定できるのは "clusters" または "cell_types" のみです("cell_type" は指定できません)。また、marker_type="cell_types" の場合は organism_part(例:「pancreas」、「lung」)も必須です。実際の動作確認で、どちらも警告ではなく、パラメーター検証時のエラーになることが確認されています。
  • SCP_search_studies / SCP_list_studies / SCP_get_study:Broad Institute Single Cell Portal — 1,000 件以上の公開研究、8,000 万個以上の細胞を収録しています。SCP_list_studies は細胞数の降順で並べ替え、min_cells で絞り込めます。
  • UCSCCellBrowser_search_datasets / UCSCCellBrowser_get_dataset / UCSCCellBrowser_list_facets:生物種/体の部位/疾患で絞り込める、300 件以上のキュレーション済み単一細胞データセットを収録しています。search_datasets で絞り込む前に UCSCCellBrowser_list_facets を呼び出し、有効なフィルター値を取得してください(ファセットは "organisms"、"body_parts"、"diseases" です)。
細胞タイプマーカー
  • CellMarker_search_by_cell_type:組織特異的な細胞マーカー(最初に CellMarker_list_cell_types を使用してください。正確な名前が必要です。例:「Regulatory T(Treg) cell」であり、「Regulatory T cell」ではありません)
  • CellMarker_search_cancer_markers:実験的エビデンスを伴うがん関連マーカー
  • CellMarker_search_by_gene:逆引き検索 — ある遺伝子を発現する細胞タイプを調べます
  • HPA_search_genes_by_query:細胞タイプマーカー遺伝子の検索
  • PanglaoDB_list_cell_types / PanglaoDB_markers_for_cell_type / PanglaoDB_cell_types_for_gene:PanglaoDB のキュレーション済みマーカー遺伝子です。各遺伝子には canonical_marker フラグと、種ごとの sensitivity_*/specificity_* スコアがあります。最初に PanglaoDB_list_cell_types(必要に応じて organ で絞り込み)を呼び出し、有効な cell_type の正確な文字列を取得してください。PanglaoDB_cell_types_for_gene の結果は特異度順に並んでいません — ライブで確認したところ、標準的な T 細胞マーカーである CD3E を検索すると、canonical_marker: true かつ specificity_human: 0.1 と低い「Macrophages」が最初に返されました。結果の順序を信用せず、常に行ごとに canonical_marker と specificity_*/sensitivity_* の各フィールドを確認し、アノテーションが重要な場合は上記の CellMarker/HPA と照合してください。
  • CellTypist_search_models / CellTypist_get_model:自動細胞タイプアノテーション用の、事前学習済み CellTypist 分類器のカタログ(60 種類以上。上記のマーカー遺伝子検索とは異なります)です。keyword(組織/条件。例:「lung」、「immune」、「fetal」)や min_celltypes で絞り込むか、正確な filename(例:CellTypist のデフォルトである "Immune_All_Low.pkl"、98 種類の細胞タイプを含む)を指定して、モデルの完全なメタデータを取得します。各エントリには n_celltypes、source_doi、シリアライズされたモデルの download_url が含まれます。これはカタログのメタデータのみであり、アノテーションの出力ではありません。選択したモデルを発現マトリックスに対して実行するには、リモートツール run_celltypist_annotate を使用してください。「組織 X 用の事前学習済み分類器はどれか」を調べる場合に使用してください。「細胞タイプ Y のマーカー遺伝子は何か」を調べる場合は、上記の PanglaoDB/CellMarker を使用してください。
遺伝子アノテーション
  • MyGene_query_genes / MyGene_batch_query:遺伝子 ID の変換
  • ensembl_lookup_gene:Ensembl 遺伝子の詳細
  • UniProt_get_function_by_accession:タンパク質の機能
細胞間コミュニケーション
  • OmniPath_get_ligand_receptor_interactions:リガンド・受容体ペア(CellPhoneDB、CellChatDB)
  • OmniPath_get_signaling_interactions:下流のシグナル伝達
  • OmniPath_get_complexes:複数サブユニットからなる受容体
エンリッチメント(DE 後)
  • PANTHER_enrichment:GO エンリッチメント(BP、MF、CC)
  • STRING_functional_enrichment:ネットワークベースのエンリッチメント
  • ReactomeAnalysis_pathway_enrichment:Reactome 経路
臨床的背景(腫瘍免疫学向け)
  • DGIdb_get_drug_gene_interactions:免疫チェックポイント標的との薬剤相互作用(PD-L1 の場合は genes=["CD274"])
  • civic_search_evidence_items:変異/バイオマーカーに関する臨床エビデンス
  • TIMER2_immune_estimation:TCGA の免疫浸潤相関
  • search_clinical_trials:臨床試験のマッチング
  • GTEx_get_expression_summary:正常組織のベースライン発現
  • PubMed_search_articles:文献の背景情報

Scanpy と Seurat の相当機能

操作Seurat(R)Scanpy(Python)
データの読み込みRead10X()sc.read_10x_mtx()
正規化NormalizeData()sc.pp.normalize_total() + sc.pp.log1p()
HVG の検出FindVariableFeatures()sc.pp.highly_variable_genes()
PCARunPCA()sc.tl.pca()
クラスタリングFindClusters()sc.tl.leiden()
UMAPRunUMAP()sc.tl.umap()
マーカーの検出FindMarkers()sc.tl.rank_genes_groups()
バッチ補正RunHarmony()harmonypy.run_harmony()

結果解釈のための推論フレームワーク

エビデンスの評価
評価基準例
高い信頼度マーカーの padj < 0.01、log2FC > 1、クラスター内の細胞の > 25% で発現padj = 1e-50、log2FC = 3.2、pct = 0.85 の T 細胞マーカー CD3D
中程度の信頼度padj < 0.05、log2FC > 0.5、またはクラスターの 10-25% で発現padj = 0.001、pct = 0.18 の Treg クラスター内の FOXP3
低い信頼度padj < 0.05 だが log2FC < 0.5、またはクラスター間の pct_diff が小さい境界的な濃縮を示す、広く発現している遺伝子
信頼性なしクラスター内の細胞数が 20 未満、または QC 指標がダブレットを示唆平均 nGenes > 6000 でダブレットスコアが高いクラスター
解釈のガイダンス
  • QC 指標のしきい値:標準的なフィルターは nGenes > 200(空の液滴を除去)、nGenes < 5000-6000(ダブレットを除去)、pct_counts_mt < 20%(死にかけた細胞を除去)です。これらのしきい値は組織によって異なります。免疫細胞では nGene のフィルターをより厳しくし、ニューロンではミトコンドリア含有量が自然に高くなる場合があります。カットオフを設定する前に、必ず分布を可視化してください。
  • クラスター解像度のガイダンス:Leiden 解像度 0.3-0.5 では大まかな細胞型(T 細胞、B 細胞、骨髄系細胞)が得られます。解像度 0.8-1.2 ではサブタイプ(CD4 ナイーブ、CD4 メモリー、Treg)を識別できます。解像度 > 2.0 では過剰クラスタリング(生物学的に均質な集団の分割)のリスクがあります。各クラスターに固有のマーカー遺伝子があることを確認して検証してください。
  • マーカー遺伝子の信頼度:優れたマーカーは特異性が高く(クラスターとそれ以外の間の pct_diff が大きい)、発現量も高い(log2FC が大きい)ものです。多くのクラスターで発現し、フォールド変化が小さい遺伝子は優れたマーカーとはいえません。CellMarker または HPA データベースにある既知のマーカーと照合してください。
  • 擬似バルクと単一細胞の DE:条件間(処置群と対照群)を比較する場合、サンプルごとに集約してから DESeq2 を適用する擬似バルク DE のほうが、単一細胞 DE より統計的に妥当です。単一細胞 DE では、同じサンプル内の細胞が独立していないため、有意性が過大評価されます。
  • バッチ効果:UMAP 上で生物学的な違いではなくバッチごとにサンプルがクラスター化する場合は、生物学的な解釈の前に Harmony などの補正を適用してください。
統合に関する質問
  1. 同定されたクラスターは既知の細胞型に対応していますか?または、生物学的な同一性が明確でないクラスター(ダブレットや低品質な細胞の可能性があるクラスター)がありますか?
  2. 選択したクラスタリング解像度で、解像度を下げると統合されるクラスターがありますか?それらは技術的ノイズによって分割された単一の細胞型である可能性がありますか?
  3. 条件間の差次的発現では、単一細胞と擬似バルクの手法で結果に一貫性がありますか?また、上位の DE 遺伝子には既知の生物学的な関連性がありますか?
  4. QC でフラグが付いた細胞(ミトコンドリア含有量が高い細胞、遺伝子数が極端な細胞)は特定のクラスターに集中していますか?それらを除去するとクラスタリング構造が変化しますか?
  5. バッチ補正を適用した場合、補正後のクラスターでも、想定される細胞型特異的マーカーの発現が維持されていますか?

トラブルシューティング

問題解決策
ModuleNotFoundError: leidenalgpip install leidenalg
疎行列のエラー.toarray():X = adata.X.toarray() if issparse(adata.X) else adata.X
行列の向きが間違っているサンプル数より遺伝子数のほうが多いですか?転置してください
相関に NaN が含まれるフィルター:valid = ~np.isnan(x) & ~np.isnan(y)
DE に使う細胞数が少なすぎる細胞型ごと、条件ごとに 3 個以上の細胞が必要です
メモリーエラーsc.pp.highly_variable_genes() を使って特徴量を減らしてください

リファレンスドキュメント

詳細な解析パターン:analysis_patterns.md(細胞タイプごとのDE、相関、PCA、ANOVA、細胞間コミュニケーション)

主なワークフロー:

  • references/scrna_qc.md - scRNA-seqのQCゲーティング(ミトコンドリア比率、ダブレット、ambient RNA、空のドロップレット、MADしきい値)
  • references/scanpy_workflow.md - scanpyの完全なパイプライン
  • references/seurat_workflow.md - SeuratからScanpyへの変換
  • references/clustering_guide.md - クラスタリング手法
  • references/marker_identification.md - マーカー遺伝子、アノテーション
  • references/trajectory_analysis.md - 擬似時間
  • references/cell_communication.md - OmniPath/CellPhoneDBのワークフロー
  • references/troubleshooting.md - 詳細なエラー解決方法

解析規約

DESeq2ライブラリの選択:正式なスクリプトに合わせる

データフォルダーに正式なスクリプト(run_*.py、analysis.R)がある場合は、そのスクリプトで使用されているDESeq2ライブラリ(pydeseq2またはR DESeq2)を使用してください。同じしきい値でも、2つのライブラリではDEG数にわずかな違い(約2~10%)が生じるため、合わせることが重要です。スクリプトがない場合は、run_deseq2_analysisツールまたはRscriptを介してR DESeq2を使用することを推奨します。

tu run run_deseq2_analysis '{"operation":"deseq2","counts_file":"pseudo_bulk_counts.csv","metadata_file":"sample_meta.csv","design":"~ sex","contrast":"sex, M, F","lfc_shrinkage":true}'

コメント