R語言可視化11: (sc)RNAseq 數據可視化 - dittoSeq

dittoSeq 是一款對單細胞和批量 RNA 測序數據進行分析和可視化的工具,提供了多種可視化效果,并且允許自定義超陆。
對于單細胞數據,dittoSeq 直接處理在其他軟件包(Seurat浦马、scater时呀、scran 等)中預處理的數據。對于批量 RNAseq 數據晶默,dittoSeq 的導入函數會將各種不同結構的批量 RNAseq 數據轉換為 dittoSeq 幫助程序和可視化函數可以使用的集合結構

1. \color{green}{scRNA- seq}數據

dittoSeq 本身可與 Seurat 和 SingleCellExperiment 對象配合使用谨娜,只需加載數據即可

# 安裝并加載所需的R包
# BiocManager::install("dittoSeq")
library(dittoSeq)
library(dplyr)

load("sce.Rdata") # 加載自己的單細胞數據

dittoPlot(sce,
          "MS4A1", # 感興趣的基因
          group.by = "orig.ident", # 講將細胞/樣本分組的選項
          plots = c("vlnplot", "boxplot"), # 設置繪圖類型,包括:jitter, boxplot, vlnplot, ridgeplot磺陡。注意順序
          boxplot.fill = F, # 是否顯示異常值
          boxplot.color = 'white', # 箱線圖線條顏色
          theme = theme(axis.text = element_text(size = 12, color = 'black'),
                        axis.line = element_line(size = 1),
                        axis.title.y = element_text(size = 15, color = 'black'),
                        plot.title = element_text(size=15, hjust=0.5, color = 'black')),
          ylab = 'Expression',
          y.breaks = seq(0, 5, 1),
          max = 5, min = 0,
          xlab = '',
          x.labels.rotate =F,
          main = "MS4A1",
          legend.show = F)
dittoSeq-1

1.2 細胞比例圖

# seurat等單細胞可視化工具在查看細胞比例柱狀圖時趴梢,需先進行細胞比例計算漠畜,這里可以直接作圖。數據可以表示為百分比或計數坞靶,由"scale"輸入控制的
p1 <- dittoBarPlot(sce, "Major.CellType", group.by = "orig.ident")
p2 <- dittoBarPlot(sce, "Major.CellType", group.by = "orig.ident", scale = "count")

p1|p2
dittoSeq-2
# dittoFreqPlot可按每種細胞類型分面憔狞,sample.by可將組內的細胞分組,group.by成單獨的樣本
dittoFreqPlot(sce, "Major.CellType", sample.by = "orig.ident", group.by = "class")
dittoSeq-3

2. \color{green}{Bulk} \color{green}{RNA- seq}數據

# 加載數據(制作模擬的表達數據和條件數據)
exp <- matrix(rpois(20000, 5), ncol=20)
colnames(exp) <- paste0("donor", seq_len(ncol(exp)))
rownames(exp) <- paste0("gene", seq_len(nrow(exp)))
logexp <- logexp <- log2(exp + 1)

logexp[1:3,1:6]
##         donor1   donor2   donor3   donor4   donor5   donor6
## gene1 2.584963 1.584963 3.000000 2.000000 2.584963 2.584963
## gene2 1.000000 2.807355 2.584963 2.584963 2.807355 1.584963
## gene3 2.000000 3.000000 2.000000 2.807355 1.584963 3.000000

pca <- matrix(rnorm(20000), nrow=20)
conditions <- factor(rep(1:4, 5))
sex <- c(rep("M", 9), rep("F", 11))

# dittoSeq 本身可處理存儲為 SummarizedExperiment 對象的批量 RNAseq 數據
library(SummarizedExperiment)
bulkSE <- SummarizedExperiment(
  assays = list(counts = exp,
                logcounts = logexp), # 每個相當于一個表達矩陣彰阴,可存儲counts矩陣瘾敢、TPM矩陣和FPKM矩陣等
  colData = data.frame(conditions = conditions,
                       sex = sex) # 可添加行信息(基因信息,比如gene id, gene name, gene type等)和列信息(樣本信息尿这,比如生存時間簇抵、生存狀態(tài)等)
)

# 或者,也可以使用 importDittoBulk() 函數將以其他形式存儲的批量數據轉換為 SingleCellExperiment 結構
bulkSCE <- importDittoBulk(
    x = list(counts = exp,
             logcounts = logexp), # x可以是 DGEList妻味、DESeqDataSet正压、SummarizedExperiment 或數據矩陣列表
    metadata = data.frame(conditions = conditions,
                          sex = sex),
    reductions = list(pca = pca)
    )

# meta數據和降維也可以后續(xù)添加
bulkSCE$conditions <- conditions
bulkSCE$sex <- sex

bulkSCE <- addDimReduction(
  object = bulkSCE,
  embeddings = pca,
  name = "pca",
  key = "PC")

# 可視化
dittoDimPlot(bulkSCE, "sex", size = 3, do.ellipse = TRUE)

dittoBarPlot(bulkSCE, "sex", group.by = "conditions")

dittoBoxPlot(bulkSCE, "gene1", group.by = "sex")

dittoHeatmap(bulkSCE, getGenes(bulkSCE)[1:10],
             annot.by = c("conditions", "sex"))
dittoSeq-4

3. \color{green}{其他參數}設置

3.1 dittoDimPlot & dittoScatterPlot

# dittoScatterPlot() 的軸是基因表達數據或meta數據欣福,dittoDimPlot() 的軸是降維责球,如 tsne、pca拓劝、umap 或類似數據
dittoScatterPlot(
  object = sce,
  x.var = "nCount_RNA", y.var = "nFeature_RNA",
  color.var = "percent.mito")

