之前我們已經(jīng)講述了Cellphonedb的安裝配置和數(shù)據(jù)分析,就差可視化了,這里簡(jiǎn)單說(shuō)一下常見(jiàn)的可視化,如果需要其他更加個(gè)性化的可視方式,就需要發(fā)揮自己的聰明才智了!
CellphoneDB單細(xì)胞互作分析:
CellPhoneDB單細(xì)胞互作分析(1):Linux軟件安裝及遇到的Bug(ERROR)解決
CellPhoneDB單細(xì)胞互作分析(2):數(shù)據(jù)分析|人鼠基因同源轉(zhuǎn)化|ERROR解決|詳細(xì)注釋版代碼
cellphonedb分析完成后,我們得到6個(gè)數(shù)據(jù)文件,將其全部讀入,看似6個(gè),從內(nèi)容上講其實(shí)就三個(gè)。利用這些文件就可以做互作網(wǎng)絡(luò)圖、受配體氣泡圖及熱圖等等文章中常見(jiàn)的可視化圖形了。
setwd("D:/cellinter-celldb/out")
#cellphonedb可視化
count_net <- read.delim("count_network.txt", check.names = FALSE)
inter_net <- read.delim("interaction_count.txt", check.names = FALSE)
pvalues <- read.delim("pvalues.txt", check.names = FALSE)
means <- read.delim("means.txt", check.names = FALSE)
sig.means <- read.delim("significant_means.txt", check.names = FALSE)
deconvoluted <- read.delim("deconvoluted.txt", check.names = FALSE)
一、互作網(wǎng)絡(luò)圖
互作圖很多網(wǎng)上教程使用igraph包做的,其實(shí)這是源碼,確實(shí)是需要這樣做的,但是我認(rèn)為太麻煩,因?yàn)槟阋约赫{(diào)整,還不一定做的對(duì)。所以我想了一個(gè)妙招---”借雞下蛋“,這應(yīng)該是生信人需要做的舉一反三。之前我們說(shuō)過(guò)Cellchat的單細(xì)胞互作分析(Cellchat(代碼詳細(xì)注釋版):?jiǎn)渭?xì)胞轉(zhuǎn)錄組(人、小鼠)細(xì)胞互作分析及可視化),這里面有作者寫好的函數(shù),可視化也是相當(dāng)不錯(cuò)的,只要將Cellphonedb文件格式整理成需要的格式,使用Cellchat函數(shù)包不就完成了?需要的文件是count_network.txt
#互作網(wǎng)絡(luò)圖
library(CellChat)
count_inter <- count_net
count_inter$count <- count_inter$count/100
library(tidyr)
count_inter<-spread(count_inter, TARGET, count)
rownames(count_inter) <- count_inter$SOURCE
count_inter <- count_inter[, -1]
count_inter <- as.matrix(count_inter)
netVisual_circle(count_inter,weight.scale = T)

每種細(xì)胞與其他細(xì)胞的互作,循環(huán)出圖!
par(mfrow = c(4,3), xpd=TRUE)
for (i in 1:nrow(count_inter)) {
mat2 <- matrix(0, nrow = nrow(count_inter), ncol = ncol(count_inter), dimnames = dimnames(count_inter))
mat2[i, ] <- count_inter[i, ]
netVisual_circle(mat2,
weight.scale = T,
edge.weight.max = max(count_inter),
title.name = rownames(count_inter)[i],
arrow.size=0.2)
}

