GSVA使用手冊

2021-02-24 生信技術開發
GSVA使用手冊

Gene Set Variation Analysis,被稱為基因集變異分析,是一種非參數的無監督分析方法,主要用來評估晶片核轉錄組的基因集富集結果。主要是通過將基因在不同樣品間的表達量矩陣轉化成基因集在樣品間的表達量矩陣,從而來評估不同的代謝通路在不同樣品間是否富集。其實就是研究這些感興趣的基因集在不同樣品間的差異,或者尋找比較重要的基因集,作為一種分析方法,主要是是為了從生物信息學的角度去解釋導致表型差異的原因。它的主要輸入文件為表達量的矩陣和基因集的文件,通過gsva的方法就可以得出結果;既可以處理晶片的結果,也可以處理轉錄組的結果。

GSVA安裝

source("http://bioconductor.org/biocLite.R")

biocLite('GSVAdata')

biocLite('GSVA')

biocLite("limma")

biocLite("genefilter")

注意事項

如果是晶片的數據是需要對數據進行過濾的,可以參考下面的測試數據代碼,或者看官方的文檔+

GSVA本身提供了三個算法,一般使用默認的算法就可以了

對於RNA-seq的數據,如果是read count可以選擇Possion分布,如果是均一化後的表達量值,可以選擇默認參數高斯分布就可以了

讀入的數據格式可以參考最後的表達譜數據格式,需要自己製作分組信息

模擬數據測試

#構造一個 30個樣本,2萬個基因的表達矩陣, 加上 100 個假定的基因集

library(GSVA)

p <- 20000 ## number of genes

n <- 30 ## number of samples

nGS <- 100 ## number of gene sets

min.sz <- 10 ## minimum gene set size

max.sz <- 100 ## maximum gene set size

X <- matrix(rnorm(p*n), nrow=p, dimnames=list(1:p, 1:n))

dim(X)

gs <- as.list(sample(min.sz:max.sz, size=nGS, replace=TRUE)) ## sample gene set sizes

gs <- lapply(gs, function(n, p) sample(1:p, size=n, replace=FALSE), p) ## sample gene sets

es.max <- gsva(X, gs, mx.diff=FALSE, verbose=FALSE, parallel.sz=1)

es.dif <- gsva(X, gs, mx.diff=TRUE, verbose=FALSE, parallel.sz=1)

pheatmap::pheatmap(es.max)

pheatmap::pheatmap(es.dif)

##依賴包

library(GSEABase)

library(GSVAdata)

data(c2BroadSets)

c2BroadSets

library(Biobase)

library(genefilter)

library(limma)

library(RColorBrewer)

library(GSVA)

#官方文檔有數據的預處理過程

cacheDir <- system.file("extdata", package="GSVA")

cachePrefix <- "cache4vignette_"

file.remove(paste(cacheDir, list.files(cacheDir, pattern=cachePrefix), sep="/"))

data(leukemia)

leukemia_eset

head(pData(leukemia_eset))

table(leukemia_eset$subtype)

##過濾

data(leukemia)

leukemia_eset

filtered_eset <- nsFilter(leukemia_eset, require.entrez=TRUE, remove.dupEntrez=TRUE,var.func=IQR, var.filter=TRUE, var.cutoff=0.5, filterByQuantile=TRUE,feature.exclude="^AFFX")

leukemia_filtered_eset <- filtered_eset$eset

計算差異基因

cache(leukemia_es <- gsva(leukemia_filtered_eset, c2BroadSets,min.sz=10, max.sz=500, verbose=TRUE),dir=cacheDir, prefix=cachePrefix)

adjPvalueCutoff <- 0.001

logFCcutoff <- log2(2)

design <- model.matrix(~ factor(leukemia_es$subtype))

colnames(design) <- c("ALL", "MLLvsALL")

fit <- lmFit(leukemia_es, design)

fit <- eBayes(fit)

allGeneSets <- topTable(fit, coef="MLLvsALL", number=Inf)

DEgeneSets <- topTable(fit, coef="MLLvsALL", number=Inf,

p.value=adjPvalueCutoff, adjust="BH")

