注意:这是 LUMPY 0.2.13,进行了额外的更改,以便在主文件是 CRAM 而不是 BAM 时允许lumpyexpress 运行。拆分器和不一致项仍必须是 BAM 文件,因为 LUMPY 本身尚不支持 CRAM 作为输入。这需要 hexdump 命令可用。
有关 LUMPY 的问题和讨论,请访问以下论坛:
https://groups.google.com/forum/#!forum/lumpy-discuss
结构变体发现的概率框架。
Ryan M Layer、Colby Jiang、Aaron R Quinlan 和 Ira M Hall。 2014.“LUMPY:结构变体发现的概率框架。”基因组生物学 15 (6):R84。 doi:10.1186/gb-2014-15-6-r84。
请注意,smoove 是运行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 运行多个外部程序,其路径在 script/lumpyexpress.config 中指定。此配置必须位于与lumpyexpress 相同的目录中,或者使用-K 标志显式指定。
安装Makefile会自动生成一个lumpyexpress.config文件并将其放置在“bin”目录中。
LUMPY Express 期望 BWA-MEM 对齐的 BAM 文件作为输入。它使用 BAM 标头中的 @RG 标签自动解析示例、库并读取组信息。每个 BAM 文件应仅包含一个样本。
最小输入是坐标排序的 BAM 文件 (-B),LUMPY Express 在运行 LUMPY 之前使用 SAMBLASTER 从中提取拆分器和不一致项。或者,用户可以提供坐标排序的拆分器 (-S) 和不一致的 (-D) BAM 文件,这些文件将绕过 SAMBLASTER 提取以加快分析速度。
LUMPY Express 根据 VCF 规范 4.2 生成 VCF 文件。
为高级用户提供灵活且可定制的断点检测。
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
在具有多个库的 BAM 文件上运行 LUMPY。
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,排除低复杂度区域。
Heng Li 在他的论文“更好地理解来自高覆盖率样本的变体调用中的伪影”的补充信息中提供了一组低复杂性区域,网址为 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,排除覆盖率非常高的区域。
我们可以通过使用排除区域选项来指示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 脚本来创建 except.bed 文件
python ../scripts/get_exclude_regions.py
10
exclude.bed
sample.pe.sort.bam
sample.sr.sort.bam
我们现在使用排除(-x)选项重新运行lumpy
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 可以使用贝叶斯最大似然算法在 LUMPY 输出 VCF 文件上调用基因型。
svtyper
-B sample.bam
-S sample.splitters.bam
-i sample.vcf
> sample.gt.vcf
test/test.sh
脚本针对多个模拟数据集执行lumpy,并将结果与已知的正确结果进行比较。示例数据集可以在 http://layerlab.org/lumpy/data.tar.gz 找到。这个 tar 球应该被提取到顶级的 chunky 目录中。脚本test/test.sh
在运行 LUMPY 之前检查此目录是否存在。
块状处理的所有 bam 文件都必须进行位置排序。要检查您的 bams 是否排序正确,请使用 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