Исправление ошибки сегментации в bcftools - PullRequest
0 голосов
/ 06 декабря 2018

Я пытаюсь объединить 3000 бактериальных bcf-файлов с помощью bcftools.Файлы vcf были сгенерированы с использованием GATK, преобразованы в bcf и проиндексированы с помощью bcftools.Bcftools приступает к анализу 20% данных, но продолжает преждевременное завершение и создает объединенные файлы bcf только для части вариантов (до 500 КБ из 2М бактериального генома).Код, который я использую, выглядит следующим образом:

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 выборок.

Поиск в Интернете: «Сегфоут происходит, когда ссылка на переменную выходит за пределы сегмента, в котором находится эта переменная, или при попытке записи в местоположение, которое находится в сегменте только для чтения».Команда выполняется в кластере с 80 ГБ доступной оперативной памяти для конкретной работы.Я не уверен, связана ли эта ошибка с проблемой самого программного обеспечения bcftools или с ограничением системы, в которой выполняется команда?

Вот примеры файлов bcf для репликации ошибки (https://figshare.com/articles/BCF_file_segfault/7412864). Ошибка появляется только для больших размеров выборки, поэтому я не могу уменьшить размер дальше.

Ответы [ 3 ]

0 голосов
/ 10 декабря 2018

У меня также были проблемы при объединении тысяч vcf-файлов с bcftools.В моем случае проблема заключалась в количестве открытых файлов.Возможно, вам придется увеличить лимит открытого файла.Попробуйте эти команды:

# check soft limit
ulimit -Sn

#check hard limit
ulimit -Hn

#set soft limit
ulimit -Sn <number>
0 голосов
/ 10 декабря 2018

Это была ошибка в bcftools, и автор любезно исправил ее после уведомления:

https://github.com/samtools/bcftools/issues/929#issuecomment-443614761
0 голосов
/ 07 декабря 2018

Я не уверен, связана ли эта ошибка с самой программой 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.На этом этапе введите where, info registers, info locals и x/20i $pc-40 в приглашении (gdb) и обновите свой вопрос выводом.

Этот вывод, вероятно, позволит кому-то определитьс какой ошибкой вы сталкиваетесь, какие обходные пути возможны и т. д. и т. д.

Это также информация, которая понадобится разработчикам bfctools, если вы сообщите им о проблеме.

...