2021-10-17-GSVA分析

作者: FFwizard | 来源:发表于2021-10-17 11:28 被阅读0次

准备gmt文件

1、在GSEA网站上下载相应的通路的gmt文件,[GSEA官网](http://www.gsea-msigdb.org/gsea/msigdb/collections.jsp#C2),在上面可以下载MSigDB所收录的基因集。下下来以后跑代码分析
比如我们先下载一个上面收录的kegg的通路集合,SYMBOL和NCBI ID都可以
2、自己构建数据集
下载了KEGG官网的数据集,两列数据,一列通路,一列基因集

library(KEGGREST, quietly = TRUE)
library(tidyverse, quietly = TRUE)
setwd("D:/SXFX/SXDT1/GSEA/")
# 返回信息很长,只取基因symbol.根据自己需要调整
symbolOnly <- function(x){
  items <- strsplit(x, ";", fixed = TRUE) %>% unlist()
  return(items[1])
}

# keggGet(x)[[1]]$GENE 数据基因名是个向量,其中奇数位置是 entrezgene_id 偶数位置是 symbol 
geneEntrez <- function(x){
  geneList <- keggGet(x)[[1]]$GENE
  if(!is.null(geneList)){
    listLength <- length(geneList)
    entrezList <- geneList[seq.int(from = 1, by = 2, length.out = listLength/2)]
    entrez <- stringr::str_c(entrezList, collapse = ",")
    return(entrez)
  }else{
    return(NA)
  }
  
}

# keggGet(x)[[1]]$GENE 数据基因名是个向量,其中奇数位置是 entrezgene_id 偶数位置是 symbol 
geneSymbol <- function(x){
  geneList <- keggGet(x)[[1]]$GENE
  if(!is.null(geneList)){
    listLength <- length(geneList)
    symbolList <- geneList[seq.int(from = 2, by = 2, length.out = listLength/2)] %>% map_chr(symbolOnly)
    symbol <- stringr::str_c(symbolList, collapse = ",")
    return(symbol)
  }else{
    return("")
  }
  
}

# 取得 hsaxxxxx 这种通路ID
pathwayID <- function(x){
  items <- strsplit(x, ":", fixed = TRUE) %>% unlist()
  return(items[2])
}

# 建议从这里开始读脚本。建议自己在交互模式下试一下用到的KEGGREST函数,看看返回数据的结构。
# 这是第一步,取得所有的KEGG通路列表
hsaList <- keggList("pathway", "hsa")
IDList <- names(hsaList) %>% map_chr(pathwayID)

# 将通路ID和通路名放在一个表格(tibble)里
hsaPathway <- tibble::tibble(pathway_id=IDList, pathway_name=hsaList)
head(hsaPathway, n=3) %>% print()

# 用前面定义函数,获得每个通路的基因,然后也放在表格里
pathwayFull <- hsaPathway %>% dplyr::mutate(entrezgene_id=map_chr(pathway_id, geneEntrez), hgnc_symbol=map_chr(pathway_id, geneSymbol))

# 保存数据
write_tsv(pathwayFull, path="KEGGREST.tsv")
dim(pathwayFull) %>% print()

# 会有通路没有基因,我的话只需要有基因的,所以把无基因的移除
pathwayWithGene <- dplyr::filter(pathwayFull, !is.na(entrezgene_id) & hgnc_symbol != "")
write_tsv(pathwayWithGene, path="KEGGREST_WithGene.tsv")
dim(pathwayWithGene) %>% print()

构建gmt格式的文件

gmt<-data.frame()
for (i in 1:345){
  dt<-data.frame(unlist(str_split(pathwayWithGene$hgnc_symbol[i],',')))
  colnames(dt)[1]='gene'
  dt$term=unlist(str_split(pathwayWithGene$pathway_name[i],'-'))[1]
  gmt<-rbind(gmt,dt)
}
gmt<-gmt[,c('term','gene')]

GeneID2kegg_list<<- tapply(gmt[,1],as.factor(gmt[,2]),function(x) x)
kegg2GeneID_list<<- tapply(gmt[,2],as.factor(gmt[,1]),function(x) x)

write.gmt <- function(geneSet=kegg2symbol_list,gmt_file='kegg2symbol.gmt'){
  sink( gmt_file )
  for (i in 1:length(geneSet)){
    cat(names(geneSet)[i])
    cat('\tNA\t')
    cat(paste(geneSet[[i]],collapse = '\t'))
    cat('\n')
  }
  sink()
}
write.gmt(kegg2GeneID_list,'kegg2symbol.gmt')

GSVA 分析

rm(list = ls())
options(stringsAsFactors = F)
setwd("D:/SXFX/Analysis_data/WH/21-08-07/")
exp<-read.csv('expression_matrix.2.csv',row.names = 1)
suppressMessages(library(GSVA))
suppressMessages(library(GSVAdata))
suppressMessages(library(GSEABase))
suppressMessages(library(limma))
setwd("D:/SXFX/SXDT1/GSEA/")
geneset <- getGmt('kegg2symbol.gmt')  
es <- gsva(as.matrix(exp), geneset,
           min.sz=10, max.sz=500, verbose=TRUE)

相关文章

  • 2021-10-17-GSVA分析

    准备gmt文件 1、在GSEA网站上下载相应的通路的gmt文件,[GSEA官网](http://www.gsea-...

  • 常用数据分析方法

    对比分析(现状分析) 趋势分析(预测分析) 矩阵关联分析 分组分析(原因分析-分布情况) 漏斗...

  • 零售业大数据分析

    零售业数据分析包括: 财务分析销售分析商品分析顾客分析供应商分析人员分析 1 财务分析 1)分析企业的财务状况,了...

  • 分析分析分析

    新工作第三天,沒有前兩天覺得那麼難熬。也不是難熬,不過是有些覺得無所事事。今天用SQL導出了工作的數據,然後下午學...

  • 用数据驱动产品和运营 之 数据分析方法

    数据分析方法 多维事件分析 漏斗分析 留存分析 行为序列分析 A/B测试 用户分群 (一)数据分析——多维事件分析...

  • 9种常用的数据分析方法

    公式拆解、对比分析、A/Btest、象限分析、帕累托分析、漏斗分析、路径分析、留存分析、聚类分析 一、公式拆解 所...

  • 数据分析

    数据分析基本方法 对比分析(横向对比纵向对比) 趋势分析 象限分析 交叉分析 数据分析框架_AARRR分析 逻辑分...

  • OpenCV-Python学习(十):图像滤波之傅里叶变换

    滤波分析又分为 时域分析、频域分析: 时域分析: 直接对信号本身进行分析。 频域分析: 对信号的变化快慢进行分析。...

  • 7张脑图讲透如何做好品牌、价格、渠道、市场、机会分析

    1、品牌分析: 2、价格分析 3、广告分析 4、渠道分析: 5、市场机会分析: 6、满意度分析 7、市场细分分析 ...

  • 谁说菜鸟不懂数据分析-读书整理

    数据分析简述: 数据分析分类及作用: 分类:描述性分析,探索性分析,验证性分析 作用:现状分析,原因分析,...

网友评论

    本文标题:2021-10-17-GSVA分析

    本文链接:https://www.haomeiwen.com/subject/pktwoltx.html