R語言學習-富集分析泡泡圖回應

R語言學習-富集分析泡泡圖剛一出品巴元,Y叔就說有硬傷刊橘。Y叔是著名富集分析軟件clusterprofiler的原創(chuàng),而且軟件內(nèi)集成dotplot,
enrichmap,cnetmap (后續(xù)也實現(xiàn)這兩個的一步出圖)等畫圖方法,具體看這個教程http://guangchuangyu.github.io/2016/01/go-analysis-using-clusterprofiler/或Biobabble公眾號逐哈。
這個意見得重視,不過大夏天的问顷,鍋還是不能背著昂秃,回應下Y叔的回應。


一個command出圖杜窄,小白上點心可以的


圖是ggplot2畫的(散點圖)肠骆,在腳本功能描述里有寫。只需要在終端輸入腳本的名字sp_enrichmentPlot.sh
(腳本需在環(huán)境變量中)就可以看到腳本功能描述塞耕、輸入文件樣例蚀腿、參數(shù)列表和使用例子。
目前腳本的輸入是不支持Windows的Excel格式的扫外,只支持TAB分割的文本文件莉钙。之前一直在Linux下工作,文件名都不寫后綴的筛谚。后來跟Windows用戶打交道多磁玉,為了方便他們打開,強行加了xls后綴驾讲,這一點有誤導蚊伞。
腳本依賴R席赂,這是應該做一個判斷和提示的。但有R卻提示ggplot2包或其它包不存在厚柳,是可以用-i TRUE來自動安裝包的氧枣。(最近在跟德春合作,完善包的自動檢測和安裝别垮,最后一起整合在分發(fā)包便监。)
Y叔的這兩點確實戳中了當前文檔信息不完善的弱點,也希望大家多反映使用過程中的問題碳想,幫助我們改進文檔烧董。
不過話說回來,如果仔細看了當前腳本的功能描述和參數(shù)提示胧奔,上點心得小白不只可以一步畫圖逊移,還可以隨意調(diào)整樣式。


不只clusterprofiler的用戶需要


