From 9ed1a5e27bb46f92819945fce43ffce080fd6f29 Mon Sep 17 00:00:00 2001 From: Luong Nguyen Thanh Date: Sun, 2 Jun 2024 01:10:09 +0200 Subject: [PATCH] adjustment of the website --- README.md | 4 - .../WHO-DON API/execute-results/html.json | 15 ++ .../WHO-DON/execute-results/html.json | 15 ++ .../WHO-DON/execute-results/html.json | 15 ++ _quarto.yml | 14 +- docs/index.docx | Bin 12367 -> 14638 bytes docs/index.html | 94 +++----- docs/notebooks/WHO-DON API.embed.ipynb | 220 ------------------ ... API-preview.html => WHO-DON-preview.html} | 8 +- ...HO-DON API.out.ipynb => WHO-DON.out.ipynb} | 20 +- .../{WHO-DON API.qmd => WHO-DON.qmd} | 2 +- docs/site_libs/bootstrap/bootstrap.min.js | 6 +- .../glightbox/glightbox.min.css | 1 + .../quarto-contrib/glightbox/glightbox.min.js | 1 + .../quarto-contrib/glightbox/lightbox.css | 22 ++ docs/site_libs/quarto-html/quarto.js | 16 +- index.qmd | 47 ++-- notebooks/{WHO-DON API.qmd => WHO-DON.qmd} | 2 +- 18 files changed, 168 insertions(+), 334 deletions(-) delete mode 100644 README.md create mode 100644 _freeze/docs/notebooks/WHO-DON API/execute-results/html.json create mode 100644 _freeze/docs/notebooks/WHO-DON/execute-results/html.json create mode 100644 _freeze/notebooks/WHO-DON/execute-results/html.json delete mode 100644 docs/notebooks/WHO-DON API.embed.ipynb rename docs/notebooks/{WHO-DON API-preview.html => WHO-DON-preview.html} (99%) rename docs/notebooks/{WHO-DON API.out.ipynb => WHO-DON.out.ipynb} (93%) rename docs/notebooks/{WHO-DON API.qmd => WHO-DON.qmd} (98%) create mode 100644 docs/site_libs/quarto-contrib/glightbox/glightbox.min.css create mode 100644 docs/site_libs/quarto-contrib/glightbox/glightbox.min.js create mode 100644 docs/site_libs/quarto-contrib/glightbox/lightbox.css rename notebooks/{WHO-DON API.qmd => WHO-DON.qmd} (98%) diff --git a/README.md b/README.md deleted file mode 100644 index ce39cd1..0000000 --- a/README.md +++ /dev/null @@ -1,4 +0,0 @@ -## A Quarto Manuscript Template - -This is a template repo for generating a manuscript from Quarto that accompanies the tutorial at: [Quarto Manuscripts: RStudio](https://quarto.org/docs/manuscripts/authoring/rstudio.html) - diff --git a/_freeze/docs/notebooks/WHO-DON API/execute-results/html.json b/_freeze/docs/notebooks/WHO-DON API/execute-results/html.json new file mode 100644 index 0000000..5516d38 --- /dev/null +++ b/_freeze/docs/notebooks/WHO-DON API/execute-results/html.json @@ -0,0 +1,15 @@ +{ + "hash": "16b2eec0344296b8fc38127eb4a550a4", + "result": { + "engine": "knitr", + "markdown": "---\ntitle: Retrieving data from WHO-DON website\nauthor: Luong Nguyen Thanh\n---\n\n\n## Load necessary packages\n\n\n::: {.cell}\n\n```{.r .cell-code .hidden}\npacman::p_load(\n rio,\n here,\n httr,\n jsonlite,\n stringr,\n tidyverse)\n```\n:::\n\n\n## Write a function to get data from WHO-DON website\n\nUsing method GET from `httr` package to get data from WHO-DON website. The function `get_who_news` will take a URL as input and return the data from the API. The function will return `NULL` if the request was unsuccessful.\n\nStatus code = 200 means the connection is successful. The function will parse the JSON content and return the data.\n\nNext, we will initialize the variables and loop to fetch all pages. The function will check if there is a next page link and keep fetching until there is no next page link.\n\n\n::: {.cell}\n\n```{.r .cell-code .hidden}\n#| message: FALSE\n#| warning: FALSE\n#| eval: FALSE\n\n# Function to get news data from a specific URL\nget_who_news <- function(url) {\n # Make the GET request to the API\n response <- GET(url)\n \n # Check the status of the response\n if (status_code(response) == 200) {\n # Parse the JSON content\n content <- content(response, \"text\")\n data <- fromJSON(content)\n return(data)\n } else {\n # Return NULL if the request was unsuccessful\n return(NULL)\n }\n}\n\n# Initialize variables\nbase_url <- \"https://www.who.int/api/news/diseaseoutbreaknews\"\nall_news <- list()\nnext_url <- base_url\nkeep_fetching <- TRUE\n\n# Loop to fetch all pages\nwhile (keep_fetching) {\n data <- get_who_news(next_url)\n \n if (!is.null(data) && \"value\" %in% names(data)) {\n all_news <- c(all_news, data$value)\n \n # Check if there is a next page link\n if (\"@odata.nextLink\" %in% names(data)) {\n next_url <- data[[\"@odata.nextLink\"]]\n } else {\n keep_fetching <- FALSE\n }\n } else {\n keep_fetching <- FALSE\n }\n}\n```\n:::\n\n\n## Convert data from list to wide dataframe\n\nThe data is currently stored as a nested list. We will convert this nested list to a wide data frame for further analysis. We will define a function `convert_to_df` that takes the nested list as input and returns a data frame.\n\nSome cleaning steps are performed to remove HTML tags from the text data.\n\nFinally, we will export the data frame to a CSV file for further analysis.\n\n\n::: {.cell}\n\n```{.r .cell-code .hidden}\n#| eval: FALSE\n# Define a function to convert the nested list to a data frame\nconvert_to_df <- function(news_list) {\n # Initialize an empty list to hold data frames\n df_list <- list()\n \n # Determine the segment length\n segment_length <- 22\n \n # Iterate through the list in steps of segment_length\n for (i in seq(1, length(news_list), by = segment_length)) {\n # Extract the current segment\n segment <- news_list[i:(i + segment_length - 1)]\n \n # Convert the segment to a data frame and add it to the list\n df_list[[length(df_list) + 1]] <- as.data.frame(segment)\n }\n \n # Combine all data frames into one\n combined_df <- do.call(rbind, df_list)\n return(combined_df)\n}\n\n# Function to remove HTML tags\nremove_html_tags <- function(text) {\n return(str_replace_all(text, \"<[^>]*>\", \"\"))\n}\n\nall_news_df <- convert_to_df(all_news)\n\n\nall_news_df %>% \n mutate(across(where(is.character), remove_html_tags)) %>%\n arrange(desc(PublicationDate)) %>%\n rio::export(here(\"data\", \"who_dons.csv\"))\n```\n:::\n\n\n## Preview data\n\n\n::: {.cell}\n\n```{.r .cell-code .hidden}\n#| echo: FALSE\nall_news_df <- import(here(\"data\", \"who_dons.csv\"))\n```\n:::\n\n::: {.cell}\n\n```{.r .cell-code .hidden}\nglimpse(all_news_df)\n```\n\n::: {.cell-output .cell-output-stdout}\n\n```\nRows: 3,102\nColumns: 22\n$ Id \"8c8a4612-7d82-4e67-adb8-e1bc9aa69c4b\", \"696077…\n$ LastModified 2024-05-30 14:31:48, 2024-05-16 14:53:26, 2024…\n$ PublicationDate 2024-05-30 10:31:02, 2024-05-08 16:40:02, 2024…\n$ DateCreated 2024-05-30 10:31:02, 2024-05-08 16:40:02, 2024…\n$ IncludeInSitemap TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,…\n$ SystemSourceKey NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…\n$ UrlName \"2024-DON518\", \"2024-DON516\", \"2024-DON517\", \"2…\n$ ItemDefaultUrl \"/2024-DON518\", \"/2024-DON516\", \"/2024-DON517\",…\n$ Response \"The overall capacity for countries to respond …\n$ FurtherInformation \"WHO Fact sheet: Dengue and severe dengue; http…\n$ Summary \"As of 30 April 2024, over 7.6 million dengue c…\n$ PublicationDateAndTime 2024-05-30 18:00:00, 2024-05-08 16:24:14, 2024…\n$ TitleSuffix \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",…\n$ UseOverrideTitle TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, TRU…\n$ Title \"Dengue - Global situation\", \"Middle East respi…\n$ Epidemiology \"Dengue virus is transmitted to humans through …\n$ OverrideTitle \"Dengue - Global situation\", \"Middle East respi…\n$ Advice \"Dengue is primarily an urban disease of the tr…\n$ Assessment \"Dengue is a mosquito-borne viral disease cause…\n$ Overview \" Global overviewCurrent situationAs of 30…\n$ DonId \"2024-DON518\", \"2024-DON516\", \"2024-DON517\", \"2…\n$ Provider \"dynamicProvider372\", \"dynamicProvider372\", \"dy…\n```\n\n\n:::\n:::\n", + "supporting": [], + "filters": [ + "rmarkdown/pagebreak.lua" + ], + "includes": {}, + "engineDependencies": {}, + "preserve": {}, + "postProcess": true + } +} \ No newline at end of file diff --git a/_freeze/docs/notebooks/WHO-DON/execute-results/html.json b/_freeze/docs/notebooks/WHO-DON/execute-results/html.json new file mode 100644 index 0000000..732a53d --- /dev/null +++ b/_freeze/docs/notebooks/WHO-DON/execute-results/html.json @@ -0,0 +1,15 @@ +{ + "hash": "fb30378a3e30db55ed2f0a6df9c9eb7e", + "result": { + "engine": "knitr", + "markdown": "---\ntitle: Scraping data from WHO-DON website\nauthor: Luong Nguyen Thanh\n---\n\n\n## Load necessary packages\n\n\n::: {.cell}\n\n```{.r .cell-code .hidden}\npacman::p_load(\n rio,\n here,\n httr,\n jsonlite,\n stringr,\n tidyverse)\n```\n:::\n\n\n## Write a function to get data from WHO-DON website\n\nUsing method GET from `httr` package to get data from WHO-DON website. The function `get_who_news` will take a URL as input and return the data from the API. The function will return `NULL` if the request was unsuccessful.\n\nStatus code = 200 means the connection is successful. The function will parse the JSON content and return the data.\n\nNext, we will initialize the variables and loop to fetch all pages. The function will check if there is a next page link and keep fetching until there is no next page link.\n\n\n::: {.cell}\n\n```{.r .cell-code .hidden}\n#| message: FALSE\n#| warning: FALSE\n#| eval: FALSE\n\n# Function to get news data from a specific URL\nget_who_news <- function(url) {\n # Make the GET request to the API\n response <- GET(url)\n \n # Check the status of the response\n if (status_code(response) == 200) {\n # Parse the JSON content\n content <- content(response, \"text\")\n data <- fromJSON(content)\n return(data)\n } else {\n # Return NULL if the request was unsuccessful\n return(NULL)\n }\n}\n\n# Initialize variables\nbase_url <- \"https://www.who.int/api/news/diseaseoutbreaknews\"\nall_news <- list()\nnext_url <- base_url\nkeep_fetching <- TRUE\n\n# Loop to fetch all pages\nwhile (keep_fetching) {\n data <- get_who_news(next_url)\n \n if (!is.null(data) && \"value\" %in% names(data)) {\n all_news <- c(all_news, data$value)\n \n # Check if there is a next page link\n if (\"@odata.nextLink\" %in% names(data)) {\n next_url <- data[[\"@odata.nextLink\"]]\n } else {\n keep_fetching <- FALSE\n }\n } else {\n keep_fetching <- FALSE\n }\n}\n```\n:::\n\n\n## Convert data from list to wide dataframe\n\nThe data is currently stored as a nested list. We will convert this nested list to a wide data frame for further analysis. We will define a function `convert_to_df` that takes the nested list as input and returns a data frame.\n\nSome cleaning steps are performed to remove HTML tags from the text data.\n\nFinally, we will export the data frame to a CSV file for further analysis.\n\n\n::: {.cell}\n\n```{.r .cell-code .hidden}\n#| eval: FALSE\n# Define a function to convert the nested list to a data frame\nconvert_to_df <- function(news_list) {\n # Initialize an empty list to hold data frames\n df_list <- list()\n \n # Determine the segment length\n segment_length <- 22\n \n # Iterate through the list in steps of segment_length\n for (i in seq(1, length(news_list), by = segment_length)) {\n # Extract the current segment\n segment <- news_list[i:(i + segment_length - 1)]\n \n # Convert the segment to a data frame and add it to the list\n df_list[[length(df_list) + 1]] <- as.data.frame(segment)\n }\n \n # Combine all data frames into one\n combined_df <- do.call(rbind, df_list)\n return(combined_df)\n}\n\n# Function to remove HTML tags\nremove_html_tags <- function(text) {\n return(str_replace_all(text, \"<[^>]*>\", \"\"))\n}\n\nall_news_df <- convert_to_df(all_news)\n\n\nall_news_df %>% \n mutate(across(where(is.character), remove_html_tags)) %>%\n arrange(desc(PublicationDate)) %>%\n rio::export(here(\"data\", \"who_dons.csv\"))\n```\n:::\n\n\n## Preview data\n\n\n::: {.cell}\n\n```{.r .cell-code .hidden}\n#| echo: FALSE\nall_news_df <- import(here(\"data\", \"who_dons.csv\"))\n```\n:::\n\n::: {.cell}\n\n```{.r .cell-code .hidden}\nglimpse(all_news_df)\n```\n\n::: {.cell-output .cell-output-stdout}\n\n```\nRows: 3,102\nColumns: 22\n$ Id \"8c8a4612-7d82-4e67-adb8-e1bc9aa69c4b\", \"696077…\n$ LastModified 2024-05-30 14:31:48, 2024-05-16 14:53:26, 2024…\n$ PublicationDate 2024-05-30 10:31:02, 2024-05-08 16:40:02, 2024…\n$ DateCreated 2024-05-30 10:31:02, 2024-05-08 16:40:02, 2024…\n$ IncludeInSitemap TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,…\n$ SystemSourceKey NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…\n$ UrlName \"2024-DON518\", \"2024-DON516\", \"2024-DON517\", \"2…\n$ ItemDefaultUrl \"/2024-DON518\", \"/2024-DON516\", \"/2024-DON517\",…\n$ Response \"The overall capacity for countries to respond …\n$ FurtherInformation \"WHO Fact sheet: Dengue and severe dengue; http…\n$ Summary \"As of 30 April 2024, over 7.6 million dengue c…\n$ PublicationDateAndTime 2024-05-30 18:00:00, 2024-05-08 16:24:14, 2024…\n$ TitleSuffix \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",…\n$ UseOverrideTitle TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, TRU…\n$ Title \"Dengue - Global situation\", \"Middle East respi…\n$ Epidemiology \"Dengue virus is transmitted to humans through …\n$ OverrideTitle \"Dengue - Global situation\", \"Middle East respi…\n$ Advice \"Dengue is primarily an urban disease of the tr…\n$ Assessment \"Dengue is a mosquito-borne viral disease cause…\n$ Overview \" Global overviewCurrent situationAs of 30…\n$ DonId \"2024-DON518\", \"2024-DON516\", \"2024-DON517\", \"2…\n$ Provider \"dynamicProvider372\", \"dynamicProvider372\", \"dy…\n```\n\n\n:::\n:::\n", + "supporting": [], + "filters": [ + "rmarkdown/pagebreak.lua" + ], + "includes": {}, + "engineDependencies": {}, + "preserve": {}, + "postProcess": true + } +} \ No newline at end of file diff --git a/_freeze/notebooks/WHO-DON/execute-results/html.json b/_freeze/notebooks/WHO-DON/execute-results/html.json new file mode 100644 index 0000000..732a53d --- /dev/null +++ b/_freeze/notebooks/WHO-DON/execute-results/html.json @@ -0,0 +1,15 @@ +{ + "hash": "fb30378a3e30db55ed2f0a6df9c9eb7e", + "result": { + "engine": "knitr", + "markdown": "---\ntitle: Scraping data from WHO-DON website\nauthor: Luong Nguyen Thanh\n---\n\n\n## Load necessary packages\n\n\n::: {.cell}\n\n```{.r .cell-code .hidden}\npacman::p_load(\n rio,\n here,\n httr,\n jsonlite,\n stringr,\n tidyverse)\n```\n:::\n\n\n## Write a function to get data from WHO-DON website\n\nUsing method GET from `httr` package to get data from WHO-DON website. The function `get_who_news` will take a URL as input and return the data from the API. The function will return `NULL` if the request was unsuccessful.\n\nStatus code = 200 means the connection is successful. The function will parse the JSON content and return the data.\n\nNext, we will initialize the variables and loop to fetch all pages. The function will check if there is a next page link and keep fetching until there is no next page link.\n\n\n::: {.cell}\n\n```{.r .cell-code .hidden}\n#| message: FALSE\n#| warning: FALSE\n#| eval: FALSE\n\n# Function to get news data from a specific URL\nget_who_news <- function(url) {\n # Make the GET request to the API\n response <- GET(url)\n \n # Check the status of the response\n if (status_code(response) == 200) {\n # Parse the JSON content\n content <- content(response, \"text\")\n data <- fromJSON(content)\n return(data)\n } else {\n # Return NULL if the request was unsuccessful\n return(NULL)\n }\n}\n\n# Initialize variables\nbase_url <- \"https://www.who.int/api/news/diseaseoutbreaknews\"\nall_news <- list()\nnext_url <- base_url\nkeep_fetching <- TRUE\n\n# Loop to fetch all pages\nwhile (keep_fetching) {\n data <- get_who_news(next_url)\n \n if (!is.null(data) && \"value\" %in% names(data)) {\n all_news <- c(all_news, data$value)\n \n # Check if there is a next page link\n if (\"@odata.nextLink\" %in% names(data)) {\n next_url <- data[[\"@odata.nextLink\"]]\n } else {\n keep_fetching <- FALSE\n }\n } else {\n keep_fetching <- FALSE\n }\n}\n```\n:::\n\n\n## Convert data from list to wide dataframe\n\nThe data is currently stored as a nested list. We will convert this nested list to a wide data frame for further analysis. We will define a function `convert_to_df` that takes the nested list as input and returns a data frame.\n\nSome cleaning steps are performed to remove HTML tags from the text data.\n\nFinally, we will export the data frame to a CSV file for further analysis.\n\n\n::: {.cell}\n\n```{.r .cell-code .hidden}\n#| eval: FALSE\n# Define a function to convert the nested list to a data frame\nconvert_to_df <- function(news_list) {\n # Initialize an empty list to hold data frames\n df_list <- list()\n \n # Determine the segment length\n segment_length <- 22\n \n # Iterate through the list in steps of segment_length\n for (i in seq(1, length(news_list), by = segment_length)) {\n # Extract the current segment\n segment <- news_list[i:(i + segment_length - 1)]\n \n # Convert the segment to a data frame and add it to the list\n df_list[[length(df_list) + 1]] <- as.data.frame(segment)\n }\n \n # Combine all data frames into one\n combined_df <- do.call(rbind, df_list)\n return(combined_df)\n}\n\n# Function to remove HTML tags\nremove_html_tags <- function(text) {\n return(str_replace_all(text, \"<[^>]*>\", \"\"))\n}\n\nall_news_df <- convert_to_df(all_news)\n\n\nall_news_df %>% \n mutate(across(where(is.character), remove_html_tags)) %>%\n arrange(desc(PublicationDate)) %>%\n rio::export(here(\"data\", \"who_dons.csv\"))\n```\n:::\n\n\n## Preview data\n\n\n::: {.cell}\n\n```{.r .cell-code .hidden}\n#| echo: FALSE\nall_news_df <- import(here(\"data\", \"who_dons.csv\"))\n```\n:::\n\n::: {.cell}\n\n```{.r .cell-code .hidden}\nglimpse(all_news_df)\n```\n\n::: {.cell-output .cell-output-stdout}\n\n```\nRows: 3,102\nColumns: 22\n$ Id \"8c8a4612-7d82-4e67-adb8-e1bc9aa69c4b\", \"696077…\n$ LastModified 2024-05-30 14:31:48, 2024-05-16 14:53:26, 2024…\n$ PublicationDate 2024-05-30 10:31:02, 2024-05-08 16:40:02, 2024…\n$ DateCreated 2024-05-30 10:31:02, 2024-05-08 16:40:02, 2024…\n$ IncludeInSitemap TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,…\n$ SystemSourceKey NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…\n$ UrlName \"2024-DON518\", \"2024-DON516\", \"2024-DON517\", \"2…\n$ ItemDefaultUrl \"/2024-DON518\", \"/2024-DON516\", \"/2024-DON517\",…\n$ Response \"The overall capacity for countries to respond …\n$ FurtherInformation \"WHO Fact sheet: Dengue and severe dengue; http…\n$ Summary \"As of 30 April 2024, over 7.6 million dengue c…\n$ PublicationDateAndTime 2024-05-30 18:00:00, 2024-05-08 16:24:14, 2024…\n$ TitleSuffix \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",…\n$ UseOverrideTitle TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, TRU…\n$ Title \"Dengue - Global situation\", \"Middle East respi…\n$ Epidemiology \"Dengue virus is transmitted to humans through …\n$ OverrideTitle \"Dengue - Global situation\", \"Middle East respi…\n$ Advice \"Dengue is primarily an urban disease of the tr…\n$ Assessment \"Dengue is a mosquito-borne viral disease cause…\n$ Overview \" Global overviewCurrent situationAs of 30…\n$ DonId \"2024-DON518\", \"2024-DON516\", \"2024-DON517\", \"2…\n$ Provider \"dynamicProvider372\", \"dynamicProvider372\", \"dy…\n```\n\n\n:::\n:::\n", + "supporting": [], + "filters": [ + "rmarkdown/pagebreak.lua" + ], + "includes": {}, + "engineDependencies": {}, + "preserve": {}, + "postProcess": true + } +} \ No newline at end of file diff --git a/_quarto.yml b/_quarto.yml index b6d0860..f8711c7 100644 --- a/_quarto.yml +++ b/_quarto.yml @@ -1,16 +1,26 @@ project: type: manuscript output-dir: docs + + +manuscript: + article: index.qmd + code-links: + - text: Github + icon: github + href: https://github.com/ntluong95/INFLUX execute: freeze: auto format: html: + theme: [cosmo, theme-light.scss] #superhero toc: true comments: - hypothesis: true + hypothesis: true # comment side bar on the right + citations-hover: true + crossrefs-hover: true docx: default - diff --git a/docs/index.docx b/docs/index.docx index 82438cad5485d1422b2a152c199b69afaae3e8c1..e85008159299f372594ed4214699646965956eda 100644 GIT binary patch delta 7334 zcmZu$1z1#1*Iz)oySo%vQc6N;=~}wGd!=#dE?K%8QD7XznK@_fbK=e?(<*mTHASRHL;yrIGyrpRw=UY&`h5lh05J82lm)`?-1-9T ztY(eACP*O}*L6?c0pE|q4{>jmPu?~Zk14Dn>*djCwqJk+JM?OXWSBD4c0zetT|kM@ z72|{3j@@-_8?9l<$-HIr2_B*IE4NJN$X_4u)SbFU(hE=rQ>a2x`e0_jHW17m+gy~& z7$YpcYch~c_F2}FB$DMYjxs=EhT6R86y;{by`zQgQ67{#D2ytblY7>KKN~}t~ z2lM+yDsqD&rxWzN*lt^hCs09nj3k}xZVHtHj8dVrVw*v;?GR$0)N2lu53zIbYEh-eJfpOkwmiZ#*+Jt~ z#>)3bwXvb++d#o|sV`Y|Dy@j)Zc`4rvHpA>bh3JRF(#xa`jkbO2yi z6}p5-2BDgFrW8I7=m?(BMC`Md7hgwfK<#jkqjs>cu_isl?B^^euNy`gp7~mK6^Gz? zZ?Uqa`dzVME~41epG7lf%p6-v*%R9T&OFDl*6Ve4Nwjj;GrLpg_lx`WWVUAJ<%6x2 zs-&>l27~AOdrCJo_&yj5e2y?9NXw!^+ox;wZxCt3Ctgm_paC033(fr+`@zZ2b3%2p zfgWg_TI#Ur`DhK!SML#_;wZ7?am9f}7(o<~s`hl}4newVON`5$Z!+E&WGrhtzv@K% zkg8x7$H&;oqO`zO07`2a{MJDO1%25oT^?sNMJ@dzc4_fA2AH?fy`mHi3k+=ccP9O& zTnB*#PG(;h9h{!eq$$c}W5}#VR446&am+KRFm*0K7r^L|LagqE92l;=HM+$93wZy?{>W)_p{{;H$2%4p6`!AZ!xiw z2VZP5%Vx86Q}-+-x-GNPmE)!9`#yungQqm@63Nwvy(3p&VA>L5yS~w-JIet5WQ;x6 z#_^~XW6Ct0ZY>J7ZbSGj&k!`=BKnF)>b5rhGIfBctXeX)p&{~P__$B^OoA+<1Vl9?f$ zl;=OlxS#adMmqEJ(i;Goz`ue;B*+57mHR<&8P}tgQiiDPuADvMei;>HiQqmV_j?Pt zdBhRBZ7$2}m4k{TOMGRcO~Edv$HYBa&OK`x<8RjcT#qc#YR0v8`{lP8NMUv2CMP!( zytuZFh)~s>De??e`2ywR2nVB|4{{McT1&qc+ZfjpUrINH9&}0`ef~88>IUSS>6+ptqL<%UEu(YE31xfwG1=PXP%p@bj4j>dNqh-91VA8n$>!d08&HpOD&l5( zl;T)~hI}n{D-N*t3?6VByA0k7lk`dp2uOr#Cm#^;yy6 zx4v|CNA)(Ad)w01N)^oa-FRFM{k>8}#~_%f%hJU6J%rh#!t)b_O0xD4hzZtfQ%Bus z3Hx`8{Yc1+CSL64n^J-6RbB?|afP7T@<3`{o0!eCti{2sN?Y`Di0S+YTAUlMM7d^% z>CDf!{9~_kzmgrr!sv|Z>)f+NKUY)y8sOfXI{+J=?>jp!t#tl0QnlWm2{c1h9z~wL z6O}r%i+9PIqLVCnoQ&$xhW3^p?ZDYTN*%gxU?7cYI!W+r88yrp)sDjT<6x@IaNLIE z*W+Fl;X$FZIUC&y00cDpoe@`Pc@Y^_J#V8fMVu}b1U!%%o0j{6@5*5vP@eKxjmV5d zK$C|@s#d^{QbM%fUoU<{R;De$P=K05_wD*DNoU6;Flzus-iAjg=+mLPkS8$)!CC&S z6VI4t1@2F&-MOd>Op=#18lvmDbxR{ILbRQYAtkN@9UR-}@euMke75yo%cyT=_wJ_H zIN7zc8bPhU3~1sxjaxzunkr;lq+6`h7QAh3d=1}Bx5i~tycVXwCCesr+e{aT=(j!# za2R`vKqF%5;o!4qHMFs=ofyWFzKux`u3#Nmg&`HnTNm&$BG7i;%MGUKHsgb7%v3<; ze=>_xz-` zzZxj7_n59BQUf7ZRmCvQaG7OkmW56`zVNBkncs)`MaN}-A~N4t*^;;UTv}Sp80~Cq zMh$CL^rY%iE805}?Pd>xh~7uBW@V^N#bJl+{mFGbYjh$ z+tkOKyqmk+{6M@-{OZ)p(}1G`e5LL*?7(QEduEG|z8i|Gm;OF^@x4caF1=G&PZgd9g{)U~3E!(%#o@l{bixQ;L?1>zc!KTke2a2~-^D!4r@ zi!czo*EmndF>e8!oievVoaLJ92qrHLCZRVCc|;^9;xH99UNgqsX`O~o6XKkCb`sOG~~Nub3> z!3l*4x34UULc_yy;g;=U!<;vOoltFI^YlV2P&s=+CRIDJsvvv)a)n9$hIp)NB{wIg zX7We%o%Uwdz7*ig{c3@HNeu_~X554Z`tUT=6+ni13!Ude&}&cY{`oElgyNM^3;_+; zCprHYZND`2CXM4-k)zJ$&^}vuZSW$BfBXPmgmLm4ON^~g)J<==V?q^^`~wcf{jG^c zS%V!?7Y@;HW>;euhtm7XnLlWEtli+q4jO@D&FsT)J&H{6k)>Rt^sXx>jP0IZ38qa~ zHiefHm!t*|;lGc(9M_;U3dPdV6fJm)!2}A1eq|Q8l}W;x3};zHe-)WHtbNMfR4rZ7 zKQZ{&`h=PB;M$h>pxRC;=1ECx)xgPZ#d}jfQJ?JyEYIVO>lJ^5zpG#4`os!~ipc>{ zMB>2<20@b6W5Pk33VK@3vqUCeeGb-i9b8zLU9YVN8f*>yW^S>t*Xjnc7 zh|JA(A=t}k53M}{34s;HNx7x3JQc^K8??b=kX+6&E>6Dxam z^O?2~J_Hg3II&IPh*x|(wisvGTU$?^pfpG(I_}woY)FOKBLDLCuMUYgB~W3u4|S-O zRgACxA$hjE?FRyPVwIr7j6ln|PaPdTpAn49%WvVSO!yL_J(qgaI$Ov#(&diC-}y7Bqb9jUF^ z^~E3O{2XlGhktowQ}xTY&GSSf-e$g@do7P^rKbm+5U)>MWpaDEbvPQ z*P|nb*2JB%9n|I#?YwVitvk59ts}K(WoNxxJ9)Wxx{(6pFw&m#@O=`t1gd0fp{3(E zCok`Ii2Y-bnk*oyNUaL5a(zJu@~!al>yInpyT>3p4zvw09kH3?MIkp27?=e_ca(#g za{a6d(mP$iYjUsDwe_EP7sFJ6L3|c7a?V}cewH%n{pEu@F{1iAI`;*?3U_4|z?5rk zLb&{;hMIYd=~T0KITH4qy6u5bdfP@W>MTn%+ojP0slS1uD_8dFS=RtFi~95+G?NJKBHzxe>wxf<1i*G{WLn=`tD0pG7fybP}S2g zq-Y?9WKiS2WFWn#3XG-1g`qsV_9nR`AUVX&;8FTW5*P!S7A+?V!h2~w#A_+h87BT} z3iUlh8Eym!rO>Vmx%O027Vo69Cr1tC+YM2*=g_k+=LRyGY6J8L9G6H_OvApuQa;(M zoU74?o<0?a_j)@A1NsMQz4R&y0VI7Fa(zqRX1t@ooXY&&0qE3Y!2vw|Rl)W{Bt+|%Xp_Z34`@Ort}aQn zda=e&I99Luf)eXfJ%2rv28nqfh0v93QOCheMG?zdD`Hq~pvn%EPQ%b1C6pQ2{cR@? zGUgEu8^F0RC`0r+CHpKKo_S@Zm#_y^+h}~6%`xp*?@6;;(`m*O`c0{}|D1;>myUME zBB2*Br(}?Iu3eK+b~j@IvFH^Vao;(Um0ekU64LlHJ7Qq&aL!>~Gb6Y3mKePe1|F18 z3-Qs7Rj&5vHegq`%<4Jdo=v>vM7`VdH|a3iJ-A2to5``GQ$~64CrvCHi0~Gg^JMIS zbY$yAfc)q8BjES%$B(iOYd_!?>7f$+e|Y0$Woc)|>EY{p3U3fRG~^@!RpV4Y;Dof5uDrFfGJp-4*a6_&0dOY< zpnz8h0DzQ_06_Zv3jQ)5@sDA;e5617@NqyzxcLbH@JLf$S^}ht-mjxC$OcO);bD z@nCL6)PZN*GYGA6>V?v^fnCotTgwi+!vsB7!ktqdFE`1!!ow-c^DYhT zGfUmKB+f5EZ!0F0!p_`9{I)*(k9*i%(`E{jc47abPOrFn=cm6f=$A7y{! zTl4vhY9+>#N3)-RT@;|xH;97TwS%O>yUc2nmGKQNId{u9p143ab> z(34B4@|?W<^=*vdnt-u#Wrsh;<0EIAYy2#LYdH~;Ymu=QI+^SCo}QXB-?6g=j=@j% z$FWglgDe1&*9v=yGP80k4mq_)=uU_@McE^9RBF}~()-vq2^-b4|!tk0@RJN`2mR ziiGWr^KI@u>HzCK&PwnP+Xs6iFQXz|C21P0rig&}U=aUxO9PeVc=}*Z{W+*0BXHyO zpG=VRAs_rF=Fe*a0094i`5$Eg&ii*B`JW8Z8O-VJ&0Jmo z1^-t7{ueO7krp0~)Bjcjq*pV53hvu(;0%fXItQ@I2sPtkeEgsWAeZDy1AGtd@QHs{ z11H?={Z@kqbf1g#H^(=|Cf7M|P9Nd*!OQ+x2!YTIE{5NV-A5%B$bn0C1ixDPyY|%aJaICeEfNBTpa5{{z631(yH- delta 4968 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 ZelZMP4bZtw0D$WJCO^kI5#fv8{{Xop*U + + + + @@ -70,13 +74,16 @@ "> + + + + - @@ -91,43 +98,21 @@

