clusterProfiler は R/Bioconductor のパッケージの一つで、発現変動遺伝子にアノテーションされた GO と KEGG パスウェイなどを統計的に有意のあるものを検出する機能を提供してる。ここでは GO 解析の部分を紹介する。
サンプルに用いるデータは ReCount データベースの katz.mouse を利用する。このデータは 2 群間比較のデータであり、ここで、まず二つの群を比較し発現変動遺伝子を同定する。つづいて、発現変動遺伝子に有意な GO term を検出する作業を行う。
まず、データベースからデータをダウンロードする。
counts <- read.table("http://bowtie-bio.sourceforge.net/recount/countTables/katzmouse_count_table.txt", header = TRUE, row.names = 1)
counts <- counts[rowSums(counts) > 10, ] # 低発現量のデータを取り除く
group <- c("CUGBP1", "control", "CUGBP1", "control")
続いて、edgeR を利用して発現変動遺伝子を検出する。
library(edgeR)
d <- DGEList(counts = counts, group = group)
d <- calcNormFactors(d)
d <- estimateCommonDisp(d)
d <- estimateTagwiseDisp(d)
result <- exactTest(d)
table <- as.data.frame(topTags(result, n = nrow(counts)))
clusterProfiler を利用して GO 解析を行う。この際に発現変動遺伝子を FDR < 0.01 の遺伝子とする。ヒトやマウスなどの場合は Ensembl ID ではなく、 Entrez ID を利用するので、GO 解析の前に遺伝子名の変更を行う。
library(clusterProfiler)
library(org.Mm.eg.db) # マウスのアノテーションデータ
all.genes <- rownames(table)
is.degs <- all.genes[table$FDR < 0.01]
all.genes.entrez <- bitr(all.genes, fromType="ENSEMBL", toType="ENTREZID", annoDb="org.Mm.eg.db")
is.degs.entrez <- bitr(is.degs, fromType="ENSEMBL", toType="ENTREZID", annoDb="org.Mm.eg.db")
ego <- enrichGO(gene = is.degs.entrez[, 2], # 発現変動遺伝子
universe = all.genes.entrez[, 2], # 全遺伝子
organism = "mouse", # 生物種
ont = "BP", # オントロジー
pAdjustMethod = "BH", pvalueCutoff = 0.1, qvalueCutoff = 0.1,
readable = TRUE)
res <- summary(ego)
解析結果は res
オブジェクトに保存される。これをファイルに保存すればよい。head
関数で確認すると以下のようになる。(※ 8 列目が非常に長いため、ここでは 8 列目を除いて表示させて見やすいようにしている。)
head(res[, -8])
## ID Description GeneRatio
## GO:0044707 GO:0044707 single-multicellular organism process 210/443
## GO:0032501 GO:0032501 multicellular organismal process 211/443
## GO:0009653 GO:0009653 anatomical structure morphogenesis 119/443
## GO:0007275 GO:0007275 multicellular organismal development 172/443
## GO:0048731 GO:0048731 system development 157/443
## GO:0051239 GO:0051239 regulation of multicellular organismal process 115/443
## BgRatio pvalue p.adjust qvalue Count
## GO:0044707 1926/6672 9.828877e-18 3.738905e-14 3.086267e-14 210
## GO:0032501 1972/6672 8.060899e-17 1.533183e-13 1.265561e-13 211
## GO:0009653 938/6672 1.496734e-13 1.897858e-10 1.566581e-10 119
## GO:0007275 1589/6672 2.168149e-13 2.011456e-10 1.660350e-10 172
## GO:0048731 1402/6672 2.643870e-13 2.011456e-10 1.660350e-10 157
## GO:0051239 910/6672 5.970621e-13 3.785374e-10 3.124625e-10 115