您的位置:首页 > 其它

记一次开源软件的篡改

2015-08-06 16:54 295 查看
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行后面添加:

if ( rpr < fpr ){
q = fpr;
}else{
q = rpr;
}


然后根据关键字:“LOGV(PANDA_DEBUG_RECON”,将包含“S[%d] = %c, F[%d] = %c, R[%d] = %c”此类的log输出行全部注释掉(log文件瞬间从6G变成20M)

最后make && make install ,修改完成,overlap部分取质量值最高的碱基,还有质量值显示比这更加高的方法了吗?:-)

发表前看了一遍,我真的不是一个好的讲故事的人
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: