Figura 4

Contingencia histórica en la evolución del genoma

Fig. 4. Contingencia genética en la identidad de los genes mutados durante la evolución experimental.

Figura 4 A y 4 B

Para generar las figuras 4A y 4B se tuvieron que seguir varios pasos para procesar los datos, por simplicidad, sólo presentaremos un esquema de los pasos que se siguieron y tomaremos las variables relevantes para generar las figuras.

Esquema

Esquema

Dificultades

  • Los paquetes no estabas especificados.
  • La carpeta Breseq indicada, en realidad es la carpeta “Mutation tables” presente en el Github.
  • El P value no aparecía en la gráfica de la Figura 4A.

En los heatmap:

  • eran cuadrados y los valores del porcentaje iban de 0, 50, 100.
  • Los colores no correspondían.
  • Los nombres de las mutantes no correspondían.
  • El código para las figuras 4 y 5 estaban juntos.

Paquetes

Los paquetes que vamos a cargar son necesarios para las gráficas:

library(ggplot2) # Generar gráficos
library(viridis) # Generar paleta de colores

Cargar objetos

Los objetos y variables que cargamos y ocuparemos para esta figura son:

    1. test_gene_df_day6: Data frame con 2 columnas: sim_coef y label
    1. annotation_day6: Guarda el texto para el p valor.
    1. breseq_gene_props_day6: Data frame con 3 columnas: top_gene, res_gene y percent_pops
load("data/ReproHack_data_figures4_5.RData")

Es importante notar que la figura 4 muestra datos para el pase 2, es decir para el día 6 del experimento. Para obetener la figurs 4A se generar boxplots usang ggplot2. Los datos graficados son los de nuestro df: test_gene_df_day6. En este df encontramos los coeficientes de similitud a pares de las 22 poblaciones, la etiquetas nos muestra si tienen la mutación que confiere resistencia en el mismo o en diferente gen. Para colocar el pvalue del test de alotearización se cargó el objeto annotation_day6

p_day6 <- ggplot(test_gene_df_day6, aes(label, sim_coef)) +
  geom_boxplot(outlier.shape = NA, width = 0.4, size = 0.8) +
  geom_jitter(width = 0.05, size = 2, alpha = 0.2) +
  theme_classic(base_size = 18) +
  xlab("") +
  ylab("Overlap in acquired mutations\n(Pairwise Sørensen-Dice similarity)") +
  theme(panel.spacing = unit(3, "lines"),
        strip.text = element_text(size = 18, face = "bold")) +
  ylim(0.1, 0.55) +
  annotate("text", x = 1.5, y = 0.55, label = annotation_day6, size = 6, hjust = 0.5, vjust = 1.5, color = "black")

print(p_day6)

Para el heatmap de las figura 4B usamos ggplot. Nuestra información la tomamos del objeto: breseq_gene_props_day6. Este dataframe nos da información sobre el porcentaje de poblaciones (agrupads por gen de resistencia) que tienen mutación en el top20 de genes.

ggplot(breseq_gene_props_day6, aes(top_gene, res_gene, fill = percent_pops * 100)) +
  geom_tile(color = "grey80") +
  theme_classic(base_size = 14) +
  theme(
    axis.text.x = element_text(angle = 90, hjust = 1, size = 10, family = "Arial")  # Define all adjustments in one call
  ) +
  scale_fill_viridis(
    name = "Populations\nwith mutation (%)",
    limits = c(0, 100),  # Define scale limits
    breaks = c(0, 25, 50, 75, 100)  # Define specific breaks to display
  ) +
  ylab("") +
  xlab("") +
  ggtitle("Day 6 of experimental evolution")