根據(jù)單細(xì)胞表達(dá)矩陣幅慌,箱圖可視化高表達(dá)基因

在單細(xì)胞測(cè)序下游分析中宋欺,當(dāng)重點(diǎn)關(guān)注哪些基因在所有細(xì)胞平均表達(dá)顯著時(shí),可選取所選取的top基因進(jìn)行可視化胰伍。

0齿诞、scater包方法

scaterR包里,有個(gè)函數(shù)plotHighestExprs骂租,可自動(dòng)根據(jù)SingleCellExperiment對(duì)象數(shù)據(jù)進(jìn)行繪制祷杈。但有個(gè)缺點(diǎn)就是太慢了,具體操作如下

library(SingleCellExperiment)
sce <- SingleCellExperiment(
  assays = list(counts = expr)
)
class(sce)
library(scater)
sce <- logNormCounts(sce) 
p1 <- plotHighestExprs(sce, exprs_values = "logcounts",n=20)
#因?yàn)槌鰣D比較慢渗饮,故保存為本地后再觀察可提高效率
ggsave("./p1.pdf", plot = p1)
p1
  • 下面介紹一種手動(dòng)繪制箱圖的方法但汞,不僅出圖快,而且箱圖反映的信息也更多一些

1互站、獲取單細(xì)胞表達(dá)矩陣

具體可分為三種情況

  • 直接獲得原始表達(dá)矩陣私蕾;
dim(expr)
expr[1:4,1:4]
expr
  • 從Seurat對(duì)象獲取胡桃;
scRNA = CreateSeuratObject(counts=expr)
class(scRNA)
#[1] "Seurat"
#attr(,"package")
#[1] "Seurat"
scRNA@assays$RNA@counts[1:4,1:4]
counts <- scRNA@assays$RNA@counts[1:4,1:4]
scRNA

注意的是Seurat是以稀疏矩陣dgCMatrix格式儲(chǔ)存的

  • 從SingleCellExpriment對(duì)象獲炔劝取;
sce <- SingleCellExperiment(
  assays = list(counts = expr)
)
class(sce)
#[1] "SingleCellExperiment"
#attr(,"package")
#[1] "SingleCellExperiment"
assay(sce, "counts")[1:4,1:4]
counts <- assay(sce, "counts")[1:4,1:4]
sce

2翠胰、原始表達(dá)矩陣標(biāo)準(zhǔn)化

最主要的原始是懊纳,不同細(xì)胞的文庫(kù)大小可能因測(cè)序過(guò)程存在差異。通過(guò)標(biāo)準(zhǔn)化亡容,可使基因在不同細(xì)胞的表達(dá)情況具有可比性。

hist(colSums(expr))
histogram
  • 手動(dòng)對(duì)原始矩陣標(biāo)準(zhǔn)化
cell_lib <- colSums(expr) #計(jì)算細(xì)胞文庫(kù)
normalized <- t(t(expr)/cell_lib)*100

上述兩步也可合并成一步冤今,但可能跳的有點(diǎn)多闺兢,關(guān)鍵理解如下示例的第三步的除法:
(1)R語(yǔ)言的計(jì)算是向量化的;例如可以進(jìn)行向量間加減乘除運(yùn)算,具體規(guī)則屋谭,自己嘗試下理解更深刻脚囊;
(2)應(yīng)用到矩陣時(shí),可以理解為一行代表向量的一個(gè)元素桐磁。


示例
# 最后乘100是將小數(shù)更友好得表示(百分比)
normalized[1:4,1:4]
normalized[1:4,1:4]
  • 如果是Seurat對(duì)象悔耘、SingleCellExperiment對(duì)象,則可以運(yùn)用相應(yīng)的函數(shù)計(jì)算我擂,再導(dǎo)出標(biāo)準(zhǔn)化矩陣衬以。
scRNA <- NormalizeData(scRNA)
scRNA@assays$RNA@data[1:4,1:4]

