劉小澤寫于2020.7.21
為何取名叫“交響樂”关带?因?yàn)閱渭?xì)胞分析就像一個(gè)大樂團(tuán)秽晚,需要各個(gè)流程的協(xié)同配合
單細(xì)胞交響樂1-常用的數(shù)據(jù)結(jié)構(gòu)SingleCellExperiment
單細(xì)胞交響樂2-scRNAseq從實(shí)驗(yàn)到下游簡介
單細(xì)胞交響樂3-細(xì)胞質(zhì)控
單細(xì)胞交響樂4-歸一化
單細(xì)胞交響樂5-挑選高變化基因
單細(xì)胞交響樂6-降維
單細(xì)胞交響樂7-聚類分群
單細(xì)胞交響樂8-marker基因檢測
單細(xì)胞交響樂9-細(xì)胞類型注釋
單細(xì)胞交響樂9-細(xì)胞類型注釋
單細(xì)胞交響樂10-數(shù)據(jù)集整合后的批次矯正
單細(xì)胞交響樂11-多樣本間差異分析
單細(xì)胞交響樂12-檢測Doublet
單細(xì)胞交響樂13-細(xì)胞周期推斷
單細(xì)胞交響樂14-細(xì)胞軌跡推斷
單細(xì)胞交響樂15-scRNA與蛋白豐度信息結(jié)合
單細(xì)胞交響樂16-處理大型數(shù)據(jù)
單細(xì)胞交響樂17-不同單細(xì)胞R包的數(shù)據(jù)格式相互轉(zhuǎn)換
單細(xì)胞交響樂18-實(shí)戰(zhàn)一 Smart-seq2
單細(xì)胞交響樂19-實(shí)戰(zhàn)二 STRT-Seq
單細(xì)胞交響樂20-實(shí)戰(zhàn)三 10X 未過濾的PBMC數(shù)據(jù)
單細(xì)胞交響樂21-實(shí)戰(zhàn)三 批量處理并整合多個(gè)10X PBMC數(shù)據(jù)
單細(xì)胞交響樂22-實(shí)戰(zhàn)五 CEL-seq2
單細(xì)胞交響樂23-實(shí)戰(zhàn)六 CEL-seq
單細(xì)胞交響樂24-實(shí)戰(zhàn)七 SMARTer 胰腺細(xì)胞
單細(xì)胞交響樂25-實(shí)戰(zhàn)八 Smart-seq2 胰腺細(xì)胞
單細(xì)胞交響樂26-實(shí)戰(zhàn)九 胰腺細(xì)胞數(shù)據(jù)整合
單細(xì)胞交響樂27-實(shí)戰(zhàn)十 CEL-seq-小鼠造血干細(xì)胞
單細(xì)胞交響樂28-實(shí)戰(zhàn)十一 Smart-seq2-小鼠造血干細(xì)胞
1 前言
前面的種種都是作為知識儲備界阁,但是不實(shí)戰(zhàn)還是記不住前面的知識
這是第十二個(gè)實(shí)戰(zhàn)練習(xí)
數(shù)據(jù)來自Pijuan-Sala et al. (2019)您旁,研究的是小鼠E8.5發(fā)育階段的嵌合胚胎
數(shù)據(jù)準(zhǔn)備
# 自己下載
library(MouseGastrulationData)
sce.chimera <- WTChimeraData(samples=5:10)
# 或者加載之前分享的數(shù)據(jù)
load('sce.chimera.RData')
sce.chimera
## class: SingleCellExperiment
## dim: 29453 20935
## metadata(0):
## assays(1): counts
## rownames(29453): ENSMUSG00000051951 ENSMUSG00000089699 ...
## ENSMUSG00000095742 tomato-td
## rowData names(2): ENSEMBL SYMBOL
## colnames(20935): cell_9769 cell_9770 ... cell_30702 cell_30703
## colData names(11): cell barcode ... doub.density sizeFactor
## reducedDimNames(2): pca.corrected.E7.5 pca.corrected.E8.5
## altExpNames(0):
names(colData(sce.chimera))
# [1] "cell" "barcode"
# [3] "sample" "stage"
# [5] "tomato" "pool"
# [7] "stage.mapped" "celltype.mapped"
# [9] "closest.cell" "doub.density"
簡單看一下colData
中的各個(gè)信息
其中包含了6個(gè)樣本的信息,總共20935個(gè)細(xì)胞
table(sce.chimera$sample)
#
# 5 6 7 8 9 10
# 2298 1026 2740 2904 4057 6401
整合行名
library(scater)
rownames(sce.chimera) <- uniquifyFeatureNames(
rowData(sce.chimera)$ENSEMBL, rowData(sce.chimera)$SYMBOL)
2 簡單質(zhì)控
之前作者已經(jīng)對數(shù)據(jù)進(jìn)行了質(zhì)控,并把細(xì)胞做了標(biāo)志僧著,這里只需要把標(biāo)記“stripped”既绩、“Doublet”的細(xì)胞去掉即可
drop <- sce.chimera$celltype.mapped %in% c("stripped", "Doublet")
table(drop)
# drop
# FALSE TRUE
# 19426 1509
sce.chimera <- sce.chimera[,!drop]
3 歸一化
看到原來數(shù)據(jù)中也計(jì)算了size factors,那么這里就不需要計(jì)算丐谋,直接應(yīng)用
sce.chimera <- logNormCounts(sce.chimera)
4 找高變異基因
我們的數(shù)據(jù)有6個(gè)樣本芍碧,可以說異質(zhì)性非常高了。把它們當(dāng)做不同的批次信息号俐,并盡可能多地從中保存基因
library(scran)
dec.chimera <- modelGeneVar(sce.chimera, block=sce.chimera$sample)
chosen.hvgs <- dec.chimera$bio > 0
table(chosen.hvgs)
# chosen.hvgs
# FALSE TRUE
# 14754 14699
5 數(shù)據(jù)整合并矯正批次效應(yīng)
使用了一種“層次整合”的方法泌豆,就是先將同種表型樣本整合起來(比如3個(gè)處理和3個(gè)對照先內(nèi)部整合),再將不同表型的樣本組合(將處理和對照整合)
correctExperiments的含義是:Apply a correction to multiple SingleCellExperiment objects,
library(batchelor)
set.seed(01001001)
# 下面的merge.order就設(shè)置了整合的順序
merged <- correctExperiments(sce.chimera,
batch=sce.chimera$sample,
subset.row=chosen.hvgs,
PARAM=FastMnnParam(
merge.order=list(
list(1,3,5), # WT (3 replicates)
list(2,4,6) # td-Tomato (3 replicates)
)
)
)
看下結(jié)果:lost.var
值越大表示丟失的真實(shí)生物異質(zhì)性越多
metadata(merged)$merge.info$lost.var
## 5 6 7 8 9 10
## [1,] 0.000e+00 0.0204433 0.000e+00 0.0169567 0.000000 0.000000
## [2,] 0.000e+00 0.0007389 0.000e+00 0.0004409 0.000000 0.015474
## [3,] 3.090e-02 0.0000000 2.012e-02 0.0000000 0.000000 0.000000
## [4,] 9.024e-05 0.0000000 8.272e-05 0.0000000 0.018047 0.000000
## [5,] 4.321e-03 0.0072518 4.124e-03 0.0078280 0.003831 0.007786
Large proportions of lost variance (>10%) suggest that correction is removing genuine biological heterogeneity.
6 聚類
g <- buildSNNGraph(merged, use.dimred="corrected")
clusters <- igraph::cluster_louvain(g)
colLabels(merged) <- factor(clusters$membership)
看分群與細(xì)胞類型之間關(guān)系
tab <- table(Cluster=colLabels(merged), Sample=merged$sample)
library(pheatmap)
pheatmap(log10(tab+10), color=viridis::viridis(100))
7 降維
merged <- runTSNE(merged, dimred="corrected")
merged <- runUMAP(merged, dimred="corrected")
gridExtra::grid.arrange(
plotTSNE(merged, colour_by="label", text_by="label", text_col="red"),
plotTSNE(merged, colour_by="batch"),
ncol=2
)
歡迎關(guān)注我們的公眾號~_~
我們是兩個(gè)農(nóng)轉(zhuǎn)生信的小碩吏饿,打造生信星球踪危,想讓它成為一個(gè)不拽術(shù)語、通俗易懂的生信知識平臺猪落。需要幫助或提出意見請后臺留言或發(fā)送郵件到jieandze1314@gmail.com