Emerging Pest and Pathogens (EPP)

-
-
Authors
-
Affiliations
- -
-

Peter Søgaard Jørgensen

-
-
-

- SWEDESD – Sustainability Learning and Research Center, Department of Women’s and Children’s Health, Uppsala University, Uppsala, Sweden -

-

- Global Economic Dynamics and the Biosphere, Royal Swedish Academy of Sciences, Stockholm, Sweden -

-

- Stockholm Resilience Centre, Stockholm University, Stockholm, Sweden -

-
-
-

Luong Nguyen Thanh

-
-
-

- SWEDESD – Sustainability Learning and Research Center, Department of Women’s and Children’s Health, Uppsala University, Uppsala, Sweden -

-

- Global Economic Dynamics and the Biosphere, Royal Swedish Academy of Sciences, Stockholm, Sweden -

-

- Uppsala Antibiotic Centre (UAC), Uppsala University -

-
-
- +
+
Authors
+
+

Peter Søgaard Jørgensen

+

Diana Veronica Luna Gonzalez

+

Luong Nguyen Thanh

+

Melissa Barton

+

Kathryn Louise Bjorklund

+

Ege Pehlivanoglu

+
+
+
Published
@@ -157,7 +142,7 @@

Emerging Pest and Pathogens (EPP)