如下圖,結(jié)果與我們上面計(jì)算的有點(diǎn)不同校摩;
查看NormalizeData幫助文檔可知看峻,其默認(rèn)方法是計(jì)算每個(gè)細(xì)胞中基因表達(dá)量與文庫(kù)的比值,然后乘一個(gè)size.factor(一般是10000)衙吩,最后進(jìn)行l(wèi)og轉(zhuǎn)換(加1互妓,避免0以及零點(diǎn)幾的無(wú)意義結(jié)果log1p

基于Seurat的NormalizeData

NormalizeData

library("scater")
sce <- logNormCounts(sce) 
assay(sce, "logcounts")[1:4,1:4]

logNormCounts

如上圖結(jié)果,與之前兩種方法結(jié)果還不一樣坤塞。
scater包的logNormCounts的主要思路是首先平衡每個(gè)細(xì)胞的文庫(kù)大小冯勉,再計(jì)算相對(duì)于所在細(xì)胞文庫(kù)的比例。具體流程可見(jiàn)下圖的示例摹芙。
logNormCounts

綜上不同的方法灼狰,可得到不同的標(biāo)準(zhǔn)化結(jié)果。具體采用哪種方法瘫辩,可自己根據(jù)情況選擇伏嗜。

3、選取top基因伐厌,進(jìn)行箱圖可視化

  • 這里我選擇了第一種承绸,自己簡(jiǎn)單進(jìn)行的標(biāo)準(zhǔn)化的結(jié)果。
#選擇平均在每個(gè)細(xì)胞表達(dá)最顯著的基因
most_exp <- sort(rowSums(normalized),T)[20:1] / ncol(expr)
# 可以想一下為什么設(shè)置[20:1]挣轨,與下面繪圖有關(guān)
  • boxplot
boxplot(t(normalized[names(most_exp),]),
        cex=.01, las=1, cex.axis = .5,
        #分別設(shè)置離群點(diǎn)大小军熏,軸標(biāo)簽的大小及方向
        xlab="% total count per cell",
        col=scales::hue_pal()(20)[20:1], #配色
        horizontal=TRUE)
boxplot
  • ggplot2
library(ggplot2)
library(reshape2)
newdata <- melt(t(normalized[names(most_exp),]))
head(newdata)
ggplot(data=newdata, aes(x=Var2, y=value, fill=Var2)) +
  geom_boxplot(outlier.size = 0.5) +
  coord_flip() + 
  theme(legend.position="none") +
  labs(title="High expression gene", x="", 
       y="% total count per cell")
ggplot2

最后總結(jié)下:主要根據(jù)單細(xì)胞表達(dá)矩陣,繪制箱圖來(lái)可視化高表達(dá)基因卷扮。中間介紹了下如何讓同一基因在不同細(xì)胞表達(dá)具有可比性的幾種方法荡澎。

參考文章
https://nbisweden.github.io/workshop-scRNAseq/labs/compiled/seurat/seurat_01_qc.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市晤锹,隨后出現(xiàn)的幾起案子摩幔,更是在濱河造成了極大的恐慌,老刑警劉巖鞭铆,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件或衡,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)封断,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門斯辰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人坡疼,你說(shuō)我怎么就攤上這事彬呻。” “怎么了柄瑰?”我有些...
    開(kāi)封第一講書人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵闸氮,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我狱意,道長(zhǎng)湖苞,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任详囤,我火速辦了婚禮财骨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘藏姐。我一直安慰自己隆箩,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布羔杨。 她就那樣靜靜地躺著捌臊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪兜材。 梳的紋絲不亂的頭發(fā)上理澎,一...
    開(kāi)封第一講書人閱讀 51,763評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音曙寡,去河邊找鬼糠爬。 笑死,一個(gè)胖子當(dāng)著我的面吹牛举庶,可吹牛的內(nèi)容都是我干的执隧。 我是一名探鬼主播,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼户侥,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼镀琉!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起蕊唐,我...
    開(kāi)封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤屋摔,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后替梨,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體钓试,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡署尤,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了亚侠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡俗扇,死狀恐怖硝烂,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情铜幽,我是刑警寧澤滞谢,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站除抛,受9級(jí)特大地震影響狮杨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜到忽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一橄教、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧喘漏,春花似錦护蝶、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至负饲,卻和暖如春堤魁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背返十。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工妥泉, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人吧慢。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓涛漂,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親检诗。 傳聞我的和親對(duì)象是個(gè)殘疾皇子匈仗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容