Skip to content

Commit dd913aa

Browse files
authored
Create MAGsTaxonomyMetabolism.md
1 parent 32b47a2 commit dd913aa

File tree

1 file changed

+331
-0
lines changed

1 file changed

+331
-0
lines changed

_extras/MAGsTaxonomyMetabolism.md

Lines changed: 331 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,331 @@
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

Comments
 (0)