Nguyen的评估代码复现

2023-05-19 14:45:43 浏览数 (1)

这一部分是笔者毕业论文中的对Nguyen的基因集分析方法评估的R语言复现。

前面的准备过程可见其他的帖子。

此处以GSVA方法进行示例:

代码语言:javascript复制
library(parallel)
library(doParallel)
library(foreach)  #并行计算所使用的R包


library(tibble)
library(dplyr) #包含对dataframe数据的函数


load("/Users/narcissus/Desktop/bioinfomatics/Data/HealthPool_20824.RData")
 
                                              #文件目录需要根据实际情况进行更改 

# gsva的方法评估 - - - - - - - - - - >

NormalPool<-HealthData0
  # 这一步根据具体RData文件中的名字进行更改,笔者的文件中的变量为“HealthData0”

source("/Users/narcissus/Desktop/bioinfomatics/gsaMethod/gsva_method.R")
# 引入具体的评估方法

cl <- makeCluster(4)
registerDoParallel(cl) # 开启并行,申请4核,根据电脑实际情况进行更改

                                           
GSVA_output<-foreach (1:2000,.combine =cbind,.packages ="GSVA") %dopar%{
  sampleIndex=sample(dim(NormalPool)[2],size=30) # 首先采样30个样本  
  exprSet<-NormalPool[c(sampleIndex)]
                    # 对于每一个KEGG基因集,使用具体方法得到该基因集的p值列表(总共进行2000次)
  
  GSVA_adjust(exprSet)
     
} # 每一次循环都会产生一个列向量(基因集数量*1),通过foreach中的cbind参数将2000个列向量拼接在一起。

save(GSVA_output,file="/Users/narcissus/Desktop/bioinfomatics/Data/method_assess/GSVA_output5367.RData") 
        #保存结果
#rm(GSVA_output) #可将该变量删除节省空间
#gc()            #整理一下内存空间
stopCluster(cl)  #关闭并行核

得到所有基因集的p值分布数据之后,进行偏性的评估。

使用样本偏度(skewness)进行某一对象(方法-基因集对)偏向0或者偏向1的判断

代码语言:javascript复制
library(ggplot2)#进行图像绘制

# 数据加载 - - - - - - - - - - >
load("/Users/narcissus/Desktop/bioinfomatics/Data/method_assess/sigPathway_output20824_.Rdata") #根据实际情况进行更改
P_distribution<-GSVA_output

# 进行偏向0/1判断 - - - - - - - - - - >
SetNum<-dim(P_distribution)[1] #获得基因集数量
SkewValue<-array(0,SetNum) #  以0初始化容器

for (k in 1:SetNum){  
  mean<-mean(P_distribution[k,])  # 计算均值
  sd<-sd(P_distribution[k,])  # 计算标准差
  SkewValue[k]<-mean((   ((P_distribution[k,]-mean))/sd   )^3)
}      # SkewValue可能会有NA的情况,对于这种情况,人工设置为0.5(当该基因集的所有p值相同时)

Prefer0<-length(which(SkewValue>0.1)) #计算偏向0的数量
Prefer1<-length(which(SkewValue< -0.1)) #计算偏向1的数量
PreferNeither<- length(which( abs(SkewValue) <0.1)) # 计算无偏通路的数量
 
load("/Users/narcissus/Desktop/bioinfomatics/Data/KeggGeneSet.RData") #获得之前得到的KEGG基因集数据

gsSize<-array(0,SetNum) # 初始化容器
for (k in 1:SetNum){  
  gsSize[k]<-length(pathways[[k]])
}
 
skew_with_size<-cbind(gsSize,SkewValue) #将基因集大小与基因集数量进行拼接 

0 人点赞