res <- decideTests(fit, p.value=adjPvalueCutoff)

summary(res)

limma計算差異表達基因

logFCcutoff <- log2(2)

design <- model.matrix(~ factor(leukemia_eset$subtype))

colnames(design) <- c("ALL", "MLLvsALL")

fit <- lmFit(leukemia_filtered_eset, design)

fit <- eBayes(fit)

allGenes <- topTable(fit, coef="MLLvsALL", number=Inf)

DEgenes <- topTable(fit, coef="MLLvsALL", number=Inf,

p.value=adjPvalueCutoff, adjust="BH", lfc=logFCcutoff)

res <- decideTests(fit, p.value=adjPvalueCutoff, lfc=logFCcutoff)

#summary(res)

RNAseq的數據

如果是RNA-seq的原始整數的read count 在使用gsva時需要設置kcdf="Possion",如果是取過log的RPKM,TPM等結果可以使用默認的值,所以如果我們在使用fpkm進行分析的時候使用默認參數局可以了

data(commonPickrellHuang)

stopifnot(identical(featureNames(huangArrayRMAnoBatchCommon_eset),featureNames(pickrellCountsArgonneCQNcommon_eset)))

stopifnot(identical(sampleNames(huangArrayRMAnoBatchCommon_eset),sampleNames(pickrellCountsArgonneCQNcommon_eset)))

canonicalC2BroadSets <- c2BroadSets[c(grep("^KEGG", names(c2BroadSets)),grep("^REACTOME", names(c2BroadSets)),grep("^BIOCARTA", names(c2BroadSets)))]

data(genderGenesEntrez)

MSY <- GeneSet(msYgenesEntrez, geneIdType=EntrezIdentifier(),collectionType=BroadCollection(category="c2"), setName="MSY")

XiE <- GeneSet(XiEgenesEntrez, geneIdType=EntrezIdentifier(),collectionType=BroadCollection(category="c2"), setName="XiE")

canonicalC2BroadSets <- GeneSetCollection(c(canonicalC2BroadSets, MSY, XiE))

#使用GSVA方法進行計算

esmicro <- gsva(huangArrayRMAnoBatchCommon_eset, canonicalC2BroadSets, min.sz=5, max.sz=500,mx.diff=TRUE, verbose=FALSE, parallel.sz=1)

esrnaseq <- gsva(pickrellCountsArgonneCQNcommon_eset, canonicalC2BroadSets, min.sz=5, max.sz=500,kcdf="Poisson", mx.diff=TRUE, verbose=FALSE, parallel.sz=1)

實際項目測試

gene格式文件

gene AdA3_0h-1 AdA3_0h-2 AdA3_0h-3 AdA3_0h-4 AdA3_0h-5 AdA3_0h-6 AdA3_16h-3 AdA3_16h-4 AdA3_16h-5 AdA3_16h-6 AdGFP_0h-1 AdGFP_0h-2 AdGFP_0h-3 AdGFP_0h-4 AdGFP_0h-5 AdGFP_0h-6 AdGFP_16h-1 AdGFP_16h-2 AdGFP_16h-3 AdGFP_16h-4 AdGFP_16h-5 AdGFP_16h-6

Gnai3 73.842026 52.385326 73.034203 70.679092 67.094292 74.611313 74.853683 72.340401 73.230095 77.39888 70.019714 69.995277 72.172127 72.398514 74.176201 72.700516 60.29203 60.199333 58.043304 58.425671 61.812901 60.219734

Pbsn 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Cdc45 3.653137 5.67695 3.560387 3.287101 4.034892 2.92406 11.427282 14.665288 11.368333 11.96515 4.289696 3.869604 4.055799 3.617629 4.800964 4.790279 20.065876 25.753405 19.732252 26.296944 21.906717 20.378906

Scml2 0.15765 0.022811 0.301977 0.056921 0.022823 0.104651 1.542295 0.370989 0.226674 0.426919 0.132548 0.028549 0.066578 0 0.069393 0.10476 0.981483 1.607109 0.84421 0.912878 1.281105 2.309552

