PGSEA和GSVA你会怎么选择呢?

GSEA 相信看过我生信菜鸟团博客的朋友都已经耳熟能详了的,其需要样本的描述以及分组信息,来计算每个基因的差异度量对它们进行排序,然后走GSEA。 虽然有ssGSEA这样的单样本的分析,但仍然不够,也有GSVA这样的算法来弥补,这里要介绍的是另外一个包,PGSEA。

it tests for each sample whether the average expression of genes in a gene sets deviates from the overall average expression (expression of all genes in all samples).

使用GSVA方法计算某基因集在各个样本的表现

安装PGSEA这个R包

安装并且查看 PDF教程:

## try http:// if https:// URLs are not supported
source("https://bioconductor.org/biocLite.R")
options(BioC_mirror="http://mirrors.ustc.edu.cn/bioc/")
biocLite("PGSEA")
library(PGSEA)
browseVignettes("PGSEA")   

最新版教程: https://bioconductor.org/packages/release/bioc/html/PGSEA.html

重点就是PGSEA函数及smcPlot函数,前者根据表达矩阵及基因集来进行GSEA分析,后者用来可视化分析后的结果。

因为PGSEA分析后的结果是每个基因集在每个样本的一个score,所以也是一个表达矩阵,也可以进行limma的差异分析流程。

执行PGSEA分析及可视化

分析结果也可以走limma流程

library(PGSEA)
library(GEOquery)
library(GSEABase)
gse <- getGEO("GSE7023",GSEMatrix=TRUE)
#load("gse.rda")
subtype <- gsub("\\.", "_",gsub("subtype: ", "", phenoData(gse[[1]])$"characteristics_ch1"))
pheno <- new("AnnotatedDataFrame", data = data.frame(subtype), varMetadata = data.frame(labelDescription="subtype"))
rownames(pheno@data) <- colnames(exprs(gse[[1]]))
eset <- new("ExpressionSet", exprs = exprs(gse[[1]]), phenoData = pheno)

data(VAIgsc)
details(VAIgsc[[1]])

pgNF <- PGSEA(eset, VAIgsc, ref=which(subtype=="NO"), p.value=NA)

library(limma)

design <- model.matrix(~ -1+factor(subtype))
colnames(design) <- names(table(subtype))
fit <- lmFit(pgNF, design)
contrast.matrix <- makeContrasts(P2B-NO , levels=design)
fit <- contrasts.fit(fit, contrast.matrix)
fit <- eBayes(fit)

topTable(fit, n=10)[,c("logFC","t","adj.P.Val")]

可以看到都是给一个基因集(GO/KEGG/BIOCARTA/REACTOME/MSIGDB)在每个样本里面打分,把所有基因在所有样本的表达量矩阵转换为了所有基因集在所有样本的打分矩阵!!!

那么,回答我,你会怎么选择呢?

原文发布于微信公众号 - 生信技能树(biotrainee)

原文发表时间:2018-06-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大数据文摘

有这5小段代码在手,轻松实现数据可视化(Python+Matplotlib)

29560
来自专栏奇点大数据

Pytorch神器(3)

上次我们的连载讲到用最简便的方法,也就是pip方法安装Pytorch。大家都成功了吧。

16210
来自专栏懒人开发

(5.4)James Stewart Calculus 5th Edition:Indefinite Integrals and the Net Change Theorem

这里接受了一个约定,也就是当函数不连续的时候, 可以理解成对应连续有效部分的不定积分

21620
来自专栏人工智能LeadAI

C++实现神经网络之一 | Net类的设计和神经网络的初始化

闲言少叙,直接开始 既然是要用C++来实现,那么我们自然而然的想到设计一个神经网络类来表示神经网络,这里我称之为Net类。由于这个类名太过普遍,很有可能跟其他人...

34550
来自专栏集智的专栏

使用腾讯云 GPU 学习深度学习系列之四:深度学习的特征工程

本系列文章主要介绍如何使用 腾讯云GPU服务器 进行深度学习运算,前面主要介绍原理部分,后期则以实践为主。

3.8K40
来自专栏集智的专栏

使用腾讯云 GPU 学习深度学习系列之二:Tensorflow 简明原理

本文介绍了如何通过简单的 Python 代码,重点实现深度学习框架的计算图模型,以及自动求导过程。

9.2K30
来自专栏AI科技评论

开发 | 机器学习之确定最佳聚类数目的10种方法

AI科技评论按,本文作者贝尔塔,原文载于知乎专栏数据分析与可视化,AI科技评论获其授权发布。 在聚类分析的时候确定最佳聚类数目是一个很重要的问题,比如kmean...

373120
来自专栏SeanCheney的专栏

《Scikit-Learn与TensorFlow机器学习实用指南》 第02章 一个完整的机器学习项目(下)选择并训练模型模型微调启动、监控、维护系统实践!练习

大多机器学习算法不能处理特征丢失,因此先创建一些函数来处理特征丢失的问题。前面,你应该注意到了属性total_bedrooms有一些缺失值。有三个解决选项:

28820
来自专栏小鹏的专栏

机器学习进阶系列

本文为博主原创文章,未经博主允许不得转载。有问题可以加微信:lp9628(注明CSDN)。

37670
来自专栏CSDN技术头条

LSTM实现详解

前言 在很长一段时间里,我一直忙于寻找一个实现LSTM网络的好教程。它们似乎很复杂,而且在此之前我从来没有使用它们做过任何东西。在互联网上快速搜索并没有什么帮助...

24390

扫码关注云+社区

领取腾讯云代金券