Dorado 是一款高效能、易於使用的開源鹼基識別程序,適用於 Oxford Nanopore 讀取。
具有合理預設值、自動硬體偵測和配置的可執行檔。
在 Apple 晶片(M1/2 系列)和 Nvidia GPU 上運行,包括具有線性縮放功能的多 GPU(請參閱平台)。
修改後的鹼基識別。
Duplex 鹼基識別(觀看以下影片以了解 Duplex 的介紹)。
單工條碼分類。
支援 SAM/BAM 中對齊的讀取輸出。
初步支持 Poly(A) 尾端估計。
支持單讀糾錯。
POD5 支援最高鹼基辨識性能。
基於 libtorch,pytorch 的 C++ API。
CUDA 和 Metal 中的多項自訂最佳化可最大限度地提高推理效能。
如果您在建置或執行 Dorado 時遇到任何問題,請回報問題。
首先,下載適合您平台的相關安裝程式:
多拉多-0.8.2-linux-x64
dorado-0.8.2-linux-arm64
dorado-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
有關構建 Dorado 進行開發的詳細信息,請參閱 DEV.md。
Dorado 針對 Nvidia A100 和 H100 GPU 進行了深度最佳化,並將在配備這些 GPU 的系統上提供最佳效能。
Dorado 已經過廣泛測試並在以下系統上支援:
平台 | 圖形處理器/中央處理器 | 最低軟體要求 |
---|---|---|
Linux x86_64 | (G)V100、A100 | CUDA 驅動程式 ≥450.80.02 |
H100 | CUDA驅動程式≥520 | |
Linux ARM64 | 傑特森·奧林 | Linux for Tegra ≥34.1.1 |
Windows x86_64 | (G)V100、A100 | CUDA驅動程式≥452.39 |
H100 | CUDA驅動程式≥520 | |
蘋果 | 蘋果晶片 (M1/M2) |
上述未列出但具有 Nvidia GPU、≥8 GB VRAM 和 Pascal 及以上架構(P100/GP100 除外)的 Linux 或 Windows 系統尚未經過廣泛測試,但預計可以運行。使用 Apple 裝置進行基地呼叫時,我們建議系統具有 ≥16 GB 的統一記憶體。
如果您在系統上運行時遇到問題,請回報問題。
這裡提供了適用於 Dorado 0.3.0 的 Nvidia GPU 的 AWS 基準測試。請注意:Dorado 的鹼基調用速度正在不斷提高,因此這些基準測試可能無法反映最新版本的效能。
為了獲得最佳效能,Dorado 需要 POD5 檔案輸入。請在鹼基調用之前轉換您的 .fast5 檔案。
Dorado 將自動偵測您的 GPU 的可用記憶體並選擇合適的批次大小。
Dorado 將自動以多 GPU cuda:all
模式運作。如果您有異質的 GPU 集合,請使用--device
標誌(例如--device cuda:0,2
)選擇較快的 GPU。不這樣做將對性能產生不利影響。
以下是開始使用 Dorado 的有用指令。若要查看所有選項及其預設值,請執行dorado -h
和dorado <subcommand> -h
。
Dorado 可以使用選擇的模型速度( fast
、 hac
、 sup
)和 pod5 資料自動選擇鹼基辨識模型。 fast5 資料不支援此功能。如果本地不存在模型,dorado會自動下載模型並使用。
Dorado 繼續支援模型路徑。
有關詳細信息,請參閱自動模型選擇複雜。
若要執行 Dorado 鹼基調用,請在 POD5 文件目錄或單一 POD5 檔案(支援 .fast5 文件,但效能不高)上使用自動下載的hac
模型。
$ dorado basecaller hac pod5s/ > calls.bam
要對單一檔案進行基本調用,只需將目錄pod5s/
替換為資料檔案的路徑即可。
如果鹼基檢出被中斷,可以從 BAM 檔案恢復鹼基檢測。為此,請使用--resume-from
標誌指定不完整的 BAM 檔案的路徑。例如:
$ dorado basecaller hac pod5s/ --resume-from incomplete.bam > calls.bam
calls.bam
將包含來自incomplete.bam
的所有讀取以及新的鹼基調用(鹼基調用完成後可以丟棄incomplete.bam
) 。
注意:使用--resume-from
時,為要寫入的 BAM 檔案選擇不同的檔案名稱非常重要。如果您使用相同的檔案名,中斷的 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-甲基胞嘧啶 (5mC)、5-羥甲基胞嘧啶 (5hmC) 和 N 6 -甲基腺苷(6mA)。這些修飾的鹼基在表觀遺傳調控中扮演著至關重要的角色。
若要呼叫修改,請使用逗號分隔的修改清單擴充 models 參數:
$ dorado basecaller hac,5mCG_5hmCG,6mA pod5s/ > calls.bam
在上面的範例中,鹼基檢測是透過檢測 CG 上下文中的 5mC/5hmC 和所有上下文中的 6mA 來執行的。
請參閱 DNA 模型表的相容修飾列,以查看可使用--modified-bases
選項呼叫的可用修飾。
雙工鹼基識別也支持修飾鹼基識別,可產生半甲基化識別。
若要執行雙工鹼基調用,請執行下列命令:
$ dorado duplex sup pod5s/ > duplex.bam
使用duplex
指令時,將產生兩種類型的 DNA 序列結果:「simplex」和「duplex」。雙股體讀數中 DNA 中的任何特定位置也可以在兩條單股(模板和補體)中看到。 因此,雙股定序的每個 DNA 位置將被輸出中至少三個單獨的讀取所覆蓋。
每次讀取的 BAM 記錄中的dx
標記可用於區分單工和雙工讀取:
dx:i:1
用於雙工讀取。
dx:i:0
用於沒有雙工後代的單工讀取。
dx:i:-1
用於具有雙工後代的單工讀取。
Dorado 將報告雙鏈體比率,即雙鏈體鹼基辨識中的核苷酸數量乘以 2 再除以單鏈體鹼基辨識中的核苷酸總數。該值非常接近參與雙鏈體鹼基辨識的核苷酸比例。
雙工鹼基識別可以透過修改鹼基檢測來執行,產生雙工讀取的半甲基化識別:
$ dorado duplex hac,5mCG_5hmCG pod5s/ > duplex.bam
有關如何表示半甲基化調用的更多信息,請參閱 SAM 規範文檔(版本 aa7440d)的第 7 頁和 Modkit 文件。
Dorado 支援對齊現有的鹼基調用或直接產生對齊的輸出。
要對齊現有的鹼基調用,請運行:
$ 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
資料夾中。
若要使用雙工或單工對齊進行鹼基調用,請使用--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
新增至命令列。
雙端條碼的預設啟發式是在讀取的任一端尋找它們。這會導致更高的分類率,但也會導致更高的假陽性計數。為了解決這個問題, dorado basecaller
還提供了--barcode-both-ends
選項,強制在分類之前在兩端檢測雙端條碼。這將大大減少誤報,但也會降低整體分類率。
可以使用dorado demux
將dorado basecaller
的輸出多路分解為每個條碼的 BAM。例如
$ dorado demux --output-dir <output-dir> --no-classify <input-bam>
這將在output-dir
中為每個條碼輸出一個 BAM 檔案。
條碼資訊也反映在 BAM RG
標頭中。因此,也可以透過samtools split
進行解復用。例如
$ samtools split -u <output-dir>/unclassified.bam -f "<output-dir>/<prefix>_%!.bam" <input-bam>
但是, samtools split
使用完整的RG
字串作為檔案名稱後綴,這可能會導致檔案名稱非常長。我們建議使用dorado demux
來分割條碼 BAM。
可以使用dorado
中的獨立demux
指令對現有的 basecall 資料集進行分類和解復用為每個條碼的 BAM。要使用它,請運行
$ dorado demux --kit-name <kit-name> --output-dir <output-folder-for-demuxed-bams> <reads>
<reads>
可以是HTS格式檔案中的資料夾或單一檔案(例如FASTQ、BAM等)或HTS格式的串流(例如dorado basecalling的輸出)。
這會導致在輸出資料夾中產生多個 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
可以使用dorado demux
中的--emit-summary
選項產生列出每個讀取及其分類條碼的摘要檔案。該檔案將保存在--output-dir
資料夾中。
如果輸入資料檔案包含映射數據,則該資訊可以保留在輸出檔案中。為此,您必須使用--no-trim
選項。修剪條碼將使輸入檔案中可能包含的任何映射資訊無效,因此如果未指定--no-trim
應用程式將排除任何映射資訊。
還可以讓dorado demux
對包含映射讀取的任何輸出 bam 檔案進行排序和索引。若要啟用此功能,請使用--sort-bam
選項。如果使用此選項,則也必須使用--no-trim
選項,因為修剪將阻止任何映射資訊包含在輸出檔案中。只會為包含映射讀取並已排序的 BAM 檔案建立索引檔案(.bai 副檔名)。請注意,對於大型資料集,對輸出檔案進行排序可能需要幾分鐘的時間。
Dorado 能夠使用樣本表將條碼分類限制為僅存在的分類,並將別名應用於偵測到的分類。這是透過在使用basecaller
或demux
指令時將範例表的路徑傳遞給--sample-sheet
參數來啟用的。請參閱此處以了解更多資訊。
除了支援 Oxford Nanopore 的標準條碼套件外,Dorado 還支援指定自訂條碼套件排列和序列。這是透過--barcode-arrangement
參數傳遞條碼排列檔案(傳遞給dorado demux
或dorado basecaller
)來完成的。可以選擇透過--barcode-sequences
選項指定自訂條碼序列。請參閱此處以了解更多詳細資訊。
Dorado 初步支持估計 cDNA(PCS 和 PCB 試劑盒)和 RNA 的 Poly(A) 尾長。請注意,Oxford Nanopore cDNA 讀數以兩個不同方向進行定序,Dorado poly(A) 尾長估計可處理這兩種方向(A 和 T 均聚物)。可以透過將--estimate-poly-a
傳遞給basecaller
指令來啟用此功能。預設情況下它是禁用的。估計的尾部長度儲存在輸出記錄的pt:i
標記中。無法估計尾部長度的讀取將不具有pt:i
標籤。自訂引子序列和中斷尾部的估計可以透過--poly-a-config
選項進行配置。請參閱此處以了解更多詳細資訊。
Dorado 整合 HERRO 演算法,支援單讀糾錯。 HERRO 使用全對全比對,然後使用深度學習模型進行單倍型感知校正,以實現更高的單讀準確度。校正的讀數主要用於產生二倍體生物體的從頭組裝。
若要修正讀取,請執行:
$ dorado correct reads.fastq > corrected_reads.fasta
Dorado正確僅支援FASTQ(.gz)作為輸入並產生FASTA檔案作為輸出。輸入可以未壓縮或使用bgz
壓縮。除非已經存在,否則會在同一資料夾中為輸入 FASTQ 檔案產生一個索引檔案。請確保包含輸入檔的資料夾可由dorado
寫入並且有足夠的磁碟空間。
糾錯工具是計算密集型和記憶體密集型的。因此,它最好在具有多個高效能 CPU 核心(>= 64 核心)、大系統記憶體(>= 256GB)和具有大 VRAM(>= 32GB)的現代 GPU 的系統上運行。
所有必要的模型權重均由 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
--from-paf
選項目前不支援 Gzipped 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 定序,它表示為dna
。如果您使用的是直接 RNA 定序試劑盒,則這將是rna002
或rna004
,具體取決於試劑盒。
孔類型 ( r10.4.1
) :本節對應所使用的流通池類型。例如,FLO-MIN114/FLO-FLG114 由r10.4.1
表示,而 FLO-MIN106D/FLO-FLG001 則由r9.4.1
表示。
化學類型 ( e8.2
) :這代表化學類型,對應於用於定序的試劑盒。例如,Kit 14 化學物質由e8.2
表示,而 Kit 10 或 Kit 9 則由e8
表示。
易位速度( 400bps
) :此參數在 MinKNOW 中的運轉設定中選擇,是指易位的速度。在開始運作之前,系統會提示您是否希望以 260 bps 還是 400 bps 的速率運作。前者產生較準確的結果,但提供的數據較少。從 MinKNOW 版本 23.04 開始,260 bps 選項已被棄用。
模型類型 ( hac
) :這表示模型的大小,其中較大的模型會產生更準確的鹼基檢測,但需要更多時間。三種類型的模型是fast
、 hac
和sup
。 fast
模型是最快的, sup
是最準確的, hac
提供了速度和準確度之間的平衡。對於大多數用戶,建議使用hac
模型。
模型版本號 ( v5.0.0
) :這表示模型的版本。模型更新會定期發布,版本號越高通常意味著準確性越高。
下表列出了可用的鹼基辨識模型以及可與其一起使用的修改後的鹼基辨識模型。粗體模型適用於最新發布的 5 kHz 資料條件。
修改模型的版本控制與鹼基調用模型綁定。這意味著每個新的單純形模型版本都會重置修改模型版本。例如,與v4.3.0
鹼基調用模型相容的6mA@v1
比與v4.2.0
鹼基調用模型相容的6mA@v2
更新。
打壘模型 | 相容的 修改 | 修改 模型 版本 | 數據 取樣 頻率 |
---|---|---|---|
[email protected] | 5kHz | ||
[email protected] | 4mC_5mC 5mCG_5hmCG 5mC_5hmC 6毫安 | v2 v2 v2 v2 | 5kHz |
[email protected] | 4mC_5mC 5mCG_5hmCG 5mC_5hmC 6毫安 | v2 v2.0.1 v2.0.1 v2 | 5kHz |
[email protected] | 5kHz | ||
[email protected] | 5mCG_5hmCG 5mC_5hmC 6毫安 | v1 v1 v2 | 5kHz |
[email protected] | 5mCG_5hmCG 5mC_5hmC 6毫安 | v1 v1 v2 | 5kHz |
[email protected] | 5mCG_5hmCG | v2 | 5kHz |
[email protected] | 5mCG_5hmCG | v2 | 5kHz |
[email protected] | 5mCG_5hmCG 5mC_5hmC 5毫℃ 6毫安 | v3.1 v1 v2 v3 | 5kHz |
[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 |
注意: BAM 格式不支援U
基。因此,當 Dorado 執行 RNA 鹼基辨識時,產生的輸出檔將包含T
而不是U
。這在不同的輸出文件類型中是一致的。
打壘模型 | 相容的 修改 | 修改 模型 版本 | 數據 取樣 頻率 |
---|---|---|---|
[email protected] | 4kHz | ||
[email protected] | m5C m6A_DRACH 肌苷_m6A 普塞烏 | v1 v1 v1 v1 | 4kHz |
[email protected] | m5C m6A_DRACH 肌苷_m6A 普塞烏 | v1 v1 v1 v1 | 4kHz |
[email protected] | 4kHz | ||
[email protected] | 米6A m6A_DRACH 普塞烏 | v1 v1 v1 | 4kHz |
[email protected] | 米6A m6A_DRACH 普塞烏 | 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 |
dorado 中的model
參數可以指定模型路徑或模型複合體。模型複合體必須以單純形模型 speed開頭,並遵循以下語法:
(fast|hac|sup)[@(version|latest)][,modification[@(version|latest)]][,...]
自動選擇的修改模型將始終與基本單純形模型版本匹配,並且將是最新的兼容版本,除非使用者設定特定版本。自動修改模型選擇將不允許混合綁定到不同單純形模型版本的修改模型。
以下是模型複合體的一些範例:
模型綜合體 | 描述 |
---|---|
快速地 | 最新相容快速型號 |
哈克 | 最新相容的hac型號 |
超 | 最新相容的SUP型號 |
hac@最新 | 最新相容的hac單純形鹼基調用模型 |
[email protected] | 版本v4.2.0 的 Simplex 鹼基辨識hac模型 |
[email protected] | 版本v3.5.0 的 Simplex 鹼基辨識hac模型 |
hac,5mCG_5hmCG | 所選基本調用模型的最新相容hac單純形模型和最新5mCG_5hmCG修改模型 |
hac,5mCG_5hmCG@v2 | 最新相容的hac單純形模型和5mCG_5hmCG修改模型,版本為v2.0.0 |
sup,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完成後刪除。
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 嘗試找到鹼基辨識的最佳批量大小。然而,在某些低 RAM GPU 上,用戶可能會面臨記憶體不足的崩潰。
此問題的潛在解決方案可能是使用以下命令設定手動批次大小:
dorado basecaller --batchsize 64 ...
注意:不建議透過修改chunksize
參數來減少記憶體消耗,因為它會影響鹼基調用結果。
GPU 利用率低會導致鹼基辨識速度降低。可以使用nvidia-smi
和nvtop
等工具來識別此問題。 GPU 利用率低通常源自於鹼基辨識中的 I/O 瓶頸。您可以採取以下幾個步驟來改善這種情況:
選擇 POD5 而不是 .fast5:POD5 具有卓越的 I/O 效能,並將提高 I/O 受限環境中的基本呼叫速度。
在basecall之前將資料傳輸到本機磁碟:由於網路磁碟無法為Dorado提供足夠的速度,因此經常會出現basecall緩慢的情況。為了緩解這種情況,請確保您的資料盡可能靠近主機。
選擇 SSD 而不是 HDD:特別是對於雙工鹼基識別,使用本地 SSD 可以提供顯著的速度優勢。這是由於雙工鹼基識別演算法嚴重依賴數據的隨機存取。
在 Windows 上的 PowerShell 中執行時,必須小心,因為應用程式輸出的預設編碼通常為 UTF-16LE。 如果標準輸出重定向到文件,這將導致文件損壞。 如果必須使用 PowerShell,建議使用--output-dir
參數來發出 BAM 檔案。 例如,以下命令將建立 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
請注意,使用Ascii
編碼的out-file
不會產生格式正確的 BAM 檔案。
在此閱讀有關 Powershell 輸出編碼的更多資訊。
(c) 2024 牛津奈米孔技術有限公司。
Dorado 是根據 Oxford Nanopore Technologies PLC 的條款進行分發的。 公共許可證,v.1.0。 如果授權副本未隨此文件一起分發,您可以從 http://nanoporetech.com 取得一份