2023-01-10 gsea

https://www.sohu.com/a/281843011_120055884
https://www.jianshu.com/p/cff8fe8b548a
之前介绍的一种是用R包做的图,利用的是log2foldchange 和ensemble ID
这次介绍的是GESA软件操作
原始分析数据
原始的FPKM值为
基因名(需要是ENTREZID格式)

image.png

构建其他物种

GSEA软件下载:https://www.gsea-msigdb.org/gsea/index.jsp 直接选择你操作系统对应的版本,下载安装即可。
准备上传文件

1.基因表达量表(.gct)

通常用.gct为后缀。文件第一行以“#1.2”开头;文件第二行的第一列为基因个数、第二列为样品个数;文件的第三行为表达谱的矩阵的title信息,第一列为基因symbol/探针号,第二列为基因/探针的描述信息,第三列以后为样品id。接下来的行对应每个基因/探针在每个样品中的表达信息。文件以tab作为分隔符。


image.png

第一列不能有重复


image.png

2. 样品表型分类文件(cls)——必需文件

样品表型分类文件需以.cls为后缀。文件第一行为三个数字,第一个是样品的总数,第二个是样品分为几类,第三个数字通常为1。第二行也通常三个字符串,第一个为#,第二个为分类1的名称,第三个位分类2的名称。第三行为每个样品的分类信息,0代表分类1,1则代表分类2。文件以空格或者tab分割。


image.png

GSEA 分析

导入数据
打开GSEA软件,点击左侧菜单栏的Load data选项,将数据按如下图所示方法导入


image.png

设置参数
按照下图标记的批注设置合适的参数。


image.png

image.png

image.png

Expression dataset(表达文件): 选择上一步上传的表达gct文件

Gene sets database (功能基因集数据库):GSEA包含了MSigDB数据库中的功能基因集,可以从中选择感兴趣的通路、癌症标记、转录因子数据库等。
Number of permutations(扰动/随机次数):通常设置1000,此参数不可过小。
Phenotypes labels(样品表型分类文件):选择上一步上传的表型cls文件
Collapse dataset to gene symbols:通常true

如果已经变为了gene symobols 则不需要进行转换
如果不是,则需要进行转换
Permutation type(扰动类型): 通常选择phenotype,如果样品数目较少可以选择gene_set。
Chip platform(芯片类型):如果表达gct文件的第一列为芯片探针id则此处需要选择对应的芯片平台,如果是基因symbol则无需选择。


image.png

image.png

image.png

gsea分析结束后

点击相应的success


image.png

跳到相应的分析结果


image.png

如果是其他物种,https://www.jianshu.com/p/cff8fe8b548a

可以构建心得基因集
<meta charset="utf-8">

基因集文件的准备相对比较复杂,我用到的是KEGG的通路基因集,也可以用GO的的基因集,甚至可以自己创造一个,只需要满足上图所示的文件格式。下面介绍一下如何从KEGG网站上下载某物种(小鼠)的基因集信息。

首先,在KEGG数据库中下载小鼠的KEGG通路数据库文件

image.png

image.png
image.png

image.png

image.png

大家可以看到,这个.keg文件和我们需要的.gmt文件还有不小的差异,那么,我们需要按如下方法,先在Linux下解析keg文件,然后用R制作.gmt文件:

#解析信息
perl -alne '{if(/^C/){/PATH:mmu(\d+)/;$kegg=$1}else{print "$kegg\t$F[1]" if /^D/ and $kegg;}}' mmu00001.keg > mmu00001_kegg2gene.txt
grep '^C' mmu00001.keg | grep "mmu" | sed 's/^C    //g' | sed 's/\([0-9]*\)\s/\1\t/' > mmu00001_kegg2description.txt
#转换ID同时制作.gmt文件
#安装转换ID需要用到的各个R包
#安装data.table
install.packages("data.table")
#安装org.Xx.eg.db系列包中小鼠资源包
BiocManager::install("org.Mm.eg.db")
#安装clusterProfiler包,安装时需要“科学上网”
BiocManager::install("clusterProfiler")

#调用各个R包
library(data.table)
library(org.Mm.eg.db)
library(clusterProfiler)

#读入数据
path2gene_file<-"mmu00001_kegg2gene.txt"
tmp=read.table(path2gene_file,sep="\t",colClasses=c('character'))
dt <- tmp
dt$geneid <- rownames(dt)

# transform id  
map_dt <- bitr(dt$V2, fromType = "ENTREZID",toType = c( "SYMBOL"),OrgDb = org.Mm.eg.db)
dt_merge <- merge(map_dt,dt, by.y = "V2", by.x = "ENTREZID")

# 可以把转换ID后的表输出
#write.table(dt_merge, file = "example42.txt", sep = "\t", col.names = T, row.names = T, quote = F)

# first column is kegg ID, second column is entrez ID
GeneID2kegg_list<- tapply(tmp[,1],as.factor(tmp[,2]),function(x) x)
kegg2symbol_list<- tapply(dt_merge$SYMBOL,as.factor(dt_merge$V1),function(x) x)

#输出数据,但描述列为NA
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()
image.png

另外一种方法,构建斑马鱼物种的bp基因集

setwd("I:/ZHS_Seq_data/RUN")
library(msigdbr)
msigdbr_species() #可以看到,这个包涵盖了20个物种

zebrafish <- msigdbr(species = "Danio rerio")
zebrafish[1:5,1:5]
table(zebrafish$gs_cat) #查看目录,与MSigDB一样,包含9个数据集
#例如,本例中,我们要分析GO,因为mouse文件包含了所有的基因集,所以要查看GO在哪里,然后将需要的文件提出来。
table(zebrafish$gs_subcat)
zebrafish_GO_bp = msigdbr(species = "Danio rerio",
                      category = "C5", #GO在C5
                      subcategory = "GO:BP") %>% 
  dplyr::select(gs_name,gene_symbol)#这里可以选择gene symbol,也可以选择ID,根据自己数据需求来,主要为了方便
head(zebrafish_GO_bp)

zebrafish_GO_bp_Set = zebrafish_GO_bp %>% split(x = .$gene_symbol, f = .$gs_name)#后续gsva要求是list,所以将他转化为list
write.csv(zebrafish_GO_bp_Set,"zebrafish_GO_bp_Set.csv")
###names(zebrafish_GO_bp_Set)
##zebrafish_GO_bp_Set

write.gmt <- function(geneSet=zebrafish_GO_bp_Set,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()

构好文件如下,第二列为NA


image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容