|
| 1 | +--- |
| 2 | +title: "Clasificación taxonómica y Metabolismo" |
| 3 | +teaching: 1 h |
| 4 | +exercises: 2 h |
| 5 | +questions: |
| 6 | +- "Cuál es la identidad taxonómica de los MAGs?" |
| 7 | +- "Qué funciones codifican?" |
| 8 | +objectives: |
| 9 | +- "Obtener la identidad taxonómica de los MAGs y conocer su capacidad funcional" |
| 10 | +keypoints: |
| 11 | +- "La clasificación taxonómica por aproximación filogenética es altamente confiable" |
| 12 | +- "Anotar los MAGs con diversas bases de datos mejora nuestro entendimiento de las funciones de los microorganismos" |
| 13 | +--- |
| 14 | + |
| 15 | +## Taxonomía |
| 16 | +### GTDB-tk |
| 17 | + |
| 18 | +GTDB-Tk es una herramienta que asigna taxonomía a genomas utilizando la base de datos [GTDB](https://gtdb.ecogenomic.org/) (Genome Taxonomy Database). |
| 19 | +Basado en árboles filogenéticos y medidas de ANI (Average Nucleotide Identity), GTDB-Tk clasifica genomas bacterianos y arqueanos, |
| 20 | +proporciona una taxonomía coherente y actualizada. Se utiliza mucho en el análisis de genomas y metagenomas. |
| 21 | + |
| 22 | +<br> |
| 23 | +<p style="text-align: center;"> |
| 24 | + <a href="{{ page.root }}/fig/extrasMAGs/14.GTDB-tk_worflow.png"> |
| 25 | + <img src="{{ page.root }}/fig/extrasMAGs/14.GTDB-tk_worflow.png" alt="Flujo de análisis de GTDB-tk"/> |
| 26 | + </a> |
| 27 | +</p> |
| 28 | +<br> |
| 29 | + |
| 30 | +Recordemos que ya tenemos un set de *bins* refinados y desreplicados. Ahora vamos a asignarles identidad taxonómica, para ello vamos a correr GTDB-tk |
| 31 | + |
| 32 | +<br> |
| 33 | +Activa el ambiente |
| 34 | +``` bash |
| 35 | +conda activate gtdbtk-2.1.1 |
| 36 | +``` |
| 37 | +<br> |
| 38 | +El directorio de resultados para gtdbtk ya lo tienes en tu carpeta de resultados. |
| 39 | +Para colocar los *bins* refinados y renombrados ejecuta el script `src/copiar_renombrarbins.sh`: |
| 40 | + |
| 41 | +``` bash |
| 42 | + bash src/copiar_renombrarbins.sh |
| 43 | +``` |
| 44 | +<br> |
| 45 | +Ahora si, vamos a correr gtdbtk ... |
| 46 | + |
| 47 | +``` bash |
| 48 | +pip install numpy==1.19.5 |
| 49 | +gtdbtk classify_wf --genome_dir results/10.gtdbtk/bins/ --out_dir results/10.gtdbtk/ --cpus 4 -x fasta |
| 50 | +``` |
| 51 | + |
| 52 | +No olvides desactivar el ambiente |
| 53 | + |
| 54 | +``` bash |
| 55 | +conda deactivate |
| 56 | +``` |
| 57 | + |
| 58 | +> ## Resultado de GTDB-Tk |
| 59 | +> Si gtdbtk está tomando mucho tiempo puedes parar el proceso con `ctrl + C` en tu teclado. |
| 60 | +> El resultado final se encuentra en el directorio y archivo: `results/10.gtdbtk/gtdbtk.bac120.summary.tsv`. |
| 61 | +{: .callout} |
| 62 | + |
| 63 | +<br> |
| 64 | +Después de ejecutar GTDB-tk, continuaremos en R para visualizar los datos. |
| 65 | +Crea un proyecto de R dentro del directorio `results/10.gtdbtk/` |
| 66 | +<br> |
| 67 | + |
| 68 | +``` r |
| 69 | +library(tidyverse) |
| 70 | +library(ggplot2) |
| 71 | +# Leer la tabla ------------------------------------------------------------#### |
| 72 | +GTDBtk <- read.table("gtdbtk.bac120.summary.tsv", |
| 73 | + sep = "\t", header = TRUE, na.strings = "", |
| 74 | + stringsAsFactors = FALSE) %>% |
| 75 | + as_tibble() |
| 76 | + |
| 77 | +# Transformar datos --------------------------------------------------------#### |
| 78 | + |
| 79 | +pozol_gtdbtk <- GTDBtk %>% |
| 80 | + select(user_genome, classification) %>% |
| 81 | + separate(classification, c( |
| 82 | + "Domain", "Phylum", "Class", "Order", "Family", "Genus", "Species"), |
| 83 | + sep = ";") %>% |
| 84 | + rename(Bin_name = user_genome) %>% |
| 85 | + unite(Bin_name_2, c("Bin_name", "Phylum"), remove = FALSE) %>% |
| 86 | + select(Bin_name, Domain, Phylum, Class, Order, Family, Genus, Species) |
| 87 | + |
| 88 | +# Guardamos los datos en un archivo de metadatos ---------------------------#### |
| 89 | +write.table(pozol_gtdbtk, file = "Metadatos.txt", |
| 90 | + sep = "\t", quote = FALSE, row.names = FALSE, col.names = TRUE) |
| 91 | + |
| 92 | +# Visualización de Datos ---------------------------------------------------#### |
| 93 | +GTDBtk_barplot <- pozol_gtdbtk %>% |
| 94 | + count(Phylum, Genus) %>% |
| 95 | + rename(Number_of_MAGs = n) %>% |
| 96 | + ggplot(aes(x = Phylum, y = Number_of_MAGs, fill = Genus)) + |
| 97 | + geom_bar(stat = "identity", position = position_dodge()) + |
| 98 | + theme_minimal() |
| 99 | + |
| 100 | +GTDBtk_barplot |
| 101 | +``` |
| 102 | + |
| 103 | +> ## Discusión |
| 104 | +> Qué otra estrategias implementarías para la clasificación taxonómica? |
| 105 | +{: .callout} |
| 106 | +<br> |
| 107 | + |
| 108 | +> ## Ejercicio 3 |
| 109 | +> |
| 110 | +> Ahora te toca a tí. |
| 111 | +> |
| 112 | +> * Reúnanse en equipos y obtengan la clasificación taxonómica de los MAGs que obtuvieron con la muestra que les tocó. |
| 113 | +> * Discutan cada resultado obtenido. |
| 114 | +> * En la [carpeta compartida de Drive](https://drive.google.com/drive/folders/1rg-zjuASg9D-goa2SlL3HXalqj3BQFNX) busquen la diapositiva para el Ejercicio 3. |
| 115 | +> * En la diapositiva correspondiente resuman sus resultados obtenidos. |
| 116 | +> |
| 117 | +> Tiempo de actividad (30 min) |
| 118 | +> |
| 119 | +> Tiempo de presentación de resultados (2 min por equipo) |
| 120 | +{: .challenge} |
| 121 | + |
| 122 | +<br> |
| 123 | +---------------------------------------------------------------------------------------------------------------- |
| 124 | + |
| 125 | +## Metabolismo |
| 126 | + |
| 127 | +### PROKKA |
| 128 | + |
| 129 | +[Prokka](https://training.galaxyproject.org/training-material/topics/genome-annotation/tutorials/annotation-with-prokka/slides-plain.html) es una herramienta útil, usa diferentes programas para predecir genes, secuencias codificantes, tRNAs, rRNAs. |
| 130 | +Hace la traducción de CDS a aminoácidos y asigna funciones usando varias bases de datos. |
| 131 | + |
| 132 | + |
| 133 | +<br> |
| 134 | +<p style="text-align: center;"> |
| 135 | + <a href="{{ page.root }}/fig/extrasMAGs/15.Prokka_workflow.png"> |
| 136 | + <img src="{{ page.root }}/fig/extrasMAGs/15.Prokka_workflow.png" alt="Prokka"/> |
| 137 | + </a> |
| 138 | +</p> |
| 139 | +<br> |
| 140 | + |
| 141 | + |
| 142 | +Para correrlo vamos a activar el ambiente en el que se aloja. |
| 143 | + |
| 144 | +``` bash |
| 145 | +conda activate Prokka_Global |
| 146 | +``` |
| 147 | +<br> |
| 148 | +Tenemos el ambiente activo, ahora vamos a crear un directorio de resultados para prokka. |
| 149 | + |
| 150 | +``` bash |
| 151 | +mkdir -p results/11.prokka |
| 152 | +``` |
| 153 | +<br> |
| 154 | +Para correrlo, podemos hacer un ciclo que nos permita anotar todos los *bins.* |
| 155 | + |
| 156 | +``` bash |
| 157 | +nohup for FASTA in $(ls results/10.gtdbtk/bins/); do LOCUSTAG=$(basename $FASTA .fasta); prokka --locustag "${LOCUSTAG}_Scaffold" --prefix $LOCUSTAG --addgenes --addmrn --cpus 4 --outdir "results/11.prokka/$LOCUSTAG" "results/10.gtdbtk/bins/$FASTA" ; done & |
| 158 | +``` |
| 159 | + |
| 160 | +> ## Explora |
| 161 | +> |
| 162 | +> Mientras prokka se ejecuta en los bins que obtuviste, despliega la ayuda y discute: |
| 163 | +> ¿ qué argumentos quitarías o agregarías? |
| 164 | +> |
| 165 | +> Cuáles te llamaron la atención? |
| 166 | +{: .challenge} |
| 167 | + |
| 168 | + |
| 169 | +<br> |
| 170 | +Desactivemos el ambiente: |
| 171 | + |
| 172 | +``` bash |
| 173 | +conda deactivate |
| 174 | +``` |
| 175 | + |
| 176 | +### KofamScan |
| 177 | + |
| 178 | +Ahora que tenemos las proteínas predichas vamos a obtener más anotaciones útiles, usaremos kofam para esto. |
| 179 | + |
| 180 | +[KofamScan](https://github.com/takaram/kofam_scan) es una herramienta de anotación, usa la base de datos KOfam de KEGG para obtener información sobre los genes que participan en diferentes rutas metabólicas. |
| 181 | + |
| 182 | +Vamos a crear el directorio de resultados |
| 183 | + |
| 184 | +``` bash |
| 185 | +mkdir -p results/12.kofam |
| 186 | +``` |
| 187 | + |
| 188 | + |
| 189 | +> ## Ejemplo de como correr KOfamScan |
| 190 | +> |
| 191 | +> KofamScan requiere mucho tiempo de ejecución. |
| 192 | +> Para efectos del taller nosotros ya lo corrimos y te proporcionaremos los resultados. |
| 193 | +> Pero te dejamos el bloque de código que usamos para este paso: |
| 194 | +> ``` bash |
| 195 | +> for FAA in $(ls results/11.prokka/*/*.faa); do |
| 196 | +> name=$(basename $FAA .faa) |
| 197 | +> exec_annotation $FAA \ |
| 198 | +> -o results/12.kofam/"$name.txt" \ |
| 199 | +> --report-unannotated \ |
| 200 | +> --cpu 4 \ |
| 201 | +> --tmp-dir results/12.kofam/"tmp$name" \ |
| 202 | +> -p /home/alumno1/kofam/db/profiles/ \ |
| 203 | +> -k /home/alumno1/kofam/db/ko_list |
| 204 | +> done |
| 205 | +> # remover los directorios temporales |
| 206 | +> #rm -r results/12.kofam/tmp* |
| 207 | +> ``` |
| 208 | +{: .callout} |
| 209 | +
|
| 210 | +<br> |
| 211 | +Estos resultados ya los tienes en el directorio `results/12.kofam` |
| 212 | +<br> |
| 213 | +
|
| 214 | +Y ahora que ya tenemos los identificadores de KO para cada proteína, vamos a filtrar y graficar el metabolismo de los *bins*. |
| 215 | +
|
| 216 | +### RbiMs |
| 217 | +
|
| 218 | +[RbiMs](https://github.com/mirnavazquez/RbiMs) es un paquete de R muy útil para obtener la anotación de cada KEGG ID y generar plots de esta información. |
| 219 | +Puede trabajar con anotaciones de KOFAM, Interpro, PFAM o CAZY. |
| 220 | +
|
| 221 | +
|
| 222 | +<br> |
| 223 | +<p style="text-align: center;"> |
| 224 | + <a href="{{ page.root }}/fig/extrasMAGs/16.rRbiMs-3.png"> |
| 225 | + <img src="{{ page.root }}/fig/extrasMAGs/16.rRbiMs-3.png" alt="RbiMs"/> |
| 226 | + </a> |
| 227 | +</p> |
| 228 | +<br> |
| 229 | +
|
| 230 | +Vamos al editor de Rstudio para correr RbiMs ✨ |
| 231 | +
|
| 232 | +``` r |
| 233 | +library(tidyverse) |
| 234 | +library(tidyr) |
| 235 | +library(rbims) |
| 236 | +library(readxl) |
| 237 | +
|
| 238 | +setwd("/home/alumnoX/taller_metagenomica_pozol/") |
| 239 | +
|
| 240 | +#A continuación, leemos los resultados de KEGG |
| 241 | +pozol_table <- read_ko(data_kofam = "results/12.kofam/") |
| 242 | +
|
| 243 | +#y los mapeamos con la base de datos de KEGG: |
| 244 | +pozol_mapp <- mapping_ko(pozol_table) |
| 245 | +
|
| 246 | +#Nos centraremos en las vías metabólicas relacionadas con la biosintesis de aminoacidos y vitaminas: |
| 247 | +
|
| 248 | +Overview <- c("Biosynthesis of amino acids", "Vitamin B6 metabolism") |
| 249 | +Aminoacids_metabolism_pozol <- pozol_mapp %>% |
| 250 | + drop_na(Module_description) %>% |
| 251 | + get_subset_pathway(Pathway_description, Overview) |
| 252 | +
|
| 253 | +#Visualizamos los datos con un gráfico de burbujas: |
| 254 | +
|
| 255 | +plot_bubble(tibble_ko = Aminoacids_metabolism_pozol, |
| 256 | + x_axis = Bin_name, |
| 257 | + y_axis = Pathway_description, |
| 258 | + analysis = "KEGG", |
| 259 | + calc = "Percentage", |
| 260 | + range_size = c(1, 10), |
| 261 | + y_labs = FALSE, |
| 262 | + x_labs = FALSE) |
| 263 | +
|
| 264 | +#Añadiremos metadatos, como la taxonomía: |
| 265 | +
|
| 266 | +Metadatos <- read_delim("results/10.gtdbtk/Metadatos.txt", delim = "\t") |
| 267 | +
|
| 268 | +#Y generaremos un gráfico de burbujas con metadatos: |
| 269 | +
|
| 270 | +plot_bubble(tibble_ko = Aminoacids_metabolism_pozol, |
| 271 | + x_axis = Bin_name, |
| 272 | + y_axis = Pathway_description, |
| 273 | + analysis = "KEGG", |
| 274 | + data_experiment = Metadatos, |
| 275 | + calc = "Percentage", |
| 276 | + color_character = Family, |
| 277 | + range_size = c(1, 10), |
| 278 | + y_labs = FALSE, |
| 279 | + x_labs = FALSE) |
| 280 | +
|
| 281 | +# Exploración de una Vía Específica |
| 282 | +# podemos explorar una sola vía, como el “Secretion system,” y crear un mapa de calor para visualizar los genes relacionados con esta vía: |
| 283 | +
|
| 284 | +Secretion_system_pozol <- pozol_mapp %>% |
| 285 | + drop_na(Cycle) %>% |
| 286 | + get_subset_pathway(Cycle, "Secretion system") |
| 287 | +
|
| 288 | +#Y, finalmente, generamos un mapa de calor: |
| 289 | +
|
| 290 | +plot_heatmap(tibble_ko = Secretion_system_pozol, |
| 291 | + y_axis = Genes, |
| 292 | + analysis = "KEGG", |
| 293 | + calc = "Binary") |
| 294 | +
|
| 295 | +#También podemos agregar metadatos para obtener una visión más completa: |
| 296 | +
|
| 297 | +plot_heatmap(tibble_ko = Secretion_system_pozol, |
| 298 | + y_axis = Genes, |
| 299 | + data_experiment = Metadatos, |
| 300 | + order_x = Family, |
| 301 | + analysis = "KEGG", |
| 302 | + calc = "Binary") |
| 303 | +
|
| 304 | +plot_heatmap(tibble_ko = Secretion_system_pozol, |
| 305 | + y_axis = Genes, |
| 306 | + data_experiment = Metadatos, |
| 307 | + order_y = Pathway_cycle, |
| 308 | + order_x = Family, |
| 309 | + analysis = "KEGG", |
| 310 | + calc = "Binary") |
| 311 | +
|
| 312 | +# Explorar |
| 313 | +colnames(pozol_mapp) |
| 314 | +
|
| 315 | +pozol_mapp %>% |
| 316 | + select(Cycle, Pathway_cycle, Pathway_description) %>% |
| 317 | + distinct() |
| 318 | +``` |
| 319 | +
|
| 320 | +<br> |
| 321 | +<p style="text-align: center;"> |
| 322 | + <a href="{{ page.root }}/fig/extrasMAGs/17.RBiMs_heatmap.png"> |
| 323 | + <img src="{{ page.root }}/fig/extrasMAGs/17.RBiMs_heatmap.png" alt="RbiMs"/> |
| 324 | + </a> |
| 325 | +</p> |
| 326 | +<br> |
| 327 | + |
| 328 | + |
| 329 | +### Antismash |
| 330 | + |
| 331 | +Adicionalmente podrías anotar el metabolismo secundario de los *bins* siguiendo el flujo de análisis propuestos en la lección de [Minería Genómica](https://carpentries-incubator.github.io/genome-mining/02-antismash/index.html) de Software Carpentry. |
0 commit comments