前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nguyen的评估代码复现

Nguyen的评估代码复现

原创
作者头像
Leopold.
发布2023-05-19 14:45:43
5651
发布2023-05-19 14:45:43
举报
文章被收录于专栏:一些实现方法

这一部分是笔者毕业论文中的对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)

 #将基因集大小与基因集数量进行拼接 

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档