CRAM (формат файла) - CRAM (file format)
Расширение имени файла | .cram |
---|---|
Разработан | Маркус Си-Ян Фриц и другие; Вадим Залунин |
Тип формата | Биоинформатика |
Открытый формат ? | да |
Интернет сайт | www |
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-11 | pre-CRAM | Исходный документ с описанием справочного формата. Он не использовал имя CRAM, а называл его mzip. Это программное обеспечение было реализовано в Python в качестве прототипа и демонстрации основных концепций.[1] |
2011-12 | 0.3 - 0.86 | Вадим Залунин из Европейский институт биоинформатики (EBI) произвела первую реализацию под названием CRAM в виде пакета под названием CRAMtools,[8] написано в Ява язык программирования. |
2012 | 1.0[9] | Реализовано в Ява CRAMtools.[10] |
2013 | C реализация добавлена в Scramble[11][5] инструмент Джеймса Бонфилда из Институт Wellcome Sanger. | |
2013 | 2.0 | Изменения включали поддержку более одной ссылки на срез (полезно для сильно фрагментированных сборок), улучшенное кодирование вспомогательных тегов SAM, разделение мягких клипов и вставленных баз в их собственные серии данных, метаданные для отслеживания количества записей и баз на срез и поправки к серии данных BF (флаг BAM). |
2013 | Добавлено в htslib (0.2.0). | |
2014 | 2.1[12] | Добавлены блоки EOF, чтобы помочь идентифицировать усеченные файлы. |
2014 | Добавлен в htsjdk (1.127). | |
2014 | 3.0[13] | Включение Lzma и RANS кодеки для сжатия блоков, а также несколько контрольных сумм для обеспечения целостности данных |
2018 | Реализация Javascript как часть JBrowse[4] (1.15.0) Роба Бьюэлса. |
CRAM версии 4.0 существует как прототип в Scramble,[5] изначально был продемонстрирован в 2015 году, но еще не принят в качестве стандарта.
Смотрите также
- SAM (формат файла)
- Карта двоичного выравнивания
- Сжатие данных геномного повторного секвенирования
- Список форматов файлов для молекулярной биологии
Рекомендации
- ^ а б Си-Ян Фриц, Маркус; Лейнонен, Раско; Кокрейн, Гай; Бирни, Юэн (май 2011 г.). «Эффективное хранение данных высокопроизводительного секвенирования ДНК с использованием сжатия на основе ссылок». Геномные исследования. 21 (5): 734–740. Дои:10.1101 / гр.114819.110. ISSN 1549-5469. ЧВК 3083090. PMID 21245279.
- ^ "Htsjdk by Broad Institute". samtools.github.io. Получено 2018-10-14.
- ^ "Samtools". www.htslib.org. Получено 2018-10-14.
- ^ а б «JBrowse · Быстрый встраиваемый браузер генома, созданный с помощью HTML5 и JavaScript». jbrowse.org. Получено 2018-10-14.
- ^ а б c Бонфилд, Джеймс К. (14.06.2014). «Инструмент преобразования Scramble». Биоинформатика. 30 (19): 2818–2819. Дои:10.1093 / биоинформатика / btu390. ISSN 1460-2059. ЧВК 4173023. PMID 24930138.
- ^ "GA4GH". www.ga4gh.org. Получено 2018-10-14.
- ^ EMBL-EBI. "Набор инструментов CRAM <Программное обеспечение <Европейский архив нуклеотидов
. www.ebi.ac.uk. Получено 2018-10-14. - ^ "вадимзалунин / зубр". GitHub. 2017-08-08. Получено 2018-10-14.
- ^ «Спецификация CRAM 1.0» (PDF).
- ^ "enasequence / cramtools". GitHub. 2018-10-02. Получено 2018-10-14.
- ^ "jkbonfield / io_lib". GitHub. 2018-10-16. Получено 2018-10-14.
- ^ «Спецификация CRAM 2.1» (PDF).
- ^ «Спецификация CRAM 3.0» (PDF).