记一次开源软件的篡改
pandaseq是一款非常好用的序列拼接软件,项目传送:https://github.com/neufeld/pandaseq/ (编译安装前需要libtool-devel)
所谓科技服务和科研态度有的时候真的不统一,
在pandaseq拼接的时候,如果输出fastq文件,overlap部分,如果错配的话,质量值会变成1(软件认为不可靠碱基),这样的做法无可厚非的,而且个人觉得也是比较好的做法;
但是这个做法给公司带来的困扰是:由于公司使用pandaseq作为拼接和去primer等的第一步工具,所以得到的Q20,Q30统计都是从pandaseq统计的结果出来的,结果发现Q30只有60%多,
在二代测序质量值都非常高的这个年代,60%的Q30肯定会被客户质疑的,最后找到是pandaseq的原因(还好不是实验的失误),怎么办,弥补吧。
首先安排了一位同事去溯源拼接前的质量,然后替换掉pandaseq的质量值,忙乎了一段时间,该同事使用了一种估计长度的溯源方式,算是勉强完成了,然后交给我添加到流程中。
附图,pandaseq官方解释:
以上就是这次“篡改”的起因了,用这种方式来弥补质量值不好看让我有点接受不了,首先修改不严谨,拼接过程中有漏配错配,而且建库方式不同接头长度也会不同,估计长度的方式非常容易出错(虽然肯定会比原来好看)
反正是开源软件,不如修改源代码好了(同时修改选择-b R参数后,会将BUILD信息输出到log的问题,BUILD信息实在太长了,所以注释了吧)
首先找到该方法所在的文件,通过关键字查找,由于经验不足找了好久才找到:assembler.c,之后的做法就简单了,在220行后面添加:
1 if ( rpr < fpr ){ 2 q = fpr; 3 }else{ 4 q = rpr; 5 }
然后根据关键字:“LOGV(PANDA_DEBUG_RECON”,将包含“S[%d] = %c, F[%d] = %c, R[%d] = %c”此类的log输出行全部注释掉(log文件瞬间从6G变成20M)
最后make && make install ,修改完成,overlap部分取质量值最高的碱基,还有质量值显示比这更加高的方法了吗?:-)
发表前看了一遍,我真的不是一个好的讲故事的人