Tengo un archivo con secuencia de ADN como en el ejemplo a continuación. ¿Cómo puedo encontrar el recuento de A, T, G, C en cada columna (sí, no fila, sino columna) usando los comandos de shell bash.
El archivo tiene 846975 filas como esta:
AAGAAAGAAGAGGAACTTCTCTCCATCCAGCCTCATTCCACTGCACCAACTCTTCTGTGT
CGGGTTGTGCAGGAGAGAAAGGGAGCTTGGCAACTCTTTGCTGTGCTGAGTTGTGGTAGC
CCATCACTGGGTTGTAAAGTGCCTTGCCTCCTTTCCTCCCCTCCTTTTTTTTTGAGACAG
AGTCTCACTCTGTCGTCCAGGCTGAGGTGCAGTGGTGCGATCTCTGCTCACTGCAACCTC
AGCCTCCTGGGTTCAAGTGATTCTCCTGCCTCAGCCTCCCAGGAAGCTGGGACTACAGGC
ACATGCCACCACACCTGGCTAACTTTTTTTTATTTTTAGTAGAGAAAGGGTATCACCATG
TTGGCCAGGCTGGTCTTGAACTCCTGACTTCAGGTGATCCACCCACCTTGGCCCCCCAAA
GTGCTGGGGTTAAAGGCATGAGACACTGCGCCCGTCCACCTCCTCTTTTACTTGGGAGAA
ATGCACAGATTCTGGGTGCCATGTGCATTTGTTTTGGGAGTGATAATTGATCTAACTTAT
GGAAATAATACTAGATAGTTAGCGGATGGATTCTGTATCTGATGAGAGTTTTGGGCAAAA
CGAATTCCTAGTTTCTGAGTCTTATTTTTCCCCTGATTCAAGAAAACTGTGAATTATCCA
GCCAGTAAAAAACTCTCACAGCTCTGGATGTGAGTTTAGGACACTGGATTTCTACCACTC
ATTTTCTTACTACTTTTCCTGTGCAAGGATCATGGCACAAGTTGCAGTTTCCACCCTGCC
CATTGAAGATGAGGAGTCTGTTGAAGATGAGGAGTCCTTGGAGAGCAGGATGGTGGTGAC
ATTCCTGTCAGCTCTCGCCTCCATGGTCAGACCTTCTGTTCTCACATTCTGTAGTTCGGT
AGGACTGGGCGGTAGATAAGGTTGATTTGTTTTCGTAGAACTTACAATTTTGTGATTTTT
AGTTCTAATGAGTAGACCTTTTTCGTGAATAGTAGTTACGATCAAACACCTCTGACCAAA
Para este ejemplo, se supone que la salida de la primera columna es A=9,T=1,G=3,C=4
.
text-processing
command-line
usuario254856
fuente
fuente
Respuestas:
En el caso general donde
awk
admite separador de campo nulo / vacío (esto esgawk
específico), puede hacer algo como a continuación (cuando desee conteos por línea).NO, si realmente necesita conteos por cada columna (suponiendo un separador de archivos vacío) , primero debe transformar los datos de entrada de la columna en filas, luego haga lo mismo que anteriormente.
Con el siguiente
awk
script estamos transponiendo las columnas en filas.Puede utilizar el siguiente comando en lugar del anterior para la transposición.
fuente
Supongo que querías encontrar el recuento de A, T, G, C en cada fila .
Solución GNU awk :
La salida:
fuente
Supongo que el usuario quiere contar las bases en cada fila.
Usando Perl:
O
El
tr
operador en Perl hace transliteración, muy similar a latr
utilidad en el shell. Devuelve el número de caracteres transliterados.fuente