zoukankan      html  css  js  c++  java
  • 记一次开源软件的篡改

    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部分取质量值最高的碱基,还有质量值显示比这更加高的方法了吗?:-)

    发表前看了一遍,我真的不是一个好的讲故事的人

  • 相关阅读:
    在javaWeb 工程中 tomcat 的 web.xml 文件配置
    Spring 框架详解
    构建工具 Maven和Gradle对比
    idea 创建Javaweb 动态工程
    服务器后端 项目代码常用目录图
    ET模式下的EPOLLOUT
    linux recv 参数len设置为0
    fork 和 exec 对子进程继承父进程处理信号处理函数的影响
    lua元表以及元方法
    Linux网络编程“惊群”问题总结
  • 原文地址:https://www.cnblogs.com/lyon2014/p/4708401.html
Copyright © 2011-2022 走看看