Rでアップセット図(UpSet図) ーUpSetR, 集合の関係性を示す, サンプル数が多い場合におススメー

Rでデータ解析と可視化

今回は、アップセット図(UpSet図)についてRのコード例を紹介したいと思います。

アップセット図(UpSet図)とは?
ベン図とは違うアプローチで、集合の関係性を視覚的に示す図です。

RのUpSetRパッケージについては、集合の違いを表すベン図に代わるもの、として以下の論文(※1)で紹介されています。
※1 参考文献
Jake R Conway, Alexander Lex, Nils Gehlenborg, UpSetR: an R package for the visualization of intersecting sets and their properties, Bioinformatics, Volume 33, Issue 18, September 2017, Pages 2938–2940, https://doi.org/10.1093/bioinformatics/btx364

”ベン図やオイラー図は、集合の交差を定量的に視覚化するための一般的なソリューションであるが、不十分である。交差する集合とその特性を可視化するための,ベン図やオイラー図に代わるスケーラブルなソリューションが必要である。”


1. ベン図とアップセット図(UpSet図)の違い

ベン図の特徴:
2つまたは3つの集合を円や楕円で表し、それらの集合の重複や個別要素を示します。3つまでの集合の要素の共通性や相違点を強調する場合に一般的に使用され、集合が4つ以上に増えると理解が難しくなるともいわれています。
UpSet図の特徴:
集合の共通要素や個別要素を表す水平な棒と、それらの組み合わせを表す垂直な線で構成されます。多数の集合に対し、集合の重複や相互作用を簡潔に示したい場合に適しているとされています。

集合が多いときの共通要素を理解したい場合は、UpSet図の方が適している、というイメージですね。


2. UpSet図 ―UpSetR―

ベン図のコード例で使用した遺伝子情報のダミーデータを用いて、UpSet図を作成して見ます。
↓↓↓ベン図の紹介記事です。

Rでベン図 ーggVennDiagram, venn, 最大7サンプル表示可能にー
ベン図は、集合論や統計学で広く使用され、重なりや包含関係を視覚的に理解するのに役立ちます。 異なるグループの要素の交わりや固有の特性を把握し、データの関連性を把握するのにとても便利です。 ■目次 1. ベン図とは 2. ベン図用ダミ...
genes <- paste("gene",1:1000,sep="") #1 
set.seed(0123)
x <- list(
 A=sample(genes,100), 
 B=sample(genes,150), 
 C=sample(genes,350), 
 D=sample(genes,450), 
 E=sample(genes,200), 
 F=sample(genes,300), 
 G=sample(genes,500))   #2

install.packages("UpSetR")  
library(UpSetR)
upset(fromList(x), nsets = 7)  #3

#1, 2は、遺伝子情報のダミーデータ作成
$A “gene415” “gene463” “gene179” “gene526” “gene195” “gene938” “gene818″~~のような、ランダムなgene情報が割り当てられたlistを作成
#3 listのxをUpSetRで使用するため、fromList()を使用。nsets =表示サンプル数

棒グラフのIntersection sizeは、各集合(A~G)に該当する遺伝子因子の数を示し、
棒グラフの下のプロットは、該当する集合にプロットされています。
Set Sizeは、各集合(A~G)ごとに含まれる因子数を示します。
例えば、
一番左の棒グラフは79因子が他の集合に含まれず、Gのみに含まれている因子数ということになります。
一番右の棒グラフは7因子が、B,D,Gに含まれていることを意味します。





3. UpSet図 色指定、棒グラフを並び替える ―UpSetR―

図の色を変えて、より見やすくしたり、
棒グラフのIntersection sizeを大きい順に並び変えたりしてみます。

upset(fromList(x), nsets = 7, order.by = "freq", point.size = 3, line.size = 1, main.bar.color = "darkblue", sets.bar.color = "lightseagreen") #4 棒グラフの色を指定、因子数の大きい順に並べる


upset(fromList(x[1:7]), nsets = 7, order.by = "freq", point.size = 3, line.size = 1, sets.bar.color = "lightseagreen", query.legend = "bottom", 
queries = list(
   list(
      query = intersects,
      params = list("D", "E", "G"), 
      color = "tomato", 
      active = T,
      query.name = "DEG")))  #5 強調したいところだけ色指定

#4 main.bar.color = で棒グラフの色を指定、sets.bar.color = でSet sizeの棒グラフの色を指定。order.by = 因子数で並べ替え。point.size = , line.size = で下のプロットサイズや線のサイズを指定。

#5 query.legend =で強調色の凡例(queriesのlistの中のquery.name = )場所を指定。queries = list( list(で、強調したい箇所を指定。


色を用いて、より理解しやすい図を作ることができました。
DとE, Gの3つのサンプルに共通する因子について、色を変えて強調できています。

2017年にUpSetRのコードが報告され、いろいろな分野で使用されてきています。
例えば、Pubmed 検索で、”UpSetR”が2024年2月15日時点で11件ヒットします。
25集合(サンプル)をならべているもの(※2)もあり、多くのサンプルの関係性をみたいときには使いやすいように思いました。
※2 参考文献
Kim KR, Yu JN, Hong JM, Kim SY, Park SY. Genome Assembly and Microsatellite Marker Development Using Illumina and PacBio Sequencing in the Carex pumila (Cyperaceae) from Korea. Genes (Basel). 2023 Nov 10;14(11):2063. doi: 10.3390/genes14112063.





参考webサイト
https://www.r-bloggers.com/2019/04/set-analysis-a-face-off-between-venn-diagrams-and-upset-plots/
https://doi.org/10.1093/bioinformatics/btx364
https://github.com/lgellis/MiscTutorial/tree/master/sets

コメント

タイトルとURLをコピーしました