こんにちは、受託コンサルティングチームの hosor です。
暑さにやられており、更新できていませんでした。過去 126 年で最も暑いとのニュースもありましたね…。
今回はシングルセル解析パッケージ Seurat を用いて、異なるサンプルで共通しているマーカー遺伝子を調べる方法について書いていこうと思います。
作業環境
- CentOS Linux release 7.4.1708 (Core)
- R v4.3.1
- Seurat v4.3.0.1
- SeuratData v0.2.2
- metap v1.1
使用データ
ヒト末梢血単核細胞のコントロール群 (CTRL) およびインターフェロンベータ処理群 (STIM) を使用しました。*1
Seurat 公式ページのチュートリアルに従い、データのダウンロードや統合を進め、Seurat オブジェクト immune.combined を作成しました。
サンプルごとに分割して、クラスタリング結果を UMAP 上で確認してみると以下のようになりました。15 個のクラスタに分かれるようです。
※ チュートリアルと見た目が異なりますが、パッケージのバージョンや OS が違うためだと思われます。 *2
スクリプト
FindConservedMarkers() 関数を使用します。
DefaultAssay(immune.combined) <- "RNA" nk.markers <- FindConservedMarkers(immune.combined, ident.1 = 6, grouping.var = "stim")
- ident.1: 対象とするクラスタ
- grouping.var: 分割に用いるメタデータ (今回は CTRL, STIM に分割)
出力結果は以下のようになります。
head(nk.markers) CTRL_p_val CTRL_avg_log2FC CTRL_pct.1 CTRL_pct.2 CTRL_p_val_adj GNLY 0 6.006173 0.944 0.045 0 FGFBP2 0 3.243588 0.505 0.020 0 CLIC3 0 3.461957 0.597 0.024 0 PRF1 0 2.650548 0.422 0.017 0 CTSW 0 2.987507 0.531 0.029 0 KLRD1 0 2.777231 0.495 0.019 0 STIM_p_val STIM_avg_log2FC STIM_pct.1 STIM_pct.2 STIM_p_val_adj GNLY 0.000000e+00 5.838772 0.957 0.059 0.000000e+00 FGFBP2 2.859908e-163 2.194962 0.261 0.015 4.019029e-159 CLIC3 0.000000e+00 3.546225 0.624 0.031 0.000000e+00 PRF1 0.000000e+00 4.103679 0.863 0.057 0.000000e+00 CTSW 0.000000e+00 3.141509 0.596 0.035 0.000000e+00 KLRD1 0.000000e+00 2.873131 0.556 0.027 0.000000e+00 max_pval minimump_p_val GNLY 0.000000e+00 0 FGFBP2 2.859908e-163 0 CLIC3 0.000000e+00 0 PRF1 0.000000e+00 0 CTSW 0.000000e+00 0 KLRD1 0.000000e+00 0
- CTRL_p_val: CTRL での p 値
- CTRL_avg_log2FC: CTRL での対象の一群とそれ以外の全群の発現量差
- CTRL_pct.1: CTRL での対象クラスタの細胞のうち発現が検出された細胞の割合
- CTRL_pct.2: CTRL での対象クラスタ以外の全細胞のうち発現が検出された細胞の割合
CTRL_p_val_adj: CTRL での補正 p 値
(STIM についても同様)
max_pval: [サンプル]_p_val のうち最大の値
- minimump_p_val: R パッケージ MetaDE により結合された p 値
クラスタ 6 において、CTRL, STIM 両サンプルで共通しているマーカー遺伝子を検出することができました!
FindAllMarkers() 関数は "1 つのサンプル" や "統合後のデータ" に対してマーカー遺伝子を調べる一方で、FindConservedMarkers() 関数は "複数のサンプル" で共通しているマーカー遺伝子を調べることができます。
only.pos = TRUE と設定することで特徴的に発現増加している遺伝子のみを検出できたり、logfc.threshold = 1 と設定することで |Fold Change| > 2 の遺伝子のみを検出できたりもします。
公式ページの FindConservedMarkers の説明では詳細な説明が省かれているので、オプションについては公式ページの FindMarkers の説明をご参照ください。
まとめ
FindConservedMarkers() 関数を使うことで、異なるサンプルで共通しているマーカー遺伝子を調べられる!
補足
こちらの記事が分かりやすかったです。 hbctraining.github.io
*1:Kang, H., Subramaniam, M., Targ, S. et al. Multiplexed droplet single-cell RNA-sequencing using natural genetic variation. Nat Biotechnol 36, 89–94 (2018).
*2:https://github.com/satijalab/seurat/issues/3254#issuecomment-657709765