擬時序分析指的是根據不同細胞亞群基因表達量隨時間的變化情況,構建細胞譜系發育。這個時間并不是真的時間,而是一個虛擬的時序列,是指細胞與細胞之間的轉化和演替的順序和軌跡。
monocle是我們經常用的擬時序分析工具,可以使用bioconductor安裝。目前已經更新到第3版本,monocle3安裝有點麻煩,可以參考官網https://cole-trapnell-lab.github.io/monocle3/。
Monocle使用一種算法來學習每個細胞必須經歷的基因表達變化序列,作為動態生物學過程的一部分。一旦它了解了基因表達變化的整體“軌跡”,Monocle就可以將每個細胞放置在軌跡中的適當位置。Monocle依靠一種叫做反向圖嵌入的機器學習技術來構建單細胞軌跡https://www.nature.com/articles/nmeth.4402
seurat對象載入
單細胞測序一般使用seurat分析,monocle分析seurat對象是需要進行一些處理。
library(monocle)
class(PBMC_CD4Tcell)[[1]]
[1] "Seurat"
data = as(as.matrix(PBMC_CD4Tcell@assays$RNA@data), "sparseMatrix")
pd = new("AnnotatedDataFrame", data = PBMC.combined.CD4Tcell@meta.data)
fData = data.frame(gene_short_name = row.names(data), row.names = row.names(data))
fd = new("AnnotatedDataFrame", data = fData)
clustered_pbmc_monocle = newCellDataSet(data, phenoData = pd, featureData = fd,
lowerDetectionLimit = 0, expressionFamily = negbinomial.size())
擬時序分析
monocle2擬時序分析主要基于以下三個步驟
1、基因篩選:Monocle可選取感興趣的基因(差異基因),并利用這些基因來構造數據。
2、降低維度:選擇用于細胞排序的基因,對數據進行降維處理。
3、pseudotime對細胞排序:通過將表達數據投影到較低維空間,構建細胞間的分化軌跡。
#計算SizeFactor和Dispersions
clustered_pbmc_monocle <- estimateSizeFactors(clustered_pbmc_monocle)
clustered_pbmc_monocle <- estimateDispersions(clustered_pbmc_monocle, parallel = T)
#選擇定義細胞發展的基因
disp_table <- dispersionTable(clustered_pbmc_monocle)
unsup_clustering_genes <- subset(disp_table, mean_expression >= 0.1)
#數據降維
Mono.cds <- setOrderingFilter(clustered_pbmc_monocle, unsup_clustering_genes$gene_id)
Mono.cds <- reduceDimension(
Mono.cds,
max_components = 2,
method = 'DDRTree')
#計算psudotime值
Mono.cds <- orderCells(Mono.cds)
plot_cell_trajectory(Mono.cds,cell_size = 1,color_by = "State")
結果如下圖,各個點代表一個細胞,具有相似狀態的細胞被聚在一起。每個分支點代表一個可能的生物學過程的決策點。
ordering_genes = unsup_clustering_genes$gene_id
plot_pseudotime = plot_pseudotime_heatmap(Mono.cds.all[ordering_genes, ], num_clusters = 3,
cores = 10, return_heatmap = T, show_rownames = F)
細胞間狀態轉換相關基因表達熱圖如下圖,熱圖顯示大體分為兩類基因,一類從低到高表達,一類從高到底表達,還有一類中間高表達(也可多分幾類)。類似基因共表達模塊,具有相同表達模式的基因聚在一起。如下圖第3個cluster基因,在分化的起始高表達,隨著擬時間的增加,表達量逐漸降低。那么這些模塊的基因可能就存在這某個生物學的功能或者通路,接下來就可以進行進一步的挖掘。
按聚類數3劃分基因聚類關系,可以提取這三部分基因進行go、kegg注釋。
clusters <- cutree(plot_pseudotime$tree_row, k = 3)
clustering <- data.frame(clusters)
clustering[,1] <- as.character(clustering[,1])
colnames(clustering) <- "Gene_Clusters"
#接下來就可以用rownames(clustering)提取基因,進行GO KEGG分析了
head(clustering)
# Gene_Clusters
#AAK1 1
#ABCA7 1
#ABHD14B 2
#ABI2 2
#ABLIM1 2
#AC004057.1 2
其他方法
TSCAN
文獻 10.1093/nar/gkw430
http://www.bioconductor.org/packages/release/bioc/html/TSCAN.html