###### tags: `UAX` `Estudiantes` `Laboratorio` `Prácticas` <font color = 'gray'> <p style="text-align:right;">Prof.: Laura J. Marcos-Zambrano </font> # Curso 25-26. Laboratorio I: Shell scripting: :::info **Objetivos:** (i) Manipular la terminal de Linux y reconocer comandos básicos. (ii) Diseñar un script sencillo usando el lenguaje bash. ::: Para este ejercicio usaremos el Terminal de Linux, para ello tienes dos opciones (i) Usando la aplicación GitBash de *Git for Windows* que permite emular una terminal con lenguaje bash y que puedes descargar [aquí](https://gitforwindows.org/) (ii) Usando la aplicación terminal si tienes Mac. :eyes: Recuerda tener a mano el [Seminario I](https://hackmd.io/@laurichi13/S1j2fSMRh) donde hay algunos comandos básicos en bash que hemos aprendido. #### Preparación: 1. Abrir la línea de Comandos. 2. Crea una carpeta llamada `laboratorio1` 3. Dirigirte a la carpeta/directorio creado. 4. Descarga los siguientes ficheros: * [file.vcf](https://drive.google.com/file/d/1om_WzEuVqdJ_xM-zKCPctAGh58f8Wnn0/view?usp=sharing) * [file2.vcf](https://drive.google.com/file/d/1uu9G_t3tn838pnSbsm957VK8maTLDJA6/view?usp=sharing) * [untrimmed_fastq](https://drive.google.com/drive/folders/1qtWJHc-4SM09eDjdDUawLeuVsWyKfA3W?usp=sharing) Contiene dos archivos, descargar los dos. 6. Mueve los ficheros descargados a la carpeta `laboratorio1` 7. Las respuestas a las preguntas **debes adjuntarlas en un archivo de texto en la tarea de "Laboratorio 1"** (mejor en pdf) :wink: ### Manejo básico de la línea de comandos: **Ejercicio 1:** (4 ptos) * Usa el fichero con formato .vcf `file.vcf`. Explora el archivo usando el comando `head`. [Aquí](https://es.wikipedia.org/wiki/Formato_Variant_Call) hay una explicación del tipo de archivo, aunque se comentará en clase. * Selecciona aquellos SNPs que han pasado todos los filtros (Tienen el texto PASS). Selecciona también aquellos SNPs que no han pasado el filtro de calidad (Tienen el texto q10). **Indica que comandos debes usar si quieres generar un archivo de texto con esa información.** * Tenemos un nuevo fichero `file2.vcf` que ha perdido la información de la cabecera. Sabemos que la cabecera del fichero `file.vcf` nos vale, añadir la cabecera de `file.vcf` al fichero `file2.vcf` creando un nuevo fichero. **Indica los comandos usados.** **Ejercicio 2:** (5 ptos) * Preparar un directorio de trabajo, llamado ejercicio2 * En el directorio ejercicio2, descargar (mediante la línea de comandos) este link: https://ftp.ncbi.nlm.nih.gov/genomes/GENOME_REPORTS/prokaryotes.txt con el archivo prokaryots.txt que contiene todos los genomas secuenciados de procariotas hasta la fecha. Para ello usa el comando: ```bash curl https://ftp.ncbi.nlm.nih.gov/genomes/GENOME_REPORTS/prokaryotes.txt -o prokaryotes.txt ``` :warning: Si no puedes descargarlo intentalo de [aqui](https://drive.google.com/file/d/1NE4WWF629J-8Ook4a89VcCQAWPw5Pgce/view?usp=drive_link). Observa la información que hay en el archivo descargado. * En el mismo directorio crea un nuevo archivo de texto llamado akkermansia.txt donde se seleccionen los siguientes aspectos (Indica los comandos usados) * La cabecera del archivo original prokaryotes.txt * Todos los genomas de “Akkermansia”. * Sobre el archivo akkermansia.txt conteste indicando el comando usado: * ¿Cómo pueden verse las primeras 10 líneas del archivo? * ¿Cuántos genomas de Akkermansia muciniphila hay? * ¿Cuántos de Akkermansia biwaensis? * Por último elimina el archivo prokaryotes.txt :::warning :warning: Es importante eliminar el erchivo **prokaryots.txt** porque es muy pesado y ocupara mucho espacio en tu ordenador ::: ### Crear un Script: Una de las mayores ventajas de usar la línea de comandos es la capacidad de escribir "scripts". Los scripts permiten guardar comandos para ejecutarlos en otro momento y además se pueden juntar varios comandos. Todos los scripts de bash deben tener al inicio el [shebang](https://linuxize.com/post/bash-shebang/) que indica en que lenguaje de programación está escrito: ```bash=1 #!/bin/bash ``` Vamos a utilizar las secuencias descargadas en la carpeta `untrimmed_fastq` ### Automatización de operaciones en varios archivos mediante bucles: Los comandos `for` `do` y `done` permiten crear automatizaciones de tareas, es necesario asignar variables para almacenar diferentes valores al hacer un bucle. **Ejemplo:** Ahora vamos a ver los archivos fastq en el directorio untrimmed_fastq con un bucle `for` para poder ejecutar varias tareas en el mismo archivo. ```bash=1 #!/bin/bash for filename in *.fastq do echo $filename done ``` >usamos `*.fastq` para que busque todos los archivos que tengan la terminación .fastq Para agregar otra tarea a ejecutar en el mismo nombre de archivo, la tarea se escribe debajo de la primera, no es necesario repetir el `do` . Cada línea en el bucle se ejecutará una tras otra: **Ejemplo:** ```bash=1 #!/bin/bash for filename in *.fastq do echo $filename head -n 3 "$filename done ``` **Ejercicio 3:** (1 pto) * Escribe un script llamado `fastq_script.sh` que muestre todos los nombres de archivos **.fastq** luego cuente el número de líneas en cada archivo y al finalizar diga un mensaje de "Terminado". Recuerda hacerlo ejecutable. --- <font color = 'gray'> <p style="text-align:left;">Práctica de shell basada en datos de COMAV Bioinformatics y Introduction to the Command Line for Genomics Data Carpenteries. </font>