基因集格式

G1/S-Specific Transcription NA Rrm2 Ccne1 E2f1 Fbxo5 Cdc6 Dhfr Cdc45 Pola1 Cdt1 Cdk1 Tyms

E2F mediated regulation of DNA replication NA Rrm2 Ccne1 E2f1 Fbxo5 Cdc6 Pola2 Dhfr Cdc45 Pola1 Cdt1 Cdk1 Ccnb1 Tyms

Formation of Fibrin Clot (Clotting Cascade) NA Fga F11 Fgb Proc Serping1 Thbd Tfpi F7 Serpine2 Fgg Serpind1 Serpina5 F8 Pf4

Resolution of D-loop Structures through Holliday Junction Intermediates NA Dna2 Bard1 Brca1 Rad51 Rad51c Brip1 Rad51b Exo1 Gen1 Wrn Blm Brca2 Eme1

Hemostasis NA Fga Serpinf2 Atp1b1 Sparc Slc16a3 Plaur Plat Gpc1 Tgfb1 F11 Fam49b Arrb2 Fgb Rapgef4 Proc Ahsg Wee1 Vav2 Serping1 Esam Kif2c Syk Thbd Kif11 Igf1 Tfpi Rad51c Serpinb2 Lgals3bp Dock11 Prkcg Timp3 Racgap1 Col1a2 Rad51b Pde5a Nos3 Dock8 F7 Serpine2 Kif4 Tek Ehd3 Col1a1 Cav1 Prkch Fgg Serpind1 Serpina5 Igf2 Cd74 Ctsw Irf1 Fcer1g Pde9a Plek Rapgef3 Lcp2 P2rx7 Pde10a Kif15 Kif23 Csf2rb2 Gnai1 Zfpm1 Slc7a8 Spp2 Kif5a Il2rg Lck Rac2 Hist2h3c1 Gng2 Pla2g4a Cyb5r1 F8 Gata3 Cd63 Pf4 Serpina3c Kif3c P2ry12 Slc16a8 F2rl3 Ppia Vav3 Ttn Kif18a Pde3a Csf2 Prkcb

Resolution of D-Loop Structures NA Dna2 Bard1 Brca1 Rad51 Rad51c Brip1 Rad51b Exo1 Gen1 Wrn Blm Brca2 Eme1

Common Pathway of Fibrin Clot Formation NA Fga Fgb Proc Thbd Serpine2 Fgg Serpind1 Serpina5 F8 Pf4

Kinesins NA Kif2c Kif11 Racgap1 Kif4 Kif15 Kif23 Kif5a Kif3c Kif18a

Xenobiotics NA Cyp2c50 Cyp2c37 Cyp2c54 Cyp2e1 Cyp2c29 Cyp2f2 Cyp2c38 Cyp2b9 Cyp2c55 Arnt2 Cyp2a4

Resolution of D-loop Structures through Synthesis-Dependent Strand Annealing (SDSA) NA Dna2 Bard1 Brca1 Rad51 Rad51c Brip1 Rad51b Exo1 Wrn Blm Brca2

Initial triggering of complement NA Crp C2 C4b C3 C1qc C1qa C1qb Cfp

Integrin cell surface interactions NA Fga Icam1 Itgb6 Spp1 Fgb Col5a2 Itga2 Tnc Col18a1 Col1a2 Itga9 Col1a1 Fgg Col7a1 Icam2 Fbn1 Itga8 Col8a1 Col4a4

CRMPs in Sema3A signaling NA Dpysl3 Dpysl2 Cdk5r1 Dpysl5 Plxna4 Sema3a Crmp1 Plxna3

Phase 1 - Functionalization of compounds NA Adh1 Cyp4a14 Cyp2c50 Cyp2c37 Cyp4a10 Maob Cyp2c54 Cyp2e1 Cyp4b1 Cyp2c29 Cyp39a1 Cyp2f2 Cyp3a25 Nr1h4 Marc1 Fmo2 Aoc2 Aldh1b1 Cyp2c38 Cmbl Cyp27b1 Adh7 Aoc3 Cyp2b9 Cyp2c55 Fdx1l Arnt2 Cyp2a4

