JuseKit(六) —— 绘制火山图
更新变动及进度
很久没更 JuseKit,这一段时间我也时不时在想我还能搞什么出来,或者说我最应该搞什么。很多其他有用的功能事实上在别的软件诸如 BTtools
Phylosuite
中都有涵盖到,所以陷入了一段瓶颈期(说到底是不够勤勉)。
恰巧毕业以后已经没啥事,闲余之时就思考这些事情,想着既然已经把这个坑挖开来了,那就也不要想太多直接把最开始的设想全部完成一遍再说吧。
所以这一次的更新正式上线 —— 绘制火山图。
已有功能的相关教程请见:Juseの软件开发
本次更新变动
- 修复了 ‘序列过滤’ 模块中文件不能拖拽读取的问题。
- 新添了日志模块,报错后将有
error.log
出现在程序根目录。 - 新增了画图模块,并完成了火山图绘制的功能。
- 新增的模块导致软件大小的膨胀,对于不需要绘图且内存紧张的人来说可能不是好消息。
目前的功能进度
- 提取最长转录本。(已实现)
- 根据 id 提取序列。(已实现)
- 对序列的 id 进行各种处理。(已实现)
- 串联序列并得到分区信息。(已实现)
- 批量改后缀。(已实现)
- 批量进行序列格式转换。(已实现)
- 批量提取 Orthofinder 的 orthogroup 对应的 CDS 序列。(已实现)
- 批量进行序列的物种数和长度过滤。(已实现)
- 火山图绘制。(已实现)
- 气泡图绘制。(拟下一次更新)
叠盾警告⚠:本软件解释权归属 Juse 所有,本软件能走多远具体得看 Juse 能坚持多久。
下载地址:https://github.com/JuseTiZ/JuseKit/releases
火山图绘制
本文主要着重于这次更新新增的功能,其他模块请走这里。
火山图是差异表达分析中常出现的图片类型之一,由于其形状酷似火山喷发而得名。虽然普通的火山图并未包含太多有用的信息,但很多时候大家都会顺手画一画这个图,而这也是我水这篇文章的动机之一。
要求的数据
首先,输入的文件需为 csv
格式的表格,表格必须包含两列内容:
- 差异倍数 Log2FoldChange(列名必须为
logFC
和log2FoldChange
中的一个)。 - 矫正 p 值(列名必须为
FDR
和padj
中的一个,该处的列名会影响 y 轴标题)。
这样设置的原因是方便 DESeq2
和 edgeR
的输出表格在转换为 csv
格式后能直接输入软件进行作图。
绘图方法
打开软件,切换到绘图专区的 火山(volcano)图
模块,将会出现以下内容。
通过拖拽文件到输入区框中或点击右侧按钮输入文件路径。
参数设置区中:
|log2FC|
和adj-P
为筛选差异表达基因的阈值,软件会根据设置的值区分点颜色并绘制辅助线。上调色
和下调色
分别代表上调基因和下调基因的点颜色(不推荐选黄色)。- 其他图形设置中涉及到的参数如其标签所示,会影响各个元素的尺寸。
- 你可以先尝试一下默认参数,此后再调整参数至满意为止。
点击运行会出现绘图窗口,如下图所示:
你可以进行如下操作:
通过拖动窗口调整图片的大小,或者通过上方菜单中从右边数第二个和第三个按钮调整图片。
待图片调整至满意状态,点击菜单最右方保存按钮进行保存。
快速入门:
- 首先想象一个合适的大小,将图片拖拽到该尺寸。
- 点击上方右侧第三个按钮,并点击弹出页面中的 Tight layout 将图片重新布局。
- 保存并输出为
pdf
格式(也可以输出为png
等,但实测应该是pdf
最清晰)。
最后将 pdf
文件转换所得图片:
一些注意事项:
- 为了美观,图片的横轴为对称形式,如果出现一边较空的情况请调整 x 轴取值范围。
- 图片标题为文件前缀,请尽量通过修改文件名来修改标题,因为在窗口中修改会导致标题大小变化。
- 输出的 pdf 文件中的字体为 Type 3 格式,WPS 无法处理,可能需要用到其他处理软件如
Adobe Acrobat
。 - 标签设置在图的右上角外部,如若觉得不合适可以使用选项中的
(Re-)Generate automatic legend
,但这同样会影响标题大小。 - pdf 文件是可编辑的,有部分内容不合意也可输出为 pdf 文件后调整(WPS 可以先擦除字体再插入,该字体与微软雅黑相同)。
后记
事实上我不怎么用 Python 画图,但考虑到课题组文章里的图看上去像是用 Python 画的所以这一段时间也熟悉一下会更好。
不过 JuseKit 绘制的火山图事实上还有很多地方可以继续完善,比如说轴标题和标题的粗体亦或者更精细刻度的划分(像 Prism 那样),后面如果有机会的话我也会继续完善的。
新模块的增加导致 JuseKit 的大小迎来了一次巨变,但是后面更新新的绘图方法就不会再有什么变动了,从长远角度来看的话应该是利大于弊吧。之后所有版本的 JuseKit 我都将取消 .exe
格式的单文件上传(只上传压缩包),因为现在配置起来有些麻烦还要多指定一些隐模块。
最后是复制黏贴:
我会争取将这些功能慢慢完善,让它成为一个具有更广适用性的软件,希望能够帮助到某些盆友,当然我个人认为最大的可能是自娱自乐。
如果这个软件帮助到您了,您可以给它一个小小的 Star 聊表支持,或者在您汇报的时候引一下 https://github.com/JuseTiZ/JuseKit/ ,想必看着还是非常高端大气上档次的。