劉小澤寫于2020.7.21
為何取名叫“交響樂(lè)”?因?yàn)閱渭?xì)胞分析就像一個(gè)大樂(lè)團(tuán),需要各個(gè)流程的協(xié)同配合
單細(xì)胞交響樂(lè)1-常用的數(shù)據(jù)結(jié)構(gòu)SingleCellExperiment
單細(xì)胞交響樂(lè)2-scRNAseq從實(shí)驗(yàn)到下游簡(jiǎn)介
單細(xì)胞交響樂(lè)3-細(xì)胞質(zhì)控
單細(xì)胞交響樂(lè)4-歸一化
單細(xì)胞交響樂(lè)5-挑選高變化基因
單細(xì)胞交響樂(lè)6-降維
單細(xì)胞交響樂(lè)7-聚類分群
單細(xì)胞交響樂(lè)8-marker基因檢測(cè)
單細(xì)胞交響樂(lè)9-細(xì)胞類型注釋
單細(xì)胞交響樂(lè)9-細(xì)胞類型注釋
單細(xì)胞交響樂(lè)10-數(shù)據(jù)集整合后的批次矯正
單細(xì)胞交響樂(lè)11-多樣本間差異分析
單細(xì)胞交響樂(lè)12-檢測(cè)Doublet
單細(xì)胞交響樂(lè)13-細(xì)胞周期推斷
單細(xì)胞交響樂(lè)14-細(xì)胞軌跡推斷
單細(xì)胞交響樂(lè)15-scRNA與蛋白豐度信息結(jié)合
單細(xì)胞交響樂(lè)16-處理大型數(shù)據(jù)
單細(xì)胞交響樂(lè)17-不同單細(xì)胞R包的數(shù)據(jù)格式相互轉(zhuǎn)換
單細(xì)胞交響樂(lè)18-實(shí)戰(zhàn)一 Smart-seq2
單細(xì)胞交響樂(lè)19-實(shí)戰(zhàn)二 STRT-Seq
單細(xì)胞交響樂(lè)20-實(shí)戰(zhàn)三 10X 未過(guò)濾的PBMC數(shù)據(jù)
單細(xì)胞交響樂(lè)21-實(shí)戰(zhàn)三 批量處理并整合多個(gè)10X PBMC數(shù)據(jù)
單細(xì)胞交響樂(lè)22-實(shí)戰(zhàn)五 CEL-seq2
單細(xì)胞交響樂(lè)23-實(shí)戰(zhàn)六 CEL-seq
單細(xì)胞交響樂(lè)24-實(shí)戰(zhàn)七 SMARTer 胰腺細(xì)胞
單細(xì)胞交響樂(lè)25-實(shí)戰(zhàn)八 Smart-seq2 胰腺細(xì)胞
單細(xì)胞交響樂(lè)26-實(shí)戰(zhàn)九 胰腺細(xì)胞數(shù)據(jù)整合
1 前言
前面的種種都是作為知識(shí)儲(chǔ)備,但是不實(shí)戰(zhàn)還是記不住前面的知識(shí)
這是第十個(gè)實(shí)戰(zhàn)練習(xí)
數(shù)據(jù)來(lái)自Grun et al. 2016的小鼠造血干細(xì)胞 haematopoietic stem cell (HSC) ,使用的技術(shù)是CEL-seq
數(shù)據(jù)準(zhǔn)備
library(scRNAseq)
sce.grun.hsc <- GrunHSCData(ensembl=TRUE)
sce.grun.hsc
# class: SingleCellExperiment
# dim: 21817 1915
# metadata(0):
# assays(1): counts
# rownames(21817): ENSMUSG00000109644
# ENSMUSG00000007777 ... ENSMUSG00000055670
# ENSMUSG00000039068
# rowData names(3): symbol chr originalName
# colnames(1915): JC4_349_HSC_FE_S13_
# JC4_350_HSC_FE_S13_ ...
# JC48P6_1203_HSC_FE_S8_
# JC48P6_1204_HSC_FE_S8_
# colData names(2): sample protocol
# reducedDimNames(0):
# altExpNames(0):
table(sce.grun.hsc$sample)
#
# JC20 JC21 JC26 JC27 JC28 JC30 JC32
# 87 96 85 91 80 96 93
# JC35 JC36 JC37 JC39 JC4 JC40 JC41
# 96 80 87 93 84 96 94
# JC43 JC44 JC45 JC46 JC48P4 JC48P6 JC48P7
# 92 94 90 96 95 96 94
ID轉(zhuǎn)換
library(AnnotationHub)
ens.mm.v97 <- AnnotationHub()[["AH73905"]]
anno <- select(ens.mm.v97, keys=rownames(sce.grun.hsc),
keytype="GENEID", columns=c("SYMBOL", "SEQNAME"))
# 這里全部對(duì)應(yīng)
> sum(is.na(anno$SYMBOL))
[1] 0
> sum(is.na(anno$SEQNAME))
[1] 0
# 接下來(lái)只需要匹配順序即可
rowData(sce.grun.hsc) <- anno[match(rownames(sce.grun.hsc), anno$GENEID),]
sce.grun.hsc
## class: SingleCellExperiment
## dim: 21817 1915
## metadata(0):
## assays(1): counts
## rownames(21817): ENSMUSG00000109644 ENSMUSG00000007777 ...
## ENSMUSG00000055670 ENSMUSG00000039068
## rowData names(3): GENEID SYMBOL SEQNAME
## colnames(1915): JC4_349_HSC_FE_S13_ JC4_350_HSC_FE_S13_ ...
## JC48P6_1203_HSC_FE_S8_ JC48P6_1204_HSC_FE_S8_
## colData names(2): sample protocol
## reducedDimNames(0):
## altExpNames(0):
2 質(zhì)控
依然是備份一下,把unfiltered數(shù)據(jù)主要用在質(zhì)控的探索上
unfiltered <- sce.grun.hsc
發(fā)現(xiàn)這個(gè)數(shù)據(jù)既沒(méi)有MT也沒(méi)有ERCC
grep('MT',rowData(sce.grun.hsc)$SEQNAME)
# integer(0)
能用的數(shù)據(jù)只有其中的protocol了,它表示細(xì)胞提取方法
table(sce.grun.hsc$protocol)
#
# micro-dissected cells
# 1546
# sorted hematopoietic stem cells
# 369
# 再看一下各個(gè)樣本與提取方法的對(duì)應(yīng)關(guān)系
table(sce.grun.hsc$protocol,sce.grun.hsc$sample)

