11  Filtrado de texto (grep, cut, sort, uniq, wc)

Veamos ahora los comandos más usados en tuberías de filtrado de texto en acción, haciendo uso de sólo algunas de las opciones más frecuentes listados en la sección anterior.

11.1 Contar el número de secuencias en un archivo FASTA

  1. ¿Cuántas líneas tiene el archivo S_clavuligerus_proteome.fasta?
cd ~/unix.bioinfo.rsgecuador-gh-pages/_files
wc -l S_clavuligerus_proteome.fasta
# 40739 lineas

En archivos de formato FASTA o similares, el número de líneas no corresponde al número de secuencias. Esto se debe a la estructura del archivo:

  • Formato FASTA: Cada secuencia comienza con una línea que tiene el símbolo >, seguido de un identificador o descripción de la secuencia.

  • Las líneas siguientes contienen la secuencia de nucleótidos o aminoácidos, que pueden estar divididas en varias líneas.

Por lo tanto, para contar el número de secuencias en un archivo FASTA, debes contar las líneas que comienzan con >. Aquí tienes un ejemplo práctico en Bash para lograrlo:

  1. ¿Cuántas secuencias tiene el archivo S_clavuligerus_proteome.fasta?
grep -c "^>" S_clavuligerus_proteome.fasta
# 6439 secuencias
  1. ¿Cuáles bases de datos detectaron estas secuencias?
grep ">" S_clavuligerus_proteome.fasta | cut -d '|' -f1 | sed 's/>//' | uniq
# sp y tr

UniProtKB (Universal Protein Knowledgebase) tiene dos secciones principales:

  • Swiss-Prot (sp): Contiene secuencias revisadas y anotadas manualmente.

  • TrEMBL (tr): Contiene secuencias computacionalmente anotadas y aún no revisadas manualmente.

Explicación del código
  • grep ">": Busca la línea con la cabecera.

  • cut -d'|' -f1: Divide por | y selecciona el primer campo.

  • sed 's/>//': Elimina el símbolo > al inicio.

  • uniq: Nos da los valores únicos.

  1. ¿Qué organismo produce esta proteína y cuál es su Taxonomy ID?
organism=$(grep ">" S_clavuligerus_proteome.fasta | sed -n 's/.*OS=\([^ ]*\).*/\1/p' | sort -u)
taxonomy=$(grep ">" S_clavuligerus_proteome.fasta | sed -n 's/.*OX=\([0-9]*\).*/\1/p' | sort -u)
echo "Organismo: $organism"
echo "Taxonomy ID: $taxonomy"
Explicación del código
  • sed -n 's/.*OS=\([^ ]*\).*/\1/p': Extrae el nombre del organismo entre OS= y el primer espacio.
  • sed -n 's/.*OX=\([0-9]*\).*/\1/p': Extrae el número después de OX=.
  • sort -u: Ordena las líneas y elimina duplicados, asegurando que solo queden valores únicos.
  • Se aplica después de extraer los valores con sed, por si existen múltiples cabeceras en el archivo.
  1. ¿Cuántos genes codifican a estas proteínas?
grep ">" S_clavuligerus_proteome.fasta | sed -n 's/.*GN=\([^ ]*\).*/\1/p' | sort | uniq | wc -l
# 6410 genes
Explicación del código
  • grep ">" header.fasta: Encuentra las líneas con cabeceras FASTA.
  • sed -n 's/.*GN=\([^ ]*\).*/\1/p': Extrae el valor asociado a GN= (el nombre del gen).
  • sort: Ordena alfabéticamente los nombres de los genes.
  • uniq: Filtra y deja solo los nombres únicos.
  • wc -l: Cuenta el número total de líneas (es decir, el número de genes únicos).
  1. ¿Qué nivel de evidencia tiene la existencia de la proteína TMUUS_STRC2?
Note

TMUUS_STRC2: Es el nombre de la proteína en formato abreviado y en mayúsculas.

  • TMUUS: Abreviatura de la función de la proteína: “(+)-T-muurolol synthase”.
  • STRC2: Abreviatura del organismo de origen, Streptomyces clavuligerus.

El nivel de evidencia de la existencia de la proteína TMUUS_STRC2 está especificado en la cabecera FASTA mediante el campo PE. En este caso: >sp|B5GW45|TMUUS_STRC2 (+)-T-muurolol synthase ((2E,6E)-farnesyl diphosphate cyclizing) OS=Streptomyces clavuligerus OX=443255 GN=SCLAV_p0068 PE=1 SV=1

El campo PE=1 indica que el nivel de evidencia es 1, lo que significa que la existencia de esta proteína está confirmada experimentalmente.

Interpretación de PE (Protein Existence) en UniProt:

  1. PE=1: Evidencia experimental a nivel de proteína.

  2. PE=2: Evidencia experimental a nivel de transcripción.

  3. PE=3: Inferido por homología.

  4. PE=4: Predicho.

  5. PE=5: Proteína no existente.

En Bash:

grep ">.*TMUUS_STRC2" S_clavuligerus_proteome.fasta | sed -n 's/.*PE=\([0-9]\).*/\1/p'

Por lo tanto, TMUUS_STRC2 tiene el nivel más alto de evidencia (PE=1), lo que confirma su existencia a nivel experimental.

Ejercicio 9

Contesta las siguientes preguntas empleando el archivo S_clavuligerus_proteome.fasta:

  1. ¿Qué proteínas tienen un nivel de evidencia menor o igual a 2?
  2. ¿Cuántas proteínas tienen el identificador de taxonomía (OX=443255) específico?
  3. ¿Cuántas variantes de secuencia (SV, sequence version) diferentes hay en el archivo FASTA?
1. grep ">" S_clavuligerus_proteome.fasta | grep "PE=[1-2]"
2. grep "OX=443255"  S_clavuligerus_proteome.fasta | wc -l
3. grep ">"  S_clavuligerus_proteome.fasta | grep -o "SV=[0-9]*" | cut -d'=' -f2 | sort | uniq -c

11.2 Referencias