單細胞交響樂31-實戰十四 10X HCA計劃的38萬骨髓細胞

劉小澤寫於2020.7.22
爲何取名叫“交響樂”?因爲單細胞分析就像一個大樂團,需要各個流程的協同配合
單細胞交響樂1-常用的數據結構SingleCellExperiment
單細胞交響樂2-scRNAseq從實驗到下游簡介
單細胞交響樂3-細胞質控
單細胞交響樂4-歸一化
單細胞交響樂5-挑選高變化基因
單細胞交響樂6-降維
單細胞交響樂7-聚類分羣
單細胞交響樂8-marker基因檢測
單細胞交響樂9-細胞類型註釋
單細胞交響樂9-細胞類型註釋
單細胞交響樂10-數據集整合後的批次矯正
單細胞交響樂11-多樣本間差異分析
單細胞交響樂12-檢測Doublet
單細胞交響樂13-細胞週期推斷
單細胞交響樂14-細胞軌跡推斷
單細胞交響樂15-scRNA與蛋白丰度信息結合
單細胞交響樂16-處理大型數據
單細胞交響樂17-不同單細胞R包的數據格式相互轉換
單細胞交響樂18-實戰一 Smart-seq2
單細胞交響樂19-實戰二 STRT-Seq
單細胞交響樂20-實戰三 10X 未過濾的PBMC數據
單細胞交響樂21-實戰三 批量處理並整合多個10X PBMC數據
單細胞交響樂22-實戰五 CEL-seq2
單細胞交響樂23-實戰六 CEL-seq
單細胞交響樂24-實戰七 SMARTer 胰腺細胞
單細胞交響樂25-實戰八 Smart-seq2 胰腺細胞
單細胞交響樂26-實戰九 胰腺細胞數據整合
單細胞交響樂27-實戰十 CEL-seq-小鼠造血幹細胞
單細胞交響樂28-實戰十一 Smart-seq2-小鼠造血幹細胞
單細胞交響樂29-實戰十二 10X 小鼠嵌合體胚胎
單細胞交響樂30-實戰十三 10X 小鼠乳腺上皮細胞

1 前言

前面的種種都是作爲知識儲備,但是不實戰還是記不住前面的知識
這是第十四個實戰練習,不過這次的練習對電腦要求比較高

單細胞領域不得不提的HCA計劃

參考:
官網:https://data.humancellatlas.org/
http://www.casisd.cn/zkcg/ydkb/kjqykb/2016/201612/201707/t20170703_4821952.html
https://baike.baidu.com/tashuo/browse/content?id=6937242830be0d08a0384772
http://med.china.com.cn/content/pid/134504/tid/1015

細胞類型多種多樣

細胞是生命最基本的單位,一般人至少有37兆2000億個細胞,但現有的研究一般是組織層面,對細胞內部機制理解的還不是很深入。人體內的細胞有多少種類?這是一個非常基礎的問題。美國國立衛生研究院給出了一個答案:200種,包括像神經元細胞、心臟細胞、肌肉細胞等幾大類。然而,如果你去問一個免疫學家,他會告訴你光免疫細胞就至少有200種;如果你去問一個專門研究T細胞的免疫學家,他會告訴你光T細胞就至少有200種。Regev說她自己光講人體細胞種類就要花15分鐘,並且一個細胞的種類可以不斷地往下劃分,亞型下面還有亞型,僅視網膜組織就至少包括100種不同種類的神經元。更棘手的是,有些種類的細胞會在一定條件下轉化爲其他種類的細胞,並且每個亞型的細胞會根據不同環境呈現出不同的狀態。

細胞圖譜的重要性

一個完整的人體細胞圖譜將賦予我們每種細胞類型唯一的“身份證”,可以幫助解釋不同類型的細胞如何協作並形成組織的。另外與疾病相關的基因在哪些細胞更活躍,不同細胞類型產生的機理又是怎樣的呢?

HCA計劃的開啓

2016年Chan Zuckerberg Initiative(CZI)基金會計劃在未來十年內投入30億美元支持科學研究,其中最矚目的就是“人類細胞圖譜計劃”(the Human Cell Atlas)【可與“人類基因組計劃”相媲美】。2017年10月,HCA正式公佈了首批擬資助的38個項目,將爲40萬億個細胞繪製圖譜,其中清華大學教授張學工負責的項目作爲其中唯一一個由中國科學家承擔的項目,從全球範圍內徵集的近500個項目中脫穎而出。

