stringtranslate.com

CRAM (formato de archivo)

El mapa de alineación orientado a referencia comprimido (CRAM) es un formato de archivo en columnas comprimido para almacenar secuencias biológicas alineadas con una secuencia de referencia , ideado inicialmente por Markus Hsi-Yang Fritz et al . [1]

CRAM fue diseñado para ser una alternativa eficiente basada en referencias a los formatos de archivo Sequence Alignment Map (SAM) y Binary Alignment Map (BAM). Opcionalmente, utiliza una referencia genómica para describir las diferencias entre los fragmentos de secuencia alineados y la secuencia de referencia, lo que reduce los costos de almacenamiento. Además, cada columna en el formato SAM está separada en sus propios bloques, lo que mejora la relación de compresión. Los archivos CRAM suelen ser entre un 30 y un 60 % más pequeños que los BAM, según los datos que contienen.

Existen implementaciones de CRAM en htsjdk, [2] htslib , [3] JBrowse , [4] y Scramble. [5]

La especificación del formato de archivo la mantiene la Alianza Global para la Genómica y la Salud (GA4GH) [6] y el documento de especificación está disponible en la página del kit de herramientas Cram de EBI. [7]

Formato de archivo

La estructura básica de un archivo CRAM es una serie de contenedores, el primero de los cuales contiene una copia comprimida del encabezado SAM. Los contenedores siguientes constan de un encabezado de compresión de contenedor seguido de una serie de porciones que, a su vez, contienen los registros de alineación, formateados como una serie de bloques.

Archivo CRAM:

Recipiente:

Rebanada:

CRAM construye registros a partir de un conjunto de series de datos, describiendo los componentes de una alineación. El encabezado de compresión del contenedor especifica qué serie de datos está codificada en qué bloque, qué códec se utilizará y cualquier metadato específico del códec (por ejemplo, una tabla de longitudes de códigos de símbolos de Huffman ). Si bien las series de datos se pueden mezclar dentro del mismo bloque, mantenerlas separadas generalmente mejora la compresión y brinda la oportunidad de una decodificación selectiva eficiente donde solo se requieren algunos tipos de datos.

El acceso selectivo a un archivo CRAM se otorga a través del índice (con el sufijo de nombre de archivo ".crai"). En los datos ordenados por cromosomas y posición, esto indica qué región cubre cada porción. En los datos no ordenados, el índice se puede utilizar para obtener simplemente el contenedor N. La decodificación selectiva también se puede lograr utilizando el encabezado de compresión para omitir series de datos específicas si se requieren registros parciales.

Historia

La versión 4.0 de CRAM existe como prototipo en Scramble, [5] demostrado inicialmente en 2015, pero aún no se ha adoptado como estándar.

Véase también

Referencias

  1. ^ ab Hsi-Yang Fritz, Markus; Leinonen, Rasko; Cochrane, Guy; Birney, Ewan (mayo de 2011). "Almacenamiento eficiente de datos de secuenciación de ADN de alto rendimiento mediante compresión basada en referencias". Genome Research . 21 (5): 734–740. doi :10.1101/gr.114819.110. ISSN  1549-5469. PMC  3083090 . PMID  21245279.
  2. ^ "Htsjdk de Broad Institute". samtools.github.io . Consultado el 14 de octubre de 2018 .
  3. ^ "Samtools". www.htslib.org . Consultado el 14 de octubre de 2018 .
  4. ^ ab "JBrowse · Un navegador rápido e integrable de genomas creado con HTML5 y JavaScript". jbrowse.org . Consultado el 14 de octubre de 2018 .
  5. ^ abc Bonfield, James K. (14 de junio de 2014). "La herramienta de conversión Scramble". Bioinformática . 30 (19): 2818–2819. doi :10.1093/bioinformatics/btu390. ISSN  1460-2059. PMC 4173023 . PMID  24930138. 
  6. ^ "GA4GH". www.ga4gh.org . Consultado el 14 de octubre de 2018 .
  7. ^ EMBL-EBI. «Kit de herramientas CRAM < Software < Archivo Europeo de Nucleótidos < EMBL-EBI». www.ebi.ac.uk. Consultado el 14 de octubre de 2018 .
  8. ^ "vadimzalunin/crammer". GitHub . 2017-08-08 . Consultado el 2018-10-14 .
  9. ^ "Especificación CRAM 1.0" (PDF) .
  10. ^ "enasequence/cramtools". GitHub . 2018-10-02 . Consultado el 2018-10-14 .
  11. ^ "jkbonfield/io_lib". GitHub . 2018-10-16 . Consultado el 2018-10-14 .
  12. ^ "Especificación CRAM 2.1" (PDF) .
  13. ^ "Especificación CRAM 3.0" (PDF) .
  14. ^ https://github.com/zaeleus/noodles/ [ URL básica ]
  15. ^ "Especificación CRAM 3.1" (PDF) .