Meiotic Recombination NA Brca1 Rad51 Hist1h2bc Hist1h2bg Blm Brca2 Hist2h2aa2 Hist2h2aa1 Hist1h2bh Hist1h2bj Hist1h2bl Hist1h2bp Hist1h2bk Hist1h2ba H2afv Hist3h2a Hist1h2bn Hist1h2bf Hist1h2bm Hist2h3c1 Hist1h2bb Prdm9 Msh4 Hist2h2ac Hist1h4h

基因集格式也就是gmt格式,第一列為基因集的名稱,第二列為基因集的描述,如果沒有可以為NA,第三列以後就是基因了,具體說明可參考:http://software.broadinstitute.org/cancer/software/gsea/wiki/index.php/Dataformats#GMT:GeneMatrixTransposedfileformat_.28.2A.gmt.29讀gmt文件可採用qusage包中的read.gmt函數具體命令如下:

#讀取基因集文件

geneSets <- read.gmt("test.geneset")

#讀取表達量文件並去除重複

mydata <- read.table(file = "all.genes.fpkm.xls",header=T)

name=mydata[,1]

index <- duplicated(mydata[,1])

fildup=mydata[!index,]

exp=fildup[,-1]

row.names(exp)=name

#將數據框轉換成矩陣

mydata= as.matrix(exp)

使用gsva方法進行分析,默認mx.diff=TRUE,min.sz=1,max.zs=Inf,這裡是設置最小值和最大值

res_es <- gsva(mydata, geneSets, min.sz=10, max.sz=500, verbose=FALSE, parallel.sz=1)

pheatmap(res_es)

mx.diff=FALSE es值是一個雙峰的分布

es.max <- gsva(mydata, geneSets, mx.diff=FALSE, verbose=FALSE, parallel.sz=1)

pheatmap(es.max)

mx.diff=TURE es值是一個近似正態分布

es.dif <- gsva(mydata, geneSets, mx.diff=TRUE, verbose=FALSE, parallel.sz=1)

pheatmap(es.dif)

可以看一下兩種不同分布的效果,前者是高斯分布,後者是二項分布

par(mfrow=c(1,2), mar=c(4, 4, 4, 1))

plot(density(as.vector(es.max)), main="Maximum deviation from zero",xlab="GSVA score", lwd=2, las=1, xaxt="n", xlim=c(-0.75, 0.75), cex.axis=0.8)

axis(1, at=seq(-0.75, 0.75, by=0.25), labels=seq(-0.75, 0.75, by=0.25), cex.axis=0.8)

plot(density(as.vector(es.dif)), main="Difference between largest\npositive and negative deviations",xlab="GSVA score", lwd=2, las=1, xaxt="n", xlim=c(-0.75, 0.75), cex.axis=0.8)

axis(1, at=seq(-0.75, 0.75, by=0.25), labels=seq(-0.75, 0.75, by=0.25), cex.axis=0.8)

limma設置分組的方法

group_list <- factor(c(rep("control",2), rep("siSUZ12",2)))

design <- model.matrix(~group_list)

colnames(design) <- levels(group_list)

rownames(design) <- colnames(counts)

#設置分組

col = names(exp)

sample=col[1:10]

group=c(rep('control',6),rep('treat',4))

phno=data.frame(sample,group)

Group<-factor(phno$group,levels=levels(phno$group))

design<-model.matrix(~0+Group)

colnames(design) <- c("control", "treat")

#獲取需要進行差異分析的分組

res=es.max[,1:10]

#定義閾值

logFCcutoff <- log2(1.5)

adjPvalueCutoff <- 0.001

#進行差異分析

fit <- lmFit(res, design)

fit <- eBayes(fit)

allGeneSets <- topTable(fit, coef="treat", number=Inf)

DEgeneSets <- topTable(fit, coef="treat", number=Inf,p.value=adjPvalueCutoff, adjust="BH")

