修复bcftools中的分段错误

时间:2018-12-06 18:18:08

标签: segmentation-fault bioinformatics bcftools

我正在尝试使用bcftools合并3000个细菌bcf文件。 vcf文件是使用GATK生成的,已转换为bcf,并由bcftools编制了索引。 bcftools继续分析20%的数据,但它会终止终止,并且仅对一部分变体(来自2M细菌基因组的最大500kb)生成合并的bcf文件。我正在使用的代码是这样的:

bcftools1.7/bcftools merge -l VarList.txt -0 --missing-to-ref --threads 1 -O b > CombinedVCF

输出错误为:

/bin/sh: line 1: 17041 Segmentation fault (core dumped) bcftools/bcftools merge -l VarList.txt -0 --missing-to-ref --threads 1 -O b > CombinedVCF

以前,我对400个样本尝试了相同的命令,没有任何问题。

在线搜索,“当对变量的引用落在该变量所驻留的段之外时,或者尝试对只读段中的位置进行写操作时,就会发生段错误。该命令在具有80Gb可用RAM的群集上运行,用于特定作业。我不确定这个错误是由于bcftools软件本身的问题还是由于运行命令的系统的限制引起的?

这是示例bcf文件,用于复制错误(https://figshare.com/articles/BCF_file_segfault/7412864)。 该错误仅在样本量较大时出现,因此我无法再减小样本量。

3 个答案:

答案 0 :(得分:2)

  

我不确定这个错误是由于bcftools软件本身的问题还是由于运行命令的系统的限制?

当程序崩溃时,它总是 程序本身中的错误-如果遇到系统限制,则应告诉您这样(例如{{ 1}})而不是崩溃。

您的第一步应该是找出崩溃的

unable to allocate NNN bytes

GDB应该以{{1​​}}停止。此时,在gdb -ex run --args bcftools1.7/bcftools merge -l VarList.txt -0 --missing-to-ref --threads 1 -O b 提示符下键入Program received SIGSEGVwhereinfo registersinfo locals,然后使用输出更新您的问题。

此输出将可能使某人确定您正在运行的错误,可能的解决方法,等等。

如果您要向他们报告问题,这也是x/20i $pc-40开发人员所需要的信息。

答案 1 :(得分:1)

在将成千上万个vcf文件与bcftools合并时,我也遇到问题。就我而言,问题是打开文件的数量。您可能需要增加打开文件的限制。尝试以下命令:

# check soft limit
ulimit -Sn

#check hard limit
ulimit -Hn

#set soft limit
ulimit -Sn <number>

答案 2 :(得分:0)

这是bcftools中的错误,作者在收到通知后已将其修复:

https://github.com/samtools/bcftools/issues/929#issuecomment-443614761