+
@@ -182,6 +167,16 @@

Table of contents

+
+
+
+ +
+
+

This is a Quarto reproduction of a paper investigating drivers of EPP under the INFLUX project

+
+
+

1 Introduction

@@ -207,30 +202,7 @@

-

Citation

BibTeX citation:
@online{søgaard jørgensen2024,
-  author = {Søgaard Jørgensen, Peter and Nguyen Thanh, Luong},
-  title = {Emerging {Pest} and {Pathogens} {(EPP)}},
-  date = {2024-06-01},
-  langid = {en},
-  abstract = {Emerging pests and pathogens (EPPs) are an increasingly
-    disruptive force to human society that can cause large social and
-    ecological changes far beyond their initial site of emergence. Three
-    forces contribute to this growing challenge now and in the
-    foreseeable future: first, potential EPPs are more likely to come in
-    to first contact with human habitats as human land use expands.
-    Second, denser human trade and travel networks mean that EPPs are
-    more likely to emerge in new regions. Third, human technology, such
-    as biocidal agents, increases risks for re-emergence. Understanding
-    how EPPs cascade across scales in social-ecological systems is
-    therefore an urgent priority, but no formal approach currently
-    exists for analysing the ripple effects at scale, from their seeding
-    to their lasting societal imprints. This project aims to fill this
-    gap in sustainability science for society.}
-}
-
For attribution, please cite this work as:
-Søgaard Jørgensen, Peter, and Luong Nguyen Thanh. 2024. “Emerging -Pest and Pathogens (EPP).” TBD. June 1, 2024. -
+