二、熱圖
其實(shí)熱圖和網(wǎng)絡(luò)圖一樣,都是展示了不同細(xì)胞之間互作的數(shù)目。我們?cè)谶\(yùn)行完cellphonedb的熱圖作圖函數(shù)后,熱圖展示的已經(jīng)是篩選過(guò)的p<0.05的受配體互作數(shù)目,生成的文件是count_net, 這里我們直接用這個(gè)文件作熱圖,進(jìn)行一些簡(jiǎn)單的修飾,例如展示互作數(shù)目,其他個(gè)性化修飾同熱圖。當(dāng)然如果不需要默認(rèn)的作圖,自己篩選做熱圖需要從pvalues這個(gè)文件開(kāi)始,具體可參考網(wǎng)上其他教程。
#熱圖其實(shí)和網(wǎng)絡(luò)圖一樣,都是展示互作數(shù)目的。
library(tidyr)
count_matrix<-spread(count_net, TARGET, count)
rownames(count_matrix) <- count_matrix$SOURCE
count_matrix <- count_matrix[, -1]
count_matrix <- as.matrix(count_matrix)
用pheatmap做熱圖。
library(pheatmap)
pheatmap(count_matrix, show_rownames = T, show_colnames = T, scale="none", cluster_cols = T,
border_color='white', cluster_rows = T, fontsize_row = 14, fontsize_col = 14,
main = "Control", treeheight_row = 0, family = 'Arial',
color = colorRampPalette(c("dodgerblue4",'peachpuff','deeppink4' ))( 1000 ),
treeheight_col = 0,
display_numbers = T, number_color="white",fontsize_number=12,
number_format="%.0f", legend_labels = c(0,300))

三、受配體點(diǎn)圖
受配體點(diǎn)圖的繪制需要兩個(gè)文件pvalues.txt和means.txt,原理是將兩個(gè)文件合并,提取受配體對(duì)進(jìn)行可視化,ggplot就可以實(shí)現(xiàn)。但是自己弄比較繁瑣,這里有一個(gè)專門針對(duì)cellphonedb的可視化R包,可以輕松解決這一問(wèn)題,你只需修改參數(shù)即可,可視化效果也不錯(cuò),用在文章中綽綽有余!
#安裝
if (!requireNamespace("devtools", quietly = TRUE))
install.packages("devtools")
if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager")
devtools::install_github('zktuong/ktplots', dependencies = TRUE)
library(ktplots)
#作圖需要的文件,means.txt, pvalues.txt, 單細(xì)胞seurat對(duì)象
讀入作圖需要的文件。
pvals <- read.delim(paste0(pbmc,"pvalues.txt"), check.names = FALSE)
means <- read.delim(paste0(pbmc,"means.txt"), check.names = FALSE)
load("E:/生物信息學(xué)/數(shù)據(jù)/scRNA.Rdata")
氣泡圖。cell_type1、2指定互作細(xì)胞,如果不指定則默認(rèn)所有細(xì)胞,這里我們指定DC,可視化的就是DC發(fā)出信號(hào)作用于其他細(xì)胞,以及DC接受的其他細(xì)胞的作用。實(shí)際情況按照自己的實(shí)驗(yàn)?zāi)康闹付ācdata就是我們用于分析的單細(xì)胞seurat對(duì)象。means和pvals就是我們cellphonedb分析產(chǎn)生的兩個(gè)文件。gene.family是一些基因?qū)?,有chemokines', 'Th1', 'Th2', 'Th17', 'Treg', 'costimulatory', 'coinhibitory', 'niche',可以選擇需要的指定,不選擇則默認(rèn)所有。keep_significant_only=T,我們只選擇顯著的。其他的可視化參數(shù)可自行查閱函數(shù),可視化是基于ggplot的,所以主題修改和ggplot一樣。
plot_cpdb(cell_type1 = 'DC', cell_type2 = "", scdata = scRNA,
idents = 'celltype', means = means, pvals = pvals,
gene.family = 'costimulatory',highlight = "blue",
keep_significant_only=T) +
theme(axis.text = element_text(size = 10, color = 'black'))

這樣的可視化就很足夠了。當(dāng)然了,ktplots還有其他的可視化,比如比較新奇的將細(xì)胞之間互作基因?qū)τ孟覉D展示,還可以指定特定的幾種細(xì)胞互作弦圖展示。還可以多組分析可視化、結(jié)合空間轉(zhuǎn)錄組的可視化、對(duì)于單細(xì)胞的可能化等等,感興趣的值得學(xué)習(xí)。但是就我們細(xì)胞互作而言,已經(jīng)足夠了。
我們這里提供了最少的代碼和步驟,比較簡(jiǎn)潔的完成了cellphonedb的可視化,我覺(jué)得這就足夠了。如果你覺(jué)得有用,分享點(diǎn)贊一下唄!當(dāng)然,你可以學(xué)習(xí)其他包的函數(shù),研究明白其原理,可以自己寫函數(shù)可視化。
更多精彩內(nèi)容請(qǐng)至我的公眾號(hào)《KS科研分享與服務(wù)》