res <- decideTests(fit, p.value=adjPvalueCutoff)

#summary(res)

#畫火山圖

DEgeneSets$significant="no"

DEgeneSets$significant=ifelse(DEgeneSets$logFC>0|DEgeneSets$logFC<0,"up","down")

ggplot(DEgeneSets,aes(logFC,-1*log10(adj.P.Val)))+geom_point(aes(color =significant)) + xlim(-4,4) + ylim(0,30)+labs(title="Volcanoplot",x="log[2](FC)", y="-log[10](FDR)")+scale_color_manual(values =c("#00ba38","#619cff","#f8766d"))+geom_hline(yintercept=1.3,linetype=4)+geom_vline(xintercept=c(-1,1),linetype=4)

#獲取差異基因集的表達量

DEgeneSetspkm = merge(DEgeneSets,es.max,by=0,all.x=TRUE)[,c(1,11:20)]

degsetsp=DEgeneSetspkm[,-1]

name=DEgeneSetspkm[,1]

row.names(degsetsp)=name

pheatmap(degsetsp)

相關焦點

  • GSVA + limma進行差異通路分析
    839  319 301  192  3271010  26    8    0   0    4    01112   3  214   41   0    1    21213   5    0    0   9  131   7513> dim(readCount)14[1] 20292     6    因為基因集使用
  • 海南飼料投餌機使用手冊
    海南飼料投餌機使用手冊,深圳市漁友樂科技有限公司從2011年開始從事漁業自動化養殖設備的研發、生產、銷售和服務。海南飼料投餌機使用手冊, 水平因素和正交試驗表分別如表 1和表 2所示。
  • 紅外額溫計使用手冊來了!如何正確使用?看這裡!
    瑞安市市場監督管理局為大家整理了一份紅外額溫計使用手冊,如果您在使用過程中遇到問題,請參考這份手冊! 紅外額溫計使用手冊
  • 西門子MCD機電平臺的使用手冊免費下載
    本文檔的主要內容詳細介紹的是西門子MCD機電平臺的使用手冊免費下載。
  • 399頁電氣簡圖用圖形符號使用手冊,工程圖紙全掌握!
    399頁電氣簡圖用圖形符號使用手冊,電氣圖紙全掌握,受用無窮!電氣圖紙是用來闡述電氣工作原理,描述電氣產品的構造和功能,並提供產品安裝和使用方法的一種簡圖,主要用電氣圖形符號、帶注釋的圍框或簡化外形,表示電氣系統或設備中組成部分之間相互關係,及其連接關係的一種圖。
  • 手冊等級能快速100 滑翔尾跡無法使用?
    甚至,部分玩家直接用600點券購買了,其實在精英手冊中能夠獲得物資幣。滑翔尾跡無法使用:「滑翔尾跡」同樣是SS3賽季增加的新功能,玩家在跳傘的途中能夠噴射出煙霧,可卻有玩家反映無法使用,究竟是怎麼一回事呢?
  • HORIBA | 拉曼用戶福音,這些儀器使用教學視頻及手冊,趕緊收藏起來...
    ,HORIBA已準備了全套教學視頻及手冊:總計21篇拉曼使用手冊,27個教學視頻,涉及光譜技術基礎原理、儀器日常維護、軟體操作、樣品製備、數據分析等,幫助您快速掌握拉曼儀器操作知識要點,晉升成為老司機。
  • 人體24小時使用手冊走紅 專家:初衷好但有錯
    昨天,一張「人體24小時使用手冊」在網上爆紅,這份手冊提到,月有陰晴圓缺,人體的機能狀態在一天24小時裡同樣有規律可循。人就像一部機器,睡覺、運動、吃藥做什麼事情都有個工序。  現代快報記者採訪了南京一些權威專家,他們表示,從總體健康角度上說,這份手冊倡導的是早睡早起、有規律的生活,很多觀點是對的。不過,仔細看具體的理由,有的還存在爭議和錯誤。
  • 事實上所有的商業化試劑盒都提供有使用手冊,也包括問題疑難解答
    對於大多數實驗室,這個方法在一個特定的項目上只使用幾次,所以購買一個50次反應的試劑盒在時間和成本上都更為划算。有許多商家提供一步法RT-PCR試劑盒(表7-6)。這些試劑盒中提供的酶各不相同,但沒有用系列模板平行比較這些酶的效率和易用性的文獻報導。
  • 奧運進行時,企鵝直播完整使用手冊
    這裡有一份「奧運期間企鵝直播完整使用手冊」,拿走不謝~1、第一招:奪金之後看企鵝直播,與奧運冠軍「面對面」在中國隊奪得奧運金牌或獎牌後,迅速打開企鵝直播,走下領獎臺後的奧運健兒將第一時間在這裡與大家分享自己的心情,觀看直播的用戶也可發布彈幕與運動員們實時互動。
  • 《原神》鍊金手冊怎麼做 鍊金手冊完成方法分享
    《原神》鍊金手冊怎麼做 鍊金手冊完成方法分享 原神鍊金手冊如何快速完成任務?
  • 地質調查工作方法指導手冊——《地質構造形跡識別鑑定手冊》
    本書為野外地質構造識別、觀測和解釋的基礎指南手冊。
  • 《和平精英》ss7賽季手冊多少錢 ss7賽季手冊價格介紹
    導 讀 和平精英中,ss7賽季是最新開啟的賽季,那麼ss7賽季手冊多少錢,下面一起來看看吧。
  • 《夢境感應手冊》:洗腦是這麼洗的
    在七個跳躍的章節中,作者用圖示和許多墨跡給出了提示。前六章分別是:「專家與操作者」、「環境的創造」、「夢境與現實的關係」、「不友好的潛意識」、「夢境的衝突」和「訊問技術」。技術手冊的最後一章,「PASIV設備操作指南」(巧妙的匿名)與真實世界相聯繫。
  • 《中國農業大學教師手冊》正式發布(圖文)
    今日,《中國農業大學教師手冊》(以下簡稱「手冊」)電子版出現在黨委宣傳部的「下載中心—相關文件」中(下載教師手冊),供教師下載使用。手冊共分十一個章節,內容涉及歷史文化、大學章程、規章制度、政策舉措、服務信息等內容,基本涵蓋了教師工作和生活所需的各類信息。  教師任課有什麼要求?科學技術類研究計劃項目怎麼申請?工資福利的構成是怎樣的?
  • 梅特勒-託利多全新在線水分測定指導手冊
    梅特勒-託利多全新在線水分測定指導手冊助您加快水分測定方法的開發過程  全新在線水分測定指導手冊,通過解釋滷素水分測定儀的使用注意事項,從而為不同層次的水分測定提供支持。
  • 新雅芳推出全新交互式數字產品手冊
    新雅芳宣布,將更新標誌性的雅芳產品手冊,新版數字產品手冊新鮮問世。新數字計劃使雅芳能以更加精簡、便捷的流程改善北美地區雅芳業務代表的銷售體驗,有助於凸顯公司為保護地球所做的持續改進。為慶祝世界第50個地球日,新版電子產品手冊將於今天(4月30日)發布。
  • 《中國鳥類識別手冊》新書發布
    由中國林業出版社出版策劃人劉開運策劃並組織編寫,著名觀鳥攝影家聶延秋著作的《中國鳥類識別手冊》日前在京舉行新書發布會
  • 《電力工程設計手冊》:電力設計的鴻篇巨製
    隨著由中國能源建設集團旗下中國電力工程顧問集團有限公司(以下簡稱「中電工程」)編撰的《電力工程設計手冊》(以下簡稱《手冊》)系列叢書第一批10本手冊出版發行,我國首部全面、系統反映電力工程勘察設計技術的大型工具叢書正式面世。  中國能建董事長汪建平指出,《手冊》正式發布,標誌著幾十年來我國電力工程勘察設計的成功經驗得到全面總結和固化提升。
  • 【必備】親和層析原理和方法技術手冊
    GE醫療生命科學提供涵蓋廣泛的技術和應用的手冊