我正在尝试使用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)。 该错误仅在样本量较大时出现,因此我无法再减小样本量。
答案 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 SIGSEGV
,where
,info registers
和info 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