2018年3月8日,Sanger研究所在其官網宣佈了人類發育細胞圖譜計劃(HDCA)的最新成果研究團隊從捐贈的人類發育組織(包括肝臟、皮膚、腎臟、胎盤)中分離出超25萬個細胞,並利用強大的單細胞基因組測序工具獲取了人類早期發育,以及影響健康或者導致疾病的信息。HDCA是HCA的重要一部分,旨在構建參與人類發育的所有重要細胞的基因組參考圖譜。該項目聚焦的其他主要領域包括,改善對血細胞如何形成,以及免疫系統如何發揮功能的理解。

另外,2018年,美國費城兒童醫院和辛辛那提兒童醫院領導的國際研究團隊建議在HCA聯盟中建立一個縱向的兒童研究分支,並在HCA白皮書中概述了兒童細胞圖譜計劃(Pediatric Cell Atlas,PCA),以在兒童健康和人類發展背景下,展開針對兒童獨特生物學特徵的跨學科研究。

HCA的主要內容
  • 編目所有人體細胞類型(如免疫細胞、腦細胞)及其子類型;
  • 繪製不同細胞類型在組織和人體中的分佈圖;
  • 區分細胞狀態(如免疫細胞在被病原體激活前後的狀態);
  • 捕捉細胞轉換過程的關鍵特徵(如干細胞細胞激活和分化);
  • 追蹤細胞譜系歷史(如骨髓前體幹細胞到功能性的紅細胞)

數據準備

我們這裏使用的數據是:10X技術得到的人類約380,000個骨髓細胞

數據鏈接:https://share.weiyun.com/SUYQ4kcG

sce.bone
# class: SingleCellExperiment 
# dim: 33694 378000 
# metadata(0):
#   assays(1): counts
# rownames(33694): ENSG00000243485
# ENSG00000237613 ... ENSG00000277475
# ENSG00000268674
# rowData names(2): ID Symbol
# colnames(378000):
#   MantonBM1_HiSeq_1-AAACCTGAGCAGGTCA-1
# MantonBM1_HiSeq_1-AAACCTGCACACTGCG-1 ...
# MantonBM8_HiSeq_8-TTTGTCATCTGCCAGG-1
# MantonBM8_HiSeq_8-TTTGTCATCTTGAGAC-1
# colData names(1): Barcode
# reducedDimNames(0):
#   altExpNames(0):
數據初探
# 這裏的數據大小41M
object.size(counts(sce.bone))
# 41741200 bytes

# 真實文件大小700多M
file.info(path(counts(sce.bone)))$size
# [1] 769046295

# 其中包含供體信息
head(sce.bone$Barcode)
# [1] "MantonBM1_HiSeq_1-AAACCTGAGCAGGTCA-1"
# [2] "MantonBM1_HiSeq_1-AAACCTGCACACTGCG-1"
# [3] "MantonBM1_HiSeq_1-AAACCTGCACCGGAAA-1"
# [4] "MantonBM1_HiSeq_1-AAACCTGCATAGACTC-1"
# [5] "MantonBM1_HiSeq_1-AAACCTGCATCGATGT-1"
# [6] "MantonBM1_HiSeq_1-AAACCTGCATTCCTGC-1"

# 提取供體信息
sce.bone$Donor <- sub("_.*", "", sce.bone$Barcode)
table(sce.bone$Donor)
# 
# MantonBM1 MantonBM2 MantonBM3 MantonBM4 MantonBM5 
# 48000     48000     48000     48000     48000 
# MantonBM6 MantonBM7 MantonBM8 
# 42000     48000     48000 
ID轉換

還是要獲得染色體信息

library(EnsDb.Hsapiens.v86)
rowData(sce.bone)$Chr <- mapIds(EnsDb.Hsapiens.v86, keys=rownames(sce.bone),
    column="SEQNAME", keytype="GENEID")

# 其中包括13個線粒體信息
table(grepl('MT',rowData(sce.bone)$Chr))
# 
# FALSE  TRUE 
# 33681    13 

整合行名

library(scater)
rownames(sce.bone) <- uniquifyFeatureNames(rowData(sce.bone)$ID,
    names = rowData(sce.bone)$Symbol)

2 質控

使用線粒體信息進行過濾,並且因爲數據量很大,可以調用多線程

library(BiocParallel)
# 調用8線程
bpp <- MulticoreParam(8)

