Pregunta:
Número de secuencias de referencia en un archivo SAM
Omair Iqbal
2018-05-14 19:40:08 UTC
view on stackexchange narkive permalink

De un solo registro, puedo obtener el ID de secuencia de referencia del campo rID, pero ¿cómo puedo obtener el número total de diferentes secuencias de referencia almacenadas en todo el archivo SAM? Puede ser simple como recorrer todos los registros, pero necesito otra solución.

Por `rID`, ¿estás hablando del campo` RNAME` (nombre de secuencia de referencia)? Eso está en el encabezado.
rId es el Id de referencia actual del registro y rNextId es el id de referencia del par de compañeros.
Dos respuestas:
Konrad Rudolph
2018-05-14 20:45:47 UTC
view on stackexchange narkive permalink

Hay varias formas. Aquí hay dos:

  1. samtools idxstats ‹bamfile›
  2. samtools view -H ‹bamfile› | grep '^ @ SQ'

Ambos comandos le dan una lista de las referencias en el archivo BAM. Para obtener su número, simplemente agregue | wc -l . Pero tenga en cuenta que idxstats también genera una entrada final, * , que no corresponde a ninguna referencia sino a todas las lecturas no asignadas. Así que reste eso del número.

Sin embargo, tenga en cuenta que si bien esto enumera todas las referencias asociadas con un archivo BAM, no todas las referencias necesariamente tienen registros asociados. Por lo tanto, es posible que no haya una asignación de lecturas a una referencia determinada. Esta es la tercera columna de la salida idxstats . Entonces, para obtener solo aquellas referencias con al menos una lectura mapeada, podemos filtrar por esas:

  samtools idxstats ‹bamfile› | awk '$ 4! = 0' | head -n-1 | wc -l  

Ah, y estos (y otros) comandos funcionan en archivos BAM , no en SAM. El comando idxstats también necesita el índice BAM, ya que en realidad está leyendo información de ese archivo de índice, no del BAM (esto también significa que solo funciona en archivos BAM ordenados). Trabajar en SAM requeriría recorrer todo el archivo, lo cual es bastante ineficiente. Por lo general, debería trabajar con BAM en lugar de SAM, por lo que es de esperar que esto no sea una restricción.

Para hacer lo mismo en un archivo SAM, debe iterar sobre el archivo:

  awk '{print $ 3}' ‹samfile› | sort -u | wc -l  

O:

  awk '{refs [$ 3] = 1} END {for (ref in refs) print ref}' ‹samfile ›| wc -l  
winni2k
2018-11-21 21:48:15 UTC
view on stackexchange narkive permalink

Un archivo SAM almacena alineaciones con un conjunto de secuencias de referencia. Sin embargo, esas secuencias de referencia no suelen almacenarse en el archivo. En su lugar, estarán en un archivo de secuencia separado que generalmente está en formato FASTA. Puede obtener el número de secuencias de referencia almacenadas en ese archivo usando el comando

  grep -c '^ >' reference.fasta  


Esta pregunta y respuesta fue traducida automáticamente del idioma inglés.El contenido original está disponible en stackexchange, a quien agradecemos la licencia cc by-sa 4.0 bajo la que se distribuye.
Loading...