根據(jù)背景知識(shí),大部分顯微操作(micro-dissected)得到的細(xì)胞很多質(zhì)量都較低,和我們的質(zhì)控假設(shè)相違背,于是這里就不把它們納入過(guò)濾條件
library(scater)
stats <- perCellQCMetrics(sce.grun.hsc)
# 只用sorted hematopoietic stem cells 計(jì)算過(guò)濾條件
qc <- quickPerCellQC(stats, batch=sce.grun.hsc$protocol,
subset=grepl("sorted", sce.grun.hsc$protocol))
colSums(as.matrix(qc))
## low_lib_size low_n_features discard
## 465 482 488
sce.grun.hsc <- sce.grun.hsc[,!qc$discard]
做個(gè)圖看看
colData(unfiltered) <- cbind(colData(unfiltered), stats)
unfiltered$discard <- qc$discard
gridExtra::grid.arrange(
plotColData(unfiltered, y="sum", x="sample", colour_by="discard",
other_fields="protocol") + scale_y_log10() + ggtitle("Total count") +
facet_wrap(~protocol),
plotColData(unfiltered, y="detected", x="sample", colour_by="discard",
other_fields="protocol") + scale_y_log10() +
ggtitle("Detected features") + facet_wrap(~protocol),
ncol=1
)
可以看到,大多數(shù)的顯微操作技術(shù)得到的細(xì)胞文庫(kù)都比較小,相比于細(xì)胞分選方法,它在提取過(guò)程中對(duì)細(xì)胞損傷較大