start=Sys.time()
sce.bone <- unfiltered <- addPerCellQC(sce.bone, BPPARAM=bpp,
                                     subsets=list(Mito=which(rowData(sce.bone)$Chr=="MT")))
end=Sys.time()
(end-start)
# Time difference of 2.167978 mins

過濾掉了6萬多個細胞

colSums(as.matrix(qc))
# low_lib_size            low_n_features 
# 33997                     42756 
# high_subsets_Mito_percent                   discard 
# 44105                     61275 

作圖

unfiltered$discard <- qc$discard

gridExtra::grid.arrange(
    plotColData(unfiltered, x="Donor", y="sum", colour_by="discard") +
        scale_y_log10() + ggtitle("Total count"),
    plotColData(unfiltered, x="Donor", y="detected", colour_by="discard") +
        scale_y_log10() + ggtitle("Detected features"),
    plotColData(unfiltered, x="Donor", y="subsets_Mito_percent",
        colour_by="discard") + ggtitle("Mito percent"),
    ncol=2
)

再看看線粒體含量與文庫大小的關係

plotColData(unfiltered, x="sum", y="subsets_Mito_percent", 
    colour_by="discard") + scale_x_log10()

3 歸一化

這裏爲了減少計算量,使用原來計算好的文庫size factor,不需要重複計算

sce.bone <- logNormCounts(sce.bone, size_factors = sce.bone$sum)
summary(sizeFactors(sce.bone))
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    0.05    0.47    0.65    1.00    0.89   42.38

4 找高變異基因

將供體作爲批次信息加入到構建模型中,這一步依然需要多線程處理

library(scran)
start=Sys.time()
dec.bone <- modelGeneVar(sce.bone, block=sce.bone$Donor, BPPARAM=bpp)
end=Sys.time()
(end-start) # Time difference of 10.58185 mins

top.bone <- getTopHVGs(dec.bone, n=5000)

5 矯正批次效應

library(batchelor)
library(BiocNeighbors)

set.seed(1010001)
merged.bone <- fastMNN(sce.bone, batch = sce.bone$Donor, subset.row = top.bone,
     BSPARAM=BiocSingular::RandomParam(deferred = TRUE), 
     BNPARAM=AnnoyParam(),
     BPPARAM=bpp)

reducedDim(sce.bone, 'MNN') <- reducedDim(merged.bone, 'corrected')

看下結果:lost.var 值越大表示丟失的真實生物異質性越多

##      MantonBM1 MantonBM2 MantonBM3 MantonBM4 MantonBM5 MantonBM6 MantonBM7
## [1,]  0.010616  0.008241  0.000000  0.000000  0.000000  0.000000  0.000000
## [2,]  0.007894  0.007741  0.023662  0.000000  0.000000  0.000000  0.000000
## [3,]  0.005834  0.003823  0.005423  0.025272  0.000000  0.000000  0.000000
## [4,]  0.003482  0.002868  0.002581  0.003067  0.027117  0.000000  0.000000
## [5,]  0.005287  0.003544  0.003173  0.005702  0.006551  0.031890  0.000000
## [6,]  0.004601  0.004535  0.004533  0.004067  0.004934  0.005547  0.034452
## [7,]  0.002610  0.002238  0.003135  0.002799  0.001963  0.002697  0.002404
##      MantonBM8
## [1,]   0.00000
## [2,]   0.00000
## [3,]   0.00000
## [4,]   0.00000
## [5,]   0.00000
## [6,]   0.00000
## [7,]   0.04033

6 降維聚類

降維

這麼大的細胞數據,一般會使用UMAP

set.seed(01010100)
sce.bone <- runUMAP(sce.bone, dimred="MNN",
    BNPARAM=AnnoyParam(),
    BPPARAM=bpp,
    n_threads=bpnworkers(bpp))

另外關於tSNE和UMAP的對比:可以看看https://towardsdatascience.com/how-exactly-umap-works-13e3040e1668

  • SNE does not preserve global data structure, meaning that only within cluster distances are meaningful while between cluster similarities are not guaranteed. But UMAP Can Preserve Global Structure
  • tSNE does not scale well for rapidly increasing sample sizes in scRNAseq.
  • UMAP is faster than tSNE when it concerns a) large number of data points, b) number of embedding dimensions greater than 2 or 3, c) large number of ambient dimensions in the data set
  • UMAP的改進:UMAP overall follows the philosophy of tSNE, but introduces a number of improvements such as another cost function and the absence of normalization of high- and low-dimensional probabilities.
  • 總結:Despite tSNE served the Single Cell research area for years, it has too many disadvantages such as speed and the lack of global distance preservation
