ПРИМЕЧАНИЕ. Это LUMPY 0.2.13 с дополнительными изменениями, которые позволяют Lumpyexpress работать, когда основным файлом является CRAM, а не BAM. Разделители и дискорданты по-прежнему должны быть файлами BAM, поскольку сам LUMPY еще не поддерживает CRAM в качестве входных данных. Для этого требуется, чтобы команда hexdump была доступна.
По вопросам и обсуждениям LUMPY посетите форум по адресу:
https://groups.google.com/forum/#!forum/lumpy-discuss
Вероятностная основа для обнаружения структурных вариантов.
Райан М. Лейер, Колби Чанг, Аарон Р. Куинлан и Ира М. Холл. 2014. «LUMPY: вероятностная основа для обнаружения структурных вариантов». Геномная биология 15 (6): R84. doi:10.1186/gb-2014-15-6-r84.
Обратите внимание, что smove — это рекомендуемый способ запуска lumpy
, поскольку он объединяет лучшие практики lumpy
и связанных с ним инструментов и имеет более короткое время выполнения и меньший уровень ложных срабатываний, чем lumpyexpress
описанный ниже.
Загрузите и установите
git clone --recursive https://github.com/arq5x/lumpy-sv.git
cd lumpy-sv
make
cp bin/* /usr/local/bin/.
Запустите LUMPY Express
lumpyexpress
-B my.bam
-S my.splitters.bam
-D my.discordants.bam
-o output.vcf
Метод установки по умолчанию:
git clone --recursive [email protected]:arq5x/lumpy-sv.git
cd lumpy-sv
make
cp bin/* /usr/local/bin/.
Установка с помощью Costom Zlib (ошибка компиляции gzopen64):
git clone --recursive [email protected]:arq5x/lumpy-sv.git
cd lumpy-sv
export ZLIB_PATH="/usr/lib/x86_64-linux-gnu/"; #when /usr/lib/x86_64-linux-gnu/libz.so
make
cp bin/* /usr/local/bin/.
Автоматическое определение точек останова для стандартного анализа.
usage: lumpyexpress [options]
Обязательные аргументы
-B FILE coordinate-sorted BAM file(s) (comma separated)
-S FILE split reads BAM file(s) (comma separated)
-D FILE discordant reads BAM files(s) (comma separated)
Необязательные аргументы
-o STR output [fullBam.bam.vcf]
-x FILE BED file to exclude
-P output probability curves for each variant
-m INT minimum sample weight for a call [4]
-r FLOAT trim threshold [0]
-T DIR temp directory [./output_prefix.XXXXXXXXXXXX]
-k keep temporary files
-K FILE path to lumpyexpress.config file
(default: same directory as lumpyexpress)
-v verbose
-h show this message
LUMPY Express запускает несколько внешних программ, пути к которым указаны в scripts/lumpyexpress.config. Эта конфигурация должна находиться в том же каталоге, что и Lumpyexpress, или быть указана явно с помощью флага -K.
При установке Makefile автоматически генерирует файл Lumpyexpress.config и помещает его в каталог «bin».
LUMPY Express ожидает, что в качестве входных данных будут файлы BAM, согласованные с BWA-MEM. Он автоматически анализирует информацию об образцах, библиотеках и группах чтения, используя теги @RG в заголовке BAM. Ожидается, что каждый файл BAM будет содержать ровно один образец.
Минимальный входной файл — это файл BAM с отсортировкой по координатам (-B), из которого LUMPY Express извлекает разделители и диссонансы с помощью SAMBLASTER перед запуском LUMPY. При желании пользователи могут предоставить файлы BAM с отсортированными по координатам (-S) и несогласованными (-D) файлами BAM, которые будут обходить извлечение SAMBLASTER для более быстрого анализа.
LUMPY Express создает файл VCF в соответствии со спецификацией VCF 4.2.
Гибкое и настраиваемое обнаружение точек останова для опытных пользователей.
usage: lumpy [options]
Параметры
-g Genome file (defines chromosome order)
-e Show evidence for each call
-w File read windows size (default 1000000)
-mw minimum weight across all samples for a call
-msw minimum per-sample weight for a call
-tt trim threshold
-x exclude file bed file
-t temp file prefix, must be to a writeable directory
-P output probability curve for each variant
-b output as BEDPE instead of VCF
-sr bam_file:,
id:,
back_distance:,
min_mapping_threshold:,
weight:,
min_clip:,
read_group:
-pe bam_file:,
id:,
histo_file:,
mean:,
stdev:,
read_length:,
min_non_overlap:,
discordant_z:,
back_distance:,
min_mapping_threshold:,
weight:,
read_group:
-bedpe bedpe_file:,
id:,
weight:
Мы рекомендуем выравнивать данные с помощью SpeedSeq, который выполняет выравнивание BWA-MEM, отмечает дубликаты и извлекает разделенные и несогласованные пары чтения.
speedseq align -R "@RGtID:idtSM:sampletLB:lib"
human_g1k_v37.fasta
sample.1.fq
sample.2.fq
В противном случае данные могут быть согласованы с BWA-MEM.
# Align the data
bwa mem -R "@RGtID:idtSM:sampletLB:lib" human_g1k_v37.fasta sample.1.fq sample.2.fq
| samblaster --excludeDups --addMateTags --maxSplitCount 2 --minNonOverlap 20
| samtools view -S -b -
> sample.bam
# Extract the discordant paired-end alignments.
samtools view -b -F 1294 sample.bam > sample.discordants.unsorted.bam
# Extract the split-read alignments
samtools view -h sample.bam
| scripts/extractSplitReads_BwaMem -i stdin
| samtools view -Sb -
> sample.splitters.unsorted.bam
# Sort both alignments
samtools sort sample.discordants.unsorted.bam sample.discordants
samtools sort sample.splitters.unsorted.bam sample.splitters
LUMPY имеет два различных варианта исполнения. LUMPY Express — это упрощенная оболочка для стандартных анализов. LUMPY (традиционный) более настраиваемый, подходит для опытных пользователей и специализированных экспериментов.
Запустите LUMPY Express на одном образце с предварительно извлеченными разделителями и дискордантами.
lumpyexpress
-B sample.bam
-S sample.splitters.bam
-D sample.discordants.bam
-o sample.vcf
Запустите LUMPY Express совместно на нескольких образцах с предварительно извлеченными разделителями и дискордантами.
lumpyexpress
-B sample1.bam,sample2.bam,sample3.bam
-S sample1.splitters.bam,sample2.splitters.bam,sample3.splitters.bam
-D sample1.discordants.bam,sample2.discordants.bam,sample3.discordants.bam
-o multi_sample.vcf
Запустите LUMPY Express на паре опухоль-норма.
lumpyexpress
-B tumor.bam,normal.bam
-S tumor.splitters.bam,normal.splitters.bam
-D tumor.discordants.bam,normal.discordants.bam
-o tumor_normal.vcf
Сначала сгенерируйте эмпирическую статистику размера вставки для каждой библиотеки в файле BAM.
samtools view -r readgroup1 sample.bam
| tail -n+100000
| scripts/pairend_distro.py
-r 101
-X 4
-N 10000
-o sample.lib1.histo
Приведенный выше скрипт (scripts/pairend_distro.py) будет отображать на экране среднее значение и стандартное отклонение. Для этих примеров мы предположим, что среднее значение равно 500, а стандартное отклонение равно 50.
Запустите LUMPY с парным концом и разделенным чтением.
lumpy
-mw 4
-tt 0
-pe id:sample,bam_file:sample.discordants.bam,histo_file:sample.lib1.histo,mean:500,stdev:50,read_length:101,min_non_overlap:101,discordant_z:5,back_distance:10,weight:1,min_mapping_threshold:20
-sr id:sample,bam_file:sample.splitters.bam,back_distance:10,weight:1,min_mapping_threshold:20
> sample.vcf
Запустите LUMPY для файла BAM с несколькими библиотеками.
lumpy
-mw 4
-tt 0
-pe id:sample,read_group:rg1,bam_file:sample.discordants.bam,histo_file:sample.lib1.histo,mean:500,stdev:50,read_length:101,min_non_overlap:101,discordant_z:5,back_distance:10,weight:1,min_mapping_threshold:20
-pe id:sample,read_group:rg2,bam_file:sample.discordants.bam,histo_file:sample.lib2.histo,mean:500,stdev:50,read_length:101,min_non_overlap:101,discordant_z:5,back_distance:10,weight:1,min_mapping_threshold:20
-sr id:sample,bam_file:sample.splitters.bam,back_distance:10,weight:1,min_mapping_threshold:20
> sample.vcf
Запустите LUMPY на нескольких образцах с несколькими библиотеками.
lumpy
-mw 4
-tt 0
-pe id:sample1,bam_file:sample1.discordants.bam,read_group:rg1,read_group:rg2,histo_file:sample1.lib1.histo,mean:500,stdev:50,read_length:101,min_non_overlap:101,discordant_z:5,back_distance:10,weight:1,min_mapping_threshold:20
-pe id:sample1,bam_file:sample1.discordants.bam,read_group:rg3,histo_file:sample1.lib2.histo,mean:500,stdev:50,read_length:101,min_non_overlap:101,discordant_z:5,back_distance:10,weight:1,min_mapping_threshold:20
-pe id:sample2,bam_file:sample2.discordants.bam,read_group:rg4,histo_file:sample2.lib1.histo,mean:500,stdev:50,read_length:101,min_non_overlap:101,discordant_z:5,back_distance:10,weight:1,min_mapping_threshold:20
-sr id:sample1,bam_file:sample1.splitters.bam,back_distance:10,weight:1,min_mapping_threshold:20
-sr id:sample2,bam_file:sample2.splitters.bam,back_distance:10,weight:1,min_mapping_threshold:20
> multi_sample.vcf
Запустите LUMPY, исключив области низкой сложности.
Хэн Ли предоставляет набор областей низкой сложности в дополнительной информации к своей статье «На пути к лучшему пониманию артефактов при вызове вариантов из образцов с высоким охватом» по адресу https://doi.org/10.1093/bioinformatics/btu356.
unzip btu356_Supplementary_Data.zip
unzip btu356-suppl_data.zip
lumpy
-mw 4
-tt 0.0
-x btu356_LCR-hs37d5.bed/btu356_LCR-hs37d5.bed
-pe bam_file:sample.discordants.bam,histo_file:sample.pe.histo,mean:500,stdev:50,read_length:101,min_non_overlap:101,discordant_z:5,back_distance:10,weight:1,id:sample,min_mapping_threshold:1
-sr bam_file:sample.sr.sort.bam,back_distance:10,weight:1,id:sample,min_mapping_threshold:1
> sample.exclude.vcf
Запустите LUMPY, исключив регионы с очень высоким покрытием.
Мы можем указать «кому», чтобы игнорировать определенные регионы, используя опцию исключения региона. В этом примере мы находим, а затем исключаем регионы с очень высоким охватом. Сначала мы используем сценарий get_coverages.py, чтобы найти минимальное, максимальное и среднее покрытие файлов sr и pe bam, а также создать профили покрытия для обоих файлов.
python ../scripts/get_coverages.py
sample.pe.sort.bam
sample.sr.sort.bam
# sample.pe.sort.bam.coverage min:1 max:14 mean(non-zero):2.35557521272
# sample.sr.sort.bam.coverage min:1 max:7 mean(non-zero):1.08945936729
Из этих результатов мы решим исключить регионы с охватом более 10 раз. Чтобы создать файл исключения, мы воспользуемся сценарием get_exclude_regions.py для создания файла Exclude.bed.
python ../scripts/get_exclude_regions.py
10
exclude.bed
sample.pe.sort.bam
sample.sr.sort.bam
Теперь мы повторно запускаем кусковую команду с опцией исключения (-x).
lumpy
-mw 4
-tt 0.0
-x exclude.bed
-pe bam_file:sample.discordants.bam,histo_file:sample.pe.histo,mean:500,stdev:50,read_length:101,min_non_overlap:101,discordant_z:5,back_distance:10,weight:1,id:sample,min_mapping_threshold:1
-sr bam_file:sample.sr.sort.bam,back_distance:10,weight:1,id:sample,min_mapping_threshold:1
> sample.exclude.vcf
SVTyper может вызывать генотипы в выходных файлах VCF LUMPY, используя байесовский алгоритм максимального правдоподобия.
svtyper
-B sample.bam
-S sample.splitters.bam
-i sample.vcf
> sample.gt.vcf
Сценарий test/test.sh
выполняет коммутационную обработку нескольких наборов смоделированных данных и сравнивает результаты с известным правильным результатом. Примеры наборов данных можно найти по адресу http://layerlab.org/lumpy/data.tar.gz. Этот tar-шар следует распаковать в неровный каталог верхнего уровня. Скрипт test/test.sh
проверяет существование этого каталога перед запуском LUMPY.
Все файлы bam, которые обрабатываются неравномерно, должны быть отсортированы по позиции. Чтобы проверить, правильно ли отсортированы ваши бамсы, используйте скрипт check_sorting.py
python ../scripts/check_sorting.py
pe.pos_sorted.bam
sr.pos_sorted.bam
pe.name_sorted.bam
# pe.pos_sorted.bam
# in order
# sr.pos_sorted.bam
# in order
# pe.name_sorted.bam
# out of order: chr10 102292476 occurred after chr10 102292893