👌

[R][Seurat] FindAllMarkersの結果をUpSet Plot

2023/02/15に公開約2,800字

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

ログインするとコメントできます