聚類

因爲這裏的細胞數量實在太大,因此可以先借用kmeans方法對它們聚類,比如先聚成1000個小類,然後再對每個小類進行graph-based聚類

set.seed(1000)
clust.bone <- clusterSNNGraph(sce.bone, use.dimred="MNN", 
    use.kmeans=TRUE, kmeans.centers=1000)
colLabels(sce.bone) <- factor(clust.bone)
table(colLabels(sce.bone))
## 
##     1     2     3     4     5     6     7     8     9    10    11    12 
## 21938 42850 19861 38064 38024 71978 19237 24627  7583 16361  3179 13023

做個熱圖

tab <- table(Cluster=colLabels(sce.bone), Donor=sce.bone$Donor)
library(pheatmap)
pheatmap(log10(tab+10), color=viridis::viridis(100))

看到每個cluster中都會有幾個不同的樣本,這也符合預期,因爲所有的樣本都是來自不同供體的重複,它們實際都是骨髓細胞

7 找marker基因

markers.bone <- findMarkers(sce.bone, block = sce.bone$Donor, 
    direction = 'up', lfc = 1, BPPARAM=bpp)

然後檢查第5羣細胞

top.markers <- markers.bone[["5"]]
best <- top.markers[top.markers$Top <= 10,]
lfcs <- getMarkerEffects(best)

library(pheatmap)
pheatmap(lfcs, breaks=seq(-5, 5, length.out=101))

看到LYZ、S100A8、VCAN基因高表達,說明cluster5可能是單核細胞(Monocyte)

8 細胞類型註釋

使用參考數據集幫助註釋,只不過這裏並不是對每個細胞單獨操作,因爲數量太太。而是基於12個已經分好的cluster的總體表達量進行註釋,提高了註釋速度,但同樣犧牲了研究cluster內部細胞異質性的機會。適用於快速註釋細胞類羣

se.aggregated <- sumCountsAcrossCells(sce.bone, id=colLabels(sce.bone))

library(SingleR)
hpc <- HumanPrimaryCellAtlasData()
anno.single <- SingleR(se.aggregated, ref = hpc, labels = hpc$label.main,
    assay.type.test="sum")

看一下結果,包含12行也就是12個分羣結果,看到利用參考註釋的方法,cluster5也是被註釋到了Monocyte這個細胞類型

anno.single
## DataFrame with 12 rows and 5 columns
##                             scores     first.labels      tuning.scores
##                           <matrix>      <character>        <DataFrame>
## 1   0.388013:0.636789:0.754052:...              CMP 0.554195:0.4238259
## 2   0.326563:0.692156:0.661226:...          NK_cell 0.579208:0.4459558
## 3   0.323785:0.668599:0.743138:... Pre-B_cell_CD34- 0.488346:0.0719803
## 4   0.346204:0.637353:0.615021:...          T_cells 0.628161:0.3531725
## 5   0.297369:0.638962:0.745831:... Pre-B_cell_CD34- 0.548995:0.2633979
## ...                            ...              ...                ...
## 8   0.313537:0.773897:0.672663:...           B_cell 0.722126:-0.288616
## 9   0.346503:0.703506:0.670777:... Pro-B_cell_CD34+ 0.774848: 0.710191
## 10  0.313591:0.774162:0.668809:...           B_cell 0.719013:-0.281128
## 11  0.369873:0.720021:0.654892:...           B_cell 0.523979: 0.326187
## 12  0.403994:0.603811:0.697425:...              MEP 0.430493: 0.286268
##               labels    pruned.labels
##          <character>      <character>
## 1                CMP              CMP
## 2            T_cells          T_cells
## 3           Monocyte         Monocyte
## 4            T_cells          T_cells
## 5           Monocyte         Monocyte
## ...              ...              ...
## 8             B_cell           B_cell
## 9   Pro-B_cell_CD34+ Pro-B_cell_CD34+
## 10            B_cell           B_cell
## 11            B_cell               NA
## 12        BM & Prog.       BM & Prog.

歡迎關注我們的公衆號~_~  
我們是兩個農轉生信的小碩,打造生信星球,想讓它成爲一個不拽術語、通俗易懂的生信知識平臺。需要幫助或提出意見請後臺留言或發送郵件到[email protected]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章