SAMtools es un conjunto de utilidades para interactuar y postprocesar alineaciones cortas de lectura de secuencias de ADN en los formatos SAM (Alineación / Mapa de secuencia), BAM (Alineación / Mapa binario) y CRAM , escrito por Heng Li . Estos archivos se generan como salida mediante alineadores de lectura corta como BWA . Se proporcionan herramientas simples y avanzadas, que admiten tareas complejas como llamadas de variantes y visualización de alineaciones, así como clasificación, indexación, extracción de datos y conversión de formato . [3] Los archivos SAM pueden ser muy grandes (decenas de Gigabyteses común), por lo que la compresión se utiliza para ahorrar espacio. Los archivos SAM son archivos de texto legibles por humanos y los archivos BAM son simplemente su equivalente binario, mientras que los archivos CRAM son un formato contenedor binario reestructurado orientado a columnas. Los archivos BAM suelen estar comprimidos y son más eficientes para que el software funcione que SAM. SAMtools permite trabajar directamente con un archivo BAM comprimido, sin tener que descomprimir todo el archivo. Además, dado que el formato de un archivo SAM / BAM es algo complejo, ya que contiene lecturas, referencias, alineaciones, información de calidad y anotaciones especificadas por el usuario, SAMtools reduce el esfuerzo necesario para usar archivos SAM / BAM al ocultar detalles de bajo nivel.
Autor (es) original (es) | Heng Li |
---|---|
Desarrollador (es) | John Marshall y Petr Danecek y col. [1] |
Versión inicial | 2009 |
Lanzamiento estable | 1.12 / 22 de septiembre de 2020 [2] |
Repositorio | |
Escrito en | C |
Sistema operativo | Tipo Unix |
Tipo | Bioinformática |
Licencia | BSD , MIT |
Sitio web | www |
Como los proyectos de terceros intentaban utilizar código de SAMtools a pesar de que no estaba diseñado para integrarse de esa manera, en agosto de 2014 se tomó la decisión de dividir el paquete SAMtools en una biblioteca de software independiente con una API bien definida ( HTSlib), [4] un proyecto para la llamada de variantes y la manipulación de datos de variantes (BCFtools), y el paquete SAMtools independiente para trabajar con datos de alineación de secuencias . [5]
Uso y comandos
Como muchos comandos de Unix , los comandos de SAMtool siguen un modelo de flujo , donde los datos pasan por cada comando como si se transportaran en una cinta transportadora . Esto permite combinar varios comandos en una canalización de procesamiento de datos. Aunque el resultado final puede ser muy complejo, solo se necesita un número limitado de comandos simples para producirlo. Si no se especifica, se asumen los flujos estándar (stdin, stdout y stderr). Los datos enviados a stdout se imprimen en la pantalla de forma predeterminada, pero se redirigen fácilmente a otro archivo usando los redirectores normales de Unix (> y >>), oa otro comando a través de una tubería (|).
Comandos de SAMtools
SAMtools proporciona los siguientes comandos, cada uno de los cuales se invoca como " samtools some_command ".
- vista
- La ver filtros de comandos de datos con formato SAM o BAM. Usando opciones y argumentos, entiende qué datos seleccionar (posiblemente todos) y solo pasa esos datos. La entrada suele ser un archivo sam o bam especificado como argumento, pero podrían ser datos sam o bam canalizados desde cualquier otro comando. Los posibles usos incluyen la extracción de un subconjunto de datos en un nuevo archivo, la conversión entre formatos BAM y SAM y simplemente mirar el contenido del archivo sin procesar. Se conserva el orden de las lecturas extraídas.
- clasificar
- La El comando sort ordena un archivo BAM en función de su posición en la referencia, según lo determinado por su alineación. El elemento + coordenada en la referencia con la que se alinea la primera base coincidente en la lectura se usa como clave para ordenarlo. [TODO: verificar]. La salida ordenada se vuelca a un nuevo archivo por defecto, aunque se puede dirigir a stdout (usando la opción -o). Como la clasificación consume mucha memoria y los archivos BAM pueden ser grandes, este comando admite un modo de sección (con las opciones -m) para usar como máximo una cantidad determinada de memoria y generar varios archivos de salida. Estos archivos se pueden combinar para producir un archivo BAM completo y ordenado [TODO - investigue los detalles de esto con más cuidado].
- índice
- La El comando index crea un nuevo archivo de índice que permite la búsqueda rápida de datos en un SAM o BAM (ordenado). Como un índice en una base de datos, el generado * .sam.sai o El archivo * .bam.bai permite a los programas que pueden leerlo trabajar de manera más eficiente con los datos de los archivos asociados.
- tview
- La El comando tview inicia un visor interactivo basado en ascii que se puede usar para visualizar cómo se alinean las lecturas con regiones pequeñas específicas del genoma de referencia. Comparado con un visor basado en gráficos como IGV, [6] tiene pocas características. Dentro de la vista, es posible saltar a diferentes posiciones a lo largo de los elementos de referencia (usando 'g') y mostrar información de ayuda ('?').
- mpileup
- La El comando mpileup produce un archivo en formato pileup (o BCF) que proporciona, para cada coordenada genómica, las bases de lectura superpuestas y los indeles en esa posición en los archivos BAM de entrada. Esto se puede utilizar para llamadas SNP, por ejemplo.
- flagstat
Ejemplos de
- vista
samtools view sample.bam > sample.sam
Convierta un archivo bam en un archivo sam.
samtools view -bS sample.sam > sample.bam
Convierta un archivo sam en un archivo bam. La La opción -b comprime o deja los datos de entrada comprimidos.
samtools view sample_sorted.bam "chr1:10-13"
Extrae todas las lecturas alineadas con el rango especificado, que son aquellas que están alineadas con el elemento de referencia llamado chr1 y cubren su base 10, 11, 12 o 13. Los resultados se guardan en un archivo BAM que incluye el encabezado. Se requiere un índice del archivo de entrada para extraer lecturas de acuerdo con su posición de mapeo en el genoma de referencia, según lo creado por samtools index .
samtools view -h -b sample_sorted.bam "chr1:10-13" > tiny_sorted.bam
Extraiga las mismas lecturas anteriores, pero en lugar de mostrarlas, escríbalas en un nuevo archivo bam, tiny_sorted.bam . La -b hace que la salida se comprima y la La opción -h hace que también se generen los encabezados SAM. Estos encabezados incluyen una descripción de la referencia a la que se alinearon las lecturas en sample_sorted.bam y serán necesarias si el archivo tiny_sorted.bam se va a utilizar con algunos de los comandos SAMtools más avanzados. Se conserva el orden de las lecturas extraídas.
- tview
samtools tview sample_sorted.bam
Inicie un visor interactivo para visualizar una pequeña región de la referencia, las lecturas alineadas y las discrepancias. Dentro de la vista, puede saltar a una nueva ubicación escribiendo g: y una ubicación, como g: chr1: 10,000,000 . Si el nombre del elemento de referencia y los dos puntos siguientes se reemplazan por = , se utiliza el elemento de referencia actual, es decir, si g: = 10,000,200 se escribe después del comando "goto" anterior, el espectador salta a la región 200 pares de bases hacia abajo en chr1 . Mecanografía ? muestra información de ayuda para el movimiento de desplazamiento, colores, vistas, ...
samtools tview -p chrM:1 sample_chrM.bam UCSC_hg38.fa
Establezca la posición inicial y compare.
samtools tview -d T -p chrY:10,000,000 sample_chrY.bam UCSC_hg38.fa >> save.txt
samtools tview -d H -p chrY:10,000,000 sample_chrY.bam UCSC_hg38.fa >> save.html
Guarde la pantalla en .txt o .html.
- clasificar
samtools sort -o sorted_out unsorted_in.bam
Lea el unsorted_in.bam especificado como entrada, ordénelo por posición de lectura alineada y escríbalo en sorted_out . El tipo de salida puede ser sam, bam o cram, y se determinará automáticamente por la extensión de archivo de sorted_out.
samtools sort -m 5000000 unsorted_in.bam sorted_out
Lea el unsorted_in.bam especificado como entrada, clasifíquelo en bloques de hasta 5 millones de k (5 Gb) [ verificación de unidades necesaria ] y escriba la salida en una serie de archivos bam denominados sorted_out.0000.bam , sorted_out.0001.bam , etc. ., donde todas las lecturas de bam 0 vienen antes de cualquier lectura de bam 1, etc. [ verificación necesaria ]
- índice
samtools index sorted.bam
Crea un archivo de índice, sorted.bam.bai para el archivo sorted.bam .
Ver también
Referencias
- ^ "Herramientas SAM" . SourceForge .
- ^ "Lanzamientos · samtools / samtools" . github.com . Consultado el 28 de abril de 2021 .
- ^ Li H , Handsaker B, Wysoker A, Fennell T, Ruan J, Homer N, et al. (Agosto de 2009). "El formato Sequence Alignment / Map y SAMtools" (PDF) . Bioinformática . 25 (16): 2078–9. doi : 10.1093 / bioinformatics / btp352 . PMC 2723002 . PMID 19505943 .
- ^ Bonfield JK, Marshall J, Danecek P, Li H, Ohan V, Whitwham A y col. (Febrero de 2021). "HTSlib: biblioteca C para leer / escribir datos de secuenciación de alto rendimiento" . GigaScience . 10 (2). doi : 10.1093 / gigascience / giab007 . PMC 7931820 . PMID 33594436 .
- ^ Danecek P, Bonfield JK, Liddle J, Marshall J, Ohan V, Pollard MO, et al. (Febrero de 2021). "Doce años de SAMtools y BCFtools" . GigaScience . 10 (2). doi : 10.1093 / gigascience / giab008 . PMC 7931819 . PMID 33590861 .
- ^ IGV
enlaces externos
- Página de inicio del proyecto SAMtools
- Comandos de SAMtools
- Página wiki en SeqAnswers para el software SAMtools (código auxiliar a partir del 26/02/2012) enlace roto
- Notas matemáticas sobre los algoritmos de SAMtools de su autor principal
- Tutorial breve y algo especializado sobre SAMtools de EMBL . Enlace roto