Dorado adalah basecaller open source berkinerja tinggi, mudah digunakan, untuk pembacaan Oxford Nanopore.
Satu dapat dieksekusi dengan default yang masuk akal, deteksi dan konfigurasi perangkat keras otomatis.
Berjalan pada silikon Apple (keluarga M1/2) dan GPU Nvidia termasuk multi-GPU dengan penskalaan linier (lihat Platform).
Panggilan dasar yang dimodifikasi.
Panggilan dasar duplex (tonton video berikut untuk pengenalan Duplex).
Klasifikasi kode batang simpleks.
Dukungan untuk output baca yang selaras di SAM/BAM.
Dukungan awal untuk estimasi ekor poli(A).
Dukungan untuk koreksi kesalahan baca tunggal.
Dukungan POD5 untuk kinerja panggilan dasar tertinggi.
Berdasarkan libtorch, C++ API untuk pytorch.
Berbagai pengoptimalan khusus di CUDA dan Metal untuk memaksimalkan kinerja inferensi.
Jika Anda mengalami masalah dalam membangun atau menjalankan Dorado, harap laporkan masalah tersebut.
Pertama, unduh penginstal yang relevan untuk platform Anda:
dorado-0.8.2-linux-x64
dorado-0.8.2-linux-arm64
dorado-0.8.2-osx-arm64
dorado-0.8.2-win64
Setelah arsip .tar.gz
atau .zip
yang relevan diunduh, ekstrak arsip tersebut ke lokasi yang Anda inginkan.
Anda kemudian dapat memanggil Dorado menggunakan jalur lengkap, misalnya:
$ /path/to/dorado-x.y.z-linux-x64/bin/dorado basecaller hac pod5s/ > calls.bam
Atau Anda dapat menambahkan jalur bin ke variabel lingkungan $PATH
Anda, dan menjalankannya dengan perintah dorado
, misalnya:
$ dorado basecaller hac pod5s/ > calls.bam
Lihat DEV.md untuk detail tentang membangun Dorado untuk pengembangan.
Dorado sangat dioptimalkan untuk GPU Nvidia A100 dan H100 dan akan memberikan kinerja maksimal pada sistem dengan GPU ini.
Dorado telah diuji secara ekstensif dan didukung pada sistem berikut:
Platform | GPU/CPU | Persyaratan Perangkat Lunak Minimum |
---|---|---|
Linuxx86_64 | (G)V100, A100 | Pengemudi CUDA ≥450.80.02 |
H100 | Pengemudi CUDA ≥520 | |
Linux arm64 | Jetson Orin | Linux untuk Tegra ≥34.1.1 |
Windowsx86_64 | (G)V100, A100 | Pengemudi CUDA ≥452.39 |
H100 | Pengemudi CUDA ≥520 | |
Apel | Silikon Apple (M1/M2) |
Sistem Linux atau Windows yang tidak tercantum di atas tetapi memiliki GPU Nvidia dengan VRAM ≥8 GB dan arsitektur dari Pascal dan seterusnya (kecuali P100/GP100) belum diuji secara luas tetapi diharapkan dapat berfungsi. Saat melakukan panggilan dasar dengan perangkat Apple, kami merekomendasikan sistem dengan memori terpadu ≥16 GB.
Jika Anda mengalami masalah saat menjalankan sistem Anda, harap laporkan masalahnya.
Tolok Ukur AWS pada GPU Nvidia untuk Dorado 0.3.0 tersedia di sini. Harap diperhatikan: Kecepatan panggilan dasar Dorado terus meningkat, sehingga tolok ukur ini mungkin tidak mencerminkan kinerja pada rilis terbaru.
Untuk performa optimal, Dorado memerlukan input file POD5. Harap konversikan file .fast5 Anda sebelum melakukan panggilan dasar.
Dorado akan secara otomatis mendeteksi memori bebas GPU Anda dan memilih ukuran batch yang sesuai.
Dorado akan otomatis berjalan dalam mode multi-GPU cuda:all
. Jika Anda memiliki koleksi GPU yang heterogen, pilih GPU yang lebih cepat menggunakan tanda --device
(misalnya --device cuda:0,2
). Tidak melakukan hal ini akan berdampak buruk pada kinerja.
Berikut ini adalah perintah berguna untuk memulai Dorado. Untuk melihat semua opsi dan defaultnya, jalankan dorado -h
dan dorado <subcommand> -h
.
Dorado dapat secara otomatis memilih model panggilan dasar menggunakan pilihan kecepatan model ( fast
, hac
, sup
) dan data pod5. Fitur ini tidak didukung untuk data fast5. Jika model tidak ada secara lokal, dorado akan secara otomatis mengunduh model tersebut dan menggunakannya.
Dorado terus mendukung jalur model.
Untuk detailnya, baca Kompleks pemilihan model otomatis.
Untuk menjalankan panggilan dasar Dorado, gunakan model hac
yang diunduh secara otomatis pada direktori file POD5 atau satu file POD5 (file .fast5 didukung, tetapi tidak akan memiliki performa yang sama) .
$ dorado basecaller hac pod5s/ > calls.bam
Untuk melakukan panggilan dasar pada satu file, cukup ganti direktori pod5s/
dengan jalur ke file data Anda.
Jika panggilan dasar terganggu, panggilan dasar dapat dilanjutkan dari file BAM. Untuk melakukannya, gunakan tanda --resume-from
untuk menentukan jalur ke file BAM yang tidak lengkap. Misalnya:
$ dorado basecaller hac pod5s/ --resume-from incomplete.bam > calls.bam
calls.bam
akan berisi semua pembacaan dari incomplete.bam
ditambah panggilan dasar yang baru ( incomplete.bam
dapat dibuang setelah panggilan dasar selesai) .
Catatan: penting untuk memilih nama file yang berbeda untuk file BAM yang Anda gunakan untuk menulis saat menggunakan --resume-from
. Jika Anda menggunakan nama file yang sama, file BAM yang terputus akan kehilangan panggilan dasar yang ada dan panggilan dasar akan dimulai ulang dari awal.
Dorado dapat mendeteksi dan menghapus adaptor dan/atau urutan primer apa pun dari awal dan akhir pembacaan DNA. Perhatikan bahwa jika Anda ingin melakukan demultipleks pembacaan di lain waktu, pemangkasan adaptor dan primer dapat mengakibatkan beberapa bagian daerah sisi kode batang terhapus, yang dapat mengganggu demultiplexing yang benar.
Secara default, dorado basecaller
akan mencoba mendeteksi rangkaian adaptor atau primer apa pun di awal dan akhir pembacaan, dan menghapusnya dari rangkaian keluaran.
Fungsionalitas ini dapat diubah dengan menggunakan opsi --trim
atau --no-trim
dengan dorado basecaller
. Opsi --no-trim
akan mencegah pemangkasan rangkaian kode batang yang terdeteksi serta deteksi dan pemangkasan rangkaian adaptor dan primer.
Opsi --trim
menggunakan salah satu nilai berikut sebagai argumennya:
all
Ini sama dengan perilaku default. Setiap adaptor atau primer yang terdeteksi akan dipangkas, dan jika barcode diaktifkan maka setiap barcode yang terdeteksi akan dipangkas.
primers
Hal ini akan menyebabkan adaptor atau primer yang terdeteksi terpangkas, namun jika kode batang diaktifkan, urutan kode batang tidak akan terpotong.
adapters
Hal ini akan mengakibatkan setiap adaptor yang terdeteksi terpangkas, namun primer tidak akan terpangkas, dan jika kode batang diaktifkan maka kode batang juga tidak akan terpotong.
none
Ini sama dengan menggunakan opsi --no-trim. Tidak ada yang akan dipangkas.
Jika pemangkasan adaptor/primer dilakukan sejalan dengan basecalling yang dikombinasikan dengan demultiplexing, maka perangkat lunak akan secara otomatis memastikan bahwa pemangkasan adaptor dan primer tidak mengganggu proses demultiplexing. Namun, jika Anda ingin melakukan demultiplexing nanti sebagai langkah terpisah, disarankan agar Anda menonaktifkan pemangkasan adaptor/primer saat melakukan panggilan dasar dengan opsi --no-trim
, untuk memastikan bahwa urutan kode batang tetap utuh sepenuhnya dalam pembacaan.
Kumpulan data dasar yang ada dapat dipindai untuk mencari urutan adaptor dan/atau primer di kedua ujungnya, dan memangkas urutan yang ditemukan tersebut. Untuk melakukan ini, jalankan:
$ dorado trim <reads> > trimmed.bam
<reads>
dapat berupa file berformat HTS (misalnya FASTQ, BAM, dll.) atau aliran format HTS (misalnya keluaran panggilan dasar Dorado).
Opsi --no-trim-primers
dapat digunakan untuk mencegah pemangkasan urutan primer. Dalam hal ini hanya rangkaian adaptor yang akan dipangkas.
Jika Anda juga bermaksud melakukan demultipleks data, disarankan agar Anda melakukan demultipleks sebelum memangkas adaptor dan primer apa pun, karena memangkas adaptor dan primer terlebih dahulu dapat mengganggu klasifikasi kode batang yang benar.
Output dari dorado trim
akan selalu berupa record yang tidak selaras, terlepas dari apakah inputnya disejajarkan/diurutkan atau tidak.
Perangkat lunak ini secara otomatis mencari urutan primer yang digunakan dalam kit Oxford Nanopore. Namun, Anda dapat menentukan rangkaian urutan primer alternatif yang akan dicari saat memangkas baik sejajar dengan pemanggilan dasar, atau dikombinasikan dengan opsi --trim
. Dalam kedua kasus ini dilakukan dengan menggunakan opsi baris perintah --primer-sequences
, diikuti dengan path lengkap dan nama file dari file FASTA yang berisi urutan primer yang ingin Anda cari. Nama rekaman urutan tidak menjadi masalah. Perhatikan bahwa jika Anda menggunakan opsi ini, urutan primer normal yang ada di dalam perangkat lunak dorado tidak akan dicari.
Adaptor untuk kit RNA002 dan RNA004 secara otomatis dipangkas selama panggilan dasar. Namun, tidak seperti pada DNA, adaptor RNA tidak dapat dipangkas pasca-panggilan dasar.
Di luar panggilan dasar A, T, C, dan G tradisional, Dorado juga dapat mendeteksi basa yang dimodifikasi seperti 5-metilsitosin (5mC), 5-hidroksimetilsitosin (5hmC), dan N 6 -metiladenosin (6mA). Basis yang dimodifikasi ini memainkan peran penting dalam regulasi epigenetik.
Untuk memanggil modifikasi, perluas argumen model dengan daftar modifikasi yang dipisahkan koma:
$ dorado basecaller hac,5mCG_5hmCG,6mA pod5s/ > calls.bam
Dalam contoh di atas, pemanggilan dasar dilakukan dengan deteksi 5mC/5hmC dalam konteks CG dan 6mA dalam semua konteks.
Lihat kolom Modifikasi Kompatibel pada tabel model DNA untuk melihat modifikasi yang tersedia yang dapat dipanggil dengan opsi --modified-bases
.
Panggilan dasar yang dimodifikasi juga didukung dengan panggilan dasar Duplex, yang menghasilkan panggilan hemi-metilasi.
Untuk menjalankan panggilan dasar Duplex, jalankan perintah:
$ dorado duplex sup pod5s/ > duplex.bam
Saat menggunakan perintah duplex
, akan dihasilkan dua jenis hasil sekuens DNA: 'simpleks' dan 'dupleks'. Setiap posisi spesifik dalam DNA yang berada dalam pembacaan dupleks juga terlihat pada dua untai simpleks (templat dan komplemen). Jadi, setiap posisi DNA yang diurutkan dupleks akan dicakup oleh minimal tiga pembacaan terpisah pada keluarannya.
Tag dx
dalam catatan BAM untuk setiap pembacaan dapat digunakan untuk membedakan antara pembacaan simpleks dan dupleks:
dx:i:1
untuk pembacaan dupleks.
dx:i:0
untuk pembacaan simpleks yang tidak memiliki keturunan dupleks.
dx:i:-1
untuk pembacaan simpleks yang memiliki keturunan dupleks.
Dorado akan melaporkan laju dupleks sebagai jumlah nukleotida dalam panggilan dasar dupleks dikalikan dua dan dibagi dengan jumlah total nukleotida dalam panggilan dasar simpleks. Nilai ini merupakan perkiraan yang mendekati proporsi nukleotida yang berpartisipasi dalam panggilan dasar dupleks.
Panggilan dasar dupleks dapat dilakukan dengan deteksi basa yang dimodifikasi, menghasilkan panggilan hemi-metilasi untuk pembacaan dupleks:
$ dorado duplex hac,5mCG_5hmCG pod5s/ > duplex.bam
Informasi lebih lanjut tentang bagaimana panggilan hemi-metilasi direpresentasikan dapat ditemukan di halaman 7 dokumen spesifikasi SAM (versi aa7440d) dan dokumentasi Modkit.
Dorado mendukung penyelarasan panggilan dasar yang ada atau menghasilkan keluaran yang selaras secara langsung.
Untuk menyelaraskan panggilan dasar yang ada, jalankan:
$ dorado aligner <index> <reads> > aligned.bam
di mana index
adalah referensi untuk disejajarkan dalam format (FASTQ/FASTA/.mmi) dan reads
adalah folder atau file dalam format HTS apa pun.
Saat membaca dari folder masukan, dorado aligner
juga mendukung penerbitan file yang disejajarkan ke folder keluaran, yang akan mempertahankan struktur file masukan:
$ dorado aligner <index> <input_read_folder> --output-dir <output_read_folder>
Ringkasan penyelarasan yang berisi statistik penyelarasan untuk setiap pembacaan dapat dibuat dengan opsi --emit-summary
. File akan disimpan di folder --output-dir
.
Untuk melakukan panggilan dasar dengan penyelarasan dengan dupleks atau simpleks, jalankan dengan opsi --reference
:
$ dorado basecaller <model> <reads> --reference <index> > calls.bam
Penyelarasan menggunakan minimap2 dan secara default menggunakan preset lr:hq
. Hal ini dapat diatasi dengan meneruskan string opsi minimap, --mm2-opts
, menggunakan opsi '-x' dan/atau opsi individual seperti -k
dan -w
untuk menyetel masing-masing kmer dan ukuran jendela. Untuk daftar lengkap opsi minimap2 yang didukung, gunakan '--mm2-opts --help'. Misalnya:
$ 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
Perintah dorado summary
mengeluarkan file yang dipisahkan tab dengan informasi pengurutan tingkat baca dari file BAM yang dihasilkan selama pemanggilan dasar. Untuk membuat ringkasan, jalankan:
$ dorado summary <bam> > summary.tsv
Perhatikan bahwa pembuatan ringkasan hanya tersedia untuk pembacaan yang dipanggil dari file POD5. Membaca basecall dari file .fast5 tidak kompatibel dengan perintah ringkasan.
Dorado mendukung klasifikasi barcode untuk panggilan dasar yang ada serta menghasilkan panggilan dasar yang diklasifikasikan secara langsung.
Dalam mode ini, pembacaan diklasifikasikan ke dalam grup kode batangnya selama pemanggilan dasar sebagai bagian dari perintah yang sama. Untuk mengaktifkan ini, jalankan:
$ dorado basecaller <model> <reads> --kit-name <barcode-kit-name> > calls.bam
Ini akan menghasilkan aliran keluaran tunggal dengan pembacaan rahasia. Klasifikasi akan tercermin dalam nama grup baca serta tag BC
dari catatan keluaran.
Secara default, Dorado diatur untuk memotong kode batang dari bacaan. Untuk menonaktifkan pemangkasan, tambahkan --no-trim
ke cmdline.
Heuristik default untuk kode batang berujung ganda adalah mencarinya di kedua ujung pembacaan. Hal ini menghasilkan tingkat klasifikasi yang lebih tinggi namun juga dapat menghasilkan jumlah positif palsu yang lebih tinggi. Untuk mengatasi hal ini, dorado basecaller
juga menyediakan opsi --barcode-both-ends
untuk memaksa kode batang berujung ganda terdeteksi pada kedua ujungnya sebelum klasifikasi. Hal ini akan mengurangi hasil positif palsu secara signifikan, namun juga menurunkan tingkat klasifikasi secara keseluruhan.
Output dari dorado basecaller
dapat didemultipleks menjadi BAM per-barcode menggunakan dorado demux
. misalnya
$ dorado demux --output-dir <output-dir> --no-classify <input-bam>
Ini akan menampilkan file BAM per kode batang di output-dir
.
Informasi barcode juga tercermin dalam header BAM RG
. Oleh karena itu demultiplexing juga dimungkinkan melalui samtools split
. misalnya
$ samtools split -u <output-dir>/unclassified.bam -f "<output-dir>/<prefix>_%!.bam" <input-bam>
Namun, samtools split
menggunakan string RG
lengkap sebagai akhiran nama file, yang dapat menghasilkan nama file yang sangat panjang. Kami merekomendasikan penggunaan dorado demux
untuk membagi BAM yang diberi kode batang.
Kumpulan data dasar yang ada dapat diklasifikasikan serta didemultipleks menjadi BAM per kode batang menggunakan perintah demux
mandiri di dorado
. Untuk menggunakan ini, jalankan
$ dorado demux --kit-name <kit-name> --output-dir <output-folder-for-demuxed-bams> <reads>
<reads>
dapat berupa folder atau file tunggal dalam file berformat HTS (misalnya FASTQ, BAM, dll.) atau aliran format HTS (misalnya keluaran dorado basecalling).
Hal ini menghasilkan beberapa file BAM yang dihasilkan di folder keluaran, satu per kode batang (diformat sebagai KITNAME_BARCODEXX.bam
) dan satu untuk semua pembacaan yang tidak diklasifikasikan. Seperti halnya mode in-line, --no-trim
dan --barcode-both-ends
juga tersedia sebagai opsi tambahan.
Jika file masukan disejajarkan/diurutkan dan --no-trim
dipilih, setiap file BAM khusus kode batang keluaran juga akan diurutkan dan diindeks. Namun, jika pemangkasan diaktifkan (yang merupakan default), informasi penyelarasan akan dihapus dan BAM keluaran tidak selaras. Hal ini dilakukan karena tag penyelarasan dan posisi menjadi tidak valid setelah urutan diubah.
Berikut adalah contoh folder keluaran
$ 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
File ringkasan yang mencantumkan setiap bacaan dan kode batang rahasianya dapat dibuat dengan opsi --emit-summary
di dorado demux
. File akan disimpan di folder --output-dir
.
Jika file data masukan berisi data pemetaan, informasi ini dapat disimpan dalam file keluaran. Untuk melakukan ini, Anda harus menggunakan opsi --no-trim
. Memangkas kode batang akan membatalkan informasi pemetaan apa pun yang mungkin terdapat dalam file input, dan oleh karena itu aplikasi akan mengecualikan informasi pemetaan apa pun jika --no-trim
tidak ditentukan.
dorado demux
juga dapat mengurutkan dan mengindeks file bam keluaran apa pun yang berisi bacaan yang dipetakan. Untuk mengaktifkan ini, gunakan opsi --sort-bam
. Jika Anda menggunakan opsi ini maka Anda juga harus menggunakan opsi --no-trim
, karena pemangkasan akan mencegah informasi pemetaan apa pun disertakan dalam file keluaran. File indeks (ekstensi .bai) hanya akan dibuat untuk file BAM yang berisi pembacaan yang dipetakan dan diurutkan. Perhatikan bahwa untuk kumpulan data besar, penyortiran file keluaran mungkin memerlukan waktu beberapa menit.
Dorado dapat menggunakan lembar sampel untuk membatasi klasifikasi kode batang hanya pada yang ada, dan menerapkan alias pada klasifikasi yang terdeteksi. Ini diaktifkan dengan meneruskan jalur ke lembar sampel ke argumen --sample-sheet
saat menggunakan perintah basecaller
atau demux
. Lihat di sini untuk informasi lebih lanjut.
Selain mendukung kit barcode standar dari Oxford Nanopore, Dorado juga mendukung penentuan pengaturan dan urutan kit barcode khusus. Hal ini dilakukan dengan meneruskan file pengaturan kode batang melalui argumen --barcode-arrangement
(ke dorado demux
atau dorado basecaller
). Urutan kode batang khusus dapat ditentukan secara opsional melalui opsi --barcode-sequences
. Lihat di sini untuk lebih jelasnya.
Dorado memiliki dukungan awal untuk memperkirakan panjang ekor poli(A) untuk cDNA (PCS dan PCB kit) dan RNA. Perhatikan bahwa pembacaan cDNA Oxford Nanopore diurutkan dalam dua orientasi berbeda dan estimasi panjang ekor poli(A) Dorado menangani keduanya (homopolimer A dan T). Fitur ini dapat diaktifkan dengan meneruskan --estimate-poly-a
ke perintah basecaller
. Ini dinonaktifkan secara default. Perkiraan panjang ekor disimpan dalam tag pt:i
pada rekaman keluaran. Pembacaan yang panjang ekornya tidak dapat diperkirakan tidak akan memiliki tag pt:i
. Urutan primer khusus dan estimasi ekor yang terputus dapat dikonfigurasi melalui opsi --poly-a-config
. Lihat di sini untuk lebih jelasnya.
Dorado mendukung koreksi kesalahan baca tunggal dengan integrasi algoritma HERRO. HERRO menggunakan penyelarasan semua vs semua diikuti dengan koreksi sadar haplotype menggunakan model pembelajaran mendalam untuk mencapai akurasi baca tunggal yang lebih tinggi. Pembacaan yang dikoreksi terutama berguna untuk menghasilkan kumpulan organisme diploid de novo .
Untuk memperbaiki pembacaan, jalankan:
$ dorado correct reads.fastq > corrected_reads.fasta
Dorado benar hanya mendukung FASTQ(.gz) sebagai masukan dan menghasilkan file FASTA sebagai keluaran. Input dapat dikompresi atau dikompresi dengan bgz
. File indeks dihasilkan untuk file FASTQ masukan di folder yang sama kecuali sudah ada. Harap pastikan bahwa folder dengan file masukan dapat ditulisi oleh proses dorado
dan memiliki ruang disk yang cukup.
Alat koreksi kesalahan memerlukan komputasi dan memori yang intensif. Hasilnya, versi terbaiknya dijalankan pada sistem dengan beberapa inti CPU berperforma tinggi ( >= 64 inti), memori sistem besar ( >= 256 GB), dan GPU modern dengan VRAM besar ( >= 32 GB).
Semua bobot model yang diperlukan diunduh secara otomatis oleh Dorado. Namun, bobot juga dapat diunduh sebelumnya dan diteruskan melalui baris perintah jika dijalankan secara offline. Untuk melakukannya, jalankan:
$ dorado download --model herro-v1 $ dorado correct -m herro-v1 reads.fastq > corrected_reads.fasta
Dorado Correct kini juga menyediakan fitur untuk menjalankan pemetaan (tahap khusus CPU) dan inferensi (tahap intensif GPU) secara individual. Hal ini memungkinkan pemisahan tahapan berat CPU dan GPU menjadi langkah-langkah individual yang bahkan dapat dijalankan pada node berbeda dengan karakteristik komputasi yang sesuai. Contoh:
$ dorado correct reads.fastq --to-paf > overlaps.paf $ dorado correct reads.fastq --from-paf overlaps.paf > corrected_reads.fasta
PAF yang di-gzip saat ini tidak didukung untuk opsi --from-paf
.
Selain itu, jika proses dihentikan atau gagal, Dorado Correct menyediakan fungsi "melanjutkan". Fitur resume mengambil daftar pembacaan yang telah dikoreksi sebelumnya (misalnya indeks .fai
dari proses sebelumnya) dan melewatkan pembacaan yang diproses sebelumnya:
$ 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
Format file masukan untuk fitur --resume-from
dapat berupa file teks biasa apa pun dengan kolom pertama yang dibatasi spasi (atau satu baris penuh) terdiri dari nama urutan yang harus dilewati, satu per baris.
Jika proses ini memakan terlalu banyak memori untuk sistem Anda, coba jalankan dengan ukuran indeks yang lebih kecil. Misalnya:
$ dorado correct reads.fastq --index-size 4G > corrected_reads.fasta
Ukuran kumpulan inferensi yang dihitung secara otomatis mungkin masih terlalu tinggi untuk sistem Anda. Jika Anda mengalami peringatan/kesalahan terkait memori GPU yang tersedia, coba kurangi ukuran batch/pilih secara manual. Misalnya:
$ dorado correct reads.fastq --batch-size <number> > corrected_reads.fasta
Jika file FASTA keluaran Anda berisi jumlah pembacaan yang dikoreksi sangat sedikit dibandingkan dengan masukan, harap periksa hal berikut:
Kumpulan data masukan memiliki panjang baca rata-rata >=10kbp
. Dorado Correct dirancang untuk bacaan panjang, dan tidak akan berfungsi pada perpustakaan pendek.
Cakupan masukan masuk akal, sebaiknya >=30x
.
Periksa kualitas dasar rata-rata dari kumpulan data masukan. Dorado Correct mengharapkan masukan yang akurat untuk pemetaan dan inferensi.
Untuk mengunduh semua model Dorado yang tersedia, jalankan:
$ dorado download --model all
Nama-nama model Dorado terstruktur secara sistematis, setiap segmen sesuai dengan aspek model yang berbeda, yang mencakup kimia dan pengaturan pengoperasian. Di bawah ini adalah contoh nama model yang dijelaskan:
Jenis Analit ( dna
) : Ini menunjukkan jenis analit yang diurutkan. Untuk pengurutan DNA, direpresentasikan sebagai dna
. Jika Anda menggunakan Direct RNA Sequencing Kit, ini akan menjadi rna002
atau rna004
, tergantung pada kitnya.
Tipe Pori ( r10.4.1
) : Bagian ini sesuai dengan tipe sel aliran yang digunakan. Misalnya, FLO-MIN114/FLO-FLG114 ditandai dengan r10.4.1
, sedangkan FLO-MIN106D/FLO-FLG001 ditandai dengan r9.4.1
.
Tipe Kimia ( e8.2
) : Ini mewakili tipe kimia, yang sesuai dengan kit yang digunakan untuk pengurutan. Misalnya, kimia Kit 14 dilambangkan dengan e8.2
dan Kit 10 atau Kit 9 dilambangkan dengan e8
.
Kecepatan Translokasi ( 400bps
) : Parameter ini, yang dipilih saat menjalankan pengaturan di MinKNOW, mengacu pada kecepatan translokasi. Sebelum memulai lari, sebuah prompt akan menanyakan apakah Anda lebih suka berlari pada 260 bps atau 400 bps. Yang pertama memberikan hasil yang lebih akurat tetapi memberikan lebih sedikit data. Pada MinKNOW versi 23.04, opsi 260 bps sudah tidak digunakan lagi.
Tipe Model ( hac
) : Ini mewakili ukuran model, dimana model yang lebih besar menghasilkan panggilan dasar yang lebih akurat tetapi memerlukan waktu lebih lama. Ketiga jenis model tersebut adalah fast
, hac
, dan sup
. Model fast
adalah yang tercepat, sup
adalah yang paling akurat, dan hac
memberikan keseimbangan antara kecepatan dan akurasi. Bagi sebagian besar pengguna, model hac
direkomendasikan.
Nomor Versi Model ( v5.0.0
) : Ini menunjukkan versi model. Pembaruan model dirilis secara rutin, dan nomor versi yang lebih tinggi biasanya berarti akurasi yang lebih tinggi.
Di bawah ini adalah tabel model panggilan dasar yang tersedia dan model panggilan dasar yang dimodifikasi yang dapat digunakan dengannya. Model yang dicetak tebal adalah untuk kondisi rilis terbaru dengan data 5 kHz.
Pembuatan versi model modifikasi terikat pada model pemanggilan dasar. Artinya versi model modifikasi direset untuk setiap rilis model simpleks baru. Misalnya, 6mA@v1
yang kompatibel dengan model panggilan dasar v4.3.0
lebih baru daripada 6mA@v2
yang kompatibel dengan model panggilan dasar v4.2.0
.
Model Panggilan Dasar | Kompatibel Modifikasi | Modifikasi Model Versi | Data Contoh Frekuensi |
---|---|---|---|
[email protected] | 5 kHz | ||
[email protected] | 4mC_5mC 5mCG_5hmCG 5mC_5hmC 6mA | v2 v2 v2 v2 | 5 kHz |
[email protected] | 4mC_5mC 5mCG_5hmCG 5mC_5hmC 6mA | v2 v2.0.1 v2.0.1 v2 | 5 kHz |
[email protected] | 5 kHz | ||
[email protected] | 5mCG_5hmCG 5mC_5hmC 6mA | v1 v1 v2 | 5 kHz |
[email protected] | 5mCG_5hmCG 5mC_5hmC 6mA | v1 v1 v2 | 5 kHz |
[email protected] | 5mCG_5hmCG | v2 | 5 kHz |
[email protected] | 5mCG_5hmCG | v2 | 5 kHz |
[email protected] | 5mCG_5hmCG 5mC_5hmC 5mC 6mA | v3.1 v1 v2 v3 | 5 kHz |
[email protected] | 5mCG_5hmCG | v2 | 4kHz |
[email protected] | 5mCG_5hmCG | v2 | 4kHz |
[email protected] | 5mCG_5hmCG | v2 | 4kHz |
[email protected] | 5mCG_5hmCG | v2 | 4kHz |
[email protected] | 5mCG_5hmCG | v2 | 4kHz |
[email protected] | 5mCG_5hmCG | v2 | 4kHz |
[email protected] | 5mCG_5hmCG | v2 | 4kHz |
[email protected] | 5mCG_5hmCG | v2 | 4kHz |
[email protected] | 5mCG_5hmCG | v2 | 4kHz |
[email protected] | 5mCG_5hmCG | v2 | 4kHz |
[email protected] | 5mCG_5hmCG | v2 | 4kHz |
[email protected] | 5mCG_5hmCG | v2 | 4kHz |
[email protected] | 5mCG | v2 | 4kHz |
[email protected] | 5mCG | v2 | 4kHz |
[email protected] | 5mCG | v2 | 4kHz |
[email protected] | 5mCG | v2 | 4kHz |
[email protected] | 5mCG | v2 | 4kHz |
[email protected] | 5mCG | v2 | 4kHz |
[email protected] | 4kHz | ||
[email protected] | 5mCG_5hmCG 5mCG | v0 v0.1 | 4kHz |
[email protected] | 5mCG_5hmCG 5mCG | v0 v0.1 | 4kHz |
[email protected] | 5mCG_5hmCG 5mCG | v0 v0.1 | 4kHz |
Catatan: Format BAM tidak mendukung basis U
Oleh karena itu, ketika Dorado melakukan pemanggilan dasar RNA, file keluaran yang dihasilkan akan menyertakan T
bukan U
Ini konsisten di seluruh jenis file keluaran.
Model Panggilan Dasar | Kompatibel Modifikasi | Modifikasi Model Versi | Data Contoh Frekuensi |
---|---|---|---|
[email protected] | 4kHz | ||
[email protected] | m5C m6A_DRACH inosin_m6A pseU | v1 v1 v1 v1 | 4kHz |
[email protected] | m5C m6A_DRACH inosin_m6A pseU | v1 v1 v1 v1 | 4kHz |
[email protected] | 4kHz | ||
[email protected] | m6A m6A_DRACH pseU | v1 v1 v1 | 4kHz |
[email protected] | m6A m6A_DRACH pseU | v1 v1 v1 | 4kHz |
[email protected] | 4kHz | ||
[email protected] | 4kHz | ||
[email protected] | m6A_DRACH | v1 | 4kHz |
rna002_70bps_fast@v3 | 3kHz | ||
rna002_70bps_hac@v3 | 3kHz |
Argumen model
di dorado dapat menentukan jalur model atau kompleks model. Kompleks model harus dimulai dengan model simpleks speed , dan mengikuti sintaksis berikut:
(fast|hac|sup)[@(version|latest)][,modification[@(version|latest)]][,...]
Model modifikasi yang dipilih secara otomatis akan selalu cocok dengan versi model simpleks dasar dan akan menjadi versi terbaru yang kompatibel kecuali versi tertentu ditentukan oleh pengguna. Pemilihan model modifikasi otomatis tidak akan memungkinkan terjadinya pencampuran model modifikasi yang terikat pada versi model simpleks yang berbeda.
Berikut adalah beberapa contoh kompleks model:
Kompleks Model | Keterangan |
---|---|
cepat | Model cepat terbaru yang kompatibel |
hac | Model hac terbaru yang kompatibel |
sup | Model sup terbaru yang kompatibel |
hac@terbaru | Model panggilan dasar simpleks hac terbaru yang kompatibel |
[email protected] | Model hac panggilan dasar simpleks dengan versi v4.2.0 |
[email protected] | Model hac panggilan dasar simpleks dengan versi v3.5.0 |
hac,5mCG_5hmCG | Model hac simpleks terbaru yang kompatibel dan model modifikasi 5mCG_5hmCG terbaru untuk model panggilan dasar yang dipilih |
hac,5mCG_5hmCG@v2 | Model hac simplex terbaru yang kompatibel dan model modifikasi 5mCG_5hmCG dengan versi v2.0.0 |
sup,5mCG_5hmCG,6mA | Model sup terbaru yang kompatibel dan model modifikasi 5mCG_5hmCG dan 6mA terbaru yang kompatibel |
Setelah proses pemilihan model otomatis menemukan model yang sesuai dengan data masukan, proses tersebut akan mencari direktori model yang ada untuk menghindari pengunduhan model yang tidak perlu. Perilaku pencarian ini dapat dikontrol sebagai berikut:
Mengatur argumen CLI --models-directory
- Argumen --models-directory
dapat digunakan untuk menentukan direktori tempat model akan dicari.
Menyetel variabel lingkungan DORADO_MODELS_DIRECTORY
- Ini sama dengan menyetel --models-directory
tetapi memiliki prioritas lebih rendah daripada yang setara dengan CLI.
Jika --models-directory
atau DORADO_MODELS_DIRECORY
tidak disetel, maka direktori kerja saat ini akan dicari.
Jika --models-directory
atau DORADO_MODELS_DIRECTORY
diatur secara otomatis, model yang diunduh akan tetap ada, jika tidak, model akan diunduh ke direktori sementara lokal dan dihapus setelah dorado selesai.
Dorado dilengkapi dengan perpustakaan yang diperlukan (seperti CUDA) untuk pelaksanaannya. Namun, pada beberapa sistem operasi, perpustakaan sistem mungkin dipilih daripada milik Dorado. Perbedaan ini dapat mengakibatkan berbagai kesalahan, misalnya CuBLAS error 8
.
Untuk mengatasi masalah ini, Anda perlu mengatur LD_LIBRARY_PATH
agar mengarah ke perpustakaan Dorado. Gunakan perintah seperti berikut di Linux (ubah jalur sesuai kebutuhan):
$ export LD_LIBRARY_PATH=<PATH_TO_DORADO>/dorado-x.y.z-linux-x64/lib:$LD_LIBRARY_PATH
Di macOS, ekspor yang setara adalah (ubah jalur sesuai kebutuhan):
$ export DYLD_LIBRARY_PATH=<PATH_TO_DORADO>/dorado-x.y.z-osx-arm64/lib:$DYLD_LIBRARY_PATH
Panggilan dasar dupleks adalah proses intensif IO dan dapat berkinerja buruk jika menggunakan penyimpanan jaringan atau HDD. Hal ini umumnya dapat diperbaiki dengan memisahkan file POD5 secara tepat.
Pertama instal alat python POD5:
Dokumentasi POD5 dapat ditemukan di sini.
$ pip install pod5
Kemudian jalankan pod5 view
untuk menghasilkan tabel yang berisi informasi untuk dibagi secara khusus, informasi "saluran".
$ pod5 view /path/to/your/dataset/ --include "read_id, channel" --output summary.tsv
Ini akan membuat file "summary.tsv" yang akan terlihat seperti:
read_id channel 0000173c-bf67-44e7-9a9c-1ad0bc728e74 109 002fde30-9e23-4125-9eae-d112c18a81a7 463 ...
Sekarang jalankan pod5 subset
untuk menyalin catatan dari data sumber Anda ke output per saluran. Ini mungkin memerlukan waktu tergantung pada ukuran kumpulan data Anda
$ pod5 subset /path/to/your/dataset/ --summary summary.tsv --columns channel --output split_by_channel
Perintah di atas akan membuat direktori keluaran split_by_channel
dan menulis ke dalamnya satu file pod5 per saluran unik. Panggilan dasar duplex pembacaan terpisah ini sekarang akan jauh lebih cepat.
Jika menjalankan panggilan dasar dupleks secara terdistribusi (misalnya pada cluster SLURM atau Kubernetes), penting untuk membagi file POD5 seperti dijelaskan di atas. Alasannya adalah pemanggilan dasar dupleks memerlukan agregasi pembacaan dari seluruh proses pengurutan, yang akan didistribusikan ke beberapa file POD5. Strategi pemisahan yang dijelaskan di atas memastikan bahwa semua pembacaan yang perlu dikumpulkan berada dalam file POD5 yang sama. Setelah pemisahan dilakukan, seseorang dapat menjalankan beberapa pekerjaan terhadap subset POD5 yang lebih kecil (misalnya satu pekerjaan per 100 saluran). Ini akan memungkinkan panggilan dasar didistribusikan ke seluruh node di sebuah cluster. Ini akan menghasilkan beberapa BAM yang dapat digabungkan. Pendekatan ini juga menawarkan ketahanan seolah-olah ada tugas yang gagal sehingga dapat dimulai ulang tanpa harus menjalankan kembali pemanggilan dasar terhadap seluruh kumpulan data.
Dorado beroperasi pada berbagai GPU tetapi terutama dikembangkan untuk Nvidia A100/H100 dan Apple Silicon. Dorado berupaya menemukan ukuran batch optimal untuk panggilan dasar. Namun demikian, pada beberapa GPU dengan RAM rendah, pengguna mungkin mengalami kerusakan memori.
Solusi potensial untuk masalah ini adalah dengan mengatur ukuran batch manual menggunakan perintah berikut:
dorado basecaller --batchsize 64 ...
Catatan: Mengurangi konsumsi memori dengan memodifikasi parameter chunksize
tidak disarankan karena akan mempengaruhi hasil pemanggilan dasar.
Pemanfaatan GPU yang rendah dapat menyebabkan berkurangnya kecepatan panggilan dasar. Masalah ini dapat diidentifikasi menggunakan alat seperti nvidia-smi
dan nvtop
. Pemanfaatan GPU yang rendah sering kali disebabkan oleh hambatan I/O dalam panggilan dasar. Berikut beberapa langkah yang dapat Anda ambil untuk memperbaiki situasi:
Pilih POD5 daripada .fast5: POD5 memiliki kinerja I/O yang unggul dan akan meningkatkan kecepatan panggilan dasar di lingkungan dengan keterbatasan I/O.
Mentransfer data ke disk lokal sebelum panggilan dasar: Panggilan dasar yang lambat sering terjadi karena disk jaringan tidak dapat menyuplai Dorado dengan kecepatan yang memadai. Untuk mengurangi hal ini, pastikan data Anda sedekat mungkin dengan mesin host Anda.
Pilih SSD dibandingkan HDD: Khususnya untuk panggilan dasar dupleks, penggunaan SSD lokal dapat memberikan keuntungan kecepatan yang signifikan. Hal ini disebabkan oleh ketergantungan algoritma pemanggilan dasar dupleks pada akses data acak yang besar.
Saat menjalankan PowerShell di Windows, harus berhati-hati, karena pengkodean default untuk keluaran aplikasi biasanya adalah UTF-16LE. Ini akan menyebabkan kerusakan file jika keluaran standar dialihkan ke suatu file. Disarankan untuk menggunakan argumen --output-dir
untuk mengeluarkan file BAM jika PowerShell harus digunakan. Misalnya, perintah berikut akan menghasilkan keluaran rusak yang tidak dapat dibaca oleh samtools:
PS > dorado basecaller <args> > out.bam
Sebagai gantinya, gunakan:
PS > dorado basecaller <args> --output-dir .
Untuk format keluaran berbasis teks (SAM atau FASTQ), dimungkinkan untuk mengganti pengkodean pada keluaran menggunakan perintah out-file
. Perintah ini akan menghasilkan file ascii SAM yang terbentuk dengan baik:
PS > dorado basecaller <args> --emit-sam | out-file -encoding Ascii out.sam
Perhatikan bahwa out-file
dengan pengkodean Ascii
tidak akan menghasilkan file BAM dengan format yang baik.
Baca selengkapnya tentang pengkodean keluaran Powershell di sini.
(c) PLC Teknologi Nanopore Oxford 2024.
Dorado didistribusikan berdasarkan ketentuan Oxford Nanopore Technologies PLC. Lisensi Publik, v.1.0. Jika salinan Lisensi tidak didistribusikan bersama file ini, Anda dapat memperolehnya di http://nanoporetech.com