0

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

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 )。该错误仅出现在大样本量中,因此我无法进一步减小样本量。

4

3 回答 3

2

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

当一个程序崩溃时,它总是程序本身的一个错误——如果它遇到系统的限制,它应该告诉你(例如unable to allocate NNN bytes)而不是崩溃。

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

gdb -ex run --args bcftools1.7/bcftools merge -l VarList.txt -0 --missing-to-ref --threads 1 -O b

GDB 应该以Program received SIGSEGV. 此时,在提示符处键入whereinfo registersinfo locals和,并使用输出更新您的问题。x/20i $pc-40(gdb)

此输出可能使某人能够确定您遇到的错误,可能的解决方法等等。

bfctools如果您要向他们报告问题,这也是开发人员需要的信息。

于 2018-12-07T04:34:49.983 回答
1

将数千个 vcf 文件与bcftools. 就我而言,问题在于打开文件的数量。您可能需要增加打开文件的限制。试试这些命令:

# check soft limit
ulimit -Sn

#check hard limit
ulimit -Hn

#set soft limit
ulimit -Sn <number>
于 2018-12-10T13:46:04.877 回答
0

这是 bcftools 中的一个错误,作者在通知后修复了它:

https://github.com/samtools/bcftools/issues/929#issuecomment-443614761
于 2018-12-10T18:49:49.033 回答