Antes de ejecutar el script, asegúrate de tener instalados los siguientes programas:
BLAST (makeblastdb y blastp)
# sudo apt install ncbi-blast+
Comprueba si está instalado con makeblastdb , te
tiene que salir esto:
USAGE
makeblastdb [-h] [-help] [-in input_file] [-input_type type]
-dbtype molecule_type [-title database_title] [-parse_seqids]
[-hash_index] [-mask_data mask_data_files] [-mask_id mask_algo_ids]
[-mask_desc mask_algo_descriptions] [-gi_mask]
[-gi_mask_name gi_based_mask_names] [-out database_name]
[-blastdb_version version] [-max_file_sz number_of_bytes]
[-metadata_output_prefix ] [-logfile File_Name] [-taxid TaxID]
[-taxid_map TaxIDMapFile] [-oid_masks oid_masks] [-version]
DESCRIPTION
Application to create BLAST databases, version 2.16.0+
Use '-help' to print detailed descriptions of command line arguments
========================================================================
Error: Argument "dbtype". Mandatory value is missing: `String, `nucl', `prot''
Error: (CArgException::eNoArg) Argument "dbtype". Mandatory value is missing: `String, `nucl', `prot''awk (para procesar y analizar los resultados)
sudo apt install gawkAdemá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.
sequences.fasta: Contiene las secuencias de proteínas contra las cuales se realizarán las búsquedas.
motifs.fasta: Contiene los motivos de secuencia que serán utilizados para la consulta.
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
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.
Ejecutar el Script: Abre una terminal y navega
al directorio donde se encuentra el script PINKDOM.sh.
Luego, ejecuta el siguiente comando
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.
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.
Salir del Script: Si deseas salir del script,
elige la opción d en el menú.
$ 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
...
Asegúrate de que los archivos de entrada estén correctamente formateados en el formato FASTA. De lo contrario, el script puede fallar.
El script ha sido diseñado para ser ejecutado en sistemas Unix
(Linux, macOS) con Bash y herramientas de línea de comandos como
awk y makeblastdb.