---
# System prepended metadata

title: 'Repaso Laboratorio '

---

###### tags: `UAX` `Estudiantes` `2024-2025`
 <font color = 'gray'>
    <p style="text-align:right;">Prof.: Laura J. Marcos-Zambrano </font>

# Repaso de Laboratorio: :computer: 

La idea es asegurarnos de que todo funciona bien y tener preparados los ordenadores de cara a la evaluación del día 13/11. Además de repasar funciones y códigos que seguramente estarán presentes en el examen.

### Manejo de R

* Preparar la sesión de RStudio 

Trabajaremos con el dataset ["iris"](https://es.wikipedia.org/wiki/Conjunto_de_datos_flor_iris) incluido en el paquete `tidyverse`. 

```r=1
#Cargar librerías
library(tidyverse)
#Cargar dataset
iris <- iris           
```

* Seleccionar y filtrar variables

```r=5
# Usando la función select para seleccionar variables

select(iris, Sepal.Length, Sepal.Width)

# Seleccionando por rango 

select(iris, Petal.Length:Sepal.Length)

# Seleccionar filas 
# Seleccionar la especie "setosa"
filter(iris, Species == 'setosa')

### Seleccionar especio Setosa o Virginica
filter(iris, Species == 'setosa' | Species == 'virginica')

### Seleccionar especies setosa con longitud se sépalo menor a 5 mm 
filter(iris, Species == 'setosa', Sepal.Length < 5)
```

* Utilizando "pipes" para construir el código. Aquí creamos un dataframe nuevo llamado `i` filtrando todas las muestras con longitud de sépalo menor a 5 mm y seleccionamos las variables Ancho y longitud de sépalo y especie 

```r=22
i <- iris %>% 
  filter(Sepal.Length < 5) %>% 
  select(Sepal.Width, Sepal.Length, Species)
```

* Creando una nueva variable con la función mutate. *Ejemplo:* Variable Sepal.Shape formada por la división del ancho entre la longitud del sépalo y lo guardamos en el dataframe nuevo llamado `i2`

```r=25
i2 <- iris %>% 
  mutate(Petal.Shape = Petal.Width / Petal.Length,
         Sepal.Shape = Sepal.Width / Sepal.Length) %>% 
  select(Species, Petal.Shape, Sepal.Shape)
```


* Usando funciones `Group_by` y `summarise` para calcular estadísticos por grupo

```r=29
meanlength <- iris %>% 
  group_by(Species) %>% 
  summarise(Mean.Petal.Length = mean(Petal.Length))
```

* Agrupar múltiples columnas y crear nuevas variables
Crear la variable Petal.Long y calcular parametros estadísticos Media, desviación, desv estandar


```r=32
iris %>% 
  mutate(Petal.Long = Petal.Length > 5) %>% 
  group_by(Species, Petal.Long) %>% 
  summarise(Mean.Petal.Length = mean(Petal.Length),
            n.Petals = length(Petal.Length),
            sd.Petal.Length = sd(Petal.Length),
            SE.Petal.Length = sd(Petal.Length) / sqrt(length(Petal.Length)))
```

* Haciendo gráficos con GGplot 

```r=39
# Graficar la relación entre longitud y ancho de sépalo

ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width)) +
  geom_point()

### Graficar la relación entre longitud y ancho de sépalo relacionando con la especie y longitud del petalo 

ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, 
                 color = Species, size = Petal.Length)) +
  geom_point()

### boxplot del ancho de sépalo por especies 

g <- ggplot(iris, aes(x = Species, y = Sepal.Width, 
                      fill = Species))

g + geom_boxplot()
```

Ver otras opciones de gráficas con [ggplot](https://ggplot2.tidyverse.org/reference/)
[ Cheat Sheet](https://www.maths.usyd.edu.au/u/UG/SM/STAT3022/r/current/Misc/data-visualization-2.1.pdf) Ggplot. 

## Practicar línea de comandos y alineamiento de secuencias :evergreen_tree: 

- Descarga [estas](https://drive.google.com/drive/folders/1n1s2-Bu0zrpYe0zapFBN_6PPNJyyBDht?usp=drive_link) secuencias de nucléotidos.
- Júntalas todas en un sólo archivo en la línea de comandos. **CON GITBASH!!**!

```bash=1
cat albicans.fasta glabrata.fasta krusei.fasta parapsilosis.fasta xylosifermentans.fasta niger.fasta > hongos_para_alinear.fasta
```
- Haz el alineamiento múltiple de secuncias con [Clustal](https://www.ebi.ac.uk/jdispatcher/msa/clustalo?outfmt=fa). 
- >:memo: Nota: Si todavía tienes instalado el programa Ugene también sepuede hacer allí. 
![image](https://hackmd.io/_uploads/rk9Wftggbe.png)

![image](https://hackmd.io/_uploads/ryITDYelWl.png)

- Construye un árbol usando el método de NJ en R
- Selecciona un outgroup adecuado para enraizar el árbol (Justificalo)
Ten a mano la práctica de [filogenia](https://rpubs.com/laurichi13/1101060)

```r=1
#Cargar librerias 
library(ape)
library(phangorn)
library(phytools)


hongos <- read.phyDat(file = "hongos_alineados.aln", 
                        format = "FASTA", type = "DNA")

matrizdist <- as.DNAbin(hongos)
matrizdist <- dist.dna(matrizdist)
matrizdist


arbolNJ <- nj(matrizdist)

plotTree(arbolNJ)

#Personalización
plotTree(arbolNJ, ftype="b", fsize=0.8, offset=1, color="red", lwd=2)

#Escogemos el hongo menos relacionado - en este caso Candidas son levaduras y Aspergillus hongo filamentoso
arbolNJraiz <-root(arbolNJ, outgroup = "Aspergillus niger", r = TRUE)
plot(arbolNJraiz)

```

## Construir árboles filogenéticos :female-construction-worker: (Más práctica en casa)

- Descarga [estas](https://drive.google.com/file/d/1RiLAq9iHntLgFr8c93DTUvIKnCXeahmo/view?usp=drive_link) secuencias de proteinas.
- Haz el alineamiento múltiple de seceuncias con [Clustal](https://www.ebi.ac.uk/jdispatcher/msa/clustalo?outfmt=fa).
- Construye un árbol usando el método de NJ
- Selecciona un outgroup adecuado para enraizar el árbol (Justificalo)
Ten a mano la práctica de [filogenia](https://rpubs.com/laurichi13/1101060)




