Zenome Storage System

Высокопроизводительная система хранения геномных данных

Zenome Storage System задумывается как фундамент для создания Genomics-IDE,
интегрированной среды для эффективной работы с генетическими данными. Так,
например, Zenome Storage System имеет следующие особенности:

К каждому типу данных нужен особый подход

Работа с генетическими данными включает операции с данными разных типов, что приводит к существенно разным требованиям как к аппаратному, так и к программному обеспечению, которое имеет дело с данными определенного типа.

  1. Raw Sequence (fastq, uBAM): данные от ДНК-секвенатора

    • Отправная точка для анализа и реанализа данных в будущем
    • Значительный размер данных (до 500Gb)
    • Практически не используются напрямую
    • Невозможно восстановить при потере

    Приоритет в работе с этим типом данным в Zenome Storage System — обеспечить их сохранность.

  2. Aligned sequence data (formats: SAM, BAM, CRAM)

    • Производные данные.
    • Значительный размер данных (дп 500Gb)
    • Могут использоваться напрямую (напр, визуализации картирования на референс)
    • Можно удалить и при необходимости восстановить позже.

    Приоритет в работе с этим типом данным в Zenome Storage System — обеспечить их доступность при необходимости и минимизировать затраты на хранение.

  3. Sequence variation data (formats: VCF, GVCF, TXT, etc)

    • Непосредственно характеризуют отличия в последовательности ДНК
    • Умеренный размер данных. Удаление для освобождения места не имеет смысла.
    • Используются для получения клинической интерпретации и еще много где.
    • Зачастую в задачах требуется лишь небольшая определенная часть данных.
    • Огромное количество несовместимых между собой разновидностей VCF.
    • Распространенная практика внесения в VCF данных из баз аннотаций усложняет обработку

Zenome Storage System

Zenome Storage System представляет собой программно определеяемую систему хранения геномных данных. При разворачивании системы пользователь устанавливает управляющую программу на нескольких серверах, работающих под управлением Unix-совместимой операционной системы (рекомендуется использовать современные дистрибутивы Linux).

Затем с помощью специального скрипта формируется начальная конфигурация системы, в том числе и настраивается способ авторизации для администратора, число узлов, их сетевые адреса или имена. Система сгенерирует для каждого узла конфигурационный файл, а также приватный ключ для администратирования. Конфигурационные файлы применяются на соответствующих узлах при запуске управляющей программы, после чего (если есть сетевая доступность) сервера обнаруживают друг друга и формируют единый кластер.

После этого пользователь на каждом узле настраивает хранилище данных, указывая как и где узел может разместить данные. Каждый способ хранения представляет собой независимый модуль, который берет на себя реализацию взаимодействия с соответствующим бэкэндом. Поддержка локального хранения на сервере, а также популярных сетевых протоколов (FTP, SMB, iscsi и так далее) реализована в стандартных модулях, доступных по умолчанию. Кроме того существуют модули-адаптеры для интеграции популярных облачных сервисов как мест хранения данных.

После этого пользователю предлагается настроить политики хранения данных, настраивая либо с нуля (не рекомендуется для большинства пользователей), либо используя пресеты с популярными вариантами. Политики представляют собой декларативную конфигурацию для того, как будут распределяться данные в системе, какое должно использоваться число независимых дублирований данных, применяется ли шифрование, формируются группы для пользователей системы и настраиваются их права.

Затем создается ряд пользователей, которые получают возможность работать с системой одним из доступных способов: консольный клиент (Win/Linux/Mac), оконное приложение (Win/Linux/Mac) или же через Web interface (Win/Linux/Mac/Android/iOS/…). В простейшем случае авторизация пользователей происходит по паролю: при регистрации администратор рассылает одноразовые пароли для доступа, которые пользователь меняет на свой при первом входе.

Zenome Storage System и инкрементное аннотирование

Zenome Storage System проводит черту между данными, относящимися к образцу, и данными из базы аннотаций. Храня их отдельно, мы избегаем выбора между постоянным обновлением всех VCF и работой с устаревшими данными. Мы проанализировали причины, почему такой подход пользуется популярностью и предлагаем альтернативу — инкрементное аннотирование. При нем аннотирование происходит на лету прямо внутри системы, и пользователю становится доступен “виртуальный проаннотированный файл”, который он может скачать, просмотреть или отфильтровать и просмотреть результат.

Допустим имеется большое число образцов, которые нужно проанализировать по определенным базам вариантов, например ClinVar. Со временем выходят новые версии для базы аннотаций и чтобы всегда иметь свежие данные по образцам, раньше приходилось каждый раз перезапускать аннотирование каждого образца, а затем сравнивать с прошлой версией на предмет новых существенных данных. Zenome Storage System, работая данными именно как с генетическими данными, позволяет при обновлении базы аннотаций показать, для каких образцов это обновление будет существенно менять результат аннотаций.

▶︎
all
running...

Например, в 2020 году в ClinVar был добавлен вариант NM_003000.3(SDHB):c.332T>C (p.Leu111Pro), классифицируемый как Likely pathogenic​. Zenome Storage System в этом случае для всех образцов, в которых такой вариант присутствует, обновила бы виртуальный файл аннотации, а также бы уведомила пользователя о существенном обновлении аннотаций. Соотвтетсвующая запись появится на странице образца в приложении-клиенте или в выдаче консольного клиента, а также на странице информации о базе аннотации появится запись, о том для скольки образцов изменились аннотации. Пользователь может настроить дополнительные средства уведомления при желании (например, уведомить лечащего врача).

