注: これは、メイン ファイルが BAM ではなく CRAM である場合に、lumpyexpress が機能できるようにするための追加の変更が加えられた LUMPY 0.2.13 です。 LUMPY 自体は入力として CRAM をまだサポートしていないため、スプリッターと不一致は依然として BAM ファイルである必要があります。これには、hexdump コマンドが使用可能である必要があります。
LUMPY に関する質問や議論については、次のフォーラムをご覧ください。
https://groups.google.com/forum/#!forum/lumpy-discuss
構造バリアント発見のための確率的フレームワーク。
ライアン・M・レイヤー、コルビー・チャン、アーロン・R・クインラン、アイラ・M・ホール。 2014.「LUMPY: 構造変異発見のための確率的フレームワーク」。ゲノム生物学 15 (6): R84。土井:10.1186/gb-2014-15-6-r84。
smoove は、 lumpy
および関連ツールのベスト プラクティスを集めたものであり、以下で説明するlumpyexpress
よりも実行時間が短く、誤検知率が低いため、 lumpy
実行するための推奨方法であることに注意してください。
ダウンロードしてインストールする
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/.
コスト 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 は、BWA-MEM で調整された BAM ファイルを入力として想定します。 BAM ヘッダーの @RG タグを使用して、サンプル、ライブラリ、リード グループの情報を自動的に解析します。各 BAM ファイルには、サンプルが 1 つだけ含まれることが期待されます。
最小入力は座標ソートされた BAM ファイル (-B) で、LUMPY Express はそこから、LUMPY を実行する前に SAMBLASTER を使用してスプリッターと不一致を抽出します。オプションで、ユーザーは、分析を高速化するために SAMBLASTER 抽出をバイパスする、座標ソートされたスプリッター (-S) および不一致 (-D) BAM ファイルを提供できます。
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 を使用してデータを調整することをお勧めします。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 には 2 つの異なる実行方法があります。 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 スクリプトを使用して exclude.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
スクリプトは、いくつかのシミュレートされたデータセットに対して塊状に実行され、その結果を既知の正しい結果と比較します。サンプル データ セットは http://layerlab.org/lumpy/data.tar.gz にあります。この tar ボールは、最上位の dumpy ディレクトリに抽出する必要があります。スクリプトtest/test.sh
LUMPY を実行する前にこのディレクトリの存在を確認します。
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