
图片
引子Hello小伙伴们寰宇好,我是生信手段树的小学徒”我才不吃蛋黄“。今天是胃癌单细胞数据集GSE163558复现系列第八期。第七期咱们使用AddModuleScore_UCell函数谋划细胞的增殖和迁徙评分。本期,咱们将使用monocle2进行拟时序分析。
1.配景先容系列推文前七期,咱们共同学习了单细胞测序的基础分析,从第八期运转,咱们将不竭学习拟时序分析(Pseudo-Temporal Analysis),“Copykat”分析及细胞通信等高档分析。
疾病是一个动态变化的过程,在疾病发生发展的过程中,细胞状况随时代束缚变化。现存的单细胞测序本事提供的是某一时刻的“快照”,关联词通过拟时序分析,咱们不错推断出细胞的动态变化过程。
拟时序分析(Pseudo-Temporal Analysis)的界说如下:
拟时序分析(Pseudo-Temporal Analysis)是一种分析顺次,每每用于缱绻那些在时代上不连合的数据集。它试图通过模拟时代序列的形势来分析数据,即使数据自己并不是按照时代规定收罗的。这种分析顺次在多个规模齐有应用,比如在生物信息学中,它不错用于分析基因抒发数据,即使这些数据不是在连合的时代点上收罗的。拟时序分析的关键在于构建一个编造的时代轴,然后在这个时代轴上对数据进行排序和分析。这每每波及到以下几个设施:数据预措置:清洗数据,确保数据的质料和一致性。特征遴荐:识别和遴荐对分析灵验的特征或变量。时代轴构建:把柄数据的特质构建一个编造的时代轴,这可能基于生物学过程、实验假想或其他逻辑。排序:将数据按照编造时代轴进行排序。分析:使用时代序列分析的顺次来分析排序后的数据,比如趋势分析、周期性分析等。考证:通过交叉考证或其他顺次来考证分析服从的可靠性。*
单细胞拟时序分析的主要目的包括:
细胞发展轨迹推断:通过分析细胞状况的变化,推断细胞是如何从一种状况发展或分化到另一种状况。细胞状况排序:将细胞按照它们在假设的发展轨迹上的位置进行排序,即使这些细胞并非在连合的时代点上被不雅测。生物学过程清爽:识别细胞在特定生物学过程中的动态变化,如细胞分化、发育、疾病判辨等。关键基因和调控积累识别:发当今细胞状况改换中起关键作用的基因和调控积累。细胞异质性计议:揭示细胞群体里面的异质性,以及不同细胞亚群之间的关系。细胞侥幸计算:基于面前的细胞状况和拟时序轨迹,计算细胞可能的以前发展和分化侥幸。动态生物学过程建模:构建数学模子来模拟细胞状况的动态变化,为生物学假设提供定量刻画。疾病缱绻和调养靶点发现:在疾病缱绻中,拟时序分析不错匡助清爽病理状况下细胞的变化,发现潜在的调养靶点。发育过程的细胞谱系构建:在发育生物学中,拟时序分析有助于构建细胞谱系树,清爽细胞的发源和侥幸。实验假想拓荒:通过清爽细胞状况的变化,不错拓荒以前的实验假想,举例遴荐哪些细胞状况进行进一步的实验考证。Monocle是面前最常用的拟时序分析算法,其中枢本事是一种机器学习算法——反向图形镶嵌(Reversed Graph Embedding)进行降维分析。Monocle2使用DDRtree进行降维分析,而Monocle3则使用UMAP降维,可视化细胞转录特征不异性关系,从而刻画细胞状况过渡轨迹。细胞状况过渡轨迹是“根”到“叶”的树状结构,细胞从根到达分支后,会遴荐一个分支往远方出动,终末到达叶子,每个细胞的psudotime值是它从叶复返根的距离。
monocle的分析经过与seurat肖似,准备输入文献,创建monocle对象cds(new cell data set),对数据预措置,筛选特定基因,降维,谋划psudotime值,终末可视化。本期使用monocle2进行拟时序分析。
2.数据分析2.1 导入数据拆除系统环境变量,确立职责目次,加载R包,遴荐作念拟时序的亚群,读取恶性上皮细胞RDS文献:
rm(list=ls())getwd()setwd('')library(tidyverse)library(tinyarray)library(data.table) library(Seurat)library(ggplot2)library(clustree)library(cowplot)library(dplyr)library(monocle)sce.all = readRDS('malignant.rds')sce = sce.alltable(sce$celltype)Idents(sce) = sce$celltype要是用我方电脑,细胞量太大,不错每个细胞亚群抽样 :
allCells=names(Idents(sce))allType = levels(Idents(sce))# choose_Cells = unlist(lapply(allType, function(x){# cgCells = allCells[Idents(sce)== x ]# cg=sample(cgCells,10)# cg# }))# cg_sce = sce[, allCells %in% choose_Cells]cg_sce = scetable(Idents(cg_sce))2.2 数据准备monocle构建CDS需要3个矩阵:
expr.matrixphenodata(pd)featuredata(fd)expr.matrix:
Mono_tj<-cg_sceMono_matrix<-as(as.matrix(GetAssayData(Mono_tj,slot = "counts")), 'sparseMatrix')
构建featuredata:
一般需要两个col,一个是gene_id,一个是gene_short_name,row对应counts的rownames:
feature_ann<-data.frame(gene_id=rownames(Mono_matrix),gene_short_name=rownames(Mono_matrix))rownames(feature_ann)<-rownames(Mono_matrix)Mono_fd<-new("AnnotatedDataFrame", data = feature_ann)构建phenodata:
Seurat object中的@meta.data一般会存放表型接洽的信息如cluster、sample的起原、group等,是以遴荐将metadata扶植为phenodata:
sample_ann<-Mono_tj@meta.datarownames(sample_ann)<-colnames(Mono_matrix)Mono_pd<-new("AnnotatedDataFrame", data =sample_ann)2.3 monocle分析经过构建new cell data set:
Mono.cds<-newCellDataSet(Mono_matrix,phenoData =Mono_pd,featureData =Mono_fd,expressionFamily=negbinomial.size())
newCellDataSet函数中,expressionFamily参数用于指定抒发矩阵的数据类型,有几个选项不错遴荐:寥落矩阵用negbinomial.size();FPKM值用tobit();logFPKM值用gaussianff()。
检讨phenodata、featuredata:
head(pData(Mono.cds))head(fData(Mono.cds))
Mono.cds十分于Seurat V5构建的Seurat对象,随后需要对数据预措置(揣摸模范因子、揣摸翻脸度):
Mono.cds <- estimateSizeFactors(Mono.cds)Mono.cds <- estimateDispersions(Mono.cds)
筛选基因,这里不错把柄我方的需要筛选特定的基因:
disp_table <- dispersionTable(Mono.cds)unsup_clustering_genes <- subset(disp_table, mean_expression >= 0.1)Mono.cds <- setOrderingFilter(Mono.cds, unsup_clustering_genes$gene_id)
用DDRtree进行降维分析:
Mono.cds <- reduceDimension( Mono.cds, max_components = 2, method = 'DDRTree')
谋划psudotime值:
Mono.cds <- orderCells(Mono.cds)head(pData(Mono.cds))
图片
2.4 monocle可视化展示State轨迹散播图:
plot_cell_trajectory(Mono.cds,cell_size = 1)
图片
展示Cluster/Pseudotime轨迹散播图:
p1 = plot_cell_trajectory(Mono.cds,color_by="celltype", size=1,show_backbone=TRUE)p2 = plot_cell_trajectory(Mono.cds,color_by="Pseudotime", size=1,show_backbone=TRUE) p1+p2
图片
分面知道:
plot_cell_trajectory(Mono.cds, color_by = "celltype") + facet_wrap("~sample", nrow = 1)图片
树形图:
plot_complex_cell_trajectory(Mono.cds,x=1,y=2,color_by="celltype")+ scale_color_manual(values =mycolors)+ theme(legend.title = element_blank())
图片
沿时代轴的细胞密度图:
library(ggpubr)df <- pData(Mono.cds)view(df)
图片
ggplot(df,aes(Pseudotime, colour = celltype, fill=celltype))+ geom_density(bw=0.5,size=1,alpha =0.5)+theme_classic2()
图片
Monocle基因可视化:
head(unsup_clustering_genes)s.genes <- c("NOC2L","PLEKHN1","HES4","ISG15")p1 <- plot_genes_jitter(Mono.cds[s.genes,], grouping = "State", color_by = "State")p2 <- plot_genes_violin(Mono.cds[s.genes,], grouping = "State", color_by = "State")p3 <- plot_genes_in_pseudotime(Mono.cds[s.genes,], color_by = "State")图片
图片
图片
拟时接洽基因聚类热图:
#高变基因disp.genes <- subset(disp_table, mean_expression >= 0.5&dispersion_empirical >= 1*dispersion_fit)disp.genes <- as.character(disp.genes$gene_id)diff_test <- differentialGeneTest(Mono.cds[disp.genes,], cores = 4, fullModelFormulaStr = "~sm.ns(Pseudotime)")sig_gene_names <- row.names(subset(diff_test, qval < 1e-50))plot_pseudotime_heatmap(Mono.cds[sig_gene_names,], num_clusters=4, show_rownames=T, return_heatmap=T)
图片
2.5 BEAM分析由于细胞基因抒发步地不同,单细胞轨迹中每每包括分支。通过BEAM(Branched expression analysis modeling)分析,咱们可找到以依赖于分支的形势调控的基因。
disp_table <- dispersionTable(Mono.cds)disp.genes <- subset(disp_table, mean_expression >= 0.5&dispersion_empirical >= 1*dispersion_fit)disp.genes <- as.character(disp.genes$gene_id)mycds_sub <- Mono.cds[disp.genes,]plot_cell_trajectory(mycds_sub, color_by = "State")beam_res <- BEAM(mycds_sub, branch_point = 1, progenitor_method = "duplicate")beam_res <- beam_res[order(beam_res$qval),]beam_res <- beam_res[,c("gene_short_name", "pval", "qval")]mycds_sub_beam <- mycds_sub[row.names(subset(beam_res, qval < 1e-4)),]plot_genes_branched_heatmap(mycds_sub_beam, branch_point = 1, num_clusters = 3, show_rownames = T)图片
结语本期,咱们投入了单细胞高档分析系列,使用monocle2进行了拟时序分析。下一期,把柄课程安排,咱们将暂时回到Bulk转录组,期骗TCGA-STAD数据进行生涯分析。干货满满,接待寰宇执续追更,谢谢!
图片
本站仅提供存储就业,所有推行均由用户发布,如发现存害或侵权推行,请点击举报。