火山圖
火山圖用于展示基因表達差異的分布判没,橫軸為Log2 Fold Change
凛虽,越偏離中心差異倍數(shù)越大;縱軸為(-1)*Log10 P_adjust
偿短,值越大差異越顯著欣孤。一般橫軸越偏離中心的點其縱軸值也會比較大,因此呈現(xiàn)火山噴發(fā)的形狀昔逗。
一步繪制火山圖
輸入數(shù)據(jù)格式
火山圖需要的數(shù)據(jù)格式如下 (本文用到的數(shù)據(jù)文件名為volcano.txt
降传,文末有下載鏈接,此處截取一部分作為例子勾怒,也可用來畫圖婆排,只是數(shù)據(jù)少声旺,效果不明顯)
- id: 不是必須的,但一般的軟件輸出結(jié)果中都會包含段只,表示基因名字腮猖。
- log2FoldChange: 差異倍數(shù)的對數(shù),一般的差異分析輸出結(jié)果中也會給出對數(shù)處理的值, 因此程序沒有提供這一步的計算操作翼悴。
- padj: 多重假設檢驗矯正過的差異顯著性P值缚够;一般的差異分析輸出結(jié)果為原始值,程序提供一個參數(shù)對其求取負對數(shù)鹦赎。
- significant: 可選列谍椅,標記哪些基因是上調(diào)、下調(diào)古话、無差異雏吭;若無此列或未在參數(shù)中指定此列,默認程序會根據(jù)
padj
列和log2FoldChange
列根據(jù)給定的閾值自動計算差異基因陪踩,并作出不同顏色的標記杖们。 - label: 可選列,一般用于在圖中標記出感興趣的基因的名字肩狂。非
-
行的字符串都會標記在圖上摘完。
id log2FoldChange padj significant label
E00007 4.28238 0 EHBIO_UP A
E00008 -1.1036 0.476466843393901 Unchanged -
E00009 -0.274368 1 Unchanged -
E00010 4.62347 7.37606076333335e-103 EHBIO_UP -
E00012 0.973987 0.482982440163204 Unchanged -
E00017 -1.30205 0.000555693857439792 Baodian_UP B
E00024 0.617636 2.78047837287061e-13 Unchanged -
E00033 1.48669 2.56000581595275e-60 EHBIO_UP -
E00034 -0.783716 0.00341521725291801 Unchanged -
E00036 2.01592 6.03136656016401e-06 EHBIO_UP C
E00040 -1.89657 4.73663890849056e-21 Baodian_UP -
E00041 -0.268168 0.563429434558031 Unchanged -
E00042 0.0861048 0.367700939634328 Unchanged -
E00043 -1.19328 1.42673872027352e-153 Baodian_UP -
E00044 -0.887981 2.43067804654905e-26 Unchanged -
E00047 -0.610941 5.51696648645932e-57 Unchanged -
使用significant列繪制火山圖
# -f: 指定輸入文件,格式如上
# -x: 指定橫軸變量傻谁,值為輸入文件中與取過對數(shù)的變化倍數(shù)相關(guān)的列的名字
# -y: 指定縱軸變量孝治,值為輸入文件中與P-value
# (也可能是p-adj,是否取過對數(shù)都可以)相關(guān)的列的名字
# -P: 若為TRUE审磁,則表示對<-y>指定的列進行-log10轉(zhuǎn)換
# -L: 指定圖例的位置
# -s: 指定差異基因列
# -S: 指定差異基因列不同的標簽出現(xiàn)的順序
sp_volcano.sh -f volcano.txt -x log2FoldChange -y padj -s significant -S "'EHBIO_UP', 'Baodian_UP', 'Unchanged'" -P TRUE -L top
這個圖看上去還可以谈飒,沒有太大的問題。但有部分點與最頂端的線重合了态蒂,這些點的pvalue為0杭措,取負對數(shù)后為負無窮。另外在一些情況下钾恢,會存在部分基因的pvalue極小手素,使得整張圖呈現(xiàn)一個壓縮的趨勢,大部分點偏安于圖的下方瘩蚪,中間大段空白泉懦,最上面零星幾個點。為了避免這種情況募舟,程序設置了參數(shù)-M
用于設定pvalue的最大的負對數(shù)祠斧,所有大于給定值的數(shù),都會視為給定值拱礁。
# -M 10: 指定P-value(也可能是p-adj);若小于10^(-10)琢锋,則為10^(-10)
# 用于部分p-value存在異常值辕漂,導致整個圖都被壓縮在最底部
p_volcano.sh -f volcano.txt -x log2FoldChange -y padj -s significant -S "'EHBIO_UP', 'Baodian_UP', 'Unchanged'" -P TRUE -L top -M 10
注意看縱軸的變化,和最上面排成一條線的一堆點吴超。
自動計算significant列繪制火山圖
若不存在significant
列钉嘹,程序會根據(jù)-F
指定的參數(shù)計算并標記差異基因。-F
的默認值為"0.05,1"
(引號是必須的), 第一個數(shù)表示pvalue或padj鲸阻,對應于<-y>列跋涣;第二個數(shù)表示對數(shù)轉(zhuǎn)換的差異倍數(shù),對應于<-x>列鸟悴。
# <-F "0.05,1">, 默認值陈辱,故命令行中未寫,引號是必須的
sp_volcano.sh -f volcano.txt -x log2FoldChange -y padj -P TRUE -L top
# -M 10: 與之前相同
sp_volcano.sh -f volcano.txt -x log2FoldChange -y padj -P TRUE -L top -M 10
火山圖中標記基因的名字
# -l: label细诸,在圖中標記部分基因的名字沛贪;
# label為含有待標記基因名字的列名,此列中非<->的非空字符都會視為基因名字
sp_volcano.sh -f volcano.txt -x log2FoldChange -y padj -P TRUE -L top -M 10 -l label
label
列中非-
的值都會標記在圖上震贵。
轉(zhuǎn)載:https://zhuanlan.zhihu.com/p/32983662