###### 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>