注意:這是 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