👌
[R][Seurat] FindAllMarkersの結果をUpSet Plot
230215
SeuratのDEG検出機能では、1つのcluster vs 残りの全て
という比較が行われる。
例えば、CD4 T cell vs 末梢血のその他の細胞 という構図だと、その他の細胞にはTregやCD8 TなどT細胞も含まれることになる。
CD4 T cellのDEGとしてT細胞マーカーが得られるだろうが、Treg vs 残りの全て
の時もT細胞マーカーがDEGとして得られるだろう。
このように各クラスターのDEGはuniqueではない場合がある。
各クラスターのDEGの積集合/差集合を見ることで、共通のDEG/独自のDEGを見つけることができる。
良く使用されるのはベン図であるが、ベン図はクラスター数が多くなると、一気に見づらくなる。
UpSet Plotは集合数が多くても見やすいのでぜひ参考にしてほしい。
事前準備
RのSeuratパッケージでscRNAseqデータのクラスタリングまで行った後、SeuratのFindAllMarkers機能で各クラスタの発現変動遺伝子 (DEG)を取得する。
deg <- Seurat::FindAllMarkers(object = seurat_object)
degオブジェクトはこんな内容
各クラスターのDEGの数を確認
table(deg$cluster)
クラスターごとにDEGを分割して、リストにまとめる。
deg_list <- split(deg$gene, deg$cluster)
deg_listの中身。要素が文字列ベクトルのリスト
UpSet plot
リスト内要素の共通項のパターンを集計
mt <- ComplexHeatmap::make_comb_mat(deg_list)
オブジェクトmtの中身。共通項のパターンを2進数で表現 (code)し、その数 (size)が保存されている。
make_comb_mat関数のmode引数は"distinct"がデフォルト。
modeの考え方。https://jokergoo.github.io/ComplexHeatmap-reference/book/upset-plot.html
UpSet plotの描画。
関数の引数にmtオブジェクトを指定
ComplexHeatmap::UpSet(mt)
UpSet plotのオプション
size順に並び替え
ComplexHeatmap::UpSet(mt, comb_order = order(ComplexHeatmap::comb_size(mt)))
size閾値を設ける
mt2 <- mt[ComplexHeatmap::comb_size(mt)>=10]
ComplexHeatmap::UpSet(mt2,
comb_order = order(ComplexHeatmap::comb_size(mt2)))
cluster表示順を指定
ComplexHeatmap::UpSet(mt, set_order = names(deg_list))
組み合わせパターンの数を限定する
ComplexHeatmap::comb_degree(mt)
mt2 <- mt[ComplexHeatmap::comb_degree(mt)==2]
ComplexHeatmap::UpSet(mt2)
組み合わせパターンの数に応じて色を変える。
ComplexHeatmap::UpSet(mt, comb_col = c("red","blue","green","black")[ComplexHeatmap::comb_degree(mt)])
UpSet plotはvenn plotで表現するよりも和集合、積集合が見やすくなる。
venn::venn(deg_list, zcolor = "style")
Discussion