Dorado는 Oxford Nanopore 판독을 위한 고성능의 사용하기 쉬운 오픈 소스 베이스콜러입니다.
합리적인 기본값, 자동 하드웨어 감지 및 구성을 갖춘 하나의 실행 파일입니다.
Apple 실리콘(M1/2 제품군) 및 선형 확장이 가능한 다중 GPU를 포함한 Nvidia GPU에서 실행됩니다(플랫폼 참조).
수정된 베이스콜링.
이중 베이스콜(Duplex에 대한 소개는 다음 비디오 시청)
단순 바코드 분류.
SAM/BAM에서 정렬된 읽기 출력을 지원합니다.
폴리(A) 꼬리 추정에 대한 초기 지원입니다.
단일 읽기 오류 수정을 지원합니다.
최고의 베이스콜링 성능을 위한 POD5 지원.
libtorch를 기반으로 하는 pytorch용 C++ API입니다.
추론 성능을 극대화하기 위한 CUDA 및 Metal의 다양한 맞춤형 최적화.
Dorado를 구축하거나 실행하는 데 문제가 발생하면 문제를 보고해 주세요.
먼저, 귀하의 플랫폼에 맞는 설치 프로그램을 다운로드하세요:
dorado-0.8.2-linux-x64
dorado-0.8.2-linux-arm64
dorado-0.8.2-osx-arm64
dorado-0.8.2-win64
관련 .tar.gz
또는 .zip
아카이브가 다운로드되면 원하는 위치에 아카이브를 추출합니다.
그런 다음 전체 경로를 사용하여 Dorado를 호출할 수 있습니다. 예를 들면 다음과 같습니다.
$ /path/to/dorado-x.y.z-linux-x64/bin/dorado basecaller hac pod5s/ > calls.bam
또는 $PATH
환경 변수에 bin 경로를 추가하고 대신 dorado
명령을 사용하여 실행할 수 있습니다. 예를 들면 다음과 같습니다.
$ dorado basecaller hac pod5s/ > calls.bam
개발용 Dorado 구축에 대한 자세한 내용은 DEV.md를 참조하세요.
Dorado는 Nvidia A100 및 H100 GPU에 최적화되어 있으며 이러한 GPU를 사용하는 시스템에서 최대 성능을 제공합니다.
Dorado는 다음 시스템에서 광범위하게 테스트되었으며 지원됩니다.
플랫폼 | GPU/CPU | 최소 소프트웨어 요구 사항 |
---|---|---|
리눅스 x86_64 | (G)V100, A100 | CUDA 드라이버 ≥450.80.02 |
H100 | CUDA 드라이버 ≥520 | |
리눅스 arm64 | 젯슨 오린 | Tegra ≥34.1.1용 Linux |
윈도우 x86_64 | (G)V100, A100 | CUDA 드라이버 ≥452.39 |
H100 | CUDA 드라이버 ≥520 | |
사과 | 애플 실리콘(M1/M2) |
위에 나열되지 않았지만 ≥8GB VRAM 및 Pascal 이후 아키텍처(P100/GP100 제외)를 갖춘 Nvidia GPU가 있는 Linux 또는 Windows 시스템은 널리 테스트되지 않았지만 작동할 것으로 예상됩니다. Apple 장치로 베이스콜을 수행하는 경우 통합 메모리가 16GB 이상인 시스템을 권장합니다.
시스템 실행 시 문제가 발생하면 문제를 보고해 주세요.
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 파일에 자동으로 다운로드된 hac
모델을 사용합니다 (.fast5 파일은 지원되지만 성능은 떨어집니다) .
$ 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
의 모든 읽기와 새 basecall이 포함됩니다 ( incomplete.bam
basecalling이 완료된 후 삭제될 수 있음) .
참고: --resume-from
사용할 때 작성 중인 BAM 파일에 대해 다른 파일 이름을 선택하는 것이 중요합니다 . 동일한 파일 이름을 사용하는 경우 중단된 BAM 파일은 기존 베이스콜을 잃고 베이스콜이 처음부터 다시 시작됩니다.
Dorado는 DNA 판독의 시작과 끝에서 모든 어댑터 및/또는 프라이머 서열을 감지하고 제거할 수 있습니다. 나중에 판독을 역다중화하려는 경우 어댑터와 프라이머를 트리밍하면 바코드 측면 영역의 일부가 제거되어 올바른 역다중화를 방해할 수 있습니다.
기본적으로 dorado basecaller
읽기의 시작과 끝에서 모든 어댑터 또는 프라이머 시퀀스를 감지하고 이를 출력 시퀀스에서 제거하려고 시도합니다.
이 기능은 dorado basecaller
와 함께 --trim
또는 --no-trim
옵션을 사용하여 변경할 수 있습니다. --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 키트에 사용되는 프라이머 서열을 자동으로 검색합니다. 그러나 basecalling과 함께 인라인으로 트리밍하거나 --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를 모두 감지하여 수행됩니다.
--modified-bases
옵션으로 호출할 수 있는 사용 가능한 수정 사항을 보려면 DNA 모델 표의 호환 가능한 수정 사항 열을 참조하세요.
수정된 베이스콜링은 이중 메틸화 호출을 생성하는 이중 베이스콜링에서도 지원됩니다.
이중 베이스콜링을 실행하려면 다음 명령을 실행하세요.
$ dorado duplex sup pod5s/ > duplex.bam
duplex
명령을 사용하면 '단방향'과 '이중'이라는 두 가지 유형의 DNA 서열 결과가 생성됩니다. 이중 판독에 있는 DNA의 특정 위치는 두 개의 단순 가닥(주형 및 보체)에서도 볼 수 있습니다. 따라서 이중 서열이 분석된 각 DNA 위치는 출력에서 최소 3개의 개별 판독값으로 처리됩니다.
각 읽기에 대한 BAM 레코드의 dx
태그를 사용하여 단순 읽기와 이중 읽기를 구별할 수 있습니다.
이중 읽기의 경우 dx:i:1
.
이중 하위 항목이 없는 단순 읽기의 경우 dx:i:0
입니다.
이중 하위 항목이 있는 단순 읽기의 경우 dx:i:-1
입니다.
Dorado는 이중 베이스콜의 뉴클레오티드 수에 2를 곱하고 단순 베이스콜의 총 뉴클레오티드 수로 나누어 이중 속도를 보고합니다. 이 값은 이중 베이스콜에 참여한 뉴클레오티드 비율에 대한 가까운 근사치입니다.
이중 염기 호출은 수정된 염기 검출을 사용하여 수행하여 이중 읽기에 대한 헤미메틸화 호출을 생성할 수 있습니다.
$ dorado duplex hac,5mCG_5hmCG pod5s/ > duplex.bam
헤미메틸화 호출이 표시되는 방법에 대한 자세한 내용은 SAM 사양 문서(버전 aa7440d) 및 Modkit 문서의 7페이지에서 확인할 수 있습니다.
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
cmdline에 추가하세요.
양면 바코드의 기본 경험적 방법은 판독의 양쪽 끝에서 이를 찾는 것입니다. 이로 인해 분류율이 높아지지만 거짓양성(false positive) 수가 높아질 수도 있습니다. 이 문제를 해결하기 위해 dorado basecaller
분류 전에 양면 바코드가 양쪽 끝에서 감지되도록 강제하는 --barcode-both-ends
옵션도 제공합니다. 이렇게 하면 거짓양성이 크게 줄어들지만 전체 분류 비율도 낮아집니다.
dorado basecaller
의 출력은 dorado demux
사용하여 바코드별 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
문자열을 파일 이름 접미사로 사용하므로 파일 이름이 매우 길어질 수 있습니다. 바코드 BAM을 분할하려면 dorado demux
사용하는 것이 좋습니다.
기존 베이스 호출 데이터 세트는 dorado
의 독립 실행 demux
명령을 사용하여 바코드별 BAM으로 분류 및 역다중화할 수 있습니다. 이것을 사용하려면 다음을 실행하십시오.
$ dorado demux --kit-name <kit-name> --output-dir <output-folder-for-demuxed-bams> <reads>
<reads>
HTS 형식 파일(예: FASTQ, BAM 등)의 폴더 또는 단일 파일이거나 HTS 형식의 스트림(예: dorado basecalling의 출력)일 수 있습니다.
이로 인해 출력 폴더에 바코드당 하나씩( KITNAME_BARCODEXX.bam
형식) 여러 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
이 지정되지 않은 경우 애플리케이션은 모든 매핑 정보를 제외합니다.
매핑된 읽기가 포함된 모든 출력 bam 파일을 정렬하고 색인화하기 위해 dorado demux
얻는 것도 가능합니다. 이를 활성화하려면 --sort-bam
옵션을 사용하십시오. 이 옵션을 사용하는 경우 --no-trim
옵션도 사용해야 합니다. 트리밍을 수행하면 매핑 정보가 출력 파일에 포함되는 것을 방지할 수 있기 때문입니다. 인덱스 파일(.bai 확장자)은 매핑된 읽기를 포함하고 정렬된 BAM 파일에 대해서만 생성됩니다. 대규모 데이터세트의 경우 출력 파일을 정렬하는 데 몇 분 정도 걸릴 수 있습니다.
Dorado는 샘플 시트를 사용하여 바코드 분류를 존재하는 분류로만 제한하고 감지된 분류에 별칭을 적용할 수 있습니다. 이는 basecaller
또는 demux
명령을 사용할 때 샘플 시트 경로를 --sample-sheet
인수에 전달하여 활성화됩니다. 자세한 내용은 여기를 참조하세요.
Dorado는 Oxford Nanopore의 표준 바코드 키트를 지원하는 것 외에도 맞춤형 바코드 키트 배열 및 순서 지정도 지원합니다. 이는 --barcode-arrangement
인수( dorado demux
또는 dorado basecaller
)를 통해 바코드 정렬 파일을 전달하여 수행됩니다. --barcode-sequences
옵션을 통해 선택적으로 사용자 정의 바코드 시퀀스를 지정할 수 있습니다. 자세한 내용은 여기를 참조하세요.
Dorado는 cDNA(PCS 및 PCB 키트) 및 RNA에 대한 폴리(A) 꼬리 길이를 추정하기 위한 초기 지원을 제공합니다. Oxford Nanopore cDNA 판독은 두 가지 서로 다른 방향으로 배열되며 Dorado 폴리(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
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 시퀀싱의 경우 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의 실행 설정에서 선택한 이 매개변수는 전위 속도를 나타냅니다. 달리기를 시작하기 전에 260bps 또는 400bps로 달리기를 원하는지 묻는 메시지가 표시됩니다. 전자는 더 정확한 결과를 산출하지만 더 적은 양의 데이터를 제공합니다. MinKNOW 버전 23.04부터 260bps 옵션은 더 이상 사용되지 않습니다.
모델 유형( hac
) : 모델의 크기를 나타내며, 더 큰 모델이 더 정확한 베이스콜을 생성하지만 시간이 더 많이 걸립니다. 세 가지 유형의 모델은 fast
, hac
및 sup
입니다. fast
모델은 가장 빠르고, sup
가장 정확하며, hac
속도와 정확성 사이의 균형을 제공합니다. 대부분의 사용자에게는 hac
모델이 권장됩니다.
모델 버전 번호( v5.0.0
) : 모델의 버전을 나타냅니다. 모델 업데이트는 정기적으로 출시되며, 버전 번호가 높을수록 일반적으로 정확성이 높아집니다.
다음은 사용 가능한 베이스 콜링 모델과 함께 사용할 수 있는 수정된 베이스 콜링 모델의 표입니다. 굵게 표시된 모델은 5kHz 데이터가 포함된 최신 출시 조건입니다.
수정 모델의 버전 관리는 베이스콜링 모델에 바인딩됩니다. 이는 수정 모델 버전이 각각의 새로운 단순 모델 릴리스에 대해 재설정됨을 의미합니다. 예를 들어, v4.3.0
베이스콜링 모델과 호환되는 6mA@v1
은 v4.2.0
베이스콜링 모델과 호환되는 6mA@v2
보다 최신 버전입니다.
베이스콜링 모델 | 호환 가능 수정 | 수정 모델 버전 | 데이터 견본 추출 빈도 |
---|---|---|---|
[email protected] | 5kHz | ||
[email protected] | 4mC_5mC 5mCG_5hmCG 5mC_5hmC 6mA | v2 v2 v2 v2 | 5kHz |
[email protected] | 4mC_5mC 5mCG_5hmCG 5mC_5hmC 6mA | v2 v2.0.1 v2.0.1 v2 | 5kHz |
[email protected] | 5kHz | ||
[email protected] | 5mCG_5hmCG 5mC_5hmC 6mA | v1 v1 v2 | 5kHz |
[email protected] | 5mCG_5hmCG 5mC_5hmC 6mA | v1 v1 v2 | 5kHz |
[email protected] | 5mCG_5hmCG | v2 | 5kHz |
[email protected] | 5mCG_5hmCG | v2 | 5kHz |
[email protected] | 5mCG_5hmCG 5mC_5hmC 5mC 6mA | 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 베이스콜링을 수행할 때 결과 출력 파일에는 U
대신 T
포함됩니다. 이는 출력 파일 형식 전반에 걸쳐 일관됩니다.
베이스콜링 모델 | 호환 가능 수정 | 수정 모델 버전 | 데이터 견본 추출 빈도 |
---|---|---|---|
[email protected] | 4kHz | ||
[email protected] | m5C m6A_DRACH 이노신_m6A pseU | v1 v1 v1 v1 | 4kHz |
[email protected] | m5C m6A_DRACH 이노신_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 |
dorado의 model
인수는 모델 경로 또는 모델 콤플렉스를 지정할 수 있습니다. 모델 복합체는 단순 모델 속도 로 시작해야 하며 다음 구문을 따릅니다.
(fast|hac|sup)[@(version|latest)][,modification[@(version|latest)]][,...]
자동으로 선택된 수정 모델은 항상 기본 단순 모델 버전과 일치하며 사용자가 특정 버전을 설정하지 않는 한 최신 호환 버전이 됩니다. 자동 수정 모델 선택은 서로 다른 단순 모델 버전에 바인딩된 수정 모델의 혼합을 허용하지 않습니다.
다음은 모델 복합체의 몇 가지 예입니다.
모델 콤플렉스 | 설명 |
---|---|
빠른 | 최신 호환 고속 모델 |
하악 | 최신 호환 HAC 모델 |
한모금 | 최신 호환 가능 모델 |
hac@최신 | 최신 호환 HAC 단순 베이스콜링 모델 |
[email protected] | v4.2.0 버전의 Simplex basecalling hac 모델 |
[email protected] | v3.5.0 버전의 Simplex basecalling hac 모델 |
하악,5mCG_5hmCG | 선택한 베이스콜 모델에 대한 최신 호환 hac 단순 모델 및 최신 5mCG_5hmCG 수정 모델 |
하크,5mCG_5hmCG@v2 | 버전 v2.0.0 의 최신 호환 hac 단순 모델 및 5mCG_5hmCG 수정 모델 |
저녁,5mCG_5hmCG,6mA | 최신 호환 가능 모델 및 최신 호환 가능 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
과 같은 다양한 오류가 발생할 수 있습니다.
이 문제를 해결하려면 Dorado의 라이브러리를 가리키도록 LD_LIBRARY_PATH
를 설정해야 합니다. 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 병목 현상으로 인해 발생하는 경우가 많습니다. 상황을 개선하기 위해 취할 수 있는 몇 가지 조치는 다음과 같습니다.
.fast5 대신 POD5 선택: POD5는 뛰어난 I/O 성능을 제공하며 I/O가 제한된 환경에서 기본 호출 속도를 향상시킵니다.
베이스 콜링 전에 데이터를 로컬 디스크로 전송: 네트워크 디스크가 Dorado에 적절한 속도를 제공할 수 없기 때문에 느린 베이스 콜링이 자주 발생합니다. 이를 완화하려면 데이터가 호스트 시스템에 최대한 가까이 있는지 확인하세요.
HDD 대신 SSD 선택: 특히 이중 베이스 콜링의 경우 로컬 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 Oxford Nanopore Technologies PLC.
Dorado는 Oxford Nanopore Technologies PLC의 조건에 따라 배포됩니다. 공중 라이선스, v. 1.0. 라이센스 사본이 이 파일과 함께 배포되지 않은 경우 http://nanoporetech.com에서 라이센스 사본을 얻을 수 있습니다.