Dorado — это высокопроизводительный, простой в использовании базовый процессор с открытым исходным кодом для чтения Oxford Nanopore.
Один исполняемый файл с разумными настройками по умолчанию, автоматическим обнаружением и настройкой оборудования.
Работает на процессорах Apple Silicon (семейство M1/2) и графических процессорах Nvidia, включая несколько графических процессоров с линейным масштабированием (см. «Платформы»).
Модифицированный базовый вызов.
Дуплексный базовый вызов (посмотрите следующее видео, чтобы познакомиться с дуплексом).
Классификация симплексных штрих-кодов.
Поддержка выровненного вывода чтения в SAM/BAM.
Начальная поддержка оценки хвоста поли(А).
Поддержка исправления ошибок однократного чтения.
Поддержка 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 тщательно оптимизирован для графических процессоров Nvidia A100 и H100 и обеспечивает максимальную производительность в системах с этими графическими процессорами.
Dorado был тщательно протестирован и поддерживается на следующих системах:
Платформа | графический процессор/процессор | Минимальные требования к программному обеспечению |
---|---|---|
Linux x86_64 | (Г)В100, А100 | Драйвер CUDA ≥450.80.02 |
Н100 | Драйвер CUDA ≥520 | |
Linux Arm64 | Джетсон Орин | Linux для Tegra ≥34.1.1 |
Windows x86_64 | (Г)В100, А100 | Драйвер CUDA ≥452,39 |
Н100 | Драйвер CUDA ≥520 | |
Яблоко | Яблочный кремний (M1/M2) |
Системы Linux или Windows, не перечисленные выше, но имеющие графические процессоры Nvidia с видеопамятью ≥8 ГБ и архитектурой начиная с Pascal (кроме P100/GP100), не подвергались широкому тестированию, но ожидается, что они будут работать. При выполнении базовых вызовов с помощью устройств Apple мы рекомендуем системы с ≥16 ГБ единой памяти.
Если у вас возникли проблемы с запуском в вашей системе, сообщите о проблеме.
Тесты AWS для графических процессоров Nvidia для Dorado 0.3.0 доступны здесь. Обратите внимание: скорость базового вызова Dorado постоянно улучшается, поэтому эти тесты могут не отражать производительность последней версии.
Для оптимальной производительности Dorado требует ввода файла POD5. Пожалуйста, конвертируйте файлы .fast5 перед вызовом basecalling.
Dorado автоматически определит свободную память вашего графического процессора и выберет подходящий размер пакета.
Dorado автоматически запустится в режиме cuda:all
с несколькими графическими процессорами. Если у вас разнородная коллекция графических процессоров, выберите более быстрые графические процессоры с помощью флага --device
(например, --device cuda:0,2
). Если этого не сделать, это отрицательно скажется на производительности.
Ниже приведены полезные команды для начала работы с Dorado. Чтобы просмотреть все параметры и их значения по умолчанию, запустите dorado -h
и dorado <subcommand> -h
.
Dorado может автоматически выбирать модель базового вызова, используя выбор скорости модели ( fast
, hac
, sup
) и данных pod5. Эта функция не поддерживается для данных fast5. Если модель не существует локально, Dorado автоматически загрузит ее и будет использовать.
Дорадо продолжает поддерживать модельные пути.
Подробнее читайте Комплекс автоматического подбора модели.
Чтобы запустить базовый вызов Dorado, используйте автоматически загруженную модель hac
в каталоге с файлами POD5 или в одном файле POD5 (файлы .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
плюс новые базовые вызовы ( incomplete.bam
можно отбросить после завершения базового вызова) .
Примечание. При использовании --resume-from
важно выбрать другое имя для файла BAM, в который вы записываете . Если вы используете то же имя файла, прерванный файл BAM потеряет существующие базовые вызовы, и базовый вызов возобновится с самого начала.
Dorado может обнаруживать и удалять любые последовательности адаптеров и/или праймеров в начале и конце считывания ДНК. Обратите внимание: если вы собираетесь демультиплексировать считывания позже, обрезка адаптеров и праймеров может привести к удалению некоторых частей фланкирующих областей штрих-кодов, что может помешать правильному демультиплексированию.
По умолчанию 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 автоматически обрезаются во время вызова базы. Однако, в отличие от ДНК, адаптер РНК не может быть обрезан после вызова оснований.
Помимо традиционного определения оснований A, T, C и G, Dorado также может обнаруживать модифицированные основания, такие как 5-метилцитозин (5mC), 5-гидроксиметилцитозин (5hmC) и N 6 -метиладенозин (6mA). Эти модифицированные основания играют решающую роль в эпигенетической регуляции.
Чтобы вызвать модификации, дополните аргумент моделей списком модификаций, разделенных запятыми:
$ dorado basecaller hac,5mCG_5hmCG,6mA pod5s/ > calls.bam
В приведенном выше примере базовый вызов выполняется с обнаружением как 5mC/5hmC в контекстах CG, так и 6mA во всех контекстах.
Обратитесь к столбцу «Совместимые модификации» таблицы моделей ДНК, чтобы просмотреть доступные модификации, которые можно вызвать с помощью опции --modified-bases
.
Модифицированный базовый вызов также поддерживается с помощью дуплексного базового вызова, где он производит вызовы гемиметилирования.
Чтобы запустить дуплексный базовый вызов, выполните команду:
$ dorado duplex sup pod5s/ > duplex.bam
При использовании команды duplex
будут получены два типа результатов последовательности ДНК: «симплекс» и «дуплекс». Любое специфическое положение в ДНК, находящееся в дуплексном чтении, также наблюдается в двух симплексных цепях (матрице и комплементе). Таким образом, каждая позиция ДНК, секвенированная дуплексом, будет покрыта как минимум тремя отдельными показаниями на выходе.
Тег dx
в записи BAM для каждого чтения можно использовать для различения симплексного и дуплексного чтения:
dx:i:1
для дуплексного чтения.
dx:i:0
для симплексных операций чтения, не имеющих дуплексных потомков.
dx:i:-1
для симплексных операций чтения, имеющих дуплексные потомки.
Дорадо сообщит о скорости дуплекса как количество нуклеотидов в дуплексных базовых значениях, умноженное на два и разделенное на общее количество нуклеотидов в симплексных базовых числах. Это значение является близким приближением к доле нуклеотидов, участвовавших в дуплексном вызове оснований.
Дуплексный вызов оснований может выполняться с помощью модифицированного обнаружения оснований, вызывая вызовы гемиметилирования для дуплексного чтения:
$ dorado duplex hac,5mCG_5hmCG pod5s/ > duplex.bam
Более подробную информацию о том, как представлены вызовы гемиметилирования, можно найти на странице 7 документа спецификации SAM (версия aa7440d) и документации 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
для установки кмера и размера окна соответственно. Для получения полного списка поддерживаемых параметров 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 несовместимо с командой summary.
Dorado поддерживает классификацию штрих-кодов для существующих базовых вызовов, а также непосредственное создание классифицированных базовых вызовов.
В этом режиме считывания классифицируются по группам штрих-кодов во время базового вызова как часть одной и той же команды. Чтобы включить это, запустите:
$ dorado basecaller <model> <reads> --kit-name <barcode-kit-name> > calls.bam
В результате будет создан один выходной поток с классифицированными чтениями. Классификация будет отражена в имени группы чтения, а также в теге BC
выходной записи.
По умолчанию Dorado настроен на обрезку штрих-кода при считывании. Чтобы отключить обрезку, добавьте --no-trim
в командную строку.
Эвристика по умолчанию для двусторонних штрих-кодов заключается в поиске их на обоих концах считываемого кода. Это приводит к более высокому уровню классификации, но также может привести к более высокому количеству ложных срабатываний. Чтобы решить эту проблему, dorado basecaller
также предусмотрен параметр --barcode-both-ends
позволяющий принудительно обнаруживать двусторонние штрих-коды на обоих концах перед классификацией. Это значительно уменьшит количество ложных срабатываний, но также снизит общий уровень классификации.
Выходные данные 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 имеет первоначальную поддержку для оценки длины хвоста поли(А) для кДНК (наборы PCS и PCB) и РНК. Обратите внимание, что считывания кДНК Oxford Nanopore секвенируются в двух разных ориентациях, а оценка длины хвоста поли(A) Dorado учитывает оба (гомополимеры A и T). Эту функцию можно включить, передав --estimate-poly-a
команде basecaller
. По умолчанию он отключен. Предполагаемая длина хвоста хранится в теге pt:i
выходной записи. Операции чтения, для которых невозможно оценить длину хвоста, не будут иметь тега pt:i
. Пользовательские последовательности праймеров и оценку прерванных хвостов можно настроить с помощью опции --poly-a-config
. Подробнее см. здесь.
Dorado поддерживает исправление ошибок однократного чтения благодаря интеграции алгоритма HERRO. HERRO использует выравнивание «все против всех» с последующей коррекцией с учетом гаплотипов с использованием модели глубокого обучения для достижения более высокой точности однократного чтения. Исправленные чтения в первую очередь полезны для создания сборок диплоидных организмов de novo .
Чтобы исправить чтение, запустите:
$ dorado correct reads.fastq > corrected_reads.fasta
Dorado правильный поддерживает только FASTQ(.gz) в качестве входных данных и генерирует файл FASTA в качестве выходных данных. Входные данные могут быть несжатыми или сжатыми с помощью bgz
. Индексный файл создается для входного файла FASTQ в той же папке, если он еще не существует. Убедитесь, что папка с входным файлом доступна для записи для процесса dorado
и имеет достаточно места на диске.
Инструмент исправления ошибок требует больших вычислительных ресурсов и памяти. В результате его лучше всего запускать в системе с несколькими высокопроизводительными ядрами ЦП (>= 64 ядра), большой системной памятью (>= 256 ГБ) и современным графическим процессором с большим объемом видеопамяти (>= 32 ГБ).
Все необходимые веса моделей автоматически загружаются Dorado. Однако веса также можно предварительно загрузить и передать через командную строку в случае автономного выполнения. Для этого запустите:
$ dorado download --model herro-v1 $ dorado correct -m herro-v1 reads.fastq > corrected_reads.fasta
Dorado Correct теперь также предоставляет функцию индивидуального запуска картографирования (этап с использованием только процессора) и вывода (этап с интенсивным использованием графического процессора). Это позволяет разделить тяжелые этапы ЦП и ГП на отдельные этапы, которые можно даже запускать на разных узлах с соответствующими вычислительными характеристиками. Пример:
$ 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
Размер автоматически вычисленного пакета вывода может быть слишком большим для вашей системы. Если у вас возникают предупреждения/ошибки относительно доступной памяти графического процессора, попробуйте уменьшить размер пакета/выбрать его вручную. Например:
$ 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
. Если вы используете набор для прямого секвенирования РНК, это будет 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 бит/с или 400 бит/с. Первый дает более точные результаты, но предоставляет меньше данных. Начиная с версии MinKNOW 23.04, опция 260 бит/с устарела.
Тип модели ( hac
) : представляет размер модели, при этом более крупные модели дают более точные базовые вызовы, но занимают больше времени. Три типа моделей: fast
, hac
и sup
. fast
модель — самая быстрая, sup
— самая точная, а hac
обеспечивает баланс между скоростью и точностью. Большинству пользователей рекомендуется модель hac
.
Номер версии модели ( v5.0.0
) : Обозначает версию модели. Обновления моделей выпускаются регулярно, и более высокие номера версий обычно означают большую точность.
Ниже приведена таблица доступных моделей базового вызова и модифицированных моделей базового вызова, которые можно использовать с ними. Модели, выделенные жирным шрифтом, относятся к последнему выпущенному состоянию с данными 5 кГц.
Управление версиями моделей модификации привязано к модели базового вызова. Это означает, что версия модели модификации сбрасывается для каждого нового выпуска симплексной модели. Например, 6mA@v1
совместимый с моделями с базовым вызовом v4.3.0
является более новым, чем 6mA@v2
совместимый с моделями с базовым вызовом v4.2.0
.
Модели базового вызова | Совместимый Модификации | Модификации Модель Версия | Данные Выборка Частота |
---|---|---|---|
[email protected] | 5 кГц | ||
[email protected] | 4мК_5мК 5mCG_5hmCG 5mC_5hmC 6мА | v2 v2 v2 v2 | 5 кГц |
[email protected] | 4мК_5мК 5mCG_5hmCG 5mC_5hmC 6мА | v2 v2.0.1 v2.0.1 v2 | 5 кГц |
[email protected] | 5 кГц | ||
[email protected] | 5mCG_5hmCG 5mC_5hmC 6мА | v1 v1 v2 | 5 кГц |
[email protected] | 5mCG_5hmCG 5mC_5hmC 6мА | v1 v1 v2 | 5 кГц |
[email protected] | 5mCG_5hmCG | v2 | 5 кГц |
[email protected] | 5mCG_5hmCG | v2 | 5 кГц |
[email protected] | 5mCG_5hmCG 5mC_5hmC 5мС 6мА | v3.1 v1 v2 v3 | 5 кГц |
[email protected] | 5mCG_5hmCG | v2 | 4 кГц |
[email protected] | 5mCG_5hmCG | v2 | 4 кГц |
[email protected] | 5mCG_5hmCG | v2 | 4 кГц |
[email protected] | 5mCG_5hmCG | v2 | 4 кГц |
[email protected] | 5mCG_5hmCG | v2 | 4 кГц |
[email protected] | 5mCG_5hmCG | v2 | 4 кГц |
[email protected] | 5mCG_5hmCG | v2 | 4 кГц |
[email protected] | 5mCG_5hmCG | v2 | 4 кГц |
[email protected] | 5mCG_5hmCG | v2 | 4 кГц |
[email protected] | 5mCG_5hmCG | v2 | 4 кГц |
[email protected] | 5mCG_5hmCG | v2 | 4 кГц |
[email protected] | 5mCG_5hmCG | v2 | 4 кГц |
[email protected] | 5мКГ | v2 | 4 кГц |
[email protected] | 5мКГ | v2 | 4 кГц |
[email protected] | 5мКГ | v2 | 4 кГц |
[email protected] | 5мКГ | v2 | 4 кГц |
[email protected] | 5мКГ | v2 | 4 кГц |
[email protected] | 5мКГ | v2 | 4 кГц |
[email protected] | 4 кГц | ||
[email protected] | 5mCG_5hmCG 5мКГ | v0 v0.1 | 4 кГц |
[email protected] | 5mCG_5hmCG 5мКГ | v0 v0.1 | 4 кГц |
[email protected] | 5mCG_5hmCG 5мКГ | v0 v0.1 | 4 кГц |
Примечание. Формат BAM не поддерживает основания U
Следовательно, когда Dorado выполняет базовый вызов РНК, результирующие выходные файлы будут включать T
вместо U
Это одинаково для всех типов выходных файлов.
Модели базового вызова | Совместимый Модификации | Модификации Модель Версия | Данные Выборка Частота |
---|---|---|---|
[email protected] | 4 кГц | ||
[email protected] | м5С m6A_DRACH inosine_m6A PSU | v1 v1 v1 v1 | 4 кГц |
[email protected] | м5С m6A_DRACH inosine_m6A PSU | v1 v1 v1 v1 | 4 кГц |
[email protected] | 4 кГц | ||
[email protected] | м6А m6A_DRACH PSU | v1 v1 v1 | 4 кГц |
[email protected] | м6А m6A_DRACH PSU | v1 v1 v1 | 4 кГц |
[email protected] | 4 кГц | ||
[email protected] | 4 кГц | ||
[email protected] | m6A_DRACH | v1 | 4 кГц |
rna002_70bps_fast@v3 | 3 кГц | ||
rna002_70bps_hac@v3 | 3 кГц |
Аргумент model
в dorado может указывать либо путь модели, либо комплекс модели. Комплексная модель должна начинаться со скорости симплексной модели и следовать следующему синтаксису:
(fast|hac|sup)[@(version|latest)][,modification[@(version|latest)]][,...]
Автоматически выбранные модели модификации всегда будут соответствовать версии базовой симплексной модели и будут последней совместимой версией, если пользователь не установит конкретную версию. Автоматический выбор модели модификации не позволит смешивать модели модификации, привязанные к разным версиям симплексной модели.
Вот несколько примеров модельных комплексов:
Модельный Комплекс | Описание |
---|---|
быстрый | Последняя совместимая быстрая модель |
хак | Последняя совместимая модель HAC |
Как дела | Последняя совместимая модель суппорта |
хак@последний | Последняя совместимая модель базового вызова hac simplex |
хак@v4.2.0 | Модель симплексного базового вызова HAC с версией v4.2.0 |
хак@v3.5 | Модель симплексного базового вызова HAC с версией v3.5.0 |
хак,5mCG_5hmCG | Последняя совместимая симплексная модель hac и последняя модель модификаций 5mCG_5hmCG для выбранной модели базового вызова. |
хак,5mCG_5hmCG@v2 | Последняя совместимая симплексная модель hac и модель модификации 5mCG_5hmCG с версией v2.0.0 |
суп,5mCG_5hmCG,6мА | Последняя совместимая модель суппорта и последние совместимые модели модификаций 5mCG_5hmCG и 6 мА . |
Как только процесс автоматического выбора модели найдет подходящую модель с учетом входных данных, он выполнит поиск существующих каталогов моделей, чтобы избежать ненужной загрузки моделей. Поведением этого поиска можно управлять следующим образом:
Установка аргумента CLI --models-directory
Аргумент --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
Дуплексный базовый вызов — это процесс с интенсивным вводом-выводом, который может работать плохо при использовании сетевого хранилища или жесткого диска. Обычно это можно улучшить, разделив файлы POD5 соответствующим образом.
Сначала установите инструменты Python POD5:
Документацию 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 работает на широком спектре графических процессоров, но в первую очередь разработан для Nvidia A100/H100 и Apple Silicon. Дорадо пытается найти оптимальный размер пакета для базового вызова. Тем не менее, на некоторых графических процессорах с низким объемом оперативной памяти пользователи могут столкнуться со сбоями в работе памяти.
Потенциальным решением этой проблемы может быть установка размера пакета вручную с помощью следующей команды:
dorado basecaller --batchsize 64 ...
Примечание. Уменьшать потребление памяти путем изменения параметра chunksize
не рекомендуется, поскольку это влияет на результаты базового вызова.
Низкая загрузка графического процессора может привести к снижению скорости базового вызова. Эту проблему можно выявить с помощью таких инструментов, как nvidia-smi
и nvtop
. Низкая загрузка графического процессора часто связана с узкими местами ввода-вывода при базовых вызовах. Вот несколько шагов, которые вы можете предпринять, чтобы улучшить ситуацию:
Выбирайте POD5 вместо .fast5: POD5 обладает превосходной производительностью ввода-вывода и повысит скорость базовых вызовов в средах с ограниченным вводом-выводом.
Перенесите данные на локальный диск перед базовым вызовом: часто происходит медленный базовый вызов, поскольку сетевые диски не могут обеспечить Dorado адекватной скоростью. Чтобы избежать этого, убедитесь, что ваши данные находятся как можно ближе к хост-компьютеру.
Выбирайте твердотельный накопитель вместо жесткого диска. Использование локального твердотельного накопителя, особенно при дуплексном базовом вызове, может обеспечить значительные преимущества в скорости. Это связано с тем, что алгоритм дуплексного базового вызова использует интенсивный произвольный доступ к данным.
При работе в 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 читайте здесь.
(c) 2024 г., Oxford Nanopore Technologies PLC.
Дорадо распространяется на условиях Oxford Nanopore Technologies PLC. Публичная лицензия, версия 1.0. Если копия Лицензии не распространялась вместе с этим файлом, Вы можете получить ее по адресу http://nanoporetech.com.