在如何用WGDI进行共线性分析(上), 我们基于blastp的结果绘制了点图,之后用 -icl 模块进行进行共线性分析,得到了 collinearity 结果 。后面就直接基于该文件开始计算ka/ks,然后绘制ks plot.
但是,在那篇教程的时候,我其实还有一个问题,就是能不能直接根据 collinearity 结果绘制点图呢?在WGDI提供的流程示意图中,没有这一分支
虽然自己写代码实现也不复杂,但是为了避免重复造轮子,我们使用了JCVI的图形模块绘制dotplot
jcvi.graphcis.dotplot 能够使用mcscan的输出(.anchors)绘制点图, 其中anchors格式的定义比较简单,就是3列,分别是两个物种的基因和LAST计算的score。
而 wgdi输出的collinearity也是两个基因对的信息,因此很容易将collinearity的格式转成jcvi定义的anchors格式
awk '{if (awk 'BEGIN{OFS="\t"} {print ,,,,"0",}' ath.gff > ath.bed
~/^#/ ) {print python -m jcvi.graphics.dotplot ath.ath.anchors
} else{print "\t""\t"} }' ath.collinearity.txt > ath.ath.anchors
接着将wgdi定义的gff转成bed
调用dotplot绘制点图,输出是 ath.ath.pdf
之所以要写成ath.ath.anchors格式,是因为jcvi使用点来拆分文件名,得到的ath和ath,加上.bed后缀,就是要加载的bed文件信息。