Dorado Variant
Alpha Release
Dorado variant is an early-stage diploid small variant caller, it is released for experimental and evaluation purposes.
This version is intended for feedback and should not yet be considered production-ready.
Should I use variant or polish?
Dorado variant is a short variant caller for diploid samples aligned to a haploid species reference (e.g. GRCh38) whereas polish is intended for workflows involving reads aligned to a haplotype-resolved (or haploid) draft assembly.
Although Dorado polish can also generate a VCF file of variants, there are some substantial distinctions between the two tools.
dorado polish |
dorado variant |
|---|---|
| - Polishing of draft assemblies - Input is a haplotype-resolved draft assembly - Output is a polished sequence - Optionally, a VCF/gVCF of diffs is output - Uses specialised polishing models |
- Diploid variant calling - Input is a reference genome - Output is a VCF/gVCF of called diploid variants - Uses specialised variant calling models |
Quick Start
# Align the reads using dorado aligner, sort and index
dorado aligner <ref.fasta> <reads.bam> | samtools sort --threads <num_threads> > aligned_reads.bam
samtools index aligned_reads.bam
# Call variants
dorado variant <aligned_reads.bam> <ref.fasta> > variants.vcf
For this preview release, current models require signal-level information encoded in the move tables in the input BAM file. This requires the --emit-moves flag to be set during basecalling.
In case the input basecalled reads are in a FASTQ format with the HTS-style ONT tags, please use the --add-fastq-rg option with Dorado aligner to ensure proper header formatting:
# Align the reads using dorado aligner, sort and index
dorado aligner --add-fastq-rg <ref.fasta> <reads.fastq> | samtools sort --threads <num_threads> > aligned_reads.bam
samtools index aligned_reads.bam
Output to a folder
Specifying -o will write the output to one or more files stored in the given output directory (and create the directory if it doesn't exist). Concretely:
- VCF file:
<output_dir>/variants.vcfwhich contains only variant calls by default, or records for all positions if--gvcfis specified.
Resources
Dorado variant will automatically select the compute resources to perform variant calling. It can use one or more GPU devices. Variant calling can be performed on CPU-only, but we highly recommend to run on GPU for desired performance. High-memory GPUs are recommended to run this tool.
To specify resources manually use:
-x / --device- to specify specific GPU resources (if available).--threads- to set the maximum number of threads to be used for everything but the inference.--infer-threads- number of inference workers to use (per device). For CPU-only runs, this specifies the number of CPU inference threads.--batchsize- batch size for inference, important to control memory usage on the GPUs.
Example:
Models
By default, variant queries the BAM and selects the best model for the basecalled reads, if supported.
Alternatively, a model can be selected through the command line in the following way:
| Value | Description |
|---|---|
auto |
Determine the best compatible model based on input data. |
<basecaller_model> |
Simplex basecaller model name (e.g. dna_r10.4.1_e8.2_400bps_hac@v5.0.0) |
<variant_model> |
Variant calling model name (e.g. dna_r10.4.1_e8.2_400bps_hac@v5.0.0_variant_mv@v1.0) |
<path> |
Local path on disk where the model can be loaded from. |
When the auto or the <basecaller_model> syntax is used the most recent version of a compatible model will be selected for variant calling.
Current variant calling models require the presence of move tables in the input BAM file. Move tables need to be exported during basecalling.
If a non-compatible model is selected for the input data, or if there are multiple read groups in the input dataset which were generated using different basecaller models, Dorado variant will report an error and stop execution.
Supported basecaller models
dna_r10.4.1_e8.2_400bps_hac@v5.0.0
More models will be supported in the near future. This is an alpha release.
Common questions and Troubleshooting
I created a merged BAM file composed of multiple different data types. Why can't I call variants on this dataset? Using --ignore-read-groups does not help either.
Please see the following section in Dorado polish:
I created a merged BAM file composed of multiple different data types
Memory consumption / Torch out-of-memory (OOM) issues
The default inference batch size (10) may be too high for your GPU. If you are experiencing warnings/errors regarding available GPU memory, try reducing the batch size:
or the number of inference workers (the default is 2 workers per device):
Note that the GPU memory consumption also depends on the coverage of the input data, as feature tensor size varies relative to this.
"[error] Input BAM file was not aligned using Dorado."
Dorado variant accepts only BAMs aligned with Dorado aligner. Aligners other than Dorado aligner are not supported.
Example usage:
dorado aligner <draft.fasta> <reads.bam> | samtools sort --threads <num_threads> > aln.bam
samtools index aln.bam
"[error] Input BAM file has no basecaller models listed in the header."
Please refer to this section.
"[error] Duplex basecalling models are not supported."
Dorado variant currently supports data generated using only the simplex basecallers.
Does Dorado Variant phase variants?
At this early stage, Dorado variant does not yet produce phased VCF variants. This is work in progress.