一:为什么癌症研究中经常要富集Hallmarker通路。Hallmark基因集由50个独立的基因集组成,每个基因集都与特定的生物学过程或通路相关联。首先,在癌症研究中,研究者发现Hallmarker 通路的异常激活与肿瘤形成有关,因此研究Hallmarker 通路可以为癌症的治疗提供新的思路,癌症的Hallmark包括:维持增殖信号、逃避生长抑制因子、抵抗细胞死亡、无限分裂、诱导血管生成、激活侵袭和转移、代谢重编程以及免疫逃逸。其次,在免疫疾病研究中,研究者发现Ha11marker 通路的异常与自身免疫疾病的发生有关,因此研究Hallmarker 通路可以为免疫疾病的治疗提供新的方向。Hallmarker 通路主要通过以下几个方面发挥功能:(1)调控基因表达:Hallmarker通路能够对某些基因进行激活或沉默,从而影响细胞内的基因表达。(2)影响细胞周期:Hallmarker通路能够影响细胞周期,从而调控细胞的生长和分裂。(3)参与细胞分化:Hallmarker通路能够影响细胞分化,从而调控不同类型的细胞形成。(4)参与疾病发生:Hallmarker通路的异常可能导致一些疾病的发生,如癌症、免疫疾病等。简单来说,预后分析旨在确定患者的未来疾病进展或结果的可能性,通常基于一组特定的临床和非临床特征。独立预后分析的目的事看我们的模型是否可以独立于其他的临床性状作为独立的预后因子,独立预后分析分为两步,第一步,单因素的独立预后分析,第二步多因素的独立预后分析。单因素独立预后分析的话就是将临床性状和我们的这个风险值一个一个输入,跟我们的临床的生存时间和生存状态进行比较。看我们的临床性状或者说风险值是否跟预后相关,我们这里会得到一个p值,如果p小于0.05,就说明我们的临床性状或者说这个风险值是跟我们的预后相关的,接下来我们看一下HR值。HR值大于1的话,那他就是高风险的因素,如果它小于1的话就是低风险的因素,我们这里年龄的话它是大于一的。接下来我们看一下多因素的独立预后分析,从真正意义上来说,只有多因素才可以去验证它是否可以作为独立预后的因子。多因素就是将这些临床性状和我们的风险值一起输入跟我们的生存时间和生存状态进行比较,看我们的这个风险值是否可以独立于其他的临床性状作为独立的预后因子,我们可以看到这里的P还是小于0.001。就说明我们的风险值确实可以作为独立的预后因子。三、inferCNV区分良性/恶性上皮细胞的原理。InferCNV是TrinityCTAT工具包的一个组成部分,可以用于肿瘤scRNA-seq数据中鉴定大规模染色体拷贝数变异(copy number variation,CNV),例如整个染色体或大片段染色体的扩增或缺失。它的原理是:在肿瘤的研究中,发现染色体的变异是一种普遍现象。各类不同类型的肿瘤都存在着染色体的变异,其中最显著的变异表现为染色体结构的变异。例如,在某些肿瘤细胞中,可以看到染色体的断裂、缺失、漂移等现象。这些染色体异常会导致基因组中的基因缺失、扩增、移位、交换等重大的遗传信息变化,从而导致肿瘤的形成。用一组“正常”细胞(如癌旁组织来源的细胞)作为对照,分析肿瘤基因组上各个位置的基因表达量强度变化,通过热图的形式展示每条染色体上的基因的相对表达量,那么相较于正常细胞,肿瘤基因组会表现出过表达或者低表达。利用infercnvpy进行CNV分析。首先需要将上皮细胞分为多个亚群,这里已经形成了具有6个上皮细胞亚群的Seurat V5对象,然后还需要一个正常细胞作为对照,这里以成纤维细胞(Fibro)为对照,识别0-6当中哪些上皮细胞亚群是恶性的,因此我需要把上皮细胞亚群的Seurat V5对象和总的Seurat对象中的成纤维细胞(Fibro)整合起来,也就相当于把两个Seurat对象中的两类细胞整合到一起,代码如下:#
library(Seurat)
library(tibble)
##导入上皮细胞分好亚型的seurat1数据
singlecell_seurat_Epi <- readRDS("~/data/singlecell_seurat_Epi-anno.rds")
##提取每个细胞对应的上皮细胞亚型信息,第一列为细胞,第二列为亚型名字
Epi_group <-as.data.frame(Idents(singlecell_seurat_Epi) )
Epi_group <-rownames_to_column(Epi_group,var="cell")
##导入含有正常细胞的seurat2数据
singlecell_seurat <-readRDS("~/data/singlecell_seurat-anno.rds")
##提取每个细胞对应的亚型信息,第一列为细胞,第二列为亚型编号
ALL_group <- subset(singlecell_seurat@meta.data,select="RNA_snn_res.0.1")
ALL_group <-rownames_to_column(ALL_group,var="cell")
new_group <- left_join(ALL_group,Epi_group,by="cell")
new_group[] <- sapply(new_group, as.character)
colnames(new_group)<- c("cell","all","Epi")
new_group$new_group <- ifelse(new_group$all==5,new_group$Epi,ifelse(new_group$all==9,"Fibro",new_group$all))
singlecell_seurat@meta.data$group <- new_group$new_group
Idents(singlecell_seurat) <- singlecell_seurat@meta.data$group
new_singlecell_seurat <- subset(x = singlecell_seurat, idents = c("EpiC1","EpiC2","EpiC3","EpiC4","EpiC5","EpiC6","Fibro"))
保存新形成的用于分析inferCNV的seurat文件。
saveRDS(new_singlecell_seurat , file = outFile)
五、Seurat V4和V5版本的不兼容产生的报错及解决途径Seurat是一个用于单细胞基因组学数据分析的R包,它提供了一套全面的框架,用于处理、分析和可视化单细胞RNA测序(scRNA-seq)数据。是分析单细胞数据最主流,应用最广的R包。但是随着Seurat版本升级到V5,之前和V4版本配套的拟时序分析monocle包和区分恶性非恶性细胞的inferCNV分析在运行时会报错,以下是我遇到的报错及解决方法。1、拟时序分析相关报错——plot_pseudotime_heatmap函数和BEAM函数拟时序分析用到的软件包为monocle,当将高变基因进行热图聚类时,代码如下:p2 <- plot_pseudotime_heatmap(mycds[sig_gene_names, ], num_clusters = 3, show_rownames = F, return_heatmap = T)
报错信息:
<simpleError in checkwz(wz, M = M, trace = trace, wzepsilon = control$wzepsilon): NAs found in the working weights variable 'wz'>
Error in if (x@family@vfamily %in% c("negbinomial", "negbinomial.size")) { :
the condition has length > 1
解决方式:
当前进行时序分析的R版本为v4.4.1,monocle版本为v2.32.0,在使用plot_pseudotime_heatmap函数时报错,如果将时序分析得到的包含各种分析结果的对象mycds保存到rds格式,然后再打开v4.1.2版本的R(也可以是其他低版本,没有挨个实验),导入monocle包,此时monocle包版本为v2.22.0(其他版本没有实验可不可以),然后再读入mycds数据,读入筛选出的高变基因,然后重新运行plot_pseudotime_heatmap函数的分析,就可以了,代码如下:
mycds <-readRDS(paste0(outFile, "/Pseudotime_mycds.rds"))
sig_gene_names <- read.csv(paste0(outFile, "/sig_gene_names.csv"))
sig_gene_names <- as.character(sig_gene_names$x)
type_num <- 3
p2 <- plot_pseudotime_heatmap(mycds[sig_gene_names, ], num_clusters = type_num, show_rownames = F, return_heatmap = T)
ggsave(filename = paste0(outFile, "/Pseudotime_heatmap.pdf"), plot = p2, width = 8, height = 16)
通过单细胞转录组,可鉴定细胞群、细胞亚群、筛选细胞群特有marker基因,并完成对细胞分化轨迹的追踪,从而解析细胞异质性和发育轨迹。但是单纯通过单细胞测序得到的细胞分群,是不能将恶性与非恶性细胞区分开的。因此单细胞CNV分析应运而生,可以辅助区分肿瘤组织中的恶性与非恶性细胞。InferCNV是TrinityCTAT工具包的一个组成部分,可以用于肿瘤scRNA-seq数据中鉴定大规模染色体拷贝数变异(copy number variation,CNV),例如整个染色体或大片段染色体的扩增或缺失。它的原理是:用一组“正常”细胞(如癌旁组织来源的细胞)作为对照,分析肿瘤基因组上各个位置的基因表达量强度变化,通过热图的形式展示每条染色体上的基因的相对表达量,那么相较于正常细胞,肿瘤基因组会表现出过表达或者低表达。./inferCnv_py -s ~/data/singlecell_seurat_CD8T-anno.rds -od ~/data/result/singlecell_seurat_CD8T/ -k group -r Fibro -w 12 -he 9
2024-09-13 23:47:17,118-INFO -转化Seurat对象到h5ad...INFO: infer_cnv_py :转化Seurat对象到h5ad...>> [2024-09-13 23:47:20] Converting ...Error in library(SeuratDisk) : there is no package called ‘SeuratDisk’提醒没有SeuratDisk包,下载包失败,但是发现inferCNV程序是在运行把Seurat对象转为h5ad对象时报的错,如果直接在-s参数后面直接带入h5ad程序,就会跳过转格式步骤,自然不会报错,于是就尝试用R将Seurat格式数据转为h5ad数据,但是Seurat V5不能直接转为h5ad数据,需要将Seurat V5先转为Seurat V3,再转为h5ad格式,代码如下。#将Seurat V5先转为Seurat V3,再转为python可用的h5ad格式,为~/soft/inferCNV_py/inferCNV_py提供输入文件,找出恶性肿瘤
#install.packages("devtools")
#devtools::install_github("mojaveazure/seurat-disk")
library(SeuratDisk)
options(Seurat.object.assay.version = "v3")
object = CreateSeuratObject(counts = GetAssayData(new_singlecell_seurat, assay="RNA", layer = "data"),
meta.data = new_singlecell_seurat@meta.data)
outFile <- "~/data/new_singlecell_seurat.h5Seurat"
#seurat2h5seurat中间过渡
SaveH5Seurat(object,filename=outFile, overwrite = TRUE)
#数据转为最终h5ad格式
Convert(outFile, dest = "h5ad", overwrite = TRUE)
添加微信