bedtools是使用率很高的生信工具,将其整合到python中(pybedtools),可以方便的调用,这本来是一件很好的事,但是遗憾的是pybedtools还是很不成熟,存在一些bug,我遇到的一个filter bug如下:
>>> from pybedtools import BedTool
>>> sampleA = BedTool("sampleA_raw.bed")
>>> print(sampleA)
chr1 40130793 40131513
chr1 40261767 40262522
chr1 40273326 40274035
chr2 6744599 6745299
chr2 9114431 9115158
chr2 15428403 15429102
>>> sampleB = BedTool("sampleB_raw.bed")
>>> print(sampleB)
chr1 40260000 40270000
>>> print(sampleA.intersect(sampleB, wo=True))
chr1 40261767 40262522 chr1 40260000 40270000 755
>>> sampleA_chr1 = sampleA.filter(lambda x: x.chrom=="chr1")
>>> print(sampleA_chr1)
chr1 40130793 40131513
chr1 40261767 40262522
chr1 40273326 40274035
>>> print(sampleA_chr1.intersect(sampleB, wo=True))
>>>
>>>
sampleA filter之后再与sampleB做intersect时居然是空的!
出现这个bug后,我发现pybedtools官网上没有提供类似github Issues的入口,遇到bug无法反馈,这太糟糕了!
所以,尽量还是使用bedtools而非pybedtools
转载本文请联系原作者获取授权,同时请注明本文来自卢锐科学网博客。
链接地址:https://wap.sciencenet.cn/blog-2970729-1366658.html?mobile=1
收藏