---
# System prepended metadata

title: 'Curso 25-26. Laboratorio I: Shell scripting:'
tags: [Laboratorio, Prácticas, Estudiantes, UAX]

---

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