Чтобы избежать уведомлений о несущественных изменениях, пользователь может указать, что считать важным. Например, в приведенном выше примере это может быть изменение категории варианта с “патогенность не определена” на “патогенный” или появление новой записи, причем как VUS, так и патогенной. Система позволяет просто указать какие поля считать важными. Кроме того, есть экспериментальная возможность задавать сложные условия на специальном языке специально для тех случаев, когда простым способом задать желаемое условие невозможно.

Прозрачная работа с файлами в Zenome Storage System без сохранения на диске

На современных версиях Linux и Mac (поддержка Windows ожидается) существует возможность работать с файлами, находящимися в сети, как будто они расположены на диске вашего компьютера. Для этого пользователь через консольную утилиту или десктопный клиент выбирает пустую папку на своем компьютере и файлы, которые следует в эту папку отобразить. Указанные файлы появляются в этой папке и пользователь может использовать привычные инструменты, работающие с файлами на диске, для работы с ними. Поддерживается произвольное чтение, то есть можно запросить по индексу желаемый геномный интервал и скачана будет только требуемая часть файла.

Еще больший интерес эта возможность представляет по отношению к файлам крупных баз аннотаций, и Zenome Storage System поддерживает и этот случай. Пока ваш компьютер подключен к системе (по локальной сети или через интернет) вы можете использовать хранящиеся в системе файлы баз аннотаций как будто бы они расположены на вашей машине локально.

Например, Ensembl Variant Effect Predictor требует для своей работы скачивание кеша и ресурсных файлов, совокупный размер которых в зависимости от желаемого функционала составляет размер до нескольких террабайт (так, база gnomAD v2.1.1 требует порядка 500гб, а gnomAD v3.1.1 — несколько террабайт). Zenome Storage System позволяет использовать VEP как будто файлы присутствуют на компьютере при условии подключения к сети. При пропадании соединения (по любой причине, например, плохая связь) запущенный процесс анализа не падает с ошибкой, а просто ждет появления связности и продолжит работу как ни в чем не бывало.

sequenceDiagram participant V as VEP participant C as Client participant S as Node V->>+C: READ /homo_sapiens/... bytes 0-1023 C->>+S: GET /homo_sapiens/... bytes 0-1023 S->>-C: DATA /homo_sapiens/... bytes 0-1023 C->>-V: DATA /homo_sapiens/... bytes 0-1023 V->>+C: READ /homo_sapiens/... bytes 1024-2047 C->>+S: GET /homo_sapiens/... bytes 1024-2047 Note over C,S: Connection Broken loop Repeating C-->S: Try to reconnect end Note over C,S: Connection Restored C->>S: GET /homo_sapiens/... bytes 1024-2047 S->>-C: DATA /homo_sapiens/... bytes 1024-2047 C->>-V: DATA /homo_sapiens/... bytes 1024-2047

Zenome Storage System для организации файлов при помощи метаданных

Zenome Storage System при загрузке новых данных предлагает пользователю добавить метаданные к файлу, а также извлекает их из файла, если они уже там есть (например, в хедере VCF). Заполненные метаданные дают возможность использовать их в запросах, а также автоматически связывать несколько файлов по определенному признаку.

Например, все файлы и виртуальные файлы, которые относятся к конкретному человеку объединяются в одну группу. На странице любого файла этой группы в разделе метаданные имеется возможность просмотреть этот список.

erDiagram REPORT { string id data content } SAMPLE { string sampleId timestamp collectedAt } PERSON { string firstName string lastName } PERSON ||--o{ SAMPLE : owns REPORT ||--o{ SAMPLE : depends PERSON ||--o{ REPORT : ordered

Другой пример метаданных, это дата и место взятия образца для секвенирования, используемый прибор и так далее. Если появится подозрение, что какой-то прибор выдает некорректные данные, можно будет просмотреть весь список образцов, сделанных на нем в определенный период, изучить их и принять необходимые меры.

Использование Zenome Storage System для частичного раскрытия данных

Zenome Storage System позволяет владельцам генетических данных (в первую очередь это сами пациенты) регистрироваться в системе и раскрывать их лишь частично. Данная возможность требует специальной настройки. Далее приведены возможные сценарии использования.

Например, для создания генетического отчета, требуется определенное подмножество генетических данных. Пользователь вместо того, чтобы передавать весь файл, используя специальный клиент Zenome Storage System (который может быть брендирован как клиент фирмы-поставщика отчетов), регистрирует этот файл в системе (без загрузки). После этого, выбрав желаемый отчет, система отправляет ему запрос на чтение определенного списка позиций из этого файла. В случае, если он соглашается, только указанные данные извлекаются из файла и отправляются в систему.

▶︎
all
running...

Владелец геномных данных может пожелать принять участие в генетических исследованиях. Он также регистрирует файл с данными через специальную программу-клиент, подготовленную исследовательской группой, и опционально заполняет предлагаемые формы анкет. После этого исследователи могут сформировать запрос, который будет исполняться на компьютере владельца данных. Затем результаты вычислений отправляются исследовательской группы. (Объем передаваемых данных устанавливается владельцем при регистрации файла в системе)

Практически неограниченные возможности по кастомизации

Zenome Storage System позволяет гибко настраивать политики для подключения новых узлов в сеть, давая возможность создавать как централизованные системы, так и децентрализованные.

Существует возможность использовать полностью децентрализованную сеть для резервного хранения данных. Узлы такой сети хранят предварительно зашифрованную информацию и не могут получить к ней доступ. В момент добавления узла в сеть или выхода из сети, система корректирует число реплик согласно указанным политикам. Например, узлами такой сети могут быть компьютеры, подключенные к интернет, владельцы которых желают получить вознаграждение за предоставление своих неиспользуемых ресурсов жесткого диска.