CRAM (формат файла) - CRAM (file format)

CRAM
Расширение имени файла
.cram
РазработанМаркус Си-Ян Фриц и другие; Вадим Залунин
Тип форматаБиоинформатика
Открытый формат ?да
Интернет сайтwww.ebi.ac.Великобритания/ ena/программного обеспечения/ cram-toolkit

CRAM это сжатый столбчатый формат файла для хранения биологические последовательности выровнены к эталонная последовательность, изначально разработанный Маркусом Си-Янгом Фрицем и другие.[1]

CRAM был разработан как эффективная справочная альтернатива Карта выравнивания последовательности (SAM) и Карта двоичного выравнивания (BAM) форматы файлов. В нем необязательно используется геномная ссылка для описания различий между фрагментами выровненной последовательности и эталонной последовательностью, что снижает затраты на хранение. Кроме того, каждый столбец в формате SAM разделен на отдельные блоки, что улучшает степень сжатия. Файлы CRAM обычно на 30–60% меньше, чем файлы BAM, в зависимости от данных, хранящихся в них.

Реализации CRAM существуют в htsjdk,[2] htslib,[3] JBrowse,[4] и схватка.[5]

Спецификация формата файла поддерживается Глобальный альянс за геномику и здоровье (GA4GH)[6] со спецификацией, доступной на странице набора инструментов EBI cram.[7]

Формат файла

Базовая структура файла CRAM - это серия контейнеров, первый из которых содержит сжатую копию заголовка SAM. Последующие контейнеры состоят из заголовка сжатия контейнера, за которым следует серия фрагментов, которые, в свою очередь, содержат сами записи выравнивания, отформатированные в виде серии блоков.

CRAM файл:

Магическое числоКонтейнер
(Заголовок SAM)
Контейнер
(Данные)
...Контейнер
(Данные)
Контейнер
(EOF)

Контейнер:

Контейнер
Заголовок
Сжатие
Заголовок
Ломтик...Ломтик

Ломтик:

Ломтик
Заголовок
БлокироватьБлокировать...Блокировать

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

Селективный доступ к файлу CRAM предоставляется через индекс (с суффиксом имени файла ".crai"). В данных, отсортированных по хромосомам и положению, это указывает, какая область покрывается каждым срезом. Для несортированных данных индекс может использоваться для простой выборки Nth контейнер. Селективное декодирование также может быть достигнуто с использованием заголовка сжатия, чтобы пропустить указанный ряд данных, если требуются частичные записи.

История

ГодВерсия (и)Примечания
2010-11pre-CRAMИсходный документ с описанием справочного формата. Он не использовал имя CRAM, а называл его mzip. Это программное обеспечение было реализовано в Python в качестве прототипа и демонстрации основных концепций.[1]
2011-120.3 - 0.86Вадим Залунин из Европейский институт биоинформатики (EBI) произвела первую реализацию под названием CRAM в виде пакета под названием CRAMtools,[8] написано в Ява язык программирования.
20121.0[9]Реализовано в Ява CRAMtools.[10]
2013C реализация добавлена ​​в Scramble[11][5] инструмент Джеймса Бонфилда из Институт Wellcome Sanger.
20132.0Изменения включали поддержку более одной ссылки на срез (полезно для сильно фрагментированных сборок), улучшенное кодирование вспомогательных тегов SAM, разделение мягких клипов и вставленных баз в их собственные серии данных, метаданные для отслеживания количества записей и баз на срез и поправки к серии данных BF (флаг BAM).
2013Добавлено в htslib (0.2.0).
20142.1[12]Добавлены блоки EOF, чтобы помочь идентифицировать усеченные файлы.
2014Добавлен в htsjdk (1.127).
20143.0[13]Включение Lzma и RANS кодеки для сжатия блоков, а также несколько контрольных сумм для обеспечения целостности данных
2018Реализация Javascript как часть JBrowse[4] (1.15.0) Роба Бьюэлса.

CRAM версии 4.0 существует как прототип в Scramble,[5] изначально был продемонстрирован в 2015 году, но еще не принят в качестве стандарта.

Смотрите также

Рекомендации

  1. ^ а б Си-Ян Фриц, Маркус; Лейнонен, Раско; Кокрейн, Гай; Бирни, Юэн (май 2011 г.). «Эффективное хранение данных высокопроизводительного секвенирования ДНК с использованием сжатия на основе ссылок». Геномные исследования. 21 (5): 734–740. Дои:10.1101 / гр.114819.110. ISSN  1549-5469. ЧВК  3083090. PMID  21245279.
  2. ^ "Htsjdk by Broad Institute". samtools.github.io. Получено 2018-10-14.
  3. ^ "Samtools". www.htslib.org. Получено 2018-10-14.
  4. ^ а б «JBrowse · Быстрый встраиваемый браузер генома, созданный с помощью HTML5 и JavaScript». jbrowse.org. Получено 2018-10-14.
  5. ^ а б c Бонфилд, Джеймс К. (14.06.2014). «Инструмент преобразования Scramble». Биоинформатика. 30 (19): 2818–2819. Дои:10.1093 / биоинформатика / btu390. ISSN  1460-2059. ЧВК  4173023. PMID  24930138.
  6. ^ "GA4GH". www.ga4gh.org. Получено 2018-10-14.
  7. ^ EMBL-EBI. "Набор инструментов CRAM <Программное обеспечение <Европейский архив нуклеотидов . www.ebi.ac.uk. Получено 2018-10-14.
  8. ^ "вадимзалунин / зубр". GitHub. 2017-08-08. Получено 2018-10-14.
  9. ^ «Спецификация CRAM 1.0» (PDF).
  10. ^ "enasequence / cramtools". GitHub. 2018-10-02. Получено 2018-10-14.
  11. ^ "jkbonfield / io_lib". GitHub. 2018-10-16. Получено 2018-10-14.
  12. ^ «Спецификация CRAM 2.1» (PDF).
  13. ^ «Спецификация CRAM 3.0» (PDF).