美文网首页
ERROR: Empty Bam File--DANPOS3核小

ERROR: Empty Bam File--DANPOS3核小

作者: 生信云笔记 | 来源:发表于2022-03-20 12:49 被阅读0次

    日常瞎掰

      新年上映的《人世间》,真的是一部很不错的电视剧,这可能是由于它比较接地气缘故,能够引起很多普通人的共鸣。其中有一点还是比较现实的,虽然说随着国家的发展,社会的进步,人们的生活水平普遍提高,但在心里却有这样的疑问:以前,人们虽然穷的叮当响,但内心却是快乐的,后面虽然生活水平提高了,但为什么却快乐不起来了呢?也许真的应了那句话,人不患寡而患不均。说的有点远了,下面来说说分析方面的事。最近有项目需要分析核小体定位的数据,提供的MNase-seq单端测序的数据。所以就找了软件DANPOS3来做分析,于是乎也就出现了下面的问题。

    问题伊始

      DANPOS3有很多功能,做核小体定位只需用子命令dpos即可。使用这个命令前我们需要将比对好的bam文件放在文件夹(该文件夹以样本的前缀命名,多个重复样本文件的前缀要相同)中即可,文件准备格式如下:

    sample
    ├── sample_rep1.bam 
    └── sample_rep2.bam
    

      准备好文件就可以分析了,一行代码即可,如下所示:

    python danpos.py dpos sample
    

      正常情况下,等着程序结束就会得到想要的结果,文件类似如下:

    result/pooled
    ├── bamfiles_sample.Fnor.smooth.positions.xls
    └── bamfiles_sample.Fnor.smooth.wig
    

      但是,很不幸,DANPOS3好像对单端数据很不友好,最终程序没能如愿正常完成,而是出现了如下的错误:

    ERROR: Empty Bam File
    

      瞬间头大,这错误信息也太少了吧!好像没有什么用,因为我提供的bam文件不是空的啊。此处省略描述去网上查找解决问题办法的过程,因为网上没有找到解决问题的办法。最后只能硬着头皮去看软件的源码,还好是python编写的程序。花了不少时间看代码,最终黄天不负有心人,最后找到了问题的所在。程序目录下有一个reads.py模块,里面有解析sam、bam文件的函数,loadSam、loadSamPaired、loadBam、loadBamPaired四个函数分别用来解析单双端数据的sam、bam。下面是loadBam函数代码的部分截图:

      重点来了,到底问题出在哪了呢?可以看到函数加载bam文件后,首先判断read是否比对上,如果没有比对上就跳过,看来程序是把我的bam里面的所有read都识别成没有比对上的了,为什么会这样呢?原因很简单,因为sam.isunmapped一直为false,正确的写法应该为sam.is_unmapped。修改好后再运行程序,结果如预期一样,问题不复存在,得到了想要的结果。这里再补充一句,如果提供的是单端的sam文件,需要修改loadSam函数里面对应的代码。

    结束语

      代码的世界里真的是差之毫厘谬以千里!希望这篇能帮助到遇到同样问题的你,同时更希望软件的作者能够修复这个问题,这样更能方便其他人的使用!最后附上软件的官网链接:https://sites.google.com/site/danposdoc/

    相关文章

      网友评论

          本文标题:ERROR: Empty Bam File--DANPOS3核小

          本文链接:https://www.haomeiwen.com/subject/pmuklrtx.html