dittoDimPlot(sce, "cluster",
             do.label = TRUE,
             labels.repel = FALSE,
             
             add.trajectory.lineages = list(
               c("9","3"),
               c("8","7","2","4"),
               c("8","7","1"),
               c("5","11","6"),
               c("10","0")),
             trajectory.cluster.meta = "cluster")
dittoSeq-5

3.2 dittoDimHex & dittoScatterHex

# 與“Plot”版本類似雏逾,繪圖區(qū)域被分成六邊形箱
dittoScatterHex(
  object = sce,
  x.var = "PPY", y.var = "INS",
  color.var = "label",
  colors = c(1:4,7), max.density = 15)

dittoDimHex(sce, "INS")
dittoSeq-6

3.3 dittoPlot (and dittoRidgePlot + dittoBoxPlot wrappers)

# dittoPlot() 是主函數,dittoRidgePlot() 和 dittoBoxPlot() 本質上只是將輸入圖的默認值從 c(“jitter”, “vlnplot”) 調整為c(“ridgeplot”) 或  or c(“boxplot”,“jitter”)
dittoPlot(sce, "ENO1", group.by = "label",
          plots = c("jitter", "vlnplot", "boxplot"), # <- order matters
          
          # change the color and size of jitter points
          jitter.color = "blue", jitter.size = 0.5,
          
          # change the outline color and width, and remove the fill of boxplots
          boxplot.color = "white", boxplot.width = 0.1,
          boxplot.fill = FALSE,
          
          # change how the violin plot widths are normalized across groups
          vlnplot.scaling = "count"
)


dittoRidgePlot(sce, "ENO1", group.by = "label")

dittoBoxPlot(sce, "ENO1", group.by = "label")
dittoSeq-7

3.4 dittoHeatmap

# Pick Genes
genes <- c("SST", "REG1A", "PPY", "INS", "CELA3A", "PRSS2", "CTRB1",
           "CPA1", "CTRB2" , "REG3A", "REG1B", "PRSS1", "GCG", "CPB1",
           "SPINK1", "CELA3B", "CLPS", "OLFM4", "ACTG1", "FTL")


dittoHeatmap(sce, genes,
             annot.by = c("label", "donor"),
             order.by = "donor",
             scaled.to.max = TRUE,
             show_colnames = FALSE,
             show_rownames = FALSE)

# Highlight certain genes
dittoHeatmap(sce, genes, 
             annot.by = c("label", "donor"),
             highlight.features = genes[1:3],
             complex = TRUE)
dittoSeq-8

3.5 Multi-Plotters (創(chuàng)建多個圖郑临,或將多個變量的數據匯總在一個圖中)

3.5.1 dittoDotPlot

delta.genes <- c(
  "SST", "RBP4", "LEPR", "PAPPA2", "LY6H",
  "CBLN4", "GPX3", "BCHE", "HHEX", "DPYSL3",
  "SERPINA1", "SEC11C", "ANXA2", "CHGB", "RGS2",
  "FXYD6", "KCNIP1", "SMOC1", "RPL10", "LRFN5")


dittoDotPlot(sce, vars = delta.genes, 
             group.by = "label",
             scale = FALSE)
dittoSeq-9

3.5.2 multi_dittoPlot & dittoPlotVarsAcrossGroups

multi_dittoPlot(sce, delta.genes[1:6], 
                group.by = "label",
                vlnplot.lineweight = 0.2, jitter.size = 0.3)

dittoPlotVarsAcrossGroups(sce, delta.genes, 
                          group.by = "label",
                          main = "Delta-cell Markers")
dittoSeq-10

3.5.3 multi_dittoDimPlot & multi_dittoDimPlotVaryCells

multi_dittoDimPlot(sce, delta.genes[1:6])

multi_dittoDimPlotVaryCells(sce, delta.genes[1],
                            vary.cells.meta = "label")
dittoSeq-11
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末栖博,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子厢洞,更是在濱河造成了極大的恐慌仇让,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件躺翻,死亡現(xiàn)場離奇詭異丧叽,居然都是意外死亡,警方通過查閱死者的電腦和手機公你,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門踊淳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人陕靠,你說我怎么就攤上這事迂尝。” “怎么了剪芥?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵垄开,是天一觀的道長。 經常有香客問我税肪,道長溉躲,這世上最難降的妖魔是什么虚吟? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮签财,結果婚禮上串慰,老公的妹妹穿的比我還像新娘。我一直安慰自己唱蒸,他們只是感情好邦鲫,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著神汹,像睡著了一般庆捺。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上屁魏,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天滔以,我揣著相機與錄音,去河邊找鬼氓拼。 笑死你画,一個胖子當著我的面吹牛,可吹牛的內容都是我干的桃漾。 我是一名探鬼主播坏匪,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼撬统!你這毒婦竟也來了适滓?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤恋追,失蹤者是張志新(化名)和其女友劉穎凭迹,沒想到半個月后,有當地人在樹林里發(fā)現(xiàn)了一具尸體苦囱,經...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡嗅绸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了沿彭。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片朽砰。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖喉刘,靈堂內的尸體忽然破棺而出瞧柔,到底是詐尸還是另有隱情,我是刑警寧澤睦裳,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布造锅,位于F島的核電站,受9級特大地震影響廉邑,放射性物質發(fā)生泄漏哥蔚。R本人自食惡果不足惜倒谷,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望糙箍。 院中可真熱鬧渤愁,春花似錦、人聲如沸深夯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咕晋。三九已至雹拄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間掌呜,已是汗流浹背滓玖。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留质蕉,地道東北人势篡。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像饰剥,于是被迫代替她去往敵國和親殊霞。 傳聞我的和親對象是個殘疾皇子摧阅,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內容