发布日期:2025-03-18 05:23 点击次数:108
图片品色堂永远免费品色堂永远免费
媒介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数据进行糊口分析。干货满满,接待世界抓续追更,谢谢!
图片
本站仅提供存储作事,总计本体均由用户发布,如发现存害或侵权本体,请点击举报。