SAMtools es un conjunto de utilidades para interactuar y posprocesar alineaciones cortas de lectura de secuencias de ADN en los formatos SAM (Sequence Alignment/Map), BAM (Binary Alignment/Map) y CRAM , escrito por Heng Li . Estos archivos se generan como salida mediante alineadores de lectura corta como BWA . Se proporcionan herramientas tanto simples como avanzadas, que admiten tareas complejas como llamada de variantes y visualización de alineación, 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 Gigabytes es común), por lo que se utiliza la compresión 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 (contiene lecturas, referencias, alineaciones, información de calidad y anotaciones especificadas por el usuario), SAMtools reduce el esfuerzo necesario para utilizar archivos SAM/BAM al ocultar detalles de bajo nivel.
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 manipulación de datos variantes (BCFtools) y el paquete SAMtools independiente para trabajar con datos de alineación de secuencias . [5]
Como muchos comandos de Unix , los comandos de SAMtool siguen un modelo de flujo , donde los datos pasan por cada comando como si fueran transportados en una cinta transportadora . Esto permite combinar múltiples comandos en una canalización de procesamiento de datos. Aunque el resultado final puede ser muy complejo, sólo 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 >>), o a otro comando a través de una tubería (|).
SAMtools proporciona los siguientes comandos, cada uno de los cuales se invoca como " samtools some_command ".
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 opción -b comprime o deja datos de entrada comprimidos.
samtools view sample_sorted.bam "chr1:10-13"
Extrae todas las lecturas alineadas al rango especificado, que son aquellas que están alineadas con el elemento de referencia denominado 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, creado por samtools index .
samtools view -h -b sample_sorted.bam "chr1:10-13" > tiny_sorted.bam
Extrae las mismas lecturas que arriba, pero en lugar de mostrarlas, las escribe en un nuevo archivo bam, tiny_sorted.bam . La opción -b comprime la salida y la opción -h hace que también se generen los encabezados SAM. Estos encabezados incluyen una descripción de la referencia con 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 más avanzados de SAMtools. Se conserva el orden de las lecturas extraídas.
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 siguientes dos puntos se reemplazan con = , se usa el elemento de referencia actual, es decir, si se escribe g:=10,000,200 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.
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 será determinado automáticamente por la extensión del archivo sorted_out.
samtools sort -m 5000000 unsorted_in.bam sorted_out
Lea el unsorted_in.bam especificado como entrada, ordénelo en bloques de hasta 5 millones de k (5 Gb) [ se necesita verificación de unidades ] 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. [ se necesita verificación ]
samtools index sorted.bam
Crea un archivo de índice, sorted.bam.bai para el archivo sorted.bam .