ملاحظة: هذا هو LUMPY 0.2.13 مع تغييرات إضافية للسماح لـumpyexpress بالعمل عندما يكون الملف الرئيسي عبارة عن CRAM، وليس BAM. يجب أن تظل المقسمات والمتنافرات عبارة عن ملفات BAM لأن LUMPY نفسها لا تدعم CRAM كمدخل بعد. يتطلب هذا توفر الأمر hexdump.
للأسئلة والمناقشة حول LUMPY يرجى زيارة المنتدى على العنوان التالي:
https://groups.google.com/forum/#!forum/lumpy-discuss
إطار احتمالي لاكتشاف المتغيرات الهيكلية.
ريان إم لاير، وكولبي تشيانج، وآرون آر كوينلان، وإيرا إم هول. 2014. "LUMPY: إطار احتمالي لاكتشاف المتغيرات الهيكلية." بيولوجيا الجينوم 15 (6): R84. دوى: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 بتشغيل العديد من البرامج الخارجية التي تم تحديد مساراتها في scripts/lumpyexpress.config. يجب أن يكون هذا التكوين موجودًا في نفس الدليل مثل Lumpyexpress، أو يتم تحديده بشكل صريح باستخدام العلامة -K.
يقوم ملف التثبيت Makefile بإنشاء ملفumpyexpress.config تلقائيًا ويضعه في الدليل "bin".
يتوقع LUMPY Express ملفات BAM المتوافقة مع BWA-MEM كمدخلات. يقوم تلقائيًا بتوزيع معلومات العينة والمكتبة وقراءة المجموعة باستخدام علامات @RG في رأس BAM. من المتوقع أن يحتوي كل ملف BAM على عينة واحدة بالضبط.
الحد الأدنى للإدخال هو ملف BAM مُفرز تنسيقيًا (-B)، والذي يستخرج منه LUMPY Express المقسمات والمتنافرات باستخدام SAMBLASTER قبل تشغيل LUMPY. بشكل اختياري، يمكن للمستخدمين توفير ملفات BAM المقسمة ذات الترتيب الإحداثي (-S) والمتنافرة (-D) والتي ستتجاوز استخراج 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) المتوسط وstdev على الشاشة. بالنسبة لهذه الأمثلة، سنفترض أن المتوسط هو 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 مع استبعاد المناطق منخفضة التعقيد.
يقدم 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 مع استبعاد المناطق ذات التغطية العالية جدًا.
يمكننا توجيه العقدي لتجاهل مناطق معينة باستخدام خيار استبعاد المنطقة. في هذا المثال، نجد ثم نستبعد المناطق التي تتمتع بتغطية عالية جدًا. نستخدم أولاً البرنامج النصي 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
من هذا الناتج، سنختار استبعاد المناطق التي لديها تغطية أكثر من 10x. لإنشاء ملف الاستبعاد، سنستخدم البرنامج النصي 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. يجب استخراج كرة القطران هذه في الدليل العقدي ذي المستوى الأعلى. يتحقق البرنامج النصي 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