Dorado เป็นตัวเรียกพื้นฐานแบบโอเพ่นซอร์สประสิทธิภาพสูง ใช้งานง่ายสำหรับการอ่าน Oxford Nanopore
หนึ่งไฟล์ปฏิบัติการที่มีค่าเริ่มต้นที่สมเหตุสมผล การตรวจจับฮาร์ดแวร์และการกำหนดค่าอัตโนมัติ
ทำงานบน Apple Silicon (ตระกูล M1/2) และ GPU Nvidia รวมถึง Multi-GPU พร้อม Linear Scaling (ดูแพลตฟอร์ม)
การโทรพื้นฐานที่ได้รับการแก้ไข
การเรียกเบสแบบดูเพล็กซ์ (ดูวิดีโอต่อไปนี้เพื่อดูข้อมูลเบื้องต้นเกี่ยวกับดูเพล็กซ์)
การจำแนกบาร์โค้ด Simplex
รองรับเอาต์พุตการอ่านที่สอดคล้องใน SAM/BAM
การสนับสนุนเบื้องต้นสำหรับการประมาณค่าส่วนท้ายของโพลี (A)
รองรับการแก้ไขข้อผิดพลาดแบบอ่านครั้งเดียว
รองรับ POD5 เพื่อประสิทธิภาพการโทรเบสสูงสุด
อิงจาก libtorch, C++ API สำหรับ pytorch
การเพิ่มประสิทธิภาพแบบกำหนดเองหลายรายการใน CUDA และ Metal เพื่อเพิ่มประสิทธิภาพการอนุมานให้สูงสุด
หากคุณพบปัญหาในการสร้างหรือใช้งาน Dorado โปรดรายงานปัญหา
ขั้นแรก ดาวน์โหลดตัวติดตั้งที่เกี่ยวข้องสำหรับแพลตฟอร์มของคุณ:
โดราโด-0.8.2-linux-x64
โดราโด-0.8.2-linux-arm64
โดราโด-0.8.2-osx-arm64
โดราโด-0.8.2-win64
เมื่อดาวน์โหลดไฟล์เก็บ .tar.gz
หรือ .zip
ที่เกี่ยวข้องแล้ว ให้แตกไฟล์เก็บถาวรไปยังตำแหน่งที่คุณต้องการ
จากนั้นคุณสามารถโทรหา Dorado โดยใช้เส้นทางแบบเต็มได้ เช่น:
$ /path/to/dorado-x.y.z-linux-x64/bin/dorado basecaller hac pod5s/ > calls.bam
หรือคุณสามารถเพิ่มเส้นทาง bin ให้กับตัวแปรสภาพแวดล้อม $PATH
ของคุณ และรันด้วยคำสั่ง dorado
แทนได้ เช่น:
$ dorado basecaller hac pod5s/ > calls.bam
ดู DEV.md สำหรับรายละเอียดเกี่ยวกับการสร้าง Dorado เพื่อการพัฒนา
Dorado ได้รับการปรับให้เหมาะสมอย่างมากสำหรับ GPU Nvidia A100 และ H100 และจะมอบประสิทธิภาพสูงสุดบนระบบด้วย GPU เหล่านี้
Dorado ได้รับการทดสอบอย่างกว้างขวางและได้รับการสนับสนุนบนระบบต่อไปนี้:
แพลตฟอร์ม | จีพียู/ซีพียู | ข้อกำหนดซอฟต์แวร์ขั้นต่ำ |
---|---|---|
ลินุกซ์ x86_64 | (ก)V100, A100 | ไดรเวอร์ CUDA ≥450.80.02 |
H100 | ไดรเวอร์ CUDA ≥520 | |
ลินุกซ์ arm64 | เจ็ตสัน โอริน | Linux สำหรับ Tegra ≥34.1.1 |
วินโดว์ x86_64 | (ก)V100, A100 | ไดรเวอร์ CUDA ≥452.39 |
H100 | ไดรเวอร์ CUDA ≥520 | |
แอปเปิล | แอปเปิ้ลซิลิคอน (M1/M2) |
ระบบ Linux หรือ Windows ที่ไม่ได้ระบุไว้ข้างต้น แต่มี GPU Nvidia ที่มี ≥8 GB VRAM และสถาปัตยกรรมจาก Pascal เป็นต้นไป (ยกเว้น P100/GP100) ยังไม่ได้รับการทดสอบอย่างกว้างขวาง แต่คาดว่าจะใช้งานได้ เมื่อสนทนากับอุปกรณ์ Apple เราขอแนะนำระบบที่มีหน่วยความจำรวม ≥16 GB
หากคุณประสบปัญหาในการทำงานบนระบบของคุณ โปรดรายงานปัญหา
เกณฑ์มาตรฐาน AWS บน Nvidia GPU สำหรับ Dorado 0.3.0 มีอยู่ที่นี่ โปรดทราบ: ความเร็วการโทรพื้นฐานของ Dorado ได้รับการปรับปรุงอย่างต่อเนื่อง ดังนั้นเกณฑ์มาตรฐานเหล่านี้อาจไม่สะท้อนถึงประสิทธิภาพของรุ่นล่าสุด
เพื่อประสิทธิภาพสูงสุด Dorado ต้องใช้อินพุตไฟล์ POD5 โปรดแปลงไฟล์ .fast5 ของคุณก่อนที่จะทำการเบส
Dorado จะตรวจจับหน่วยความจำว่างของ GPU ของคุณโดยอัตโนมัติและเลือกขนาดแบตช์ที่เหมาะสม
Dorado จะทำงานโดยอัตโนมัติในโหมด multi-GPU cuda:all
หากคุณมีคอลเลกชัน GPU ที่แตกต่างกัน ให้เลือก GPU ที่เร็วกว่าโดยใช้แฟล็ก --device
(เช่น --device cuda:0,2
) การไม่ทำเช่นนี้จะส่งผลเสียต่อประสิทธิภาพการทำงาน
ต่อไปนี้เป็นคำสั่งที่เป็นประโยชน์สำหรับการเริ่มต้นใช้งาน Dorado หากต้องการดูตัวเลือกทั้งหมดและค่าเริ่มต้น ให้รัน dorado -h
และ dorado <subcommand> -h
Dorado สามารถเลือกโมเดลการโทรพื้นฐานโดยอัตโนมัติโดยใช้การเลือกความเร็วของโมเดล ( fast
, hac
, sup
) และข้อมูล pod5 คุณสมบัตินี้ ไม่ รองรับข้อมูล fast5 หากไม่มีโมเดลอยู่ในเครื่อง dorado จะดาวน์โหลดโมเดลและใช้งานโดยอัตโนมัติ
Dorado ยังคงสนับสนุนเส้นทางโมเดล
สำหรับรายละเอียด โปรดอ่านการเลือกรุ่นอัตโนมัติที่ซับซ้อน
หากต้องการเรียกใช้ Dorado basecalling โดยใช้โมเดล hac
ที่ดาวน์โหลดโดยอัตโนมัติบนไดเร็กทอรีของไฟล์ POD5 หรือไฟล์ POD5 ไฟล์เดียว (รองรับไฟล์ .fast5 แต่จะไม่มีประสิทธิภาพเท่าที่ควร)
$ dorado basecaller hac pod5s/ > calls.bam
หากต้องการ basecall ไฟล์เดียว เพียงแทนที่ไดเร็กทอรี pod5s/
ด้วยพาธไปยังไฟล์ข้อมูลของคุณ
หากการเรียกเบสถูกขัดจังหวะ คุณสามารถดำเนินการเรียกเบสต่อจากไฟล์ BAM ได้ เมื่อต้องการดำเนินการดังกล่าว ให้ใช้แฟล็ก --resume-from
เพื่อระบุเส้นทางไปยังไฟล์ BAM ที่ไม่สมบูรณ์ ตัวอย่างเช่น:
$ dorado basecaller hac pod5s/ --resume-from incomplete.bam > calls.bam
calls.bam
จะมีการอ่านทั้งหมดจาก incomplete.bam
บวกกับ basecalls ใหม่ ( incomplete.bam
สามารถละทิ้งได้หลังจากการเรียก basecall เสร็จสมบูรณ์)
หมายเหตุ: สิ่งสำคัญคือต้องเลือกชื่อไฟล์อื่นสำหรับไฟล์ BAM ที่คุณกำลังเขียนถึงเมื่อใช้ --resume-from
หากคุณใช้ชื่อไฟล์เดียวกัน ไฟล์ BAM ที่ถูกขัดจังหวะจะสูญเสียการโทรพื้นฐานที่มีอยู่ และการโทรพื้นฐานจะเริ่มต้นใหม่ตั้งแต่ต้น
Dorado สามารถตรวจจับและลบอะแดปเตอร์และ/หรือลำดับไพรเมอร์ตั้งแต่จุดเริ่มต้นและจุดสิ้นสุดของการอ่าน DNA โปรดทราบว่าหากคุณตั้งใจที่จะแยกการอ่านหลายด้านในภายหลัง การตัดอะแดปเตอร์และไพรเมอร์อาจส่งผลให้บางส่วนของบริเวณขนาบข้างของบาร์โค้ดถูกลบออก ซึ่งอาจรบกวนการทำดีมัลติเพล็กซ์ที่ถูกต้อง
ตามค่าเริ่มต้น dorado basecaller
จะพยายามตรวจจับอะแด็ปเตอร์หรือลำดับไพรเมอร์ที่จุดเริ่มต้นและจุดสิ้นสุดของการอ่าน และลบออกจากลำดับเอาต์พุต
ฟังก์ชั่นนี้สามารถเปลี่ยนแปลงได้โดยใช้ตัวเลือก --trim
หรือ --no-trim
กับ dorado basecaller
ตัวเลือก --no-trim
จะป้องกันการตัดแต่งลำดับบาร์โค้ดที่ตรวจพบ เช่นเดียวกับการตรวจจับและตัดแต่งลำดับอะแดปเตอร์และไพรเมอร์
ตัวเลือก --trim
ใช้เป็นอาร์กิวเมนต์หนึ่งในค่าต่อไปนี้:
all
นี้จะเหมือนกับพฤติกรรมเริ่มต้น อะแดปเตอร์หรือไพรเมอร์ที่ตรวจพบจะถูกตัดออก และหากเปิดใช้งานบาร์โค้ด บาร์โค้ดที่ตรวจพบจะถูกตัดออก
primers
ซึ่งจะส่งผลให้อะแดปเตอร์หรือไพรเมอร์ที่ตรวจพบถูกตัดแต่ง แต่หากเปิดใช้งานบาร์โค้ด ลำดับบาร์โค้ดจะไม่ถูกตัดแต่ง
adapters
ซึ่งจะส่งผลให้อะแดปเตอร์ที่ตรวจพบถูกตัดแต่ง แต่ไพรเมอร์จะไม่ถูกตัดแต่ง และหากเปิดใช้งานบาร์โค้ด บาร์โค้ดจะไม่ถูกตัดแต่งเช่นกัน
none
นี่เหมือนกับการใช้ตัวเลือก --no-trim ไม่มีอะไรจะตัดแต่ง
หากการตัดอะแด็ปเตอร์/ไพรเมอร์เสร็จสิ้นในแนวเดียวกับการเรียกพื้นฐานร่วมกับการแยกหลายเพล็กซ์ ซอฟต์แวร์จะตรวจสอบให้แน่ใจโดยอัตโนมัติว่าการตัดอะแด็ปเตอร์และไพรเมอร์จะไม่รบกวนกระบวนการดีมัลติเพล็กซ์ อย่างไรก็ตาม หากคุณตั้งใจจะดำเนินการแยกส่วนในภายหลังเป็นขั้นตอนแยกต่างหาก ขอแนะนำให้คุณปิดใช้งานการตัดอะแดปเตอร์/ไพรเมอร์เมื่อทำการเรียกเบสด้วยตัวเลือก --no-trim
เพื่อให้แน่ใจว่าลำดับบาร์โค้ดใดๆ ยังคงสมบูรณ์ในการอ่าน
สามารถสแกนชุดข้อมูลที่เรียกว่าชุดข้อมูลพื้นฐานที่มีอยู่เพื่อหาอะแด็ปเตอร์และ/หรือลำดับไพรเมอร์ที่ปลายด้านใดด้านหนึ่ง และตัดลำดับที่พบดังกล่าวออก เมื่อต้องการทำเช่นนี้ ให้เรียกใช้:
$ dorado trim <reads> > trimmed.bam
<reads>
อาจเป็นไฟล์รูปแบบ HTS (เช่น FASTQ, BAM ฯลฯ) หรือสตรีมของรูปแบบ HTS (เช่น ผลลัพธ์ของการเรียกฐาน Dorado)
ตัวเลือก --no-trim-primers
สามารถใช้เพื่อป้องกันการตัดแต่งลำดับไพรเมอร์ได้ ในกรณีนี้เฉพาะลำดับอะแดปเตอร์เท่านั้นที่จะถูกตัดแต่ง
หากคุณตั้งใจที่จะแยกข้อมูลออกจากมัลติเพล็กซ์ ขอแนะนำให้คุณแยกข้อมูลออกจากมัลติเพล็กซ์ก่อนที่จะตัดแต่งอะแดปเตอร์และไพรเมอร์ใดๆ เนื่องจากการตัดแต่งอะแดปเตอร์และไพรเมอร์ก่อนอาจรบกวนการจัดประเภทบาร์โค้ดที่ถูกต้อง
ผลลัพธ์ของ dorado trim
จะเป็นบันทึกที่ไม่ได้จัดแนวเสมอ ไม่ว่าอินพุตจะจัดแนว/เรียงลำดับหรือไม่ก็ตาม
ซอฟต์แวร์จะค้นหาลำดับไพรเมอร์ที่ใช้ในชุด Oxford Nanopore โดยอัตโนมัติ อย่างไรก็ตาม คุณสามารถระบุชุดลำดับไพรเมอร์อื่นเพื่อค้นหาเมื่อตัดแต่งแบบอินไลน์ด้วยการเรียกเบส หรือใช้ร่วมกับตัวเลือก --trim
ในทั้งสองกรณี สามารถทำได้โดยใช้ตัวเลือกบรรทัดคำสั่ง --primer-sequences
ตามด้วยพาธแบบเต็มและชื่อไฟล์ของไฟล์ FASTA ที่มีลำดับไพรเมอร์ที่คุณต้องการค้นหา ชื่อบันทึกของลำดับไม่สำคัญ โปรดทราบว่าหากคุณใช้ตัวเลือกนี้ ลำดับไพรเมอร์ปกติที่มีอยู่ในซอฟต์แวร์ dorado จะไม่ถูกค้นหา
อะแดปเตอร์สำหรับชุด RNA002 และ RNA004 จะถูกตัดแต่งโดยอัตโนมัติระหว่างการโทรเบส อย่างไรก็ตาม ไม่เหมือนกับใน DNA ตรงที่อะแดปเตอร์ RNA ไม่สามารถตัดออกหลังการเรียกเบสได้
นอกเหนือจากการเรียกเบส A, T, C และ G แบบดั้งเดิมแล้ว Dorado ยังสามารถตรวจจับเบสที่ถูกดัดแปลง เช่น 5-methylcytosine (5mC), 5-hydroxymethylcytosine (5hmC) และ N 6 -methyladenosine (6mA) ฐานที่ได้รับการดัดแปลงเหล่านี้มีบทบาทสำคัญในการควบคุมอีพิเจเนติกส์
หากต้องการเรียกการแก้ไข ให้ขยายอาร์กิวเมนต์ models ด้วยรายการการแก้ไขที่คั่นด้วยเครื่องหมายจุลภาค:
$ dorado basecaller hac,5mCG_5hmCG,6mA pod5s/ > calls.bam
ในตัวอย่างข้างต้น การเรียกเบสจะดำเนินการด้วยการตรวจจับทั้ง 5mC/5hmC ในบริบท CG และ 6mA ในทุกบริบท
อ้างถึงคอลัมน์ Compatible Modifications ของตาราง DNA Models เพื่อดูการแก้ไขที่มีอยู่ซึ่งสามารถเรียกได้ด้วยตัวเลือก --modified-bases
การเรียกเบสแบบดัดแปลงยังรองรับการเรียกเบสแบบดูเพล็กซ์ด้วย ซึ่งทำให้เกิดการเรียกแบบเฮมิเมทิลเลชั่น
หากต้องการรันการเรียกเบสแบบดูเพล็กซ์ ให้รันคำสั่ง:
$ dorado duplex sup pod5s/ > duplex.bam
เมื่อใช้คำสั่ง duplex
ผลลัพธ์ลำดับดีเอ็นเอจะถูกสร้างขึ้นสองประเภท: 'ซิมเพล็กซ์' และ 'ดูเพล็กซ์' ตำแหน่งเฉพาะใดๆ ใน DNA ที่อยู่ในการอ่านเพล็กซ์ก็จะเห็นได้ในสองสายซิมเพล็กซ์เช่นกัน (เทมเพลตและส่วนเติมเต็ม) ดังนั้น แต่ละตำแหน่ง DNA ที่มีการเรียงลำดับดูเพล็กซ์จะถูกครอบคลุมโดยการอ่านค่าแยกกันอย่างน้อยสามค่าในเอาต์พุต
แท็ก dx
ในบันทึก BAM สำหรับการอ่านแต่ละครั้งสามารถใช้เพื่อแยกความแตกต่างระหว่างการอ่านแบบ simplex และ duplex:
dx:i:1
สำหรับการอ่านสองด้าน
dx:i:0
สำหรับการอ่านแบบ simplex ที่ไม่มีลูกหลานแบบดูเพล็กซ์
dx:i:-1
สำหรับการอ่านแบบ simplex ซึ่งมีลูกหลานแบบดูเพล็กซ์
โดราโดจะรายงานอัตราดูเพล็กซ์เป็นจำนวนนิวคลีโอไทด์ในการเรียกเบสดูเพล็กซ์คูณด้วยสองและหารด้วยจำนวนนิวคลีโอไทด์ทั้งหมดในการเรียกเบสแบบซิมเพล็กซ์ ค่านี้เป็นค่าประมาณที่ใกล้เคียงสำหรับสัดส่วนของนิวคลีโอไทด์ที่เข้าร่วมในการเรียกเบสแบบดูเพล็กซ์
การเรียกเบสแบบดูเพล็กซ์สามารถทำได้ด้วยการตรวจจับฐานที่ปรับเปลี่ยน ทำให้เกิดการเรียกเฮมิเมทิลเลชันสำหรับการอ่านแบบดูเพล็กซ์:
$ dorado duplex hac,5mCG_5hmCG pod5s/ > duplex.bam
ข้อมูลเพิ่มเติมเกี่ยวกับวิธีการแสดงการเรียกเฮมิเมทิลเลชันสามารถพบได้ในหน้า 7 ของเอกสารข้อกำหนด SAM (เวอร์ชัน aa7440d) และเอกสารประกอบ Modkit
Dorado รองรับการจัดตำแหน่ง basecall ที่มีอยู่หรือสร้างเอาต์พุตที่สอดคล้องโดยตรง
หากต้องการจัดแนวเบสคอลที่มีอยู่ ให้รัน:
$ dorado aligner <index> <reads> > aligned.bam
โดยที่ index
คือการอ้างอิงเพื่อจัดแนวให้อยู่ในรูปแบบ (FASTQ/FASTA/.mmi) และ reads
เป็นโฟลเดอร์หรือไฟล์ในรูปแบบ HTS ใดๆ
เมื่ออ่านจากโฟลเดอร์อินพุต dorado aligner
ยังรองรับการปล่อยไฟล์ที่ถูกจัดเรียงไปยังโฟลเดอร์เอาต์พุต ซึ่งจะรักษาโครงสร้างไฟล์ของอินพุต:
$ dorado aligner <index> <input_read_folder> --output-dir <output_read_folder>
สรุปการจัดตำแหน่งที่มีสถิติการจัดตำแหน่งสำหรับการอ่านแต่ละครั้งสามารถสร้างขึ้นได้ด้วยตัวเลือก --emit-summary
ไฟล์จะถูกบันทึกไว้ในโฟลเดอร์ --output-dir
หากต้องการ basecall ด้วยการจัดตำแหน่งด้วย duplex หรือ simplex ให้รันด้วยตัวเลือก --reference
:
$ dorado basecaller <model> <reads> --reference <index> > calls.bam
การจัดตำแหน่งจะใช้ minimap2 และโดยค่าเริ่มต้นจะใช้ค่าที่ตั้งล่วงหน้า lr:hq
สิ่งนี้สามารถแทนที่ได้โดยการส่งสตริงตัวเลือกแผนที่ย่อ --mm2-opts
โดยใช้ตัวเลือก '-x ' และ/หรือตัวเลือกแต่ละตัว เช่น -k
และ -w
เพื่อตั้งค่า kmer และขนาดหน้าต่างตามลำดับ สำหรับรายการตัวเลือก minimap2 ที่รองรับทั้งหมด ให้ใช้ '--mm2-opts --help' ตัวอย่างเช่น:
$ dorado aligner <index> <input_read_folder> --output-dir <output_read_folder> --mm2-opt "-x splice --junc-bed <annotations_file>" $ dorado aligner <index> <input_read_folder> --output-dir <output_read_folder> --mm2-opt --help $ dorado basecaller <model> <reads> --reference <index> --mm2-opt "-k 15 -w 10" > calls.bam
คำสั่ง dorado summary
ส่งออกไฟล์ที่คั่นด้วยแท็บพร้อมข้อมูลลำดับระดับการอ่านจากไฟล์ BAM ที่สร้างขึ้นระหว่างการเรียกเบส หากต้องการสร้างสรุป ให้รัน:
$ dorado summary <bam> > summary.tsv
โปรดทราบว่าการสร้างสรุปใช้ได้เฉพาะกับการอ่านที่เรียกจากไฟล์ POD5 เท่านั้น การอ่านที่เรียกจากไฟล์ .fast5 เข้ากันไม่ได้กับคำสั่งสรุป
Dorado รองรับการจำแนกประเภทบาร์โค้ดสำหรับการโทรพื้นฐานที่มีอยู่ รวมถึงการสร้างการโทรพื้นฐานที่จัดประเภทโดยตรง
ในโหมดนี้ การอ่านจะถูกจัดประเภทออกเป็นกลุ่มบาร์โค้ดในระหว่างการเรียกเบสซึ่งเป็นส่วนหนึ่งของคำสั่งเดียวกัน หากต้องการเปิดใช้งาน ให้รัน:
$ dorado basecaller <model> <reads> --kit-name <barcode-kit-name> > calls.bam
ซึ่งจะส่งผลให้มีสตรีมเอาต์พุตเดี่ยวพร้อมการอ่านแบบแยกประเภท การจัดหมวดหมู่จะปรากฏในชื่อกลุ่มการอ่านและในแท็ก BC
ของบันทึกเอาต์พุต
ตามค่าเริ่มต้น Dorado จะถูกตั้งค่าให้ตัดบาร์โค้ดออกจากการอ่าน หากต้องการปิดใช้งานการตัดแต่ง ให้เพิ่ม --no-trim
ใน cmdline
การเรียนรู้พฤติกรรมเริ่มต้นสำหรับบาร์โค้ดแบบปลายคู่คือการค้นหาที่ปลายด้านใดด้านหนึ่งของการอ่าน ซึ่งส่งผลให้อัตราการจำแนกประเภทสูงขึ้น แต่ก็อาจส่งผลให้มีการนับผลบวกลวงสูงขึ้นเช่นกัน เพื่อแก้ไขปัญหานี้ dorado basecaller
ยังมีตัวเลือก --barcode-both-ends
เพื่อบังคับให้ตรวจพบบาร์โค้ด double-ended ที่ปลายทั้งสองข้างก่อนที่จะจำแนกประเภท วิธีนี้จะช่วยลดผลบวกลวงได้อย่างมาก แต่ยังลดอัตราการจำแนกประเภทโดยรวมด้วย
เอาต์พุตจาก dorado basecaller
สามารถดีมัลติเพล็กซ์เป็น BAM ต่อบาร์โค้ดได้โดยใช้ dorado demux
เช่น
$ dorado demux --output-dir <output-dir> --no-classify <input-bam>
สิ่งนี้จะส่งออกไฟล์ BAM ต่อบาร์โค้ดใน output-dir
ข้อมูลบาร์โค้ดจะปรากฏในส่วนหัว BAM RG
ด้วย ดังนั้นการแยกมัลติเพล็กซ์จึงเป็นไปได้ผ่าน samtools split
เช่น
$ samtools split -u <output-dir>/unclassified.bam -f "<output-dir>/<prefix>_%!.bam" <input-bam>
อย่างไรก็ตาม samtools split
ใช้สตริง RG
แบบเต็มเป็นส่วนต่อท้ายชื่อไฟล์ ซึ่งอาจส่งผลให้ชื่อไฟล์ยาวมาก เราขอแนะนำให้ใช้ dorado demux
เพื่อแยก BAM ที่มีบาร์โค้ด
ชุดข้อมูลที่เรียกว่าชุดข้อมูลพื้นฐานที่มีอยู่สามารถจัดประเภทและแยกออกเป็นหลายส่วนใน BAM แบบต่อบาร์โค้ดได้โดยใช้คำสั่ง demux
แบบสแตนด์อโลนใน dorado
หากต้องการใช้สิ่งนี้ ให้เรียกใช้
$ dorado demux --kit-name <kit-name> --output-dir <output-folder-for-demuxed-bams> <reads>
<reads>
อาจเป็นโฟลเดอร์หรือไฟล์เดียวในรูปแบบไฟล์ HTS (เช่น FASTQ, BAM ฯลฯ) หรือสตรีมในรูปแบบ HTS (เช่น เอาต์พุตของการเรียกฐาน dorado)
ซึ่งส่งผลให้มีการสร้างไฟล์ BAM หลายไฟล์ในโฟลเดอร์เอาต์พุต หนึ่งไฟล์ต่อบาร์โค้ด (จัดรูปแบบเป็น KITNAME_BARCODEXX.bam
) และอีกไฟล์หนึ่งสำหรับการอ่านที่ไม่ได้จัดประเภททั้งหมด เช่นเดียวกับโหมดอินไลน์ --no-trim
และ --barcode-both-ends
ก็มีให้เลือกเป็นตัวเลือกเพิ่มเติมเช่นกัน
หากไฟล์อินพุตถูกจัดแนว/เรียงลำดับ และเลือก --no-trim
ไฟล์ BAM เฉพาะบาร์โค้ดเอาต์พุตแต่ละไฟล์จะถูกจัดเรียงและจัดทำดัชนีด้วย อย่างไรก็ตาม หากเปิดใช้งานการตัดแต่ง (ซึ่งเป็นค่าเริ่มต้น) ข้อมูลการจัดตำแหน่งจะถูกลบออก และ BAM เอาต์พุตจะไม่ถูกจัดแนว ซึ่งทำได้เนื่องจากแท็กการจัดตำแหน่งและตำแหน่งจะใช้งานไม่ได้เมื่อมีการเปลี่ยนแปลงลำดับ
นี่คือตัวอย่างโฟลเดอร์เอาต์พุต
$ dorado demux --kit-name SQK-RPB004 --output-dir /tmp/demux reads.fastq $ ls -1 /tmp/demux SQK-RPB004_barcode01.bam SQK-RPB004_barcode02.bam SQK-RPB004_barcode03.bam ... unclassified.bam
ไฟล์สรุปที่แสดงรายการการอ่านแต่ละรายการและบาร์โค้ดที่จัดประเภทสามารถสร้างขึ้นได้ด้วยตัวเลือก --emit-summary
ใน dorado demux
ไฟล์จะถูกบันทึกไว้ในโฟลเดอร์ --output-dir
หากไฟล์ข้อมูลอินพุตมีข้อมูลการแมป ข้อมูลนี้สามารถเก็บไว้ในไฟล์เอาต์พุตได้ เมื่อต้องการทำเช่นนี้ คุณต้องใช้ตัวเลือก --no-trim
การตัดบาร์โค้ดจะทำให้ข้อมูลการแมปใดๆ ที่อาจมีอยู่ในไฟล์อินพุตเป็นโมฆะ ดังนั้น แอปพลิเคชันจะยกเว้นข้อมูลการแมปใดๆ หากไม่ได้ระบุ --no-trim
นอกจากนี้ยังเป็นไปได้ที่จะรับ dorado demux
เพื่อเรียงลำดับและจัดทำดัชนีไฟล์ bam เอาท์พุตใด ๆ ที่มีการอ่านที่แมป หากต้องการเปิดใช้งานให้ใช้ตัวเลือก --sort-bam
หากคุณใช้ตัวเลือกนี้ คุณต้องใช้ตัวเลือก --no-trim
ด้วย เนื่องจากการตัดแต่งจะป้องกันไม่ให้ข้อมูลการแมปรวมอยู่ในไฟล์เอาต์พุต ไฟล์ดัชนี (นามสกุล .bai) จะถูกสร้างขึ้นสำหรับไฟล์ BAM ที่มีการอ่านที่แมปและถูกจัดเรียงเท่านั้น โปรดทราบว่าสำหรับชุดข้อมูลขนาดใหญ่ในการเรียงลำดับไฟล์เอาต์พุตอาจใช้เวลาสักครู่
Dorado สามารถใช้แผ่นตัวอย่างเพื่อจำกัดการจำแนกประเภทบาร์โค้ดไว้เฉพาะที่มีอยู่ และใช้นามแฝงกับการจำแนกประเภทที่ตรวจพบ สิ่งนี้เปิดใช้งานได้โดยการส่งเส้นทางไปยังแผ่นงานตัวอย่างไปยังอาร์กิวเมนต์ --sample-sheet
เมื่อใช้คำสั่ง basecaller
หรือ demux
ดูที่นี่สำหรับข้อมูลเพิ่มเติม
นอกเหนือจากการรองรับชุดบาร์โค้ดมาตรฐานจาก Oxford Nanopore แล้ว Dorado ยังรองรับการระบุการจัดเรียงและลำดับชุดบาร์โค้ดแบบกำหนดเองอีกด้วย ซึ่งทำได้โดยการส่งไฟล์การจัดเรียงบาร์โค้ดผ่านอาร์กิวเมนต์ --barcode-arrangement
(ไปยัง dorado demux
หรือ dorado basecaller
) ลำดับบาร์โค้ดที่กำหนดเองสามารถระบุได้ผ่านทางตัวเลือก --barcode-sequences
ดูที่นี่สำหรับรายละเอียดเพิ่มเติม
Dorado ได้รับการสนับสนุนเบื้องต้นในการประมาณความยาวส่วนท้ายของ poly(A) สำหรับ cDNA (ชุดอุปกรณ์ PCS และ PCB) และ RNA โปรดทราบว่าการอ่าน Oxford Nanopore cDNA จะถูกจัดลำดับในสองทิศทางที่แตกต่างกัน และการประมาณความยาวส่วนท้ายของ Dorado poly(A) จะจัดการทั้ง (โฮโมโพลีเมอร์ A และ T) คุณลักษณะนี้สามารถเปิดใช้งานได้โดยส่ง --estimate-poly-a
ไปยังคำสั่ง basecaller
มันถูกปิดใช้งานโดยค่าเริ่มต้น ความยาวส่วนท้ายโดยประมาณจะถูกจัดเก็บไว้ในแท็ก pt:i
ของบันทึกเอาต์พุต การอ่านที่ไม่สามารถประมาณความยาวส่วนท้ายได้จะไม่มีแท็ก pt:i
ลำดับไพรเมอร์ที่กำหนดเองและการประมาณค่าส่วนท้ายที่ถูกขัดจังหวะสามารถกำหนดค่าได้ผ่านตัวเลือก --poly-a-config
ดูที่นี่สำหรับรายละเอียดเพิ่มเติม
Dorado รองรับการแก้ไขข้อผิดพลาดแบบอ่านครั้งเดียวด้วยการบูรณาการอัลกอริทึม HERRO HERRO ใช้การจัดตำแหน่งแบบ all-vs-all ตามด้วยการแก้ไขแบบรับรู้ haplotype โดยใช้โมเดลการเรียนรู้เชิงลึกเพื่อให้ได้ความแม่นยำในการอ่านครั้งเดียวที่สูงขึ้น การอ่านที่ถูกแก้ไขมีประโยชน์เป็นหลักสำหรับการสร้างชุดประกอบ เดอโนโว ของสิ่งมีชีวิตดิพลอยด์
หากต้องการแก้ไขการอ่าน ให้รัน:
$ dorado correct reads.fastq > corrected_reads.fasta
Dorado Correct รองรับ FASTQ(.gz) เป็นอินพุตเท่านั้น และสร้างไฟล์ FASTA เป็นเอาต์พุต อินพุตสามารถคลายการบีบอัดหรือบีบอัดด้วย bgz
ไฟล์ดัชนีจะถูกสร้างขึ้นสำหรับไฟล์ FASTQ อินพุตในโฟลเดอร์เดียวกัน เว้นแต่จะมีไฟล์อยู่แล้ว โปรดตรวจสอบให้แน่ใจว่าโฟลเดอร์ที่มีไฟล์อินพุตสามารถเขียนได้โดยกระบวนการ dorado
และมีพื้นที่ดิสก์เพียงพอ
เครื่องมือแก้ไขข้อผิดพลาดต้องใช้ทั้งการประมวลผลและหน่วยความจำมาก ด้วยเหตุนี้ จึงทำงานได้ดีที่สุดบนระบบที่มี CPU คอร์ประสิทธิภาพสูงหลายคอร์ ( >= 64 คอร์) หน่วยความจำระบบขนาดใหญ่ ( >= 256GB) และ GPU สมัยใหม่ที่มี VRAM ขนาดใหญ่ ( >= 32GB)
น้ำหนักโมเดลที่จำเป็นทั้งหมดจะถูกดาวน์โหลดโดยอัตโนมัติโดย Dorado อย่างไรก็ตาม ยังสามารถดาวน์โหลดตุ้มน้ำหนักล่วงหน้าและส่งผ่านบรรทัดคำสั่งได้ ในกรณีที่มีการดำเนินการแบบออฟไลน์ โดยเรียกใช้:
$ dorado download --model herro-v1 $ dorado correct -m herro-v1 reads.fastq > corrected_reads.fasta
ขณะนี้ Dorado Correct ยังมีฟีเจอร์ในการรันการแมป (ระยะ CPU เท่านั้น) และการอนุมาน (ระยะที่ใช้ GPU มาก) แยกกัน ซึ่งช่วยให้สามารถแยกขั้นตอนหนักๆ ของ CPU และ GPU ออกเป็นแต่ละขั้นตอน ซึ่งสามารถเรียกใช้บนโหนดที่แตกต่างกันด้วยคุณลักษณะการประมวลผลที่เหมาะสมได้ ตัวอย่าง:
$ dorado correct reads.fastq --to-paf > overlaps.paf $ dorado correct reads.fastq --from-paf overlaps.paf > corrected_reads.fasta
ขณะนี้ Gzipped PAF ยังไม่รองรับตัวเลือก --from-paf
นอกจากนี้ หากการรันหยุดหรือล้มเหลว Dorado Correct จะมีฟังก์ชัน "ดำเนินการต่อ" คุณลักษณะประวัติย่อจะรับรายการการอ่านที่แก้ไขก่อนหน้านี้ (เช่น ดัชนี .fai
จากการรันครั้งก่อน) และข้ามการอ่านที่ประมวลผลก่อนหน้านี้:
$ samtools faidx corrected_reads.1.fasta # Output from the previously interrupted run. $ dorado correct reads.fastq --resume-from corrected_reads.1.fasta.fai > corrected_reads.2.fasta
รูปแบบไฟล์อินพุตสำหรับคุณสมบัติ --resume-from
อาจเป็นไฟล์ข้อความธรรมดาใดๆ โดยที่คอลัมน์แรกที่คั่นด้วยช่องว่าง (หรือแถวเต็ม) ประกอบด้วยชื่อลำดับที่จะข้าม หนึ่งรายการต่อแถว
ในกรณีที่กระบวนการใช้หน่วยความจำมากเกินไปสำหรับระบบของคุณ ให้ลองรันด้วยขนาดดัชนีที่เล็กลง ตัวอย่างเช่น:
$ dorado correct reads.fastq --index-size 4G > corrected_reads.fasta
ขนาดแบตช์การอนุมานที่คำนวณอัตโนมัติอาจยังสูงเกินไปสำหรับระบบของคุณ หากคุณพบคำเตือน/ข้อผิดพลาดเกี่ยวกับหน่วยความจำ GPU ที่มีอยู่ ให้ลองลดขนาดแบตช์ / เลือกด้วยตนเอง ตัวอย่างเช่น:
$ dorado correct reads.fastq --batch-size <number> > corrected_reads.fasta
ในกรณีที่ไฟล์ FASTA เอาต์พุตของคุณมีจำนวนการอ่านที่แก้ไขแล้วต่ำมากเมื่อเทียบกับอินพุต โปรดตรวจสอบสิ่งต่อไปนี้:
ชุดข้อมูลอินพุตมีความยาวการอ่านเฉลี่ย >=10kbp
Dorado Correct ได้รับการออกแบบมาเพื่อการอ่านแบบยาว และจะไม่ทำงานบนไลบรารีแบบสั้น
ความครอบคลุมของอินพุตมีความสมเหตุสมผล โดยควร >=30x
ตรวจสอบคุณสมบัติพื้นฐานโดยเฉลี่ยของชุดข้อมูลอินพุต Dorado Correct คาดหวังอินพุตที่แม่นยำสำหรับทั้งการทำแผนที่และการอนุมาน
หากต้องการดาวน์โหลดโมเดล Dorado ที่มีอยู่ทั้งหมด ให้รัน:
$ dorado download --model all
ชื่อของแบบจำลอง Dorado มีโครงสร้างอย่างเป็นระบบ แต่ละส่วนที่สอดคล้องกับแง่มุมที่แตกต่างกันของแบบจำลอง ซึ่งรวมถึงการตั้งค่าทางเคมีและการดำเนินการ ด้านล่างนี้คือคำอธิบายชื่อรุ่นตัวอย่าง:
ประเภทตัววิเคราะห์ ( dna
) : หมายถึงประเภทของตัววิเคราะห์ที่กำลังจัดลำดับ สำหรับการเรียงลำดับดีเอ็นเอจะแสดงเป็น dna
หากคุณใช้ชุด Direct RNA Sequencing Kit จะเป็น rna002
หรือ rna004
ขึ้นอยู่กับชุดอุปกรณ์
ประเภทรูพรุน ( r10.4.1
) : ส่วนนี้สอดคล้องกับประเภทของโฟลว์เซลล์ที่ใช้ ตัวอย่างเช่น FLO-MIN114/FLO-FLG114 ระบุด้วย r10.4.1
ในขณะที่ FLO-MIN106D/FLO-FLG001 ระบุด้วย r9.4.1
ประเภทเคมี ( e8.2
) : หมายถึงประเภทเคมีซึ่งสอดคล้องกับชุดอุปกรณ์ที่ใช้สำหรับการจัดลำดับ ตัวอย่างเช่น เคมีชุดที่ 14 แสดงด้วย e8.2
และชุดอุปกรณ์ 10 หรือชุดที่ 9 แสดงด้วย e8
ความเร็วการโยกย้าย ( 400bps
) : พารามิเตอร์นี้ ซึ่งเลือกในการตั้งค่าการรันใน MinKNOW หมายถึงความเร็วของการโยกย้าย ก่อนที่จะเริ่มการวิ่ง ระบบจะถามว่าคุณต้องการวิ่งที่ 260 bps หรือ 400 bps แบบแรกให้ผลลัพธ์ที่แม่นยำกว่าแต่ให้ข้อมูลน้อยกว่า ตั้งแต่ MinKNOW เวอร์ชัน 23.04 ตัวเลือก 260 bps เลิกใช้แล้ว
Model Type ( hac
) : หมายถึงขนาดของโมเดล โดยที่โมเดลขนาดใหญ่จะให้เบสคอลที่แม่นยำมากกว่า แต่ใช้เวลามากกว่า โมเดลทั้งสามประเภท ได้แก่ fast
, hac
และ sup
แบบจำลองที่ fast
นั้นเร็วที่สุด sup
แม่นยำที่สุด และ hac
ให้ความสมดุลระหว่างความเร็วและความแม่นยำ สำหรับผู้ใช้ส่วนใหญ่ แนะนำให้ใช้โมเดล hac
Model Version Number ( v5.0.0
) : หมายถึงเวอร์ชันของโมเดล การอัปเดตโมเดลจะมีการเผยแพร่เป็นประจำ และหมายเลขเวอร์ชันที่สูงกว่ามักบ่งบอกถึงความแม่นยำที่มากขึ้น
ด้านล่างนี้คือตารางของโมเดลการโทรพื้นฐานที่มีอยู่และโมเดลการโทรพื้นฐานที่ได้รับการปรับเปลี่ยนซึ่งสามารถใช้ได้กับโมเดลเหล่านั้น รุ่นที่เป็นตัวหนาใช้สำหรับเงื่อนไขที่ออกล่าสุดพร้อมข้อมูล 5 kHz
การกำหนดเวอร์ชันของโมเดลการปรับเปลี่ยนจะเชื่อมโยงกับโมเดล basecalling ซึ่งหมายความว่าเวอร์ชันการแก้ไขจะถูกรีเซ็ตสำหรับการเปิดตัวโมเดล Simplex ใหม่แต่ละครั้ง ตัวอย่างเช่น 6mA@v1
ที่เข้ากันได้กับรุ่นการโทรพื้นฐาน v4.3.0
นั้นใหม่กว่า 6mA@v2
ที่เข้ากันได้กับรุ่นการโทรพื้นฐาน v4.2.0
โมเดลการเรียกฐาน | เข้ากันได้ การปรับเปลี่ยน | การปรับเปลี่ยน แบบอย่าง เวอร์ชัน | ข้อมูล การสุ่มตัวอย่าง ความถี่ |
---|---|---|---|
[email protected] | 5 กิโลเฮิร์ตซ์ | ||
[email protected] | 4mC_5mC 5mCG_5hmCG 5mC_5hmC 6mA | เวอร์ชัน 2 เวอร์ชัน 2 เวอร์ชัน 2 เวอร์ชัน 2 | 5 กิโลเฮิร์ตซ์ |
[email protected] | 4mC_5mC 5mCG_5hmCG 5mC_5hmC 6mA | เวอร์ชัน 2 เวอร์ชัน 2.0.1 เวอร์ชัน 2.0.1 เวอร์ชัน 2 | 5 กิโลเฮิร์ตซ์ |
[email protected] | 5 กิโลเฮิร์ตซ์ | ||
[email protected] | 5mCG_5hmCG 5mC_5hmC 6mA | เวอร์ชัน 1 เวอร์ชัน 1 เวอร์ชัน 2 | 5 กิโลเฮิร์ตซ์ |
[email protected] | 5mCG_5hmCG 5mC_5hmC 6mA | เวอร์ชัน 1 เวอร์ชัน 1 เวอร์ชัน 2 | 5 กิโลเฮิร์ตซ์ |
[email protected] | 5mCG_5hmCG | เวอร์ชัน 2 | 5 กิโลเฮิร์ตซ์ |
[email protected] | 5mCG_5hmCG | เวอร์ชัน 2 | 5 กิโลเฮิร์ตซ์ |
[email protected] | 5mCG_5hmCG 5mC_5hmC 5mC 6mA | เวอร์ชัน 3.1 เวอร์ชัน 1 เวอร์ชัน 2 v3 | 5 กิโลเฮิร์ตซ์ |
[email protected] | 5mCG_5hmCG | เวอร์ชัน 2 | 4 กิโลเฮิร์ตซ์ |
[email protected] | 5mCG_5hmCG | เวอร์ชัน 2 | 4 กิโลเฮิร์ตซ์ |
[email protected] | 5mCG_5hmCG | เวอร์ชัน 2 | 4 กิโลเฮิร์ตซ์ |
[email protected] | 5mCG_5hmCG | เวอร์ชัน 2 | 4 กิโลเฮิร์ตซ์ |
[email protected] | 5mCG_5hmCG | เวอร์ชัน 2 | 4 กิโลเฮิร์ตซ์ |
[email protected] | 5mCG_5hmCG | เวอร์ชัน 2 | 4 กิโลเฮิร์ตซ์ |
[email protected] | 5mCG_5hmCG | เวอร์ชัน 2 | 4 กิโลเฮิร์ตซ์ |
[email protected] | 5mCG_5hmCG | เวอร์ชัน 2 | 4 กิโลเฮิร์ตซ์ |
[email protected] | 5mCG_5hmCG | เวอร์ชัน 2 | 4 กิโลเฮิร์ตซ์ |
[email protected] | 5mCG_5hmCG | เวอร์ชัน 2 | 4 กิโลเฮิร์ตซ์ |
[email protected] | 5mCG_5hmCG | เวอร์ชัน 2 | 4 กิโลเฮิรตซ์ |
[email protected] | 5mCG_5hmCG | เวอร์ชัน 2 | 4 กิโลเฮิร์ตซ์ |
[email protected] | 5เอ็มซีจี | เวอร์ชัน 2 | 4 กิโลเฮิร์ตซ์ |
[email protected] | 5เอ็มซีจี | เวอร์ชัน 2 | 4 กิโลเฮิร์ตซ์ |
[email protected] | 5เอ็มซีจี | เวอร์ชัน 2 | 4 กิโลเฮิร์ตซ์ |
[email protected] | 5เอ็มซีจี | เวอร์ชัน 2 | 4 กิโลเฮิร์ตซ์ |
[email protected] | 5เอ็มซีจี | เวอร์ชัน 2 | 4 กิโลเฮิร์ตซ์ |
[email protected] | 5เอ็มซีจี | เวอร์ชัน 2 | 4 กิโลเฮิรตซ์ |
[email protected] | 4 กิโลเฮิร์ตซ์ | ||
[email protected] | 5mCG_5hmCG 5เอ็มซีจี | v0 เวอร์ชัน 0.1 | 4 กิโลเฮิร์ตซ์ |
[email protected] | 5mCG_5hmCG 5เอ็มซีจี | v0 เวอร์ชัน 0.1 | 4 กิโลเฮิร์ตซ์ |
[email protected] | 5mCG_5hmCG 5เอ็มซีจี | v0 เวอร์ชัน 0.1 | 4 กิโลเฮิร์ตซ์ |
หมายเหตุ: รูปแบบ BAM ไม่รองรับฐาน U
ดังนั้น เมื่อ Dorado ทำการเรียกเบส RNA ไฟล์เอาต์พุตที่ได้จะรวม T
แทน U
ซึ่งมีความสอดคล้องกันในประเภทไฟล์เอาต์พุต
โมเดลการเรียกฐาน | เข้ากันได้ การปรับเปลี่ยน | การปรับเปลี่ยน แบบอย่าง เวอร์ชัน | ข้อมูล การสุ่มตัวอย่าง ความถี่ |
---|---|---|---|
[email protected] | 4 กิโลเฮิร์ตซ์ | ||
[email protected] | m5C m6A_DRACH inosine_m6A pseU | เวอร์ชัน 1 เวอร์ชัน 1 เวอร์ชัน 1 เวอร์ชัน 1 | 4 กิโลเฮิร์ตซ์ |
[email protected] | m5C m6A_DRACH inosine_m6A pseU | เวอร์ชัน 1 เวอร์ชัน 1 เวอร์ชัน 1 เวอร์ชัน 1 | 4 กิโลเฮิร์ตซ์ |
[email protected] | 4 กิโลเฮิร์ตซ์ | ||
[email protected] | m6A m6A_DRACH pseU | เวอร์ชัน 1 เวอร์ชัน 1 เวอร์ชัน 1 | 4 กิโลเฮิร์ตซ์ |
[email protected] | m6A m6A_DRACH pseU | เวอร์ชัน 1 เวอร์ชัน 1 เวอร์ชัน 1 | 4 กิโลเฮิร์ตซ์ |
[email protected] | 4 กิโลเฮิร์ตซ์ | ||
[email protected] | 4 กิโลเฮิร์ตซ์ | ||
[email protected] | m6A_DRACH | เวอร์ชัน 1 | 4 กิโลเฮิรตซ์ |
rna002_70bps_fast@v3 | 3 กิโลเฮิร์ตซ์ | ||
rna002_70bps_hac@v3 | 3 กิโลเฮิร์ตซ์ |
อาร์กิวเมนต์ model
ใน dorado สามารถระบุพาธของโมเดลหรือโมเดล คอมเพล็กซ์ ได้ โมเดลคอมเพล็กซ์จะต้องเริ่มต้นด้วย ความเร็วของโมเดลซิมเพล็กซ์ และเป็นไปตามไวยากรณ์นี้:
(fast|hac|sup)[@(version|latest)][,modification[@(version|latest)]][,...]
โมเดลการแก้ไขที่เลือกโดยอัตโนมัติจะตรงกับเวอร์ชันโมเดลพื้นฐานเสมอ และจะเป็นเวอร์ชันที่เข้ากันได้ล่าสุด เว้นแต่ผู้ใช้จะตั้งค่าเวอร์ชันเฉพาะไว้ การเลือกโมเดลการปรับเปลี่ยนอัตโนมัติจะไม่อนุญาตให้มีการผสมโมเดลการปรับเปลี่ยนซึ่งเชื่อมโยงกับเวอร์ชันโมเดล simplex ที่แตกต่างกัน
นี่คือตัวอย่างบางส่วนของโมเดลคอมเพล็กซ์:
โมเดลคอมเพล็กซ์ | คำอธิบาย |
---|---|
เร็ว | รุ่น เร็ว ที่เข้ากันได้ล่าสุด |
แฮค | รุ่น แฮ็ก ที่เข้ากันได้ล่าสุด |
จีบ | Sup รุ่นใหม่ล่าสุดที่เข้ากันได้ |
hac@ล่าสุด | โมเดล basecalling hac simplex ล่าสุดที่เข้ากันได้ |
[email protected] | Simplex basecalling hac model พร้อมเวอร์ชัน v4.2.0 |
[email protected] | Simplex basecalling hac model พร้อมเวอร์ชัน v3.5.0 |
แฮค,5mCG_5hmCG | โมเดล hac simplex ที่เข้ากันได้ล่าสุดและโมเดลการปรับเปลี่ยน 5mCG_5hmCG ล่าสุดสำหรับโมเดล basecall ที่เลือก |
แฮค,5mCG_5hmCG@v2 | โมเดล hac simplex ที่เข้ากันได้ล่าสุดและโมเดลการปรับเปลี่ยน 5mCG_5hmCG พร้อมเวอร์ชัน v2.0.0 |
จ่าย,5mCG_5hmCG,6mA | รุ่น sup ที่เข้ากันได้ล่าสุดและรุ่นดัดแปลง 5mCG_5hmCG และ 6mA ที่เข้ากันได้ล่าสุด |
เมื่อกระบวนการเลือกโมเดลอัตโนมัติพบโมเดลที่เหมาะสมโดยให้ข้อมูลอินพุตแล้ว ระบบจะค้นหาไดเร็กทอรีโมเดลที่มีอยู่เพื่อหลีกเลี่ยงการดาวน์โหลดโมเดลโดยไม่จำเป็น พฤติกรรมของการค้นหานี้สามารถควบคุมได้ดังนี้:
การตั้งค่าอาร์กิวเมนต์ --models-directory
CLI - อาร์กิวเมนต์ --models-directory
สามารถใช้เพื่อระบุไดเร็กทอรีที่จะค้นหาโมเดล
การตั้งค่าตัวแปรสภาพแวดล้อม DORADO_MODELS_DIRECTORY
- เหมือนกับการตั้งค่า --models-directory
แต่มีลำดับความสำคัญต่ำกว่าเทียบเท่า CLI
หากไม่ได้ตั้งค่า --models-directory
หรือ DORADO_MODELS_DIRECORY
ไว้ ระบบจะค้นหาไดเร็กทอรีการทำงานปัจจุบัน
หาก --models-directory
หรือ DORADO_MODELS_DIRECTORY
ได้รับการตั้งค่าโดยอัตโนมัติ โมเดลที่ดาวน์โหลดจะยังคงอยู่ ไม่เช่นนั้น โมเดลจะถูกดาวน์โหลดลงในไดเร็กทอรีชั่วคราวในเครื่องและถูกลบหลังจากโดราโดเสร็จสิ้น
Dorado มาพร้อมกับไลบรารีที่จำเป็น (เช่น CUDA) สำหรับการดำเนินการ อย่างไรก็ตาม สำหรับระบบปฏิบัติการบางระบบ ไลบรารีระบบอาจถูกเลือกมากกว่าของ Dorado ความคลาดเคลื่อนนี้อาจส่งผลให้เกิดข้อผิดพลาดต่างๆ เช่น CuBLAS error 8
เพื่อแก้ไขปัญหานี้ คุณต้องตั้งค่า LD_LIBRARY_PATH
ให้ชี้ไปที่ไลบรารีของ Dorado ใช้คำสั่งดังต่อไปนี้บน Linux (เปลี่ยนเส้นทางตามความเหมาะสม):
$ export LD_LIBRARY_PATH=<PATH_TO_DORADO>/dorado-x.y.z-linux-x64/lib:$LD_LIBRARY_PATH
บน macOS การส่งออกที่เทียบเท่าจะเป็น (เปลี่ยนเส้นทางตามความเหมาะสม):
$ export DYLD_LIBRARY_PATH=<PATH_TO_DORADO>/dorado-x.y.z-osx-arm64/lib:$DYLD_LIBRARY_PATH
การเรียกเบสแบบดูเพล็กซ์เป็นกระบวนการที่ต้องใช้ IO มาก และสามารถทำงานได้ไม่ดีหากใช้ที่เก็บข้อมูลบนเครือข่ายหรือ HDD โดยทั่วไปสามารถปรับปรุงได้โดยการแยกไฟล์ POD5 อย่างเหมาะสม
ขั้นแรกให้ติดตั้งเครื่องมือ POD5 python:
สามารถดูเอกสารประกอบ POD5 ได้ที่นี่
$ pip install pod5
จากนั้นเรียกใช้ pod5 view
เพื่อสร้างตารางที่มีข้อมูลที่จะแยกเฉพาะข้อมูล "ช่องทาง"
$ pod5 view /path/to/your/dataset/ --include "read_id, channel" --output summary.tsv
สิ่งนี้จะสร้างไฟล์ "summary.tsv" ซึ่งควรมีลักษณะดังนี้:
read_id channel 0000173c-bf67-44e7-9a9c-1ad0bc728e74 109 002fde30-9e23-4125-9eae-d112c18a81a7 463 ...
ตอนนี้ให้รัน pod5 subset
เพื่อคัดลอกบันทึกจากข้อมูลต้นฉบับของคุณไปยังเอาต์พุตต่อช่อง การดำเนินการนี้อาจใช้เวลาสักครู่ขึ้นอยู่กับขนาดของชุดข้อมูลของคุณ
$ pod5 subset /path/to/your/dataset/ --summary summary.tsv --columns channel --output split_by_channel
คำสั่งด้านบนจะสร้างไดเร็กทอรีเอาต์พุต split_by_channel
และเขียนไฟล์ pod5 หนึ่งไฟล์ต่อแชนเนลที่ไม่ซ้ำลงในนั้น การเรียกการอ่านแบบแยกเหล่านี้แบบดูเพล็กซ์จะเร็วขึ้นมาก
หากรันการเรียกเบสแบบดูเพล็กซ์ในลักษณะแบบกระจาย (เช่น บนคลัสเตอร์ SLURM หรือ Kubernetes) สิ่งสำคัญคือต้องแยกไฟล์ POD5 ตามที่อธิบายไว้ข้างต้น เหตุผลก็คือการเรียกเบสแบบดูเพล็กซ์จำเป็นต้องมีการรวมการอ่านจากการรันลำดับทั้งหมด ซึ่งจะกระจายไปยังไฟล์ POD5 หลายไฟล์ กลยุทธ์การแยกที่อธิบายไว้ข้างต้นช่วยให้แน่ใจว่าการอ่านทั้งหมดที่จำเป็นต้องรวมอยู่ในไฟล์ POD5 เดียวกัน เมื่อดำเนินการแยกแล้ว ก็สามารถดำเนินงานหลายงานกับชุดย่อยที่เล็กกว่าของ POD5 ได้ (เช่น หนึ่งงานต่อ 100 ช่องสัญญาณ) ซึ่งจะทำให้สามารถกระจายการเรียกเบสข้ามโหนดบนคลัสเตอร์ได้ สิ่งนี้จะสร้าง BAM หลายรายการซึ่งสามารถรวมเข้าด้วยกันได้ วิธีนี้ยังให้ความยืดหยุ่นราวกับว่างานใดๆ ล้มเหลว ก็สามารถรีสตาร์ทได้โดยไม่ต้องรันการเรียกเบสอีกครั้งกับชุดข้อมูลทั้งหมด
Dorado ทำงานบน GPU ได้หลากหลาย แต่ได้รับการพัฒนาสำหรับ Nvidia A100/H100 และ Apple Silicon เป็นหลัก Dorado พยายามค้นหาขนาดแบตช์ที่เหมาะสมที่สุดสำหรับการเรียกเบส อย่างไรก็ตาม สำหรับ GPU ที่มี RAM ต่ำบางรุ่น ผู้ใช้อาจประสบปัญหาหน่วยความจำไม่เพียงพอ
วิธีแก้ไขที่เป็นไปได้สำหรับปัญหานี้อาจเป็นการตั้งค่าขนาดแบตช์ด้วยตนเองโดยใช้คำสั่งต่อไปนี้:
dorado basecaller --batchsize 64 ...
หมายเหตุ: ไม่แนะนำให้ลดการใช้หน่วยความจำโดยการแก้ไขพารามิเตอร์ chunksize
เนื่องจากจะส่งผลต่อผลลัพธ์การเรียกฐาน
การใช้งาน GPU ที่ต่ำอาจทำให้ความเร็วในการเรียกพื้นฐานลดลง ปัญหานี้สามารถระบุได้โดยใช้เครื่องมือเช่น nvidia-smi
และ nvtop
การใช้งาน GPU ที่ต่ำมักเกิดจากปัญหาคอขวดของ I/O ในการเรียกเบส ต่อไปนี้คือขั้นตอนเล็กๆ น้อยๆ ที่คุณสามารถทำได้เพื่อปรับปรุงสถานการณ์:
เลือกใช้ POD5 แทน .fast5: POD5 มีประสิทธิภาพ I/O ที่เหนือกว่า และจะปรับปรุงความเร็วการโทรพื้นฐานในสภาพแวดล้อมที่จำกัดของ I/O
ถ่ายโอนข้อมูลไปยังดิสก์ภายในเครื่องก่อนที่จะทำการเบส: การเรียกเบสที่ช้ามักเกิดขึ้นเนื่องจากดิสก์เครือข่ายไม่สามารถจัดหา Dorado ด้วยความเร็วที่เพียงพอ เพื่อบรรเทาปัญหานี้ ตรวจสอบให้แน่ใจว่าข้อมูลของคุณอยู่ใกล้กับเครื่องโฮสต์ของคุณมากที่สุด
เลือก SSD บน HDD: โดยเฉพาะอย่างยิ่งสำหรับการโทรแบบดูเพล็กซ์ การใช้ SSD ภายในสามารถให้ข้อได้เปรียบด้านความเร็วได้อย่างมาก นี่เป็นเพราะอัลกอริธึมการเรียกเบสแบบดูเพล็กซ์ต้องอาศัยการเข้าถึงข้อมูลแบบสุ่มจำนวนมาก
เมื่อทำงานใน PowerShell บน Windows จะต้องระมัดระวัง เนื่องจากการเข้ารหัสเริ่มต้นสำหรับเอาต์พุตของแอปพลิเคชันโดยทั่วไปจะเป็น UTF-16LE สิ่งนี้จะทำให้ไฟล์เสียหายหากเอาต์พุตมาตรฐานถูกเปลี่ยนเส้นทางไปยังไฟล์ ขอแนะนำให้ใช้อาร์กิวเมนต์ --output-dir
เพื่อปล่อยไฟล์ BAM หากต้องใช้ PowerShell ตัวอย่างเช่น คำสั่งต่อไปนี้จะสร้างเอาต์พุตที่เสียหายซึ่ง samtools ไม่สามารถอ่านได้:
PS > dorado basecaller <args> > out.bam
ให้ใช้:
PS > dorado basecaller <args> --output-dir .
สำหรับรูปแบบเอาต์พุตแบบข้อความ (SAM หรือ FASTQ) เป็นไปได้ที่จะแทนที่การเข้ารหัสในเอาต์พุตโดยใช้คำสั่ง out-file
คำสั่งนี้จะสร้างไฟล์ ASCII SAM ที่มีรูปแบบดี:
PS > dorado basecaller <args> --emit-sam | out-file -encoding Ascii out.sam
โปรดทราบว่า out-file
ที่มีการเข้ารหัส Ascii
จะไม่สร้างไฟล์ BAM ที่มีรูปแบบที่ถูกต้อง
อ่านเพิ่มเติมเกี่ยวกับการเข้ารหัสเอาต์พุต Powershell ที่นี่
(ค) 2024 Oxford Nanopore Technologies PLC.
Dorado ได้รับการจัดจำหน่ายภายใต้เงื่อนไขของ Oxford Nanopore Technologies PLC ใบอนุญาตสาธารณะ เวอร์ชัน 1.0 หากไม่มีการแจกจ่ายสำเนาใบอนุญาตพร้อมกับไฟล์นี้ คุณสามารถขอรับได้ที่ http://nanoporetech.com