ggplot(LOR_res_long[!LOR_res_long$isolate %in% c("FMS6","SNK6"),], aes(passage*3,value*100,group=isolate,color=(isolate%in%c("SNK7","QAC5","VCM4")))) +
geom_point(size=4.5,shape=18) +
geom_line(size=0.8)+theme_classic() +
guides(color=F)+scale_color_brewer(palette="Dark2") +
scale_x_continuous(breaks=c(0,12,24,36)) +
theme_classic(base_size=16) +
ylab("Proportion of phage sensitivity in population (%)") +
xlab("Day of experimental evolution") +
theme(axis.title.y=element_text(size=14))
Retos y problemas con el código
Ausencia de instrucciones
Reto 1
En el código no se mencionaba con que paquetes realizaban la importación de los datos de excel que te daban, solo daban instrucciones como la siguiente:
Cargar informacion de “Costs_of_Res.xlsx” como variable
costs_of_res
.
Solución: En este caso decidimos usar el paquete readxl
para la importación de archivos.
Reto 2
Para graficar la figura 2, el código mencionaba la variable LOR_res_long
, sin embargo esta variable no se encontraba declarada en el código. Solo daba el siguiente fragmento:
Solución: Agregamos todo el código de inicio a fin en Chatgpt y le solicitamos que nos dijera cómo generar la variable X a partir de los datos que le dimos. Logrando obtener la información faltante.
Reto 3
Variables erróneas colocadas en el código. Para la figura 3 menciona que se usa la variable Prop_R_P12
, sin embargo sta variable no existe si no que se llama Prop_S_P12
.
Solución: corregimos el código cambiando la variable.
Retos figuras 4 y 5
Reto 1
En el código no se especificaban los paquetes que se utilizarían, ni se mencionaban los paquetes necesarios para la importación de datos desde archivos de Excel. Solución: En este caso decidimos usar los paquetes readxl
para la importación de archivos, ggplot2
para la generación de gráficas y vidiris
para la paleta de colores.
Reto 2
En el código no se mencionaba cómo se generaba la variable Breseq
. Solución: Esta variable se generaba a partir de las tablas presentes en la carpeta Mutation tables
.
Reto 3
En el código para la figura 4A no había una línea para agregar el p value. Solución: Agregamos este fragmento al código:
# Prepare data
<- data.frame(
test_gene_df_day6 sim_coef = c(test_same_P2_day6, test_diff_P2_day6),
label = c(rep("Same\nresistance\ngene", length(test_same_P2_day6)), rep("Different\nresistance\ngene", length(test_diff_P2_day6)))
)colnames(test_gene_df_day6) <- c("sim_coef", "label")
$label <- factor(test_gene_df_day6$label, levels = c("Same\nresistance\ngene", "Different\nresistance\ngene"))
test_gene_df_day6
# Calculate day 6 p-value
<- length(perm_gene_P2_day6[perm_gene_P2_day6 >= test_gene_P2_day6]) / length(perm_gene_P2_day6)
p_value_P2_day6 print(p_value_P2_day6)
# Set up p-value annotation
if (p_value_P2_day6 < 0.001) {
<- "p < 0.001***"
annotation_day6 else {
} <- paste0("p = ", format(p_value_P2_day6, digits = 3))
annotation_day6 }
Reto 4
En el código de los Heatmaps, los nombres de las mutantes no correspondían, los colores del heatmap no correspondían y había algunos símbolos que fueron modificados. Solución: Acomodamos los nombres de las mutantes, utilizamos la librería vidiris
y la familia tipografica Arial.
Reto 5
En el código no aparecía el análisis para la figura 5. Solución: El código tuvo que ser dividido en 2 partes para generar la aleatorizacion del día 6 y del día 36 por separado.