我想这将是一个非常有用的功能。
对于一个基因表达热图,如果对热图中的行进行了切分,那么这个新的anno_GO_keywords()
函数会自动对每个row cluster中的基因进行基因集合富集分析(Gene set enrichment analysis/over-representation analysis),然后提取显著的GO条目,提取其关键词,通过词云的方式依附到每个row cluster上。我想这对于想全面的展示每个row cluster所对应的生物功能会变得十分方便。
注意,这个新的anno_GO_keywords()
函数只是多多少少展示了我的这个想法,并没有进行十分良好的设计。但是这个函数已经能够在大多数情况下使用。而且它能够自动识别很多基因ID类型(你无需进行基因ID转换),你也可以自己选择进行基因富集分析的包和函数。
例子代码如下:
sig_mat
是一个基因表达矩阵,我先对其进行z-score transformation。我已经知道所有的基因可以很好的被分为三类,所以这里我直接使用kmeans聚类。
expr = t(scale(t(sig_mat)))
km = kmeans(expr, centers = 3)$cluster
anno_GO_keywords()
的定义在https://github.com/jokergoo/KeywordsEnrichment可以找到。这个函数是一个annotation函数,可以直接放在rowAnnotation()
中使用:
source("https://raw.githubusercontent.com/jokergoo/KeywordsEnrichment/master/anno.R")
Heatmap(expr, row_split = km,
show_row_names = FALSE, show_row_dend = FALSE,
show_column_names = FALSE) +
rowAnnotation(
keywords = anno_GO_keywords(split = km,
genes = rownames(expr), max_words = 30
)
)
长远的计划是,这个函数和很多其他相关的功能会被集成一个新的R包中。另一个好消息(对我来说)是simplifyEnrichment文章今天刚被接收。所以,如果你觉得上面的这个功能有用,你可以暂时引用simplifyEnrichment的论文(当然了,不强制)。