生物信息学 | 富集分析

主要目标:理解这个代码的主要的思路。想分析一下老师的这个富集分析的主要的思路是什么?
一行一行的理解这个代码。

# Get cell type mean of each gene
cellTypeMean <- t(apply(dat, 1, function(v) {
	tapply(v, droplevels(factor(cellSubtypes, levels=subtypeOrder)), mean)
}))
}
cellTypeMean2 <- cellTypeMean + 0.01

(1) droplevels()是什么意思
> x <- c(1, 3, 4, 8, 1, 5, 4, 4, 5, 6)
> f<-factor(x)
> f
 [1] 1 3 4 8 1 5 4 4 5 6
Levels: 1 3 4 5 6 8
> f<-f[-2]
> f
[1] 1 4 8 1 5 4 4 5 6
Levels: 1 3 4 5 6 8
> new_f <-droplevels(f)
> new_f
[1] 1 4 8 1 5 4 4 5 6
Levels: 1 4 5 6 8

这个的意思就是说,当我们剔除factor中的某一个数值的时候,其levels仍然会被保留下来。(这个问题,我之前也有遇到过)所以droplevels的意思就是把那些冗余的levels也去冗余掉。这就是这个函数的功能。

(2) factor()
factor(cellSubtypes,levels=subtypeOrder) 

这里我不理解,factors()函数中的levels=subtypeOrder是什么意思?

a<-c(1,3,6,8,5,4)
factor(f,levels = a)
[1] 1 4 8 1 5 4 4 5 6
Levels: 1 3 6 8 5 4

它的意思是对level的顺序进行规定,按照我们level的是顺序。


所以经过上述探索,我们明白上面那一行代码的意思是计算属于每一种细胞类型的细胞表达值得均值。


# get specificity scores
cellTypeS <- colSums(cellTypeMean2)
cellTypePEM <- t(apply(cellTypeMean2, 1, function(v) {
	log10(v/cellTypeS*sum(cellTypeS, na.rm=TRUE)/sum(v, na.rm=TRUE))
}))

这里是计算数据集中的每一个基因相对于每一个细胞类型的特异性的值。用数学公式可以表示为:

在这里插入图片描述

至于这个PEM值为什么能够表示这个基因在这种细胞类型中的富集程度我是不太明白的。
那么通过这种方法,可以分别计算出每一个基因在上述给定的细胞类型中的富集的值。
我突然有一点比较朦胧的认知:觉得数学就是表征关系。将我们遇到的情况,表征为数与数之间的关系。


下面这一部分就是,这里最升华的一部分。

# KS test (m is the PEM score matrix)
getKS.p <- function(genes, m) {
	selDat <- m[rownames(m) %in% genes, ]
	bgDat <- m[!(rownames(m) %in% genes), ]
	p <- sapply(1:ncol(selDat), function(i) {
		ks.test(selDat[,i], bgDat[,i], alternative="less")$p.value
	})
	names(p) <- colnames(m)
	return(p)
}

这行代码的意思,就是使用KS-test去检验,我们感兴趣的一群基因在特定细胞类型中的富集程度与相应的背景基因集去比较,去比较这两者的分布是否一致。
对于统计学的还是真糟糕,这里的零假设是啥都没有反应过来。
通过最后得到的P值,我们确定我们感兴趣的这群基因在特定细胞类型中的富集程度。

这是一种判断的思路(关于富集分析还有其他方法,立志等我学会了,我就再写一篇博客。)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
go富集分析和kegg富集分析生物信息学中常用的两种功能注释方法,用于解释大规模基因表达数据中的生物学意义和功能。这些分析通常用于分析基因列表中富集的功能类别或代谢通路。 在go富集分析中,通常使用Gene Ontology(GO)数据库来标注基因的功能、细胞组分和生物过程。分析过程包括将基因列表与注释数据库中的功能类别进行比较,并计算富集程度。富集程度由P值来衡量,P值越小表示富集程度越高,代表该功能类别在基因列表中出现的概率较小。 解读go富集分析结果时,需要关注具有显著富集的功能类别,这些功能类别指示了基因列表中的生物学过程和功能。此外,还需要考虑功能类别的层级关系,例如,富集于更高级别的功能类别可能表示更广泛的生物学过程。结合基因列表的背景信息和研究问题的特点,进一步挖掘和解释功能类别的生物学意义。 对于kegg富集分析,是基于KEGG(Kyoto Encyclopedia of Genes and Genomes)数据库中的代谢通路信息进行注释和富集分析富集程度也是通过计算P值来量化,P值越小表示富集程度越高,代表该代谢通路在基因列表中出现的概率较小。 解读kegg富集分析结果时,可关注具有显著富集的代谢通路,这些通路是基因列表中可能参与的生物化学反应网络。进一步分析这些富集的代谢通路可以帮助理解基因表达数据中的代谢变化和生物过程的调控机制。 综上所述,go和kegg富集分析结果的解读需要结合P值和功能/通路的生物学意义,通过综合分析得出准确的结论。这两种方法在生物信息学研究中具有重要的应用价值,可以帮助揭示基因表达数据中的生物学过程、功能和代谢调控机制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值