如果用clusterprofiler做富集分析龙填,write.table輸出結果胳泉,那么輸入文件、R岩遗、ggplot2都有了扇商,一步出圖沒有問題。(Windows下沒bash宿礁?https://mp.weixin.qq.com/s/g1twNEsPWZb_tZFDyoTqVQ案铺,看這里)
Y叔說既然有了clusterprofiler,一步步在R里面做不是很好梆靖,為啥要把數(shù)據(jù)導出來控汉?
首先,轉換數(shù)據(jù)返吻、存儲數(shù)據(jù)這一步是獨立于作圖的姑子。圖只能顯示部分數(shù)據(jù)(這點Y叔也有提到,用了simplify會好些测僵,但也還會有不少通路)街佑,所有富集條目導出作為文章附表,以顯示信息的全面和真實恨课。
其次,即便可以畫出所有富集數(shù)據(jù)(用一副大圖)岳服,也會先對結果做下篩選剂公,一些特別基礎的、極父層的生物富集通路也會選擇不展示吊宋,優(yōu)先展示樣品屬性更相關的纲辽。畢竟是看在哪些通路里面富集,不是看在哪些通路里面最富集。所以需要導出數(shù)據(jù)拖吼,做下篩選鳞上,然后一步繪圖。
再次吊档,不少人拿到的是已經(jīng)做好的富集分析結果(可能是clusterprofiler的篙议,也可能是其它軟件的),總不能再導入clusterprofiler繪圖吧怠硼,可以有更簡單的方式的鬼贱。
最后,一個圖做出來香璃,需要反復修改这难。今天用clusterprofiler做了富集分析,運用dotplot配合不同參數(shù)出了圖葡秒;過幾天心情一變姻乓,想換個風格了,怎么辦眯牧?再運行一次clusterprofiler還是加載之前存儲的.Rdata蹋岩。好像都不太方便,還是用導出的文本一步出圖吧炸站。


關于硬傷


示例圖中沒有overlap不是繪圖腳本的問題星澳,是數(shù)據(jù)篩選的問題。腳本如實反映篩選出的數(shù)據(jù)旱易。如果選擇的通路在一個基因集合富集禁偎,另外一個不富集,就不顯示阀坏;如果選擇的通路是在多個基因集中都富集的如暖,但富集程度不同,是可以顯示的;而且這些通路會優(yōu)先顯示在圖的上部忌堂,下面我會給出例子盒至。


一步出圖也可以定制


說到互動,一步出圖不只可以士修,而且還可以記錄互動(給每個輸出文件加個唯一的字符串做為文件名的一部分就可以了枷遂,不過這個沒用到,之前就沒寫這個參數(shù))棋嘲。
拿Y叔的數(shù)據(jù)做個例子


library(clusterProfiler)
library(dplyr)
data(gcSample)
x <- compareCluster(gcSample,'enrichDO')
#獲取數(shù)據(jù)酒唉,取出每個組最富集的10個條目,存儲起來
#不麻煩的吧
x <- x@compareClusterResult
y = x %>% group_by(Cluster) %>%top_n(-10, pvalue)
y = x[x$Description %in% y$Description,]


在樣品名中包含差異基因的數(shù)目


#這個不解釋了沸移,前面繪圖教程中提到過
y$Sample <- paste0(y$Cluster,"(",unlist(lapply(strsplit(y$GeneRatio, '/'), function(x)x[2])),")")
#這次存成tsv痪伦,省得誤會了
write.table(y,file="enrichment.tsv", sep="\t", col.names=T, row.names=F,quote=F)


首先出第一個圖侄榴,很簡單,一個命令网沾,設置下顏色癞蚕。


+更正下,我這里作弊了一下辉哥,之前點的大小都是Gene Count這樣的純數(shù)字列來顯示的桦山,不支持GeneRatio這樣的分數(shù)形式的列(上一版本,如果GeneRatio出現(xiàn)在橫軸是支持的)证薇,做了下修改度苔,也支持了。如果想用之前的代碼重復浑度,把-s GeneRatio改為-s Count寇窑。


#具體參數(shù)解釋看上一篇公眾號文章
# -C:指定顏色,默認是紅綠箩张,可以是任何兩個R支持的顏色名字
sp_enrichmentPlot.sh -f enrichment.tsv -oSample -T string -v Description -c p.adjust -s GeneRatio -C"'red','blue'" -w 16


左邊是Y叔的甩骏,右邊是我的

圖略有不同,是因為排序的方式不同先慷。sp_enrichmentPlot.sh設置的是先按照出現(xiàn)在不同樣品最多的條目優(yōu)先的策略饮笛,可以清晰的看到哪些是不同基因集共同富集的,哪些是不同基因集特異富集的论熙。其它的都一樣福青。當然沒有設置字體參數(shù),字體略小了些脓诡。

說還想要個紫綠的无午,也可以,只需改兩個單詞祝谚,而不是加一段代碼scale_color_continuous(low='purple', high='green')宪迟。


sp_enrichmentPlot.sh -f enrichment.tsv -oSample -T string -v Description -c p.adjust -s GeneRatio -C"'purple','green'" -w 16



改變下形狀,也可以啊交惯。程序中都留有一個參數(shù)可以寫入ggplot2語句次泽,就是下面的-z。那么席爽,ggplot2能修改的樣式也都可以意荤。常用的修改會做成一個參數(shù),不常用的就只能直接寫命令了只锻。能在Rstudio里面敲玖像,那么也能在命令行敲。


#-z:后跟任何合法的ggplot2語句
sp_enrichmentPlot.sh -f enrichment.tsv -oSample -T string -v Description -c p.adjust -s GeneRatio -C"'purple','green'" -w 16 -z "+aes(shape=GeneRatio>0.1)"



-z “+ any legal ggplot2command”
當然這一步也可以不通過增加ggplot2語句來實現(xiàn)炬藤,在數(shù)據(jù)中加一列就好了御铃,通過-S指定參數(shù)。
不加ggplot2語句,只修改命令行參數(shù)沈矿,sp_enrichmentPlot.sh也可以調(diào)整圖例的位置上真、輸出文件的格式、是否對p.adj取log羹膳、是否分面等睡互。


一步作圖的優(yōu)勢


一步作圖相比于直接寫R代碼有什么好處呢?
1.模塊化好陵像。也就是Y叔提到的數(shù)據(jù)處理和可視化分開就珠;一步作圖,只是作圖醒颖,不做無關的處理妻怎,更隨意。
2.易用性強泞歉。敲代碼逼侦,總不如給改數(shù)來得快。
3.重用性強腰耙。假如我要做十幾個分開的基因集合呢榛丢?一段段復制代碼?改錯了或忘記改某個地方了怎么辦挺庞?
4.快速出圖晰赞。先快速出個原型,再接著調(diào)整选侨。


生信寶典掖鱼,一起換個角度學生信


?

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市侵俗,隨后出現(xiàn)的幾起案子锨用,更是在濱河造成了極大的恐慌,老刑警劉巖隘谣,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件增拥,死亡現(xiàn)場離奇詭異,居然都是意外死亡寻歧,警方通過查閱死者的電腦和手機掌栅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來码泛,“玉大人猾封,你說我怎么就攤上這事≡肷海” “怎么了晌缘?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵齐莲,是天一觀的道長。 經(jīng)常有香客問我磷箕,道長选酗,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任岳枷,我火速辦了婚禮芒填,結果婚禮上,老公的妹妹穿的比我還像新娘空繁。我一直安慰自己殿衰,他們只是感情好,可當我...
    茶點故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布盛泡。 她就那樣靜靜地躺著烂琴,像睡著了一般袖扛。 火紅的嫁衣襯著肌膚如雪伴逸。 梳的紋絲不亂的頭發(fā)上撬码,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天,我揣著相機與錄音掰吕,去河邊找鬼果覆。 笑死,一個胖子當著我的面吹牛殖熟,可吹牛的內(nèi)容都是我干的局待。 我是一名探鬼主播,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼菱属,長吁一口氣:“原來是場噩夢啊……” “哼钳榨!你這毒婦竟也來了?” 一聲冷哼從身側響起纽门,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤薛耻,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后赏陵,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體饼齿,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年蝙搔,在試婚紗的時候發(fā)現(xiàn)自己被綠了缕溉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡吃型,死狀恐怖证鸥,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤枉层,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布泉褐,位于F島的核電站,受9級特大地震影響鸟蜡,放射性物質(zhì)發(fā)生泄漏兴枯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一矩欠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧悠夯,春花似錦癌淮、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至夕膀,卻和暖如春虚倒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背产舞。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工魂奥, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人易猫。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓耻煤,卻偏偏與公主長得像,于是被迫代替她去往敵國和親准颓。 傳聞我的和親對象是個殘疾皇子哈蝇,可洞房花燭夜當晚...
    茶點故事閱讀 43,728評論 2 351

推薦閱讀更多精彩內(nèi)容