Búsqueda de patrones aminoacídicos aplicada a proteínas asociadas al cáncer de mama en diferentes especies animales

Dependencias

Antes de ejecutar el script, asegúrate de tener instalados los siguientes programas:

Además, necesitas tener los archivos de entrada con las secuencias y los motivos en formato .fasta dentro de la terminal. Comprueba su existencia con ls.

  1. sequences.fasta: Contiene las secuencias de proteínas contra las cuales se realizarán las búsquedas.

  2. motifs.fasta: Contiene los motivos de secuencia que serán utilizados para la consulta.

Línea de comandos

Para obtener el archivo ejecutable, recomandamos crear el archivo PINKDOM.sh y copiar el siguiente código:

#!/bin/bash

# Cambiar al directorio de trabajo
cd /home/.../.../

# Definir las rutas de los archivos de entrada
SEQUENCES="sequences.fasta"
MOTIFS="motifs.fasta"

# Verificar si los archivos de entrada existen
if [[ ! -f "$SEQUENCES" ]]; then
    echo "Error: No se encontró el archivo $SEQUENCES"
    exit 1
fi

if [[ ! -f "$MOTIFS" ]]; then
    echo "Error: No se encontró el archivo $MOTIFS"
    exit 1
fi

# Crear base de datos BLAST
echo "Creando base de datos BLAST a partir de $SEQUENCES..."
makeblastdb -in "$SEQUENCES" -dbtype prot -out sequences_db
if [[ $? -ne 0 ]]; then
    echo "Error: Falló la creación de la base de datos BLAST."
    exit 1
fi
echo "Base de datos BLAST creada exitosamente."

# Ejecutar BLAST
BLAST_RESULTS="blast_results.txt"
echo "Ejecutando BLAST con $MOTIFS contra la base de datos..."
blastp -query "$MOTIFS" -db sequences_db -out "$BLAST_RESULTS" -outfmt "6 qseqid sseqid stitle pident length evalue bitscore"
if [[ $? -ne 0 ]]; then
    echo "Error: Falló la ejecución de BLAST."
    exit 1
fi
echo "BLAST completado exitosamente. Resultados guardados en $BLAST_RESULTS."

# Menú interactivo para análisis adicionales
while true; do
    echo
    echo "===== ¿Qué deseas hacer con los resultados? ====="
    echo "a) Analizar dominios en más de una especie con todas las longitudes."
    echo "b) Identificar dominios específicos de cada especie."
    echo "c) Exportar una tabla con variantes de aminoácidos."
    echo "d) Salir."
    echo
    read -p "Elige una opción (a-d): " OPTION

    if [ "$OPTION" == "a" ]; then
        echo "Analizando dominios en más de una especie y registrando todas las longitudes..."
        awk '
        BEGIN {
            FS="\t";
            OFS="\t";
        }
        {
            dominio = $1;
            longitud = $5;  # Longitud del dominio (quinta columna)
            especie = $3;  # Directamente la especie de la tercera columna
            if (especie != "") {
                print dominio, longitud, especie;
            }
        }
        ' "$BLAST_RESULTS" | sort | uniq > common_species.txt
        echo "Resultados guardados en 'common_species.txt'."
        # Mostrar resultados en la terminal
        echo "Mostrando los resultados en la terminal:"
        cat common_species.txt

    elif [ "$OPTION" == "b" ]; then
        echo "Identificando dominios específicos de cada especie..."
        awk '
        BEGIN {
            FS="\t";
            OFS="\t";
        }
        {
            dominio = $1;
            especie = $3;  # Extraemos directamente la especie
            if (especie != "") {
                print dominio, especie;
            }
        }
        ' "$BLAST_RESULTS" | sort | uniq > specific_domains.txt
        echo "Resultados guardados en 'specific_domains.txt'."
        # Mostrar resultados en la terminal
        echo "Mostrando los resultados en la terminal:"
        cat specific_domains.txt

    elif [ "$OPTION" == "c" ]; then
        echo "Exportando lista de variantes de aminoácidos..."
        awk '
        BEGIN {
            FS="\t";
            OFS="\t";
        }
        {
            print $1, $2, $4, $5, $6;
        }' "$BLAST_RESULTS" > amino_acid_variants.txt
        echo "Lista de variantes exportada en 'amino_acid_variants.txt'."
        # Mostrar resultados en la terminal
        cat amino_acid_variants.txt

    elif [ "$OPTION" == "d" ]; then
        echo "Saliendo del programa. ¡Adiós!"
        exit 0

    else
        echo "Opción inválida. Por favor, elige una opción válida (a-d)."
    fi
done

Uso

  1. Ubicación de los Archivos: Asegúrate de que los archivos sequences.fasta y motifs.fasta estén ubicados en el directorio que decidas especificar en el script.

  2. Ejecutar el Script: Abre una terminal y navega al directorio donde se encuentra el script PINKDOM.sh. Luego, ejecuta el siguiente comando

  3. Interacción con el Menú: Una vez que el script haya ejecutado BLAST, se presentará un menú interactivo con varias opciones para analizar los resultados de la búsqueda BLAST:

    • a) Analizar dominios comunes en más de una especie, registrando todas las longitudes.

    • b) Identificar dominios específicos de cada especie.

    • c) Exportar una tabla con variantes de aminoácidos.

    • d) Salir del script.

    Ejemplo de entrada para elegir una opción:

    Elige una opción (a-d): a

    Si eliges la opción a, el script analizará los dominios comunes y los guardará en un archivo llamado common_species.txt.

  4. Resultados: Los resultados del análisis BLAST se guardarán en los siguientes archivos:

    • blast_results.txt: Resultados del análisis BLAST.

    • common_species.txt: Dominio y longitud de las especies comunes.

    • specific_domains.txt: Dominio específico para cada especie.

    • amino_acid_variants.txt: Variantes de aminoácidos extraídas de los resultados.

    Además, los resultados se mostrarán en la terminal para una visualización inmediata.

  5. Salir del Script: Si deseas salir del script, elige la opción d en el menú.

Ejemplo de Salida

Ejemplo de ejecución:

$ bash blast_analysis.sh
Creando base de datos BLAST a partir de sequences.fasta...
Base de datos BLAST creada exitosamente.
Ejecutando BLAST con motifs.fasta contra la base de datos...
BLAST completado exitosamente. Resultados guardados en blast_results.txt.

===== ¿Qué deseas hacer con los resultados? =====
a) Analizar dominios en más de una especie con todas las longitudes.
b) Identificar dominios específicos de cada especie.
c) Exportar una tabla con variantes de aminoácidos.
d) Salir.
Elige una opción (a-d): a
Analizando dominios en más de una especie y registrando todas las longitudes...
Resultados guardados en 'common_species.txt'.
Mostrando los resultados en la terminal:
dominio1 100 especieA
dominio2 150 especieB
...

Notas Adicionales