3 歸一化
使用去卷積方法
library(scran)
set.seed(101000110)
clusters <- quickCluster(sce.grun.hsc)
sce.grun.hsc <- computeSumFactors(sce.grun.hsc, clusters=clusters)
sce.grun.hsc <- logNormCounts(sce.grun.hsc)
4 找高變異基因
這里沒(méi)有指定任何的批次,因?yàn)橄氡A暨@兩種技術(shù)產(chǎn)生的任何差異
set.seed(00010101)
dec.grun.hsc <- modelGeneVarByPoisson(sce.grun.hsc)
top.grun.hsc <- getTopHVGs(dec.grun.hsc, prop=0.1)
做個(gè)圖
plot(dec.grun.hsc$mean, dec.grun.hsc$total, pch=16, cex=0.5,
xlab="Mean of log-expression", ylab="Variance of log-expression")
curfit <- metadata(dec.grun.hsc)
curve(curfit$trend(x), col='dodgerblue', add=TRUE, lwd=2)
看到這個(gè)線有點(diǎn)“太平緩”,和之前見(jiàn)過(guò)的都不一樣,感覺(jué)“中間少了一個(gè)峰”。這是因?yàn)榧?xì)胞中的基因表達(dá)量都比較低,差別也不大【大家一起貧窮,于是貧富差距很小】,所以在縱坐標(biāo)(衡量變化的方差)上體現(xiàn)不出來(lái)差距,也就導(dǎo)致了擬合的曲線不會(huì)有“峰”
可能會(huì)想,那為什么不是大家表達(dá)量都很高呢(大家都很富有,貧富差距不是也很小嗎)?因?yàn)闄M坐標(biāo)可以看到,從0-3.5,這個(gè)范圍對(duì)于表達(dá)量來(lái)說(shuō)確實(shí)很小,之前做的圖有的都大于10、15

5 降維聚類
降維就采取最基礎(chǔ)的方式:
set.seed(101010011)
sce.grun.hsc <- denoisePCA(sce.grun.hsc, technical=dec.grun.hsc, subset.row=top.grun.hsc)
sce.grun.hsc <- runTSNE(sce.grun.hsc, dimred="PCA")
# 檢查PC的數(shù)量
ncol(reducedDim(sce.grun.hsc, "PCA"))
## [1] 9
聚類
snn.gr <- buildSNNGraph(sce.grun.hsc, use.dimred="PCA")
colLabels(sce.grun.hsc) <- factor(igraph::cluster_walktrap(snn.gr)$membership)
table(colLabels(sce.grun.hsc))
##
## 1 2 3 4 5 6 7 8 9 10 11 12
## 259 148 221 103 177 108 48 122 98 63 62 18
作圖
short <- ifelse(grepl("micro", sce.grun.hsc$protocol), "micro", "sorted")
gridExtra:::grid.arrange(
plotTSNE(sce.grun.hsc, colour_by="label"),
plotTSNE(sce.grun.hsc, colour_by=I(short)),
ncol=2
)
由于沒(méi)有去除兩個(gè)技術(shù)批次的差異,所以這里分的很開(kāi)

6 找marker基因
markers <- findMarkers(sce.grun.hsc, test.type="wilcox", direction="up",
row.data=rowData(sce.grun.hsc)[,"SYMBOL",drop=FALSE])
檢查一下cluster6的marker基因
chosen <- markers[['6']]
best <- chosen[chosen$Top <= 10,]
length(best)
# [1] 16
# 將cluster6與其他clusters對(duì)比的AUC結(jié)果提取出來(lái)
aucs <- getMarkerEffects(best, prefix="AUC")
rownames(aucs) <- best$SYMBOL
library(pheatmap)
pheatmap(aucs, color=viridis::plasma(100))
看到溶菌酶相關(guān)基因(LYZ家族)、Camp、 Lcn2、 Ltf 都上調(diào),表明cluster6可能是神經(jīng)元起源細(xì)胞

歡迎關(guān)注我們的公眾號(hào)~_~
我們是兩個(gè)農(nóng)轉(zhuǎn)生信的小碩,打造生信星球,想讓它成為一個(gè)不拽術(shù)語(yǔ)、通俗易懂的生信知識(shí)平臺(tái)。需要幫助或提出意見(jiàn)請(qǐng)后臺(tái)留言或發(fā)送郵件到jieandze1314@gmail.com
