From fe9c5c373778b69e49fe3ccd0fce944e71bee26a Mon Sep 17 00:00:00 2001 From: cm401 Date: Mon, 26 Aug 2024 10:58:58 +0100 Subject: [PATCH 01/12] Add funel plot --- src/lassa_delays/orderly.R | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/lassa_delays/orderly.R b/src/lassa_delays/orderly.R index 125fcab5..36b862f3 100644 --- a/src/lassa_delays/orderly.R +++ b/src/lassa_delays/orderly.R @@ -98,6 +98,14 @@ m5 <- metamean_wrap(dataframe = d2, estmeansd_method = "Cai", p5 <- m5$plot +png(file = "temp.png", width = 9500, height = 6000, res = 750) +meta::funnel(m5$result,studlab = TRUE) +dev.off() + +gg <- png::readPNG("temp.png", native = TRUE) +file.remove("temp.png") +funel_plt <- wrap_elements(plot = rasterGrob(gg, interpolate = TRUE)) + patchwork <- ((p1 | p2) / (p3 | p4) / p5) patchwork <- patchwork + plot_annotation(tag_levels = 'A') ggsave("figure_4.png", plot = patchwork, width = 12, height = 16) @@ -110,4 +118,5 @@ p2 <- pdf_generic(m5$result,"random",c("Gamma","Lognormal","Weibull"),c(-0.2,30) patchwork <- (p1 + p2) + plot_layout(ncol = 2, widths = c(1,1)) patchwork <- patchwork + plot_annotation(tag_levels = 'A') ggsave("figure_S5.png", plot = patchwork, width = 12, height = 6) -ggsave("figure_S5.pdf", plot = patchwork, width = 12, height = 6) \ No newline at end of file +ggsave("figure_S5.pdf", plot = patchwork, width = 12, height = 6) +ggsave("figure_SI_funnel.png", plot = funel_plt, width = 12, height = 8) From f3e9c8dec55e3f380bdbc7b974d5aaea9e7e8629 Mon Sep 17 00:00:00 2001 From: patcatgit Date: Wed, 28 Aug 2024 18:39:30 +0100 Subject: [PATCH 02/12] Added country names to Fig 2B --- src/lassa_serology/orderly.R | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/src/lassa_serology/orderly.R b/src/lassa_serology/orderly.R index 71a8321d..b6d5c2c6 100644 --- a/src/lassa_serology/orderly.R +++ b/src/lassa_serology/orderly.R @@ -110,19 +110,35 @@ n1 <- data.frame(latitude = c(19.1,18.1,17.1,15.1,15.0,12.5, "Central\nAfrican\nRepublic","Gabon","Equatorial\nGuinea","Cameroon","Côte d'Ivoire","Ghana", "Republic\nof Congo","Benin","Togo","Nigeria","Guinea","Gambia", "Guinea\n-Bissau","Sierra\nLeone","Liberia")) -n2 <- data.frame(latitude = numeric(0), longitude = numeric(0), c_name = character(0)) +n2 <- data.frame(latitude = c(16.4, + 3.8,4.25, + 5.2,3.8,9.0, + 7.0,5), + longitude = c(-11.5, + -4.5,-0.5, + 2.3,4.5,-15.5, + -14.5,-11.5), + c_name = c("Mali", + "Côte d'Ivoire","Ghana", + "Benin","Nigeria","Guinea", + "Sierra\nLeone","Liberia")) #specify position of lines pointing to countries (added to map after function call) -ll <- data.frame(lat1 = c(2.50,-3.2,1.0,5.1,3.3,13.4,11.500,7.200,4.5), - lon1 = c(23.5,7.30,7.6,1.6,3.7,-17.8,-17.7,-14.5,-11), - lat2 = c(3.80,-2.5,1.7,6.0,4.5,13.4,11.700,7.900,5.5), - lon2 = c(22.5,9.20,9.4,1.4,5.3,-17,-16.500,-13.2,-10)) +ll1 <- data.frame(lat1 = c(2.50,-3.2,1.0,5.1,3.3,13.4,11.500,7.200,4.5), + lon1 = c(23.5,7.30,7.6,1.6,3.7,-17.8,-17.7,-14.5,-11), + lat2 = c(3.80,-2.5,1.7,6.0,4.5,13.4,11.700,7.900,5.5), + lon2 = c(22.5,9.20,9.4,1.4,5.3,-17,-16.500,-13.2,-10)) +ll2 <- data.frame(lat1 = c( 16.1, 9.1, 7.45, 5.1, 4.1, 4.5, 5.4, 4), + lon1 = c(-11.4,-14.75,-13.9,-10.8,-4.5,-0.5, 2.3, 4.5), + lat2 = c( 15.3, 9.7, 7.9, 5.7, 5, 5.1, 6.2, 4.8), + lon2 = c(-10.9,-14.0, -13.2,-10.2,-4.9,-0.8, 2.2, 5.3)) #call mapping function p1 <- map_generic(l0,l1,d1,f1,n1,range_mp=TRUE,summ_dups="mean",c(-23.2,25.1),c(-3.9,22.25),c(0,60),'magma','') p1 <- p1 + geom_rect(aes(xmin = -18.8, xmax = 14.75, ymin = 2, ymax = 16.75), linetype = 2, color = "grey40", fill = NA) -p1 <- p1 + geom_segment(data = ll, aes(x = lon1, xend = lon2, y = lat1, yend = lat2), size = 0.5, color = "black") +p1 <- p1 + geom_segment(data = ll1, aes(x = lon1, xend = lon2, y = lat1, yend = lat2), size = 0.5, color = "black") p2 <- map_generic(l0,l1,d2,f2,n2,range_mp=TRUE,summ_dups="mean",c(-18.5,13.13),c(2.75,16.1),c(0,60),'magma','') +p2 <- p2 + geom_segment(data = ll2, aes(x = lon1, xend = lon2, y = lat1, yend = lat2), size = 0.5, color = "black") patchwork <- p1 / p2 patchwork <- patchwork + plot_layout(heights = c(1,0.75)) + plot_annotation(tag_levels = 'A') From 733721656788761fe87ed29d514f6989dd8d399e Mon Sep 17 00:00:00 2001 From: patcatgit Date: Thu, 29 Aug 2024 18:16:31 +0100 Subject: [PATCH 03/12] corrected author first/last names for lassa and sars --- src/db_extraction/orderly.R | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/db_extraction/orderly.R b/src/db_extraction/orderly.R index bf9fe99f..239aa970 100644 --- a/src/db_extraction/orderly.R +++ b/src/db_extraction/orderly.R @@ -325,6 +325,11 @@ if (pathogen == "EBOLA") { models$Covidence_ID[ models$Covidence_ID == 3158] <- 3153 params$Covidence_ID[ params$Covidence_ID == 3158] <- 3153 + #correct author first/last names + articles <- articles %>% rename(temp_col = FirstAuthor_FirstName, + FirstAuthor_FirstName = FirstAauthor_Surname) %>% + rename(FirstAauthor_Surname = temp_col) + #blank outbreaks outbreaks <- outbreaks %>% filter(!(Covidence_ID == 845 & Outbreak_ID == 1)) @@ -343,7 +348,15 @@ if (pathogen == "EBOLA") { #missing parameter types params$Parameter_type[params$Covidence_ID==2684¶ms$access_param_id==37] <- 'Risk factors' -} +} else if (pathogen == "SARS") { + + #correct author first/last names + articles <- articles %>% rename(temp_col = FirstAuthor_FirstName, + FirstAuthor_FirstName = FirstAauthor_Surname) %>% + rename(FirstAauthor_Surname = temp_col) + +} + # Pathogen-specific cleaning articles <- clean_articles(articles) models <- clean_models(models) From 91f867b4e3dc10933b4cbf710193b63f86a5e6ab Mon Sep 17 00:00:00 2001 From: patcatgit Date: Thu, 29 Aug 2024 18:17:05 +0100 Subject: [PATCH 04/12] fixed author names in lassa reconciliation csv file --- src/db_compilation/lassa_qa_fixing.csv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/db_compilation/lassa_qa_fixing.csv b/src/db_compilation/lassa_qa_fixing.csv index 99995020..589403c0 100644 --- a/src/db_compilation/lassa_qa_fixing.csv +++ b/src/db_compilation/lassa_qa_fixing.csv @@ -1,4 +1,4 @@ -Article_ID,Pathogen,Covidence_ID,FirstAauthor_Surname,Article_title,DOI,Journal,Year_publication,Volume,Issue,Page_first,Page_last,Name_data_entry,Paper_copy_only,Notes,FirstAuthor_FirstName,QA_M1,QA_M2,QA_A3,QA_A4,QA_D5,QA_D6,QA_D7,ID,Covidence_ID_text,fixed,num_rows,matching +Article_ID,Pathogen,Covidence_ID,FirstAuthor_FirstName,Article_title,DOI,Journal,Year_publication,Volume,Issue,Page_first,Page_last,Name_data_entry,Paper_copy_only,Notes,FirstAauthor_Surname,QA_M1,QA_M2,QA_A3,QA_A4,QA_D5,QA_D6,QA_D7,ID,Covidence_ID_text,fixed,num_rows,matching 1,Lassa mammarenavirus,18,PA,Lassa Fever in Children in Sierra-Leone; West-Africa,NA,Transactions of the Royal Society of Tropical Medicine and Hygiene,1986,80,4,577,582,Christian,FALSE,"Study in Children Seasonal cluster in April; May and August",Webb,Yes,No,NA,NA,Yes,No,No,9f62e47ed45a53c1336e8e63d7d7f6cb,18,1,, 4,Lassa mammarenavirus,49,Fransje,Hemorrhagic-Fever Virus-Infections in an Isolated Rain-Forest Area of Central Liberia - Limitations of the Indirect Immunofluorescence Slide Test for Antibody Screening in Africa,NA,Tropical and Geographical Medicine,1986,38,1,209,214,Christian,TRUE,"Link with Epilepsy From fce589b8524cf40ad52e4209963749e5706f42b2 Mon Sep 17 00:00:00 2001 From: patcatgit Date: Thu, 29 Aug 2024 18:17:36 +0100 Subject: [PATCH 05/12] fixed author first/last names for lassa and sars cleaning --- src/db_compilation/lassa_cleaning.R | 12 ++++++------ src/db_compilation/sars_cleaning.R | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/db_compilation/lassa_cleaning.R b/src/db_compilation/lassa_cleaning.R index 17f8a680..0b6f115f 100644 --- a/src/db_compilation/lassa_cleaning.R +++ b/src/db_compilation/lassa_cleaning.R @@ -89,20 +89,20 @@ lassa_cleaning <- function(df) { TRUE ~ paper_copy_only )) %>% # name typos - mutate(first_author_surname = case_when( + mutate(first_author_first_name = case_when( covidence_id %in% 2648 ~ "Shirley C.", covidence_id %in% 1447 ~ "N.A.", - TRUE ~ first_author_surname + TRUE ~ first_author_first_name )) %>% - mutate(first_author_first_name = case_when( + mutate(first_author_surname = case_when( covidence_id %in% 2648 ~ "Nimo-Paintsil", covidence_id %in% 2585 ~ "Dalhat", covidence_id %in% 1033 ~ "Ehichioya", covidence_id %in% 661 ~ "Kerneis", - TRUE ~ first_author_first_name + TRUE ~ first_author_surname )) %>% - mutate(first_author_first_name = sub(".*\\.(.*)", "\\1", first_author_first_name)) %>% - mutate(first_author_first_name = sub("^\\s+", "", first_author_first_name)) + mutate(first_author_surname = sub(".*\\.(.*)", "\\1", first_author_surname)) %>% + mutate(first_author_surname = sub("^\\s+", "", first_author_surname)) # revised qa after parameter removed: now outbreak only df[df$covidence_id %in% 152, c("qa_m1", "qa_m2", "qa_a3", "qa_a4", "qa_d6", "qa_d7")] <- NA df diff --git a/src/db_compilation/sars_cleaning.R b/src/db_compilation/sars_cleaning.R index 93cd49e0..3368f25d 100644 --- a/src/db_compilation/sars_cleaning.R +++ b/src/db_compilation/sars_cleaning.R @@ -105,18 +105,18 @@ sars_cleaning <- function(df) { # covidence_id %in% c(845,917) ~ FALSE, # TRUE ~ paper_copy_only)) %>% #name typos - mutate(first_author_surname = case_when( + mutate(first_author_first_name = case_when( # covidence_id == 2648 ~ 'Shirley C.', covidence_id == 6909 ~ 'MEC', #The Chinese SARS Molecular Epidemiology Consortium - TRUE ~ first_author_surname)) %>% - mutate(first_author_first_name = sub(".*\\.(.*)", "\\1", first_author_first_name, useBytes = TRUE)) %>% - mutate(first_author_first_name = sub("^\\s+", "", first_author_first_name, useBytes = TRUE)) %>% - mutate(first_author_first_name = case_when( + TRUE ~ first_author_first_name)) %>% + mutate(first_author_surname = sub(".*\\.(.*)", "\\1", first_author_surname, useBytes = TRUE)) %>% + mutate(first_author_surname = sub("^\\s+", "", first_author_surname, useBytes = TRUE)) %>% + mutate(first_author_surname = case_when( # covidence_id == 2648 ~ 'Nimo-Paintsil', # covidence_id == 2585 ~ 'Dalhat', # covidence_id == 1033 ~ 'Ehichioya', covidence_id == 6909 ~ 'MEC', #The Chinese SARS Molecular Epidemiology Consortium - TRUE ~ first_author_first_name)) + TRUE ~ first_author_surname)) df } From cd80d866a7a948fd8d2801a07f5ccc871cbcb8ed Mon Sep 17 00:00:00 2001 From: patcatgit Date: Thu, 29 Aug 2024 18:18:13 +0100 Subject: [PATCH 06/12] updated refs to call author last names (due to previous bug fix) --- shared/lassa_functions.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shared/lassa_functions.R b/shared/lassa_functions.R index 441dd8ec..d31c4d2c 100644 --- a/shared/lassa_functions.R +++ b/shared/lassa_functions.R @@ -3,7 +3,7 @@ data_curation <- function(articles, outbreaks, models, parameters, plotting,switch_first_surname=FALSE) { articles <- articles %>% - mutate(refs = paste(first_author_first_name," (",year_publication,")",sep="")) %>% #define references + mutate(refs = paste(first_author_surname," (",year_publication,")",sep="")) %>% #define references group_by(refs) %>% mutate(counter = row_number()) %>% ungroup() %>% #distinguish same-author-same-year references mutate(new_refs = ifelse(refs %in% refs[duplicated(refs)], paste0(sub("\\)$", "", refs),letters[counter],")"), refs)) %>% select(-counter,-refs) %>% rename(refs = new_refs) From e7e8f00a6ef7674f5a1f91bba146b4f9a823d51c Mon Sep 17 00:00:00 2001 From: patcatgit Date: Fri, 30 Aug 2024 10:45:18 +0100 Subject: [PATCH 07/12] prettified funnel plot --- src/lassa_delays/orderly.R | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/lassa_delays/orderly.R b/src/lassa_delays/orderly.R index 36b862f3..6b915d98 100644 --- a/src/lassa_delays/orderly.R +++ b/src/lassa_delays/orderly.R @@ -98,20 +98,12 @@ m5 <- metamean_wrap(dataframe = d2, estmeansd_method = "Cai", p5 <- m5$plot -png(file = "temp.png", width = 9500, height = 6000, res = 750) -meta::funnel(m5$result,studlab = TRUE) -dev.off() - -gg <- png::readPNG("temp.png", native = TRUE) -file.remove("temp.png") -funel_plt <- wrap_elements(plot = rasterGrob(gg, interpolate = TRUE)) - patchwork <- ((p1 | p2) / (p3 | p4) / p5) patchwork <- patchwork + plot_annotation(tag_levels = 'A') ggsave("figure_4.png", plot = patchwork, width = 12, height = 16) ggsave("figure_4.pdf", plot = patchwork, width = 12, height = 16) -#figure_S5: hypothetical probability distributions for onset-admission delay +# #figure_S5: hypothetical probability distributions for onset-admission delay p1 <- pdf_generic(m5$result,"common",c("Gamma","Lognormal","Weibull"),c(-0.2,30),'Onset-Admission Delay (days)') p2 <- pdf_generic(m5$result,"random",c("Gamma","Lognormal","Weibull"),c(-0.2,30),'Onset-Admission Delay (days)') @@ -119,4 +111,16 @@ patchwork <- (p1 + p2) + plot_layout(ncol = 2, widths = c(1,1)) patchwork <- patchwork + plot_annotation(tag_levels = 'A') ggsave("figure_S5.png", plot = patchwork, width = 12, height = 6) ggsave("figure_S5.pdf", plot = patchwork, width = 12, height = 6) -ggsave("figure_SI_funnel.png", plot = funel_plt, width = 12, height = 8) + +#figure_S6: meta-analysis funnel plot +png(file = "temp.png", width = 9500, height = 6500, res = 1000) +funnel(m5$result, xlim = c(5,12), ylim = c(0,1.5), common = FALSE,#only plots funnel for either common or random for some reason + pch = 22, bg = "dodgerblue3", level = 0.95, + studlab = TRUE, cex.studlab = 0.75, pos.studlab = 2) +dev.off() +gg <- png::readPNG("temp.png", native = TRUE) +file.remove("temp.png") +gg <- wrap_elements(plot = rasterGrob(gg, interpolate = TRUE)) + +ggsave("figure_S6.png", plot = gg, width = 12, height = 8) +ggsave("figure_S6.pdf", plot = gg, width = 12, height = 8) \ No newline at end of file From 06e694db8b08e524ec0bef8253166cf9191ef8fe Mon Sep 17 00:00:00 2001 From: patcatgit Date: Fri, 30 Aug 2024 10:59:44 +0100 Subject: [PATCH 08/12] changed figure numbering --- src/lassa_collate/orderly.R | 18 +++++++++++------- src/lassa_severity/orderly.R | 36 ++++++++++++++++++------------------ 2 files changed, 29 insertions(+), 25 deletions(-) diff --git a/src/lassa_collate/orderly.R b/src/lassa_collate/orderly.R index 23a35f4e..01de6fc3 100644 --- a/src/lassa_collate/orderly.R +++ b/src/lassa_collate/orderly.R @@ -6,12 +6,12 @@ orderly_parameters(pathogen = NULL) orderly_dependency("lassa_serology", "latest(parameter:pathogen == this:pathogen)", files = c("figure_2.png","figure_2.pdf")) orderly_dependency("lassa_severity", "latest(parameter:pathogen == this:pathogen)", - files = c("figure_3.png","figure_S6.png","figure_S7.png","figure_S8.png", - "figure_S9.png","figure_S10.png","figure_S11.png","figure_S12.png", - "figure_3.pdf","figure_S6.pdf","figure_S7.pdf","figure_S8.pdf", - "figure_S9.pdf","figure_S10.pdf","figure_S11.pdf","figure_S12.pdf")) + files = c("figure_3.png","figure_S7.png","figure_S8.png", + "figure_S9.png","figure_S10.png","figure_S11.png","figure_S12.png","figure_S13.png", + "figure_3.pdf","figure_S7.pdf","figure_S8.pdf", + "figure_S9.pdf","figure_S10.pdf","figure_S11.pdf","figure_S12.pdf","figure_S13.pdf")) orderly_dependency("lassa_delays", "latest(parameter:pathogen == this:pathogen)", - files = c("figure_4.png","figure_S5.png","figure_4.pdf","figure_S5.pdf")) + files = c("figure_4.png","figure_S5.png","figure_S6.png","figure_4.pdf","figure_S5.pdf","figure_S6.pdf")) orderly_dependency("lassa_transmission", "latest(parameter:pathogen == this:pathogen)", files = c("figure_5.png","figure_5.pdf")) orderly_dependency("lassa_summary", "latest(parameter:pathogen == this:pathogen)", @@ -26,10 +26,10 @@ orderly_artefact("lassa-specific outputs", "main/figure_2.pdf","main/figure_3.pdf","main/figure_4.pdf","main/figure_5.pdf", "supp/figure_S2.png","supp/figure_S3.png","supp/figure_S4.png", "supp/figure_S5.png","supp/figure_S6.png","supp/figure_S7.png","supp/figure_S8.png", - "supp/figure_S9.png","supp/figure_S10.png","supp/figure_S11.png","supp/figure_S12.png", + "supp/figure_S9.png","supp/figure_S10.png","supp/figure_S11.png","supp/figure_S12.png","supp/figure_S13.png", "supp/figure_S2.pdf","supp/figure_S3.pdf","supp/figure_S4.pdf", "supp/figure_S5.pdf","supp/figure_S6.pdf","supp/figure_S7.pdf","supp/figure_S8.pdf", - "supp/figure_S9.pdf","supp/figure_S10.pdf","supp/figure_S11.pdf","supp/figure_S12.pdf", + "supp/figure_S9.pdf","supp/figure_S10.pdf","supp/figure_S11.pdf","supp/figure_S12.pdf","supp/figure_S13.pdf", "supp/latex_outbreaks.csv","supp/latex_models.csv", "supp/latex_transmission.csv","supp/latex_delays.csv","supp/latex_severity.csv", "supp/latex_seroprevalence.csv","supp/latex_riskfactors.csv")) @@ -86,6 +86,8 @@ file.copy(from = "figure_S11.png", to = "supp/figure_S11.png") file.copy(from = "figure_S12.png", to = "supp/figure_S12.png") +file.copy(from = "figure_S13.png", + to = "supp/figure_S13.png") file.copy(from = "figure_S2.pdf", to = "supp/figure_S2.pdf") @@ -109,6 +111,8 @@ file.copy(from = "figure_S11.pdf", to = "supp/figure_S11.pdf") file.copy(from = "figure_S12.pdf", to = "supp/figure_S12.pdf") +file.copy(from = "figure_S13.pdf", + to = "supp/figure_S13.pdf") file.copy(from = "latex_outbreaks.csv", to = "supp/latex_outbreaks.csv") diff --git a/src/lassa_severity/orderly.R b/src/lassa_severity/orderly.R index 8dcff58a..55820c9f 100644 --- a/src/lassa_severity/orderly.R +++ b/src/lassa_severity/orderly.R @@ -28,12 +28,12 @@ orderly_shared_resource("Africa_Boundaries-shp" = "Africa_Boundaries-shp", "rivers_africa_37333" = "rivers_africa_37333") orderly_shared_resource("lassa_functions.R" = "lassa_functions.R") source("lassa_functions.R") -orderly_artefact("lassa-specific figures",c("figure_3.png","figure_S6.png","figure_S7.png", +orderly_artefact("lassa-specific figures",c("figure_3.png","figure_S7.png", "figure_S8.png","figure_S9.png","figure_S10.png", - "figure_S11.png","figure_S12.png", - "figure_3.pdf","figure_S6.pdf","figure_S7.pdf", + "figure_S11.png","figure_S12.png","figure_S13.png", + "figure_3.pdf","figure_S7.pdf", "figure_S8.pdf","figure_S9.pdf","figure_S10.pdf", - "figure_S11.pdf","figure_S12.pdf")) + "figure_S11.pdf","figure_S12.pdf","figure_S13.pdf")) ################### ## DATA CURATION ## @@ -206,16 +206,16 @@ p3 <- m3$plot p4 <- m4$plot p5 <- m5$plot -ggsave("figure_S6.png", plot = p1, width = 12, height = 16) -ggsave("figure_S6.pdf", plot = p1, width = 12, height = 16) -ggsave("figure_S7.png", plot = p2, width = 12, height = 16) -ggsave("figure_S7.pdf", plot = p2, width = 12, height = 16) -ggsave("figure_S8.png", plot = p3, width = 12, height = 16) -ggsave("figure_S8.pdf", plot = p3, width = 12, height = 16) -ggsave("figure_S9.png", plot = p4, width = 12, height = 16) -ggsave("figure_S9.pdf", plot = p4, width = 12, height = 16) -ggsave("figure_S10.png", plot = p5, width = 12, height = 16) -ggsave("figure_S10.pdf", plot = p5, width = 12, height = 16) +ggsave("figure_S7.png", plot = p1, width = 12, height = 16) +ggsave("figure_S7.pdf", plot = p1, width = 12, height = 16) +ggsave("figure_S8.png", plot = p2, width = 12, height = 16) +ggsave("figure_S8.pdf", plot = p2, width = 12, height = 16) +ggsave("figure_S9.png", plot = p3, width = 12, height = 16) +ggsave("figure_S9.pdf", plot = p3, width = 12, height = 16) +ggsave("figure_S10.png", plot = p4, width = 12, height = 16) +ggsave("figure_S10.pdf", plot = p4, width = 12, height = 16) +ggsave("figure_S11.png", plot = p5, width = 12, height = 16) +ggsave("figure_S11.pdf", plot = p5, width = 12, height = 16) #figure_S11: meta-analysis with only known duplicates excluded db <- d1 %>% filter(duplicate_cfr %in% c("False","Assumed")) @@ -240,8 +240,8 @@ p4 <- m4$plot patchwork <- (p1 + p2 + p3 + p4) + plot_layout(ncol = 2, widths = c(1,1)) patchwork <- patchwork + plot_annotation(tag_levels = 'A') -ggsave("figure_S11.png", plot = patchwork, width = 12, height = 12) -ggsave("figure_S11.pdf", plot = patchwork, width = 12, height = 12) +ggsave("figure_S12.png", plot = patchwork, width = 12, height = 12) +ggsave("figure_S12.pdf", plot = patchwork, width = 12, height = 12) #figure_S12: meta-analysis without de-duplication dc <- d1 @@ -266,5 +266,5 @@ p4 <- m4$plot patchwork <- (p1 + p2 + p3 + p4) + plot_layout(ncol = 2, widths = c(1,1)) patchwork <- patchwork + plot_annotation(tag_levels = 'A') -ggsave("figure_S12.png", plot = patchwork, width = 12, height = 12) -ggsave("figure_S12.pdf", plot = patchwork, width = 12, height = 12) \ No newline at end of file +ggsave("figure_S13.png", plot = patchwork, width = 12, height = 12) +ggsave("figure_S13.pdf", plot = patchwork, width = 12, height = 12) \ No newline at end of file From be0ae324ebfacaf3235f343203e3e16f6f66f59a Mon Sep 17 00:00:00 2001 From: patcatgit Date: Fri, 30 Aug 2024 13:54:17 +0100 Subject: [PATCH 09/12] added cfr funnel plot --- src/lassa_collate/orderly.R | 10 ++++++++-- src/lassa_severity/orderly.R | 25 +++++++++++++++++++------ 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/src/lassa_collate/orderly.R b/src/lassa_collate/orderly.R index 01de6fc3..e7bfdf06 100644 --- a/src/lassa_collate/orderly.R +++ b/src/lassa_collate/orderly.R @@ -7,9 +7,9 @@ orderly_dependency("lassa_serology", "latest(parameter:pathogen == this:pathogen files = c("figure_2.png","figure_2.pdf")) orderly_dependency("lassa_severity", "latest(parameter:pathogen == this:pathogen)", files = c("figure_3.png","figure_S7.png","figure_S8.png", - "figure_S9.png","figure_S10.png","figure_S11.png","figure_S12.png","figure_S13.png", + "figure_S9.png","figure_S10.png","figure_S11.png","figure_S12.png","figure_S13.png","figure_S14.png", "figure_3.pdf","figure_S7.pdf","figure_S8.pdf", - "figure_S9.pdf","figure_S10.pdf","figure_S11.pdf","figure_S12.pdf","figure_S13.pdf")) + "figure_S9.pdf","figure_S10.pdf","figure_S11.pdf","figure_S12.pdf","figure_S13.pdf","figure_S14.pdf")) orderly_dependency("lassa_delays", "latest(parameter:pathogen == this:pathogen)", files = c("figure_4.png","figure_S5.png","figure_S6.png","figure_4.pdf","figure_S5.pdf","figure_S6.pdf")) orderly_dependency("lassa_transmission", "latest(parameter:pathogen == this:pathogen)", @@ -27,9 +27,11 @@ orderly_artefact("lassa-specific outputs", "supp/figure_S2.png","supp/figure_S3.png","supp/figure_S4.png", "supp/figure_S5.png","supp/figure_S6.png","supp/figure_S7.png","supp/figure_S8.png", "supp/figure_S9.png","supp/figure_S10.png","supp/figure_S11.png","supp/figure_S12.png","supp/figure_S13.png", + "supp/figure_S14.png", "supp/figure_S2.pdf","supp/figure_S3.pdf","supp/figure_S4.pdf", "supp/figure_S5.pdf","supp/figure_S6.pdf","supp/figure_S7.pdf","supp/figure_S8.pdf", "supp/figure_S9.pdf","supp/figure_S10.pdf","supp/figure_S11.pdf","supp/figure_S12.pdf","supp/figure_S13.pdf", + "supp/figure_S14.pdf", "supp/latex_outbreaks.csv","supp/latex_models.csv", "supp/latex_transmission.csv","supp/latex_delays.csv","supp/latex_severity.csv", "supp/latex_seroprevalence.csv","supp/latex_riskfactors.csv")) @@ -88,6 +90,8 @@ file.copy(from = "figure_S12.png", to = "supp/figure_S12.png") file.copy(from = "figure_S13.png", to = "supp/figure_S13.png") +file.copy(from = "figure_S14.png", + to = "supp/figure_S14.png") file.copy(from = "figure_S2.pdf", to = "supp/figure_S2.pdf") @@ -113,6 +117,8 @@ file.copy(from = "figure_S12.pdf", to = "supp/figure_S12.pdf") file.copy(from = "figure_S13.pdf", to = "supp/figure_S13.pdf") +file.copy(from = "figure_S14.pdf", + to = "supp/figure_S14.pdf") file.copy(from = "latex_outbreaks.csv", to = "supp/latex_outbreaks.csv") diff --git a/src/lassa_severity/orderly.R b/src/lassa_severity/orderly.R index 55820c9f..f1494215 100644 --- a/src/lassa_severity/orderly.R +++ b/src/lassa_severity/orderly.R @@ -30,10 +30,10 @@ orderly_shared_resource("lassa_functions.R" = "lassa_functions.R") source("lassa_functions.R") orderly_artefact("lassa-specific figures",c("figure_3.png","figure_S7.png", "figure_S8.png","figure_S9.png","figure_S10.png", - "figure_S11.png","figure_S12.png","figure_S13.png", + "figure_S11.png","figure_S12.png","figure_S13.png","figure_S14.png", "figure_3.pdf","figure_S7.pdf", "figure_S8.pdf","figure_S9.pdf","figure_S10.pdf", - "figure_S11.pdf","figure_S12.pdf","figure_S13.pdf")) + "figure_S11.pdf","figure_S12.pdf","figure_S13.pdf","figure_S14.pdf")) ################### ## DATA CURATION ## @@ -183,7 +183,7 @@ patchwork <- patchwork + plot_annotation(tag_levels = 'A') ggsave("figure_3.png", plot = patchwork, width = 18, height = 12) ggsave("figure_3.pdf", plot = patchwork, width = 18, height = 12) -#figure_S6-S10: meta-analysis with all estimates plotted +#figure_S7-S11: meta-analysis with all estimates plotted m1 <- metaprop_wrap(dataframe = da %>% arrange(-central), subgroup = "lineage", plot_pooled = TRUE, sort_by_subg = TRUE, plot_study = TRUE, digits = 3, colour = "red", width = 1200, height = 1600, resolution = 115) @@ -217,7 +217,7 @@ ggsave("figure_S10.pdf", plot = p4, width = 12, height = 16) ggsave("figure_S11.png", plot = p5, width = 12, height = 16) ggsave("figure_S11.pdf", plot = p5, width = 12, height = 16) -#figure_S11: meta-analysis with only known duplicates excluded +#figure_S12: meta-analysis with only known duplicates excluded db <- d1 %>% filter(duplicate_cfr %in% c("False","Assumed")) m1 <- metaprop_wrap(dataframe = db, subgroup = "lineage", @@ -243,7 +243,7 @@ patchwork <- patchwork + plot_annotation(tag_levels = 'A') ggsave("figure_S12.png", plot = patchwork, width = 12, height = 12) ggsave("figure_S12.pdf", plot = patchwork, width = 12, height = 12) -#figure_S12: meta-analysis without de-duplication +#figure_S13: meta-analysis without de-duplication dc <- d1 m1 <- metaprop_wrap(dataframe = dc, subgroup = "lineage", @@ -267,4 +267,17 @@ p4 <- m4$plot patchwork <- (p1 + p2 + p3 + p4) + plot_layout(ncol = 2, widths = c(1,1)) patchwork <- patchwork + plot_annotation(tag_levels = 'A') ggsave("figure_S13.png", plot = patchwork, width = 12, height = 12) -ggsave("figure_S13.pdf", plot = patchwork, width = 12, height = 12) \ No newline at end of file +ggsave("figure_S13.pdf", plot = patchwork, width = 12, height = 12) + +#figure_S14: meta-analysis funnel plot +png(file = "temp.png", width = 9500, height = 6500, res = 1000) +funnel(m5$result, xlim = c(-3,2), ylim = c(0,1), common = FALSE,#only plots funnel for either common or random for some reason + pch = 22, bg = "red", level = 0.95, + studlab = TRUE, cex.studlab = 0.75, pos.studlab = 2) +dev.off() +gg <- png::readPNG("temp.png", native = TRUE) +file.remove("temp.png") +gg <- wrap_elements(plot = rasterGrob(gg, interpolate = TRUE)) + +ggsave("figure_S14.png", plot = gg, width = 12, height = 8) +ggsave("figure_S14.pdf", plot = gg, width = 12, height = 8) \ No newline at end of file From d4fb6dedf8861105007a9e1ce55eca5364426822 Mon Sep 17 00:00:00 2001 From: cm401 Date: Fri, 6 Sep 2024 13:42:52 +0100 Subject: [PATCH 10/12] fix for change to how we deal with first / surname --- src/sars_world_map/orderly.R | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/sars_world_map/orderly.R b/src/sars_world_map/orderly.R index 952b663e..11fa87bc 100644 --- a/src/sars_world_map/orderly.R +++ b/src/sars_world_map/orderly.R @@ -36,18 +36,12 @@ articles <- read_csv("articles.csv") models <- read_csv("models.csv") parameters <- read_csv("parameters.csv") -# to save down for epireview use plotting = FALSE -dfs <- data_curation(articles,tibble(),models,parameters, plotting = FALSE, switch_first_surname = TRUE ) - -articles <- dfs$articles -models <- dfs$models -parameters <- dfs$parameters - write_csv(articles,'sars_articles.csv') write_csv(models,'sars_models.csv') write_csv(parameters,'sars_parameters.csv') -dfs <- data_curation(articles,tibble(),models,parameters, plotting = TRUE, switch_first_surname = TRUE ) +# to save down for epireview use plotting = FALSE +dfs <- data_curation(articles,tibble(),models,parameters, plotting = FALSE) articles <- dfs$articles models <- dfs$models From 423dd2dd5aaf9c037dc9317355b776f1100a6cfa Mon Sep 17 00:00:00 2001 From: cm401 Date: Fri, 6 Sep 2024 14:17:55 +0100 Subject: [PATCH 11/12] code changes to fix issues #51 and #52 --- vignettes/pathogen_lassa.Rmd | 25 +++++++++++++------------ vignettes/pathogen_marburg.Rmd | 5 +++-- vignettes/pathogen_sars.Rmd | 26 ++++++++++++++------------ 3 files changed, 30 insertions(+), 26 deletions(-) diff --git a/vignettes/pathogen_lassa.Rmd b/vignettes/pathogen_lassa.Rmd index 9bfc047b..0dea349a 100644 --- a/vignettes/pathogen_lassa.Rmd +++ b/vignettes/pathogen_lassa.Rmd @@ -4,29 +4,30 @@ date: "Latest update: `r Sys.Date()`" output: html_document --- +```{css echo=FALSE} +.flextable-shadow-host{ + overflow: scroll; + white-space: nowrap; +} +``` + In 2018, the World Health Organization (WHO) published a list of nine known pathogens (in addition to an unknown _Pathogen X_) for research and development (R&D) prioritisation, due to both their epidemic and pandemic potential and the absence of licensed vaccines or therapeutics. Among these prioritised pathogens is Lassa fever. The Pathogen Epidemiology Review Group (PERG) has published a systematic review for LASV, if you use any of our results please cite our paper: -> @article{lassa_doohan_2023, +```{r,eval=FALSE} +@article{lassa_doohan_2023, author = {Doohan et al}, year={2024}, title={Lassa fever outbreaks, mathematical models, and disease parameters: a systematic review and meta-analysis}, doi = {10.1101/2024.03.23.24304596}, publisher = {Cold Spring Harbor Laboratory Press}, URL = {https://www.medrxiv.org/content/10.1101/2024.03.23.24304596v1}, - eprint = {}, journal = {medRxiv} } - +``` All Figures from the paper are re-produced below on the **latest** available data in our data set. For convenience we label the Figures with the same numbers as in the paper. -```{css echo=FALSE} -.flextable-shadow-host{ - overflow: scroll; - white-space: nowrap; -} -``` ```{r setup, include=FALSE} knitr::opts_chunk$set(echo = FALSE) @@ -209,7 +210,7 @@ Case fatality ratio (CFR) meta-analyses using logit-transformed proportions and **Figure 3A:** -```{r Figure_3A, echo=FALSE, fig.height=5, fig.width=9, message=FALSE, warning=FALSE, paged.print=FALSE} +```{r Figure_3A, echo=FALSE, fig.height=6, fig.width=9, message=FALSE, warning=FALSE, paged.print=FALSE} d1 <- parameters %>% filter(parameter_type == 'Severity - case fatality rate (CFR)') %>% mutate(case_def = case_when( covidence_id %in% c(18,88,167,174,307,461,645,845,870,873,874,920,921,1080,1173,1181,1254,1272,1368,1413,1426,1444,2567,2579,2585,2589,2636,2651,2662,2684,2818,3147,3215,3530,3635,3716,3841,3991,4314,4727) ~ "Lab-Confirmed", @@ -357,7 +358,7 @@ forest(m2$result, layout = "RevMan5", **Figure 3D:** -```{r Figure_3D, echo=FALSE, message=FALSE, warning=FALSE, paged.print=FALSE,fig.height=6, fig.width=9} +```{r Figure_3D, echo=FALSE, message=FALSE, warning=FALSE, paged.print=FALSE,fig.height=7, fig.width=9} m3 <- metaprop_wrap(dataframe = da %>% arrange(cfr_ifr_denominator), subgroup = "cfr_denom_cat", plot_pooled = TRUE, sort_by_subg = FALSE, plot_study = FALSE, digits = 3, colour = "red", @@ -546,7 +547,7 @@ forest_plot(d1,expression(Evolutionary~Rate~(s/s/y ~10^{-4})),"genome_site",c(5, Quality Assessment -```{r qa, message=FALSE, fig.height=6, fig.width=8, warning=FALSE, paged.print=FALSE} +```{r qa, message=FALSE, fig.height=10, fig.width=8, warning=FALSE, paged.print=FALSE} quality <- articles %>% mutate_at(vars(starts_with("qa")), funs(replace(., . == "Yes", 1))) %>% mutate_at(vars(starts_with("qa")), funs(replace(., . == "No", 0))) %>% diff --git a/vignettes/pathogen_marburg.Rmd b/vignettes/pathogen_marburg.Rmd index d9de59e0..c3832bd1 100644 --- a/vignettes/pathogen_marburg.Rmd +++ b/vignettes/pathogen_marburg.Rmd @@ -6,7 +6,8 @@ output: html_document In 2018, the World Health Organization (WHO) published a list of nine known pathogens (in addition to an unknown _Pathogen X_) for research and development (R&D) prioritisation, due to both their epidemic and pandemic potential and the absence of licensed vaccines or therapeutics. Among these prioritised pathogens is MVD, a highly-lethal infectious _Filoviridae_ single-stranded RNA virus first described in Germany and Serbia (formerly Yugoslavia) in 1967. Subsequent outbreaks of this virus have primarily occurred in sub-Saharan Africa. The Pathogen Epidemiology Review Group (PERG) has published a systematic review for MVD, if you use any of our results please cite our paper: -> @article{marburg_systematic_review_2023, +```{r, eval=FALSE} +@article{marburg_systematic_review_2023, title={{Marburg virus disease outbreaks, mathematical models, and disease parameters: a systematic review}}, author={Gina Cuomo-Dannenburg and Kelly McCain and Ruth McCabe and H Juliette T Unwin and Patrick Doohan and Rebecca K Nash and Joseph T Hicks and Kelly Charniga and Cyril Geismar and Ben Lambert and Dariya Nikitin and Janetta E Skarp and Jack Wardle and Pathogen Epidemiology Review Group and Mara Kont and Sangeeta Bhatia and Natsuko Imai and Sabine L van Elsland and Anne Cori and Christian Morgenstern}, journal={The Lancet Infectious Diseases}, @@ -15,7 +16,7 @@ In 2018, the World Health Organization (WHO) published a list of nine known path URL = {https://www.thelancet.com/journals/laninf/article/PIIS1473-3099(23)00515-7/fulltext}, publisher={Elsevier} } - +``` All Tables and Figures from the paper are re-produced below on the **latest** available data in our data set. For convenience we label the Figures and Tables with the same numbers as in the paper. ```{css echo=FALSE} diff --git a/vignettes/pathogen_sars.Rmd b/vignettes/pathogen_sars.Rmd index 18e499a6..026762f3 100644 --- a/vignettes/pathogen_sars.Rmd +++ b/vignettes/pathogen_sars.Rmd @@ -4,29 +4,31 @@ date: "Latest update: `r Sys.Date()`" output: html_document --- +```{css echo=FALSE} +.flextable-shadow-host{ + overflow: scroll; + white-space: nowrap; +} +``` + In 2018, the World Health Organization (WHO) published a list of nine known pathogens (in addition to an unknown _Pathogen X_) for research and development (R&D) prioritisation, due to both their epidemic and pandemic potential and the absence of licensed vaccines or therapeutics. Among these prioritised pathogens is SARS. The Pathogen Epidemiology Review Group (PERG) has published a systematic review for SARS, if you use any of our results please cite our paper: -> @article{, - author = {}, +```{r,eval=FALSE} +@article{sars_morgenstern_2024, + author = {Morgenstern et al}, year={2024}, - title={}, - doi = {}, + title={Severe acute respiratory syndrome (SARS) mathematical models and disease parameters: a systematic review and meta-analysis}, + doi = {10.1101/2024.08.13.24311934}, publisher = {Cold Spring Harbor Laboratory Press}, - URL = {}, - eprint = {}, + URL = {https://www.medrxiv.org/content/10.1101/2024.08.13.24311934v1}, journal = {medRxiv} } +``` All Figures from the paper are re-produced below on the **latest** available data in our data set. For convenience we label the Figures with the same numbers as in the paper. -```{css echo=FALSE} -.flextable-shadow-host{ - overflow: scroll; - white-space: nowrap; -} -``` ```{r setup, include=FALSE} knitr::opts_chunk$set(echo = FALSE) From 42ca71ab30e5a4b50e90b8588f5ad63d556dfa3d Mon Sep 17 00:00:00 2001 From: cm401 Date: Fri, 13 Sep 2024 10:18:17 +0200 Subject: [PATCH 12/12] First / last name fixed in the data now. fix Figure 4B label. --- vignettes/pathogen_sars.Rmd | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/vignettes/pathogen_sars.Rmd b/vignettes/pathogen_sars.Rmd index 026762f3..dbdebb06 100644 --- a/vignettes/pathogen_sars.Rmd +++ b/vignettes/pathogen_sars.Rmd @@ -101,11 +101,11 @@ TEXT_SIZE <- 11 ```{r prepare_data, message=FALSE, warning=FALSE, paged.print=FALSE} articles <- epireview::load_epidata_raw("sars", "article") -articles <- articles %>% rename(first_author_first_name=first_author_surname,first_author_surname=first_author_first_name) +#articles <- articles %>% rename(first_author_first_name=first_author_surname,first_author_surname=first_author_first_name) models <- epireview::load_epidata_raw("sars", "model") parameters <- epireview::load_epidata_raw("sars", "parameter") -dfs <- data_curation(articles,tibble(),models,parameters, plotting = TRUE, switch_first_surname = TRUE ) +dfs <- data_curation(articles,tibble(),models,parameters, plotting = TRUE, switch_first_surname = FALSE ) articles <- dfs$articles @@ -507,7 +507,7 @@ Overview of estimated SARS (A) attack rates, (B) secondary attack rates, (C) gro p4_primary ``` -**Figure 4A: Secondary Attack rates** +**Figure 4B: Secondary Attack rates** ```{r Figure_4B, fig.height=4, fig.width=8,echo=FALSE, message=FALSE, warning=FALSE, paged.print=FALSE}