diff --git a/.Rprofile b/.Rprofile new file mode 100644 index 00000000..b30f145e --- /dev/null +++ b/.Rprofile @@ -0,0 +1,27 @@ +if (file.exists(".env")) { + try(readRenviron(".env"), silent = TRUE) +} + +# Use RSPM to install packages if possible +if (Sys.info()[['sysname']] %in% c('Linux', 'Windows')) { + options(repos = c(RSPM = "https://packagemanager.rstudio.com/all/latest")) +} else { + ## For Mac users, we'll default to installing from CRAN/MRAN instead, since + ## RSPM does not yet support Mac binaries. + options(repos = c(CRAN = "https://cran.rstudio.com/"), + pkgType = "both") + # options(renv.config.mran.enabled = TRUE) ## TRUE by default +} + + +# Configure Renv +options( + renv.config.repos.override = getOption("repos"), + renv.config.auto.snapshot = FALSE, ## Don't keep renv.lock updated automatically (messes up GitHub Actions) + renv.config.rspm.enabled = TRUE, ## Use RStudio Package manager for pre-built package binaries + renv.config.install.shortcuts = TRUE, ## Use the existing local library to fetch copies of packages for renv + renv.config.cache.enabled = TRUE ## Use the renv build cache to speed up install times +) + +# Activate the project on starting +source("renv/activate.R") diff --git a/.github/.gitignore b/.github/.gitignore new file mode 100644 index 00000000..2d19fc76 --- /dev/null +++ b/.github/.gitignore @@ -0,0 +1 @@ +*.html diff --git a/.github/workflows/build-site.yaml b/.github/workflows/build-site.yaml new file mode 100644 index 00000000..d0dd52ae --- /dev/null +++ b/.github/workflows/build-site.yaml @@ -0,0 +1,68 @@ +# Run the action on pushes to the master branch, manually, or on pull requests +on: + push: + branches: [main, master] + pull_request: + branches: [main, master] + workflow_dispatch: + branches: + - '*' + schedule: + - cron: "0 0 * * *" + +name: build-site + +jobs: + build-site: + runs-on: ubuntu-latest + env: + GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + AIRTABLE_API_KEY: ${{ secrets.AIRTABLE_API_KEY }} + steps: + - name: Fetch the repository + uses: actions/checkout@v2 + + - name: Install R + uses: r-lib/actions/setup-r@v2 + + - name: 💎 Install Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: 3.1 + + - name: Install R packages from renv.lock (with cache) + if: ${{ !env.ACT }} ## Doesn't work locally with ACT + uses: r-lib/actions/setup-renv@v2 + with: + cache-version: 2 + + - name: Install R packages from renv.lock (local, no cache) + if: ${{ env.ACT }} ## Only locally with ACT, use `act -r` to reuse containers, effectively caching locally + run: | + renv::restore() + shell: Rscript {0} + + - name: Get membership data + run: | + Rscript R/update_people.R + + - name: install jekyll dependencies & build site + uses: limjh16/jekyll-action-ts@v2 + with: + enable_cache: ${{ !env.ACT }} + + - name: 🚀 deploy + uses: peaceiris/actions-gh-pages@v3 + if: ${{ !env.ACT && github.ref == 'refs/heads/master'}} + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: ./_site + publish_branch: gh-pages + cname: www.repidemicsconsortium.org + + - name: On failure, launch a temporary interactive debugging session + uses: mxschmitt/action-tmate@v3 + if: ${{ failure() }} + timeout-minutes: 15 + with: + limit-access-to-actor: true diff --git a/.gitignore b/.gitignore index 323df4e2..1c59b62c 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ R/.RData *.out *.toc .Rproj.user +.env diff --git a/Gemfile b/Gemfile new file mode 100644 index 00000000..bfb2c423 --- /dev/null +++ b/Gemfile @@ -0,0 +1,10 @@ +# Gemfile + +source 'https://rubygems.org' + +gem 'jekyll', '~> 4.2' + +group :jekyll_plugins do + gem 'jekyll-timeago', '~> 0.13.1' + gem 'jekyll-paginate', '~> 1.1.0' +end diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 00000000..72b54645 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,74 @@ +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.0) + public_suffix (>= 2.0.2, < 5.0) + colorator (1.1.0) + concurrent-ruby (1.1.9) + em-websocket (0.5.3) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0) + eventmachine (1.2.7) + ffi (1.15.5) + forwardable-extended (2.6.0) + http_parser.rb (0.8.0) + i18n (1.10.0) + concurrent-ruby (~> 1.0) + jekyll (4.2.1) + addressable (~> 2.4) + colorator (~> 1.0) + em-websocket (~> 0.5) + i18n (~> 1.0) + jekyll-sass-converter (~> 2.0) + jekyll-watch (~> 2.0) + kramdown (~> 2.3) + kramdown-parser-gfm (~> 1.0) + liquid (~> 4.0) + mercenary (~> 0.4.0) + pathutil (~> 0.9) + rouge (~> 3.0) + safe_yaml (~> 1.0) + terminal-table (~> 2.0) + jekyll-paginate (1.1.0) + jekyll-sass-converter (2.2.0) + sassc (> 2.0.1, < 3.0) + jekyll-timeago (0.13.1) + mini_i18n (>= 0.8.0) + jekyll-watch (2.2.1) + listen (~> 3.0) + kramdown (2.3.1) + rexml + kramdown-parser-gfm (1.1.0) + kramdown (~> 2.0) + liquid (4.0.3) + listen (3.7.1) + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) + mercenary (0.4.0) + mini_i18n (0.8.0) + pathutil (0.16.2) + forwardable-extended (~> 2.6) + public_suffix (4.0.6) + rb-fsevent (0.11.1) + rb-inotify (0.10.1) + ffi (~> 1.0) + rexml (3.2.5) + rouge (3.28.0) + safe_yaml (1.0.5) + sassc (2.4.0) + ffi (~> 1.9) + terminal-table (2.0.0) + unicode-display_width (~> 1.1, >= 1.1.1) + unicode-display_width (1.8.0) + +PLATFORMS + x86_64-darwin-21 + x86_64-linux + +DEPENDENCIES + jekyll (~> 4.2) + jekyll-paginate (~> 1.1.0) + jekyll-timeago (~> 0.13.1) + +BUNDLED WITH + 2.3.8 diff --git a/R/R.Rproj b/R/R.Rproj deleted file mode 100644 index 8e3c2ebc..00000000 --- a/R/R.Rproj +++ /dev/null @@ -1,13 +0,0 @@ -Version: 1.0 - -RestoreWorkspace: Default -SaveWorkspace: Default -AlwaysSaveHistory: Default - -EnableCodeIndexing: Yes -UseSpacesForTab: Yes -NumSpacesForTab: 2 -Encoding: UTF-8 - -RnwWeave: Sweave -LaTeX: pdfLaTeX diff --git a/R/update_people.R b/R/update_people.R index 8823606f..2eaf23d5 100644 --- a/R/update_people.R +++ b/R/update_people.R @@ -1,252 +1,73 @@ - -## We handle dependencies here (there's most likely better ways to do this but -## whatever) - -if (!require(googlesheets4)) { - install.packages("googlesheets4") -} - -if (!require(dplyr)) { - install.packages("dplyr") -} - -if (!require(stringi)) { - install.packages("stringi") -} - - -## Some functions for capitalization of names -### Atomic version -simple_cap <- function(x) { - s <- strsplit(x, " ")[[1]] - paste(toupper(substring(s, 1, 1)), tolower(substring(s, 2)), - sep = "", collapse = " ") -} - -### vectorised version -capitalize <- function(x) unname(vapply(x, simple_cap, character(1))) - -## Function to enforce ascii characters -enforce_ascii <- function(x) { - x <- as.character(x) - transformation <- "Any-Latin; Latin-ASCII" - stringi::stri_trans_general(x, id = transformation) -} - - - - - -#' Import member data from registration spreadsheet +## Dependencies are defined in the renv.lock file +library(dplyr) +library(stringi) +library(airtabler) +library(yaml) +library(janitor) +library(purrr) + +#' Import member data #' -#' This function imports data on members of RECON from the google -#' spreadsheet. It returns a `tibble`, keeping only non-rejected members. - -import_memberships <- function() { - url <- "https://docs.google.com/spreadsheets/d/16sEx6mPoFpmL53j2DXP1SXyzztaYdGlVh29VYS6ahRU/edit#gid=983075176" - out <- googlesheets4::read_sheet(url) - accepted <- c("regular member", "contributing member") - dplyr::filter(out, `Board decision` %in% accepted) +#' This function imports data on members of RECON from the AirTable Database +#' It returns a `tibble`. Note AIRTABLE_API_KEY must be set in the environment. +import_memberships <- function(base = "app8BI6aTKIuB9U9y") { + members <- airtabler::fetch_all(base, "People", view = "Members" ) + statuses <- airtabler::fetch_all(base, "Statuses") + names(members) <- janitor::make_clean_names(stringi::stri_trans_tolower(names(members))) + names(statuses) <- janitor::make_clean_names(stringi::stri_trans_tolower(names(statuses))) + members <- members |> + mutate(membership_status = unlist(membership_status)) |> + left_join(select(statuses, status_id = id, status_name), by = c("membership_status"="status_id")) |> + mutate(photo_url = purrr::map_chr(photo, ~.$url[1] %||% NA_character_), photo_filename = purrr::map_chr(photo, ~.$filename[1] %||% NA_character_)) |> + select(id, first_name, last_name, status = status_name, position_and_expertise_short, institution, country, website, twitter, github, photo_url, photo_filename) |> + as_tibble() |> + mutate_if(is.character, stri_trim_both) + members } - - - - -#' Generate yaml entries for one member -#' -#' This function will generate a yaml entry compatible with the people.md file -#' for a single member. Its argument is a single-row tibble matching the -#' structure of the output of `import_memberships`. The output is a character -#' vector which can be fed to `cat()` when creating the new `people.md` file. -#' -#' @param x one line of membership tibble -#' -#' @param add_missing_pic a logical indicating if a default 'anonymous' pic -#' should be created to replace missing photos - -make_member_yaml <- function(x, add_missing_pic = FALSE) { - - # Some columns are renamed for convenience - x <- dplyr::rename(x, - position = "Position and expertise (short)", - twitter = "Twitter account (full address)", - github = "Github account (full address)", - website = "Website") - - - # Output is built incrementally - ## name - out <- paste(" - name:", x["First name"], x["Last name"], sep = " ") - - ## image - img_txt <- tolower(paste0(" img: /img/people/", - gsub(" ", "-", x["First name"]), - "-", - gsub(" ", "-", x["Last name"]), - ".jpg")) - out <- c(out, img_txt) - - ## if image does not exist, copy the anonymous pic by default - path_to_pic <- sub("^[ ]*img: ", "", img_txt) - path_to_pic <- paste0("..", path_to_pic) - - if (!file.exists(path_to_pic)) { - warning("Picture file ", path_to_pic, " is missing") - if (add_missing_pic) { - file.copy("../img/people/anonymous.jpg", path_to_pic) - } - } - - ## description - x["position"] <- sub("[.]+$", ".", paste(x["position"], ".", collapse = "", sep = "")) - x["position"] <- gsub(":", ",", x["position"]) - x["Institution"] <- gsub(":", ",", x["Institution"]) - x["Country"] <- gsub(":", ",", x["Country"]) - description <- paste0(" desc: ", x["position"]) - - if (!is.na(x["Institution"])) { - institution <- paste0(" ", x["Institution"], collapse = "") - } else { - institution <- "" - } - - if (!is.na(x["Country"])) { - country <- paste0(" ", x["Country"], ".", collapse = "") - } else { - country <- "." - } - description <- paste0(description, institution, country, collapse = "") - out <- c(out, description) - out[3] <- gsub("[ ]+,", ",", out[3]) - - ## website - if (!is.na(x["website"])) { - out <- c(out, paste0(" website: ", x["website"])) - out <- c(out, paste0(" url: ", x["website"])) - } - - ## github - if (!is.na(x["github"])) { - out <- c(out, paste0(" github: ", x["github"])) - if (is.na(x$website)) { - out <- c(out, paste0(" url: ", x["github"])) - } - } - - ## twitter - twit <- x["twitter"] - if (!is.na(twit)) { - twit <- gsub("https://twitter.com/", "", twit, fixed = TRUE) - twit <- gsub("http://twitter.com/", "", twit, fixed = TRUE) - twit <- gsub("twitter.com/", "", twit, fixed = TRUE) - twit <- gsub("@", "", twit, fixed = TRUE) - twit <- paste0("https://twitter.com/", twit) - out <- c(out, paste0(" twitter: ", twit)) - if (is.na(x["website"]) && is.na(x["github"])) { - out <- c(out, paste0(" url: ", twit)) - } - } - - return(out) +# #' Fetch the profile pics of all members (not needed, as we link directly to +# #' the AirTable Source) +# download_profile_images <- function(members, fdir = "img/people") { +# if (!dir.exists(fdir)) dir.create(fdir) +# m2 <- members |> +# filter(!is.na(photo_url), !is.na(photo_filename)) +# walk2(m2$photo_url, m2$photo_filename, function(furl, fname) { +# download.file(furl, file.path(fdir, fname)) +# }) +# } + +#' Convert members data to YAML that will be used in +#' Removes nonallowed URLs rather than fixing, assuming fixes upstream +make_members_data <- function(members) { + + members <- members |> + mutate(status = if_else(status %in% c("Regular member", "Contributing member"), "members", status)) + + members_data <- members |> + arrange(last_name) |> + group_split(status) |> + map(function(group) { + group |> + mutate(name = paste(first_name, last_name), + desc = paste(position_and_expertise_short, institution, country, sep = ", "), + img = photo_url + ) |> + select(name, desc, img, website, twitter, github) |> + mutate(across(c(website,twitter,github), + ~if_else(stri_detect_regex(., "^https?://"), ., NA_character_ ))) |> + as.list() |> + transpose() |> + map(~discard(., is.na)) + }) + names(members_data) <- members |> + group_by(status) |> + group_keys() |> + pull(status) |> + janitor::make_clean_names() + + members_data } +members <- import_memberships() +write_yaml(make_members_data(members), "_data/people.yaml") - - - -#' Generate yaml info for all members -#' -#' This function will read membership data and generate entries for every -#' members in a format compatible with the header of `people.md`.The output is a -#' character vector which can be fed to `cat()` when creating the new -#' `people.md` file. -#' -#' @param add_missing_pic a logical indicating if a default 'anonymous' pic -#' should be created to replace missing photos - -generate_members_data <- function(add_missing_pic = FALSE) { - ## Read data from google spreadsheet - sheet <- import_memberships() - - ## Reorder data - sheet <- dplyr::arrange(sheet, "Last name", "First name") - - ## Make sure capitalization is consistent across entries - sheet <- dplyr::mutate(sheet, - "First name" = enforce_ascii(`First name`), - "First name" = capitalize(`First name`), - "Last name" = enforce_ascii(`Last name`), - "Last name" = capitalize(`Last name`)) - - ## handle duplicates; only the most recent one is kept - sheet <- dplyr::mutate(sheet, name = paste(`First name`, `Last name`, sep = "_")) - sheet <- dplyr::arrange(sheet, desc(Timestamp)) - sheet <- dplyr::filter(sheet, !duplicated(name)) - - ## Ensure alphabetic order - sheet <- dplyr::arrange(sheet, `Last name`, `First name`) - - ## Generate entries for all members - list_entries <- lapply(seq_len(nrow(sheet)), - function(i) - make_member_yaml(sheet[i, ], add_missing_pic)) - all_entries <- unlist(list_entries) - - out <- c("members:", all_entries) - out <- gsub("\\.\\.+", "\\.", out) - out <- gsub("[.],", ",", out) - out <- gsub(" NA,", "", out) - out -} - - - - - - -#' This function generates a new, updated people.md -#' -#' The function will read the current people.md file, import membership data, -#' generate entries for all members in the registration spreadsheet, and insert -#' these new data in the 'people-list' section in a new, updated people.md -#' file. Note that if unsure, you can specify an alternative output file, so -#' that you can compare the old and new version to make sure nothing got -#' lost. In particular, make sure all members are recorded in the registration -#' spreadsheet, as only these will be present in the updated version. The -#' following additional changes are also made when processing entries of the -#' registration form: i) capitalisation of names is enforced (upper casde for -#' first letter, lower case for others) ii) names are converted to ASCII -#' characters (including for the path to photo files) iii) optionally, generic -#' 'anonymous' photos are placed in the right folder if the photo file is -#' missing (see argument `add_missing_pic`). -#' -#' @param in_file the file to be used as input, defaults to `people.md` -#' -#' @param out_file the file to be used as output, defaults to the same as -#' `in_file` in which case the input file will be replaced by the new version. -#' -#' @param add_missing_pic a logical indicating if a default 'anonymous' pic -#' should be created to replace missing photos -#' -#' @author Thibaut Jombart - -update_people_file <- function(in_file = "../people.md", - out_file = in_file, - add_missing_pic = FALSE) { - - current_content <- suppressWarnings(readLines(in_file)) - head_stop <- grep("^members:", current_content)[1] - 1 - tail_start <- tail(grep("---", current_content), 1) - members_entries <- generate_members_data(add_missing_pic) - - out <- c( - current_content[1:head_stop], - members_entries, - current_content[tail_start:length(current_content)] - ) - - cat("\n\n *** Create updated file:", out_file, "***\n") - cat(out, file = out_file, sep = "\n") - return(invisible(out)) -} diff --git a/README.md b/README.md index 17a2a569..d9ab40c3 100644 --- a/README.md +++ b/README.md @@ -2,109 +2,109 @@ ## Welcome to the development page of the R Epidemics Consortium (RECON) website -For the website itself, go to: http://www.repidemicsconsortium.org +For the website itself, go to: -Please address requests via email to Thibaut Jombart ([thibautjombart@gmail.com](thibautjombart@gmail.com)). +Please address requests via email to Thibaut Jombart +([thibautjombart\@gmail.com](thibautjombart@gmail.com)). # Instructions for editing the website ## Editing the existing pages -When the site launched, it contained the following pages, which can all be edited for content or deleted: [`index.md`](./index.md) (the landing page), [`people.md`](./people.md), [`projects.md`](./projects.md), [`resources.md`](./resources.md), [`contact.md`](./contact.md). +When the site launched, it contained the following pages, which can all be +edited for content or deleted: [`index.md`](./index.md) (the landing page), +[`people.md`](./people.md), [`projects.md`](./projects.md), +[`resources.md`](./resources.md), [`contact.md`](./contact.md). ## Editing the navigation menus and the footer section -The links in the menu and in the footer are all configured in the main configuration file, [`_config.yml`](./_config.yml). Specifically, the parameter `navbar-links` inside the file is used to define the top navigation menu, and the `author` parameter just below it is used to define the information that should be shown in the footer. +The links in the menu and in the footer are all configured in the main +configuration file, [`_config.yml`](./_config.yml). Specifically, the parameter +`navbar-links` inside the file is used to define the top navigation menu, and +the `author` parameter just below it is used to define the information that +should be shown in the footer. ## How to edit the style of the website -The general layout of the pages can't be changed easily. But things like colour, spacing, fonts, and any other CSS style can easily be changed by adding CSS rules to the [`recon.css`](./css/recon.css) file. For example, you can change the size of the text, or the background colour of the navigation bar, or the colour of the text in the footer. +The general layout of the pages can't be changed easily. But things like colour, +spacing, fonts, and any other CSS style can easily be changed by adding CSS +rules to the [`recon.css`](./css/recon.css) file. For example, you can change +the size of the text, or the background colour of the navigation bar, or the +colour of the text in the footer. -Note that the template was designed in a way such that it changes drastically when you view it on a big screen (laptop) vs a small screen (phone) +Note that the template was designed in a way such that it changes drastically +when you view it on a big screen (laptop) vs a small screen (phone) ## How to add new pages To add a new page at the URL `http://reconhub.github.io/example`: -- Add a file named `example.md` to the root directory of this repo -- The file **must** begin with two lines of three dashes (aka YAML front matter) in order for this new page to use the template. In other words, each file must begin with the following two lines - - ``` - --- - --- - ``` -- You can write either in markdown or in pure HTML -- If you want to add images, I suggest you place all the images inside the [`img`](./img) folder and refer to images from there. -- In between the YAML front matter (between the two lines of dashes), you can specify a few parameters: - - `title`: Gives a nice big title to the page - - `subtitle`: A subtitle to the page - - `bigimg`: The path to an image that will be used as a big wide "header image". This path has to point to a local file in this repository, it cannot point to an image on the web - - You can see the [`projects`](https://raw.githubusercontent.com/reconhub/reconhub.github.io/2d944bfa887121b8e4f0d88df03a23e424bd1e79/projects.md) page to see an example of using the `title` and `bigimg` parameters -- If you want to include a list of items on the page, where each item has an image, a short description, and some links, you need to define the items of the list in the YAML front matter and then include `{% include list-circles.html items=page.mylist %}` in the page wherever you want to show the list. Any images will automatically be cropped to be circular, and there wil be a maximum of 4 items per row. See the [`people`](https://raw.githubusercontent.com/reconhub/reconhub.github.io/89dbea917f4223d768e51dfc6e825b974144dea4/people.md) page for an example of how to include a nice list. +- Add a file named `example.md` to the root directory of this repo + +- The file **must** begin with two lines of three dashes (aka YAML front + matter) in order for this new page to use the template. In other words, each + file must begin with the following two lines + + --- + --- + +- You can write either in markdown or in pure HTML + +- If you want to add images, I suggest you place all the images inside the + [`img`](./img) folder and refer to images from there. + +- In between the YAML front matter (between the two lines of dashes), you can + specify a few parameters: + + - `title`: Gives a nice big title to the page + - `subtitle`: A subtitle to the page + - `bigimg`: The path to an image that will be used as a big wide "header + image". This path has to point to a local file in this repository, it + cannot point to an image on the web + - You can see the + [`projects`](https://raw.githubusercontent.com/reconhub/reconhub.github.io/2d944bfa887121b8e4f0d88df03a23e424bd1e79/projects.md) + page to see an example of using the `title` and `bigimg` parameters + +- If you want to include a list of items on the page, where each item has an + image, a short description, and some links, you need to define the items of + the list in the YAML front matter and then include + `{% include list-circles.html items=page.mylist %}` in the page wherever you + want to show the list. Any images will automatically be cropped to be + circular, and there wil be a maximum of 4 items per row. See the + [`people`](https://raw.githubusercontent.com/reconhub/reconhub.github.io/89dbea917f4223d768e51dfc6e825b974144dea4/people.md) + page for an example of how to include a nice list. ## How to add new blog posts (aka news) -The pages described above should be added in the root directory. But any page you create inside the `_posts` folder will be treated as a blog post. The nice thing about blog post-type pages is that they will automatically be shown chronologically at `https://reconhub.github.io/blog/`, with all the pagination to previous/next posts taken care of. +The pages described above should be added in the root directory. But any page +you create inside the `_posts` folder will be treated as a blog post. The nice +thing about blog post-type pages is that they will automatically be shown +chronologically at `https://reconhub.github.io/blog/`, with all the pagination +to previous/next posts taken care of. -Posts are created in exactly the same way as regular pages: you still need to make them `.md` file, they have to have YAML front matter, they can support the `title`/`subtitle`/`bigimg` parameters, you can add lists into them, etc. The only difference is that the name of the file must begin with the date of the post. For example, `2016-08-20-some-news.md`. It's vital that the name of each post contain the date in such a format, followed by whatever name you want, followed by `.md`. +Posts are created in exactly the same way as regular pages: you still need to +make them `.md` file, they have to have YAML front matter, they can support the +`title`/`subtitle`/`bigimg` parameters, you can add lists into them, etc. The +only difference is that the name of the file must begin with the date of the +post. For example, `2016-08-20-some-news.md`. It's vital that the name of each +post contain the date in such a format, followed by whatever name you want, +followed by `.md`. ## How to enable comments -If you want to add Disqus comments to different pages, you need to sign up to Disqus and add your Disqus shortname to the disqus parameter in the `_config.yml` file. By default, all blog posts will have disqus comments at the bottom of the page. You can add disqus to any other page by adding `comments: true` to the YAML of any page. +If you want to add Disqus comments to different pages, you need to sign up to +Disqus and add your Disqus shortname to the disqus parameter in the +`_config.yml` file. By default, all blog posts will have disqus comments at the +bottom of the page. You can add disqus to any other page by adding +`comments: true` to the YAML of any page. ## Updating the members page -The members page is generated by the file `people.md`, which uses yaml entries -for each member to render member items on the page, including a jpg photo, short -description, affiliation and country. It is important that these entries are -formatted without errors, as the page will not be generated otherwise, and the -previous version will stay in place. - -To avoid issues and a lot of manual labour, use the sripts in -`R/update_people.R`. The current implementation works as follows: - -1. start **R** into `reconhub.github.io/R/` -2. type `source("update_people.R")` to load functions -3. add appropriate photos in `img/people/[firstname]-[lastname].jpg` -4. type `update_people_file()` to generate a new `people.md` whose 'member' - section will be built from the registration form; optionally, the script can - check that required photos are in place, and add the default 'anonymous' - photo if they are missing, by specifying: - `update_people_file(add_missing_pic = TRUE)` -5. Type `git add ../img/people/` to add the new image files -6. Commit and push as usual, e.g. -``` -git commit -a -m "updating members" -git push -``` - -Functions of the script are roxygen-documented, but a copy of the main -function's documentation is provided below: - -```{r } -#' This function generates a new, updated people.md -#' -#' The function will read the current people.md file, import membership data, -#' generate entries for all members in the registration spreadsheet, and insert -#' these new data in the 'people-list' section in a new, updated people.md -#' file. Note that if unsure, you can specify an alternative output file, so -#' that you can compare the old and new version to make sure nothing got -#' lost. In particular, make sure all members are recorded in the registration -#' spreadsheet, as only these will be present in the updated version. The -#' following additional changes are also made when processing entries of the -#' registration form: i) capitalisation of names is enforced (upper casde for -#' first letter, lower case for others) ii) names are converted to ASCII -#' characters (including for the path to photo files) iii) optionally, generic -#' 'anonymous' photos are placed in the right folder if the photo file is -#' missing (see argument `add_missing_pic`). -#' -#' @param in_file the file to be used as input, defaults to `people.md` -#' -#' @param out_file the file to be used as output, defaults to the same as -#' `in_file` in which case the input file will be replaced by the new version. -#' -#' @param add_missing_pic a logical indicating if a default 'anonymous' pic -#' should be created to replace missing photos -#' -#' @author Thibaut Jombart -``` +The members page (`people.md`), is populated by data in `_data/people.yaml`. This +data is pulled from the [member AirTable database](https://airtable.com/app8BI6aTKIuB9U9y/tblVLqqat0jSaDA94/viwJRn4ZuSCkaHR4M). +If you have access to this, you should be able to generate `data_people.yaml` by +running `R/update_people.R`, provided you have set your API key as an environment +variable `AIRTABLE_API_KEY`. + +In general, this is run automatically when the site is built using GitHub Actions, +and members can be added, removed, or modified in the AirTable. diff --git a/_config.yml b/_config.yml index 5c10e0a3..98b50eb2 100644 --- a/_config.yml +++ b/_config.yml @@ -44,7 +44,7 @@ share-links-active: facebook: true google: false linkedin: true - + # Fill in your Disqus shortname (NOT the userid) if you want to support Disqus comments disqus: "reconhub-github-io" @@ -83,6 +83,11 @@ defaults: exclude: - LICENSE - README.md + - .env + - renv.lock + - renv + +plugins: [jekyll-paginate] gems: - jekyll-paginate diff --git a/_data/.gitignore b/_data/.gitignore new file mode 100644 index 00000000..cf30ba24 --- /dev/null +++ b/_data/.gitignore @@ -0,0 +1 @@ +people.yaml diff --git a/_data/people.yaml b/_data/people.yaml new file mode 100644 index 00000000..b2c52c11 --- /dev/null +++ b/_data/people.yaml @@ -0,0 +1,483 @@ +advisory_board: +- name: Gregory Armstrong + desc: Director of the Advanced Molecular Detection initiative, with extensive experience + in epidemiology and outbreak response at CDC, Atlanta, USA., NA, NA + img: https://dl.airtable.com/.attachments/734a9f0bc7490e17ea64afb9c4b4be93/77084b7e/gregory-armstrong.jpg + website: http://www.cdc.gov/amd/ + twitter: https://twitter.com/CDC_AMD +- name: Gabor Csardi + desc: Computer scientist with a strong background in statistics and network theory, + Gabor is a prominent member of the R community who develops and contributes to + a number of major packages such as igraph, roxygen and R6. Mango Solutions, Chippenham, + UK., NA, NA + img: https://dl.airtable.com/.attachments/ad3bbc1d277e062621c8a589cb6ae45c/679eea65/gabor-csardi.jpg + website: http://gaborcsardi.org/ + twitter: http://twitter.com/gaborcsardi + github: http://github.com/gaborcsardi +- name: Christl Donnelly + desc: Professor of Statistical Epidemiology, Fellow of the Royal Society, Christl + has extensive experience in epidemics analysis and emergency outbreak response. + Imperial College London, UK., NA, NA + img: https://dl.airtable.com/.attachments/86e81cadf687f8cfd9dbcbd8acd2644e/155b5dd9/christl-donnelly.jpg + website: http://www.imperial.ac.uk/people/c.donnelly +- name: Jennifer Gardy + desc: Canada Research Chair in Public Health genomics at the university of British + Columbia and BC Centre for Disease Control, with extensive experience in inferring + disease transmission from genomic data. Vancouver, Canada., NA, NA + img: https://dl.airtable.com/.attachments/7fec21dabc680ac9f518f16c17a1d94a/08bc598e/jennifer-gardy.jpg + twitter: https://twitter.com/jennifergardy + github: https://github.com/jlgardy +- name: Oliver Morgan + desc: Acting Director, Health Emergency Information and Risk Assessment Department, + World Health Organisation. Geneva, Switzerland., NA, NA + img: https://dl.airtable.com/.attachments/d673ff76536558b3619809f853f2b883/26c3f151/oliver-morgan.jpg +- name: Jacco Wallinga + desc: Professor of infectious disease modelling at Leiden University Medical Center, + Head of the Infectious Disease Modelling Department at the National Institute + for Public Health and the Environment (RIVM), The Netherlands., NA, NA + img: https://dl.airtable.com/.attachments/578b297fced00ff92ed3a8e496ad83e2/5d1987bc/jacco-wallinga.jpg + website: http://www.rivm.nl/en/About_RIVM/Knowledge_and_expertise/Experts_and_expertise/Related_information/Modelling_Infectious_Diseases/Prof_Dr_J_Jacco_Wallinga +executive_board: +- name: Soledad Colombe + desc: Infectious disease epidemiologist with a strong interest in zoonotic diseases., + Outbreak Research Team, Institute of Tropical Medicine, Antwerp, Belgium + img: https://dl.airtable.com/.attachments/54fcb27af0745dd88994d140d28d1392/54905b51/soledad-colombe.jpg +- name: Thibaut Jombart + desc: RECON Founder. Statistician and R programmer specialized in outbreak analysis., + London School of Hygiene and Tropical Medicine / Imperial College London, UK., + France + img: https://dl.airtable.com/.attachments/77429ce90cc58f644e60058fc6c4d559/1b6eb205/thibaut-jombart.jpg + website: https://thibautjombart.netlify.com/ + twitter: https://twitter.com/TeebzR + github: https://github.com/thibautjombart/ +- name: Noam Ross + desc: Vice-President. Disease Ecologist and Principal Scientist, Computational Research. + Software peer review lead for rOpenSci., EcoHealth Alliance, United States + img: https://dl.airtable.com/.attachments/55db127cfcab2c7aa9ca08b29362c360/47ba9d14/noam-ross.jpg + website: https://www.noamross.net + twitter: https://twitter.com/noamross + github: https://github.com/noamross +- name: Janetta Skarp + desc: PhD student working in infectious disease modelling, contributor to RECON + packages., Imperial College London, UK., NA + img: https://dl.airtable.com/.attachments/1f0bfcaa542cdaf63a5279cf8e10491a/de918b29/janetta-skarp.jpg + github: https://github.com/jeskarp +members: +- name: Jamalludin Ab Rahman + desc: Professor of epidemiology, International islamic University of Malaysia, Malaysia + img: https://dl.airtable.com/.attachments/3e1a4f483a20e960d298594335d44ef5/28f9060b/jamalludin-ab-rahman.jpg + twitter: https://twitter.com/arjamal + github: https://github.com/arjamal70 +- name: Monday Osagie Adenomon + desc: Senior Lecturer & Chartered Statistician (RSS-UK); coord, NSUK-LISA; Chair, + IASC African mem Group; Time series and Biostatistics, Nasarawa State University, + Keffi, Nigeria + img: https://dl.airtable.com/.attachments/480bdad2c12273f88c47a6cf7e6ba925/f5ab0f8d/monday-osagie-adenomon.jpg +- name: Ayodele Adeyemo + desc: Senior Technical Associate, GIS and Data Analytics, eHealth Africa, Nigeria +- name: Manuel Albela Miranda + desc: Epidemiology Adviser, Médecins sans Frontières (MSF), Switzerland + website: https://www.msf.ch +- name: Tomas Aragon + desc: R instructor; infectious disease epidemiologist; public health official, University + of California, Berkeley School of Public Health, United States + img: https://dl.airtable.com/.attachments/c4a0e16e704a2343e86c493c8f7de5d2/428073f5/tomas-aragon.jpg + website: https://taragonmd.github.io/ + github: https://github.com/taragonmd +- name: Callum Arnold + desc: PhD in Mathematical Biology studying measles outbreaks and intervention impacts, + Pennsylvania State University, United States + img: https://dl.airtable.com/.attachments/0f28727235427fd1f96ce1a87a522ff6/1fd70055/callum-arnold.jpg + twitter: https://twitter.com/thecallumarnold + github: https://github.com/arnold-c +- name: Dean Attali + desc: Web and R developer, designer of the RECON website., AttaliTech, Canada., + NA + img: https://dl.airtable.com/.attachments/2ba39dd532ad2df2266e9b4e63d7741c/a4d11de6/dean-attali.jpg + website: http://deanattali.com/ + twitter: https://twitter.com/daattali + github: https://github.com/daattali/ +- name: Marc Baguelin + desc: Mathematical modeller and health economist specialised in Public Health intervention. + Strong believer in open code and sharing., Public Health England, UK., NA + img: https://dl.airtable.com/.attachments/2014386d3bf3e038f43670012b449bef/651080b4/marc-baguelin.jpg + website: http://www.lshtm.ac.uk/aboutus/people/baguelin.marc + twitter: https://twitter.com/marcbaguelin + github: https://github.com/MJomaba/ +- name: Amrish Baidjoe + desc: Field epidemiologist/microbiologist, outbreak response expert., President + of the EPIET alumni network., NA + img: https://dl.airtable.com/.attachments/73dfd019e8342cef253fc08c9f987437/f07cb081/amrish-baidjoe.jpg + website: https://ammer.tweakblogs.net/ + twitter: https://twitter.com/Ammer_B +- name: Neale Batra + desc: Communicable disease epidemiologist specialized in emergency response and + preparedness, NA, NA + img: https://dl.airtable.com/.attachments/3b7143efca752443a8a2f907ee7ec7bc/134dffe9/neale-batra.jpg + github: https://github.com/nsbatra +- name: Cici Bauer + desc: Academic faculty (assistant professor) - Bayesian spatiotemporal modeling, + Department of Biostatistics and Data Science, University of Texas Health Science + Center in Houston, United States + img: https://dl.airtable.com/.attachments/f6faf2cc44dc40cc10d1378bd2c89d2d/76e737d9/cici-bauer.jpg + website: https://cicibauer.netlify.com/ + github: https://github.com/cicibauer +- name: Cici Bauer + desc: Assistant Professor of Biostatistics and Data Science, University of Texas + Health Science Center in Houston, United States + img: https://dl.airtable.com/.attachments/58f799158fa5d433e72c811294d95d11/3d9446c9/cici-bauer.jpg + github: https://github.com/cicibauer +- name: Matthijs Berends + desc: Infectious Disease Epidemiology, University of Groningen, Netherlands + img: https://dl.airtable.com/.attachments/de418cee9173b6b11658aecd1430c10a/836f0958/matthijs-berends.jpg + website: https://www.rug.nl/staff/m.s.berends/ + twitter: https://twitter.com/msberends + github: https://github.com/msberends +- name: Mahendra Bhandari + desc: Head Intelligent Automation , Predictive Modelling , Ensemble Forecast , Location + Based Intelligence , Python / R, AINQA, India + img: https://dl.airtable.com/.attachments/0dc7a4d42c5b0bd7b764bea5f219f4b0/7f8ca4ba/mahendra-bhandari.jpg +- name: Sangeeta Bhatia + desc: Modeller and software developer contributing packages for outbreak analysis + using digital surveillance data., Imperial College London, UK., NA + img: https://dl.airtable.com/.attachments/27c6dca8138edfee2950ecad112cdcc3/f71f58f5/sangeeta-bhatia.jpg + website: https://sangeetabhatia03.github.io/ + twitter: https://twitter.com/sangeeta0312 + github: https://github.com/sangeetabhatia03 +- name: Matthew Biggerstaff + desc: Epidemiologist focused on using modeling and forecasting outputs to inform + public health decision making., U.S. Centers for Disease Control and Prevention, + USA., NA + img: https://dl.airtable.com/.attachments/9a3c555cd84d25f7d7b7047728be9120/c4fa5f0d/matthew-biggerstaff.jpg +- name: Olivia Boyd + desc: Postgrad researcher - Epidemiology, Imperial College London, United Kingdom + img: https://dl.airtable.com/.attachments/a75b568cea396d3bede12acd5c002a40/4968b41b/olivia-boyd.jpg +- name: Hannah Brindle + desc: Research Fellow with the Emergency and Epidemic Data at the London School + of Hygiene and Tropical Medicine. Current work on electronic data collection methods, + automated reporting and research during health emergencies., London School of + Hygiene and Tropical Medicine, United Kingdom + img: https://dl.airtable.com/.attachments/84600a929b72591c1a31bcaea634bb5d/c90082d8/hannah-brindle.jpg +- name: Jun Cai + desc: PhD candidate interested in influenza transmission dynamics and R programming., + Center for Earth System Science, Tsinghua University, China., NA + img: https://dl.airtable.com/.attachments/988a244d5d62745300553ebd8ff13ae9/e2b60b52/jun-cai.jpg + website: http://blog.tonytsai.name/ + twitter: https://twitter.com/caijun2046 + github: https://github.com/caijun +- name: Finlay Campbell + desc: Data scientist interested in outbreak analysis and R package development., + WHO Geneva, Switzerland., NA + img: https://dl.airtable.com/.attachments/60286b36630515dcdf4c3fe840a9a46e/2af9000a/finlay-campbell.jpg + twitter: http://twitter.com/fcampbell_ + github: http://github.com/finlaycampbell +- name: Anne Cori + desc: Statistician specialized in disease modelling and outbreak response., Imperial + College London, UK., NA + img: https://dl.airtable.com/.attachments/d7fc7ed94816e56a20113d4fb53c3b64/84a4bb80/anne-cori.jpg + website: http://www.imperial.ac.uk/people/a.cori + github: https://github.com/annecori/ +- name: Zulma Cucunuba + desc: Vector borne disease modelling to inform public health policy, emphasis in + Latin America., Imperial College London, UK., NA + img: https://dl.airtable.com/.attachments/2eec49b4bf0daf2be86bd9c6a48d78d5/9f0e4ed8/zulma-cucunuba.jpg + website: http://www.imperial.ac.uk/people/zulma.cucunuba + twitter: https://twitter.com/Zulma.Cucunuba + github: https://github.com/zulmac +- name: Jeroen de Korte + desc: Data Scientist / Product manager, working on an IoT platform to enable cities + to become more sustainable, n/a, Netherlands + img: https://dl.airtable.com/.attachments/89b557556800d4cd2d6bbad365cb9943/deb308b9/jeroen-de-korte.jpg +- name: Amy Dighe + desc: PhD Student - using mathematical modelling and statistical analyses to better + characterise the transmission dynamics of emerging infectious diseases, MRC centre + for Global Infectious Disease Analysis, Imperial College London, United Kingdom + img: https://dl.airtable.com/.attachments/9085caae532d42d69135ce300dcc5875/4e47e374/amy-dighe.jpg + twitter: https://twitter.com/amy__dighe +- name: Roz Eggo + desc: Infectious disease modeller of outbreaks, epidemics, and endemic infections., + LSHTM, UK., NA + img: https://dl.airtable.com/.attachments/bcab0c4cc6fa0b3c711f1ca18d2eade7/181e6075/roz-eggo.jpg + github: https://github.com/rozeggo +- name: Flavio Finger + desc: Epidemiologist & Outbreak Analyst, Epicentre, Paris, France + img: https://dl.airtable.com/.attachments/3a899457e9f973944b6f7ccd2bb44b90/82d183e4/flavio-finger.jpg + twitter: https://twitter.com/flavio_finger + github: https://github.com/ffinger/ +- name: Rich Fitzjohn + desc: R developper specialized in data analysis infrastructures., Imperial College + London, UK., NA + img: https://dl.airtable.com/.attachments/e5372d2ca62c3294a6065d6c4e633651/9ed0c013/rich-fitzjohn.jpg + website: http://richfitz.github.io/ + twitter: https://twitter.com/rgfitzjohn + github: https://github.com/richfitz/ +- name: Simon Frost + desc: Viral evolution, dynamics and epidemiology., University of Cambridge, UK., + NA + img: https://dl.airtable.com/.attachments/2c24348b21c0765c6e3df2ff11545cc1/950e5150/simon-frost.jpg + website: http://www.vet.cam.ac.uk/directory/sdf22@cam.ac.uk + twitter: https://twitter.com/sdwfrost + github: http://github.com/sdwfrost +- name: Amy Gimma + desc: Software development / data management & analysis / research fellow, LSHTM, + United Kingdom + img: https://dl.airtable.com/.attachments/fc2dcc9a0b210d23304e0d0f2396f908/2d0251dc/amy-gimma.jpg + github: https://github.com/amygimma +- name: Emma Glennon + desc: Sir Henry Wellcome Research Fellow, University of Cambridge, United Kingdom + img: https://dl.airtable.com/.attachments/c88b179bf2072af4a793a7af5adaa073/62e01725/emma-glennon.jpg +- name: ALE GUY FRANCK BIAOU + desc: Head of Epidemiology (epidemiology and data science), WaCa, Côte d'Ivoire + img: https://dl.airtable.com/.attachments/242b2039e762fe0df02ce53f5dce4e49/2731c96a/ale-guy-franck-biaou.jpg + github: https://gitlab.com/biaouguy +- name: Michael Höhle + desc: Statistical modelling in infectious disease epidemiology., Stockholm University, + Sweden., NA + img: https://dl.airtable.com/.attachments/dca7e802e4c4614cd2b95223f8004692/d34c7121/michael-hohle.jpg + website: http://www.math.su.se/~hoehle + twitter: https://twitter.com/m_hoehle + github: https://github.com/hoehleatsu +- name: Benido Impouma + desc: Preparedness for, surveillance of and response to disease outbreaks and other + public health emergencies., World Health Organization, Congo, Republic., NA + img: https://dl.airtable.com/.attachments/6f492f6e009af07a0f65417c89634e22/43d00421/benido-impouma.jpg +- name: Yalda Jafari + desc: DPhil Candidate, University of Oxford, United Kingdom +- name: Christopher Jarvis + desc: Statistician and Researcher, LSHTM, United Kingdom + img: https://dl.airtable.com/.attachments/8bc22b6edb810a8a3ac2966bd411a45f/4658df81/christopher-jarvis.jpg + github: https://github.com/jarvisc1 +- name: Samuel Jenness + desc: Epidemic modeling, network science, HIV/STI epidemiology., Emory University, + USA., NA + img: https://dl.airtable.com/.attachments/c66c0392fd0eb7d675b9e5ee95c375c6/8c343378/samuel-jenness.jpg + website: http://www.samueljenness.org/ + twitter: https://twitter.com/SamuelJenness + github: https://github.com/EpiModel +- name: Michael Johansson + desc: Biologist. I develop statistical and mechanistic modeling tools for vector-borne + diseases and emerging epidemics., Centers for Disease Control and Prevention, + Harvard TH Chan School of Public Health, Outbreak Science, United States + github: https://github.com/majohansson +- name: David Jørgensen + desc: PhD student in infectious disease epidemiology, Imperial College London, United + Kingdom + img: https://dl.airtable.com/.attachments/3c8f5a384eddbc7127ff9d9964dba208/ace16c0b/david-jorgensen.jpg + website: https://www.imperial.ac.uk/people/david.jorgensen13 + github: https://github.com/JorgensenD +- name: Zhian Kamvar + desc: R developer and population geneticist., Imperial College London, UK., NA + img: https://dl.airtable.com/.attachments/97d9c07bd72c28bfa702fa3efcafbd70/3cd16bf5/zhian-kamvar.jpg + website: https://zkamvar.netlify.com/ + twitter: https://twitter.com/zkamvar + github: https://github.com/zkamvar +- name: Patrick Keating + desc: Infectious disease epidemiologist using R for analysis., Austrian Agency for + Health and Food Safety, Austria., NA + img: https://dl.airtable.com/.attachments/c4590bc7a7016d1382e82e597dcba971/53bb9f24/patrick-keating.jpg +- name: Mohammad Kibria + desc: Technical advisor in Health Information Systems and Monitoring and Evaluation + systems., USAID STAR Senior Fellow, Bangladesh + img: https://dl.airtable.com/.attachments/40056cdf777af8ae17713f69689047ee/fd7256f1/mohammad-kibria.jpg + website: http://globalhealthanalytics.info/ +- name: Mara Kont + desc: PhD Student in Infectious Disease Epidemiology, Imperial College London, United + Kingdom + img: https://dl.airtable.com/.attachments/e401355435f565880bb7f5bfa55fa1e8/cffdc64f/mara-kont.jpg +- name: Meryam Krit + desc: Mathematical modeller and researcher, Tropical Institute of Medicines, Belgium + img: https://dl.airtable.com/.attachments/c81a929cff68db3035cb1526d5f394c4/a83c1b0d/meryam-krit.jpg + website: https://pure.itg.be/en/persons/meryam-krit(ed3c0fa1-dde1-41cc-9a4a-b10051c9f93a).html +- name: Henry Kyobe-Bosa + desc: Epidemiologist with interest in outbreak risk analysis, surveillance and response + to emerging infectious diseases., African Risk Capacity, South Africa., Uganda + img: https://dl.airtable.com/.attachments/5d05d0a42350b31c28b98b68e6087a7e/b5ce2f08/henry-kyobe-bosa.jpg + website: http://www.africanriskcapacity.org/ + twitter: https://twitter.com/hskyobe +- name: Abraham Lagat + desc: Data Curator, CIMMYT, Kenya + twitter: https://twitter.com/lagvier +- name: Olivier Le Polain + desc: Senior Epidemiologist,, UK-Public Health Rapid Support Team, UK., NA + img: https://dl.airtable.com/.attachments/7ef217e1bdefe759f67e34aedc003acc/749283be/olivier-le-polain.jpg +- name: Rafael Lopes Paixão da Silva + desc: PhD Candidate in physics researching on drivers of epidemics dynamics and + Health System impact, Instituto de Física Teórica - IFT (UNESP), Brazil + img: https://dl.airtable.com/.attachments/be6fe7adc986bd06e8fe1645e8fc620e/071351fd/rafael-lopes-paixao-da-silva.jpg +- name: Greg Martin + desc: Health service executive; host of Global Health and R Programming 101 YouTube + series, NA, NA + img: https://dl.airtable.com/.attachments/7011b08dbf01dc455979520f7d2ae64c/044b0308/greg-martin.jpg + github: https://github.com/drgregmartin +- name: Arun Mitra + desc: PhD Scholar, Epidemiology, Public Health Data Science, Infectious Disease + Epidemiology, Achutha Menon Centre for Health Science Studies, Sree Chitra Tirunal + Institute for Medical Sciences and Technology, India + img: https://dl.airtable.com/.attachments/9d3a96555b992b95d3a333d4140af040/ba9083ac/arun-mitra.jpg + github: https://github.com/drarunmitra +- name: Paula Moraga + desc: Spatial statistics and disease surveillance., Lancaster University, UK., NA + img: https://dl.airtable.com/.attachments/8d07b3d234ac02d1d3a12de17ff9a1ea/506fb0d7/paula-moraga.jpg + website: https://paula-moraga.github.io/ + twitter: https://twitter.com/paumose + github: https://github.com/Paula-Moraga +- name: Kamarul Imran Musa + desc: Associate Professor / Expertise in disease modelling, xd, Malaysia + img: https://dl.airtable.com/.attachments/9fe00f413e4c52a3c2eecd2736e0e52b/d10a636b/kamarul-imran-musa.jpg + website: http://www.medic.usm.my/jpm/index.php/en/academic-information/587-prof-madya-dr-kamarul-imran-musa + twitter: https://twitter.com/kamarul_imran + github: https://github.com/drkamarul +- name: VP Nagraj + desc: R developer and contributor to epicontacts package., University of Virginia, + USA., NA + img: https://dl.airtable.com/.attachments/c301abd9ba8edfac9d4a54b8b9d45fbc/78ecf836/vp-nagraj.jpg + website: http://nagraj.net/ + twitter: https://twitter.com/vpnagraj + github: https://github.com/vpnagraj +- name: Ghiwa Nassereddine + desc: A passionate public health professional with a concentration in epidemiology + and biostatistics., American University of Beirut, Lebanon + img: https://dl.airtable.com/.attachments/81f80a17a4ac5992f362d2aebfcfe413/c22c00eb/ghiwa-nassereddine.jpg + twitter: https://twitter.com/_ghiwa + github: https://github.com/GhiwaNassereddine +- name: Aminata Ndiaye + desc: Biostatistician, WHO, France + img: https://dl.airtable.com/.attachments/9d88115e904e0f2682bd783168cf087b/2399e3c6/aminata-ndiaye.jpg +- name: Pierre Nouvellet + desc: Modelling for outbreak response and zoonotic diseases., Imperial College London, + UK., NA + img: https://dl.airtable.com/.attachments/3234aa89ca7e0deba70b978cc997c7e2/51184a12/pierre-nouvellet.jpg + website: https://www.imperial.ac.uk/people/p.nouvellet + github: https://github.com/pnouvellet +- name: Timothy Ogunleye + desc: Executive Director, Tim-R Programming. Statistical Modelling, Econometrics, + Morphometrics and Biostatistics, PhD Candidate, University of Ilorin, Kwara State, + Nigeria, Nigeria + img: https://dl.airtable.com/.attachments/881eb2ab6a4186aa4124ad175a5cc80b/548e0134/timothy-ogunleye.jpg + website: https://tim-rprogramming.com +- name: Lulla Opatowski + desc: Lecturer in mathematical epidemiology., Universite Versailles St Quentin / + Institut Pasteur / Inserm, France., NA + img: https://dl.airtable.com/.attachments/95a3216fabfaeb4afe1adfd3f3305692/0615123d/lulla-opatowski.jpg + website: https://research.pasteur.fr/en/member/lulla-opatowski/ +- name: Benjamin Ortiz Ulloa + desc: Data Visualization Engineer, Freelancer, United States + img: https://dl.airtable.com/.attachments/ad073cafe78454f3da90454df87d68bc/fd4ec215/benjamin-ortiz-ulloa.jpg +- name: Pawel Piatkowski + desc: Bioinformatician, avid R/Shiny programmer. Independent contractor (working + for Genentech/Roche), Poland., NA, NA + img: https://dl.airtable.com/.attachments/e9c6574eca5acd4a7afe3751c54fe015/14677d16/pawel-piatkowski.jpg + website: http://cosi1.github.io/ + twitter: https://twitter.com/Cosi1125 + github: https://github.com/cosi1/ +- name: Jonathan Polonsky + desc: Epidemiologist focusing on humanitarian and outbreak settings. I use R for + automating analyses and reproducible reporting., World Health Organisation, Switzerland., + NA + img: https://dl.airtable.com/.attachments/dca8955b03f9fe25bc1a53ccc7da5b2c/8d1ffae0/jonathan-polonsky.jpg + website: http://who.int/emergencies/en/ + twitter: https://twitter.com/jonny_polonsky + github: https://github.com/jpolonsky +- name: Juliet Pulliam + desc: Infectious disease modeler focusing on outbreaks and zoonotic diseases., Acting + Program Director of the ICI3D. Director, South African Centre for Epidemiological + Modelling and Analysis (SACEMA), South Africa + img: https://dl.airtable.com/.attachments/a3bfb731d69f3510c5d5df694d8d2bc3/f7b03d75/juliet-pulliam.jpg + twitter: https://twitter.com/SACEMAdirector + github: https://github.com/jrcpulliam +- name: Nistara Randhawa + desc: Epidemiologist and R programmer contributing to the Epicontacts package., + University of California, Davis, USA., NA + img: https://dl.airtable.com/.attachments/16f130b75987436c1d2fee550f3c3c5f/e7d314da/nistara-randhawa.jpg + website: http://nistara.net/ + github: https://github.com/nistara +- name: Matthieu Rolland + desc: Statistician - Environmental Epidemiologist, Institute for Advanced Biosciences + - INSERM, France + img: https://dl.airtable.com/.attachments/00672b6d49990516c886053d993e7d81/52a03e9a/matthieu-rolland.jpg + github: https://gitlab.com/mjrolland +- name: Ilana Schafer + desc: Veterinary epidemiologist with expertise in field outbreak response, and software + development for outbreak data management and contact tracing., US Centers for + Disease Control and Prevention, USA., NA + img: https://dl.airtable.com/.attachments/6a23f14b5c0a091e85a1150937b5f016/9db26f22/ilana-schafer.jpg +- name: Dirk Schumacher + desc: R developer with experience in infectious disease epidemiology, surveillance + and outbreak response., Berlin, Germany., NA + img: https://dl.airtable.com/.attachments/eca4ac1b33d10faf1032fe969becaa38/40d02e33/dirk-schumacher.jpg + website: https://www.dirk-schumacher.net/ + twitter: https://twitter.com/dirk_sch + github: https://github.com/dirkschumacher +- name: Jakob Schumacher + desc: Public health consultant, Local public health institute, Berlin, Germany + img: https://dl.airtable.com/.attachments/a961487abc65496ca606d48e2a3351c0/c0518579/jakob-schumacher.jpg + github: https://github.com/jakobschumacher +- name: Amandeep Singh + desc: Student, Newbie, The University of Lethbridge, Canada + img: https://dl.airtable.com/.attachments/ad16309e7e778b1aa44fc3b13e79915e/44b7e84c/amandeep-singh.jpg +- name: Alex Spina + desc: Infectious disease epidemiologist using R for surveillance data and outbreak + response., Austrian Agency for Food and Health Safety / European Centre for Disease + Prevention and Control, Austria., NA + img: https://dl.airtable.com/.attachments/86977ba031e3fe945e62019cf509c4ab/1a3cb70f/alex-spina.jpg + github: https://github.com/aspina7 +- name: Savina Stoitsova + desc: Infectious disease epidemiologist (EPIET alumni) based in Bulgaria, interested + in affordable analytic tools for outbreak response., National center of infectious + and parasitic diseases, Bulgaria., NA + img: https://dl.airtable.com/.attachments/486146efe7623b80938ca9a057ce044e/e7e3bc94/savina-stoitsova.jpg + website: http://www.ncipd.org/index.php?option=com_content&view=featured&Itemid=730&lang=en +- name: Tim Taylor + desc: Research Software Engineer interested in outbreak analytics and R package + development., London School of Hygiene and Tropical Medicine, UK., United Kingdom + img: https://dl.airtable.com/.attachments/082b754acf1d59abef38f084a5741d4b/55d5a6ea/tim-taylor.jpg + twitter: https://twitter.com/_TimT_ + github: https://github.com/tjtnew +- name: Scott Teesdale + desc: Product management; epidemiology, Resolve to Save Lives, Louisiana Department + of Health, United States + img: https://dl.airtable.com/.attachments/793c3054d4a61289e08faa7bd888dbec/7f720da6/scott-teesdale.jpg + website: https://resolvetosavelives.org/prevent-epidemics + twitter: https://twitter.com/ScottTees + github: https://github.com/steesdale +- name: Claire Thomson + desc: Deputy Secretary and Deputy Treasurer. Project coordinator with a Public Health + background., Imperial College London, UK., NA + img: https://dl.airtable.com/.attachments/e568579b8e94061a41b7cf9f0ade58a0/2bb4a81a/claire-thomson.jpg + website: http://www.imperial.ac.uk/people/c.thomson +- name: Achilleas Tsoumanis + desc: Biostatistician - R programmer - PhD candidate, Clinical Trials Unit, Institute + of Tropical Medicine, Antwerp, Belgium + img: https://dl.airtable.com/.attachments/21541a0de5155ca9a1bd4baee02bcac1/92cc187d/achilleas-tsoumanis.jpg +- name: Philip Turk + desc: Director of Biostatistics and Data Science, Atrium Health, United States + img: https://dl.airtable.com/.attachments/ddaaedc2e6a452f30a36e61a2d16eb7e/a1e7891d/philip-turk.jpg + website: https://atriumhealth.org/research/multi-disciplinary-centers-and-cores/core + github: https://github.com/philturk +- name: Nsikak Udoh + desc: Data analyst, University of Lagos, Nigeria + img: https://dl.airtable.com/.attachments/826d23542c8a03d8c368a0c86fdd4c5c/29037175/nsikak-udoh.jpg +- name: Aliyu Usman Kinafa + desc: Lecturer, Gombe State University, Nigeria + img: https://dl.airtable.com/.attachments/7106add71e7c0fef2847a6673dbb190e/0984ed79/aliyu-kinafa.jpg +- name: Esther van Kleef + desc: Senior epidemiologist. Special interest in (modelling) the transmission dynamics + of antimicrobial resistance and outbreak analytics., Institute of Tropical Medicine + Antwerp, Belgium + img: https://dl.airtable.com/.attachments/d3538acd345d513b8762d6b96936d03c/1f405bb7/esther-van-kleef.jpg + github: https://github.com/esthervankleef +- name: Jean-Pierre Veyrenche + desc: International expert (WHO, IOM, UNICEF) in WASH and operations management + for emergency response to health crises., Freelance consultant, France., NA + img: https://dl.airtable.com/.attachments/c3e61ff3b0730950f13c9289b43d2024/e94ce27e/jean-pierre-veyrenche.jpg +- name: Charlie Whittaker + desc: Treasurer, Vice-president. PhD student, epidemiologist, Imperial College, + London, United Kingdom + img: https://dl.airtable.com/.attachments/3357bed0918ba9d8f1acbabf10d4b085/bf1634a1/charlie-whittaker.jpg + website: https://www.imperial.ac.uk/people/charles.whittaker16 + twitter: https://twitter.com/charliewhittak + github: https://github.com/cwhittaker1000 +- name: K.M. Rukhsad Asif Zaman + desc: Field monitoring officer, data management and analysis using R, International + Health Regulation (IHR), CDC, DGHS, Bangladesh + img: https://dl.airtable.com/.attachments/3f625f21def1bb03df17412280a2ef7a/99f36310/k_m_-rukhsad-asif-zaman.jpg diff --git a/_includes/list-circles.html b/_includes/list-circles.html index afe90c3a..38cc2980 100644 --- a/_includes/list-circles.html +++ b/_includes/list-circles.html @@ -1,36 +1,38 @@ -
- {% for item in include.items %} -
- {% if item.img %} - {% if item.url %} - - {% else %} - - {% endif %} - {% endif %} - {% if item.name %} -

{{ item.name }}

- {% endif %} - {% if item.desc %} -
{{ item.desc }}
- {% endif %} - -
- {% endfor %} -
+
+ {% for item in include.items %} +
+ {% if item.img %} + {% if item.url %} + + {% else %} + + {% endif %} + {% else %} + + {% endif %} + {% if item.name %} +

{{ item.name }}

+ {% endif %} + {% if item.desc %} +
{{ item.desc }}
+ {% endif %} + +
+ {% endfor %} +
diff --git a/img/people/abraham-lagat.jpg b/img/people/abraham-lagat.jpg deleted file mode 100644 index 067bae43..00000000 Binary files a/img/people/abraham-lagat.jpg and /dev/null differ diff --git a/img/people/achilleas-tsoumanis.jpg b/img/people/achilleas-tsoumanis.jpg deleted file mode 100644 index 70d16743..00000000 Binary files a/img/people/achilleas-tsoumanis.jpg and /dev/null differ diff --git a/img/people/aditya-ramadona.jpg b/img/people/aditya-ramadona.jpg deleted file mode 100644 index 067bae43..00000000 Binary files a/img/people/aditya-ramadona.jpg and /dev/null differ diff --git a/img/people/adom-san-koffi.jpg b/img/people/adom-san-koffi.jpg deleted file mode 100644 index 9bebf217..00000000 Binary files a/img/people/adom-san-koffi.jpg and /dev/null differ diff --git a/img/people/ajay-oza.jpg b/img/people/ajay-oza.jpg deleted file mode 100644 index 9284feb6..00000000 Binary files a/img/people/ajay-oza.jpg and /dev/null differ diff --git a/img/people/ale-guy-franck-biaou.jpg b/img/people/ale-guy-franck-biaou.jpg deleted file mode 100644 index c5dd55be..00000000 Binary files a/img/people/ale-guy-franck-biaou.jpg and /dev/null differ diff --git a/img/people/alex-demarsh.jpg b/img/people/alex-demarsh.jpg deleted file mode 100644 index 2fafff29..00000000 Binary files a/img/people/alex-demarsh.jpg and /dev/null differ diff --git a/img/people/alex-spina.jpg b/img/people/alex-spina.jpg deleted file mode 100644 index 9267942b..00000000 Binary files a/img/people/alex-spina.jpg and /dev/null differ diff --git a/img/people/aliyu-kinafa.jpg b/img/people/aliyu-kinafa.jpg deleted file mode 100644 index 90f37f51..00000000 Binary files a/img/people/aliyu-kinafa.jpg and /dev/null differ diff --git a/img/people/aliyu-usman-kinafa.jpg b/img/people/aliyu-usman-kinafa.jpg deleted file mode 100644 index 90f37f51..00000000 Binary files a/img/people/aliyu-usman-kinafa.jpg and /dev/null differ diff --git a/img/people/amandeep-singh.jpg b/img/people/amandeep-singh.jpg deleted file mode 100644 index 2239f387..00000000 Binary files a/img/people/amandeep-singh.jpg and /dev/null differ diff --git a/img/people/aminata-ndiaye.jpg b/img/people/aminata-ndiaye.jpg deleted file mode 100644 index 94850630..00000000 Binary files a/img/people/aminata-ndiaye.jpg and /dev/null differ diff --git a/img/people/amrish-baidjoe.jpg b/img/people/amrish-baidjoe.jpg deleted file mode 100644 index 949665da..00000000 Binary files a/img/people/amrish-baidjoe.jpg and /dev/null differ diff --git a/img/people/amy-dighe.jpg b/img/people/amy-dighe.jpg deleted file mode 100644 index 6364e7fc..00000000 Binary files a/img/people/amy-dighe.jpg and /dev/null differ diff --git a/img/people/amy-gimma.jpg b/img/people/amy-gimma.jpg deleted file mode 100644 index 88044f70..00000000 Binary files a/img/people/amy-gimma.jpg and /dev/null differ diff --git a/img/people/amy-mikhail.jpg b/img/people/amy-mikhail.jpg deleted file mode 100644 index c3a00023..00000000 Binary files a/img/people/amy-mikhail.jpg and /dev/null differ diff --git a/img/people/andee-kaplan.jpg b/img/people/andee-kaplan.jpg deleted file mode 100644 index 2f3e228a..00000000 Binary files a/img/people/andee-kaplan.jpg and /dev/null differ diff --git a/img/people/andreas-handel.jpg b/img/people/andreas-handel.jpg deleted file mode 100644 index 8a9fede8..00000000 Binary files a/img/people/andreas-handel.jpg and /dev/null differ diff --git a/img/people/andy-south.jpg b/img/people/andy-south.jpg deleted file mode 100644 index 4a98acb4..00000000 Binary files a/img/people/andy-south.jpg and /dev/null differ diff --git a/img/people/anne-cori.jpg b/img/people/anne-cori.jpg deleted file mode 100644 index e18d17dc..00000000 Binary files a/img/people/anne-cori.jpg and /dev/null differ diff --git a/img/people/armand-sprecher.jpg b/img/people/armand-sprecher.jpg deleted file mode 100644 index aa444005..00000000 Binary files a/img/people/armand-sprecher.jpg and /dev/null differ diff --git a/img/people/arun-mitra.jpg b/img/people/arun-mitra.jpg deleted file mode 100644 index 4d2e062f..00000000 Binary files a/img/people/arun-mitra.jpg and /dev/null differ diff --git a/img/people/ayodele-adeyemo.jpg b/img/people/ayodele-adeyemo.jpg deleted file mode 100644 index 067bae43..00000000 Binary files a/img/people/ayodele-adeyemo.jpg and /dev/null differ diff --git a/img/people/barry-rowlingson.jpg b/img/people/barry-rowlingson.jpg deleted file mode 100644 index 4598de57..00000000 Binary files a/img/people/barry-rowlingson.jpg and /dev/null differ diff --git a/img/people/benido-impouma.jpg b/img/people/benido-impouma.jpg deleted file mode 100644 index 0e8006bf..00000000 Binary files a/img/people/benido-impouma.jpg and /dev/null differ diff --git a/img/people/benjamin-ortiz-ulloa.jpg b/img/people/benjamin-ortiz-ulloa.jpg deleted file mode 100644 index 75624dab..00000000 Binary files a/img/people/benjamin-ortiz-ulloa.jpg and /dev/null differ diff --git a/img/people/benjamin-roche.jpg b/img/people/benjamin-roche.jpg deleted file mode 100644 index a76210ad..00000000 Binary files a/img/people/benjamin-roche.jpg and /dev/null differ diff --git a/img/people/bertrand-sudre.jpg b/img/people/bertrand-sudre.jpg deleted file mode 100644 index 98e0ff2f..00000000 Binary files a/img/people/bertrand-sudre.jpg and /dev/null differ diff --git a/img/people/bing-zhang.jpg b/img/people/bing-zhang.jpg deleted file mode 100644 index 38ae1ed5..00000000 Binary files a/img/people/bing-zhang.jpg and /dev/null differ diff --git a/img/people/brooke-watson.jpg b/img/people/brooke-watson.jpg deleted file mode 100644 index 41de8d29..00000000 Binary files a/img/people/brooke-watson.jpg and /dev/null differ diff --git a/img/people/callum-arnold.jpg b/img/people/callum-arnold.jpg deleted file mode 100644 index 87df82a5..00000000 Binary files a/img/people/callum-arnold.jpg and /dev/null differ diff --git a/img/people/callum-thirkell.jpg b/img/people/callum-thirkell.jpg deleted file mode 100644 index 224ec39f..00000000 Binary files a/img/people/callum-thirkell.jpg and /dev/null differ diff --git a/img/people/charlie-whittaker.jpg b/img/people/charlie-whittaker.jpg deleted file mode 100644 index dce4d810..00000000 Binary files a/img/people/charlie-whittaker.jpg and /dev/null differ diff --git a/img/people/christian-massidi.jpg b/img/people/christian-massidi.jpg deleted file mode 100644 index 067bae43..00000000 Binary files a/img/people/christian-massidi.jpg and /dev/null differ diff --git a/img/people/christl-donnelly.jpg b/img/people/christl-donnelly.jpg deleted file mode 100644 index 7e02ce8a..00000000 Binary files a/img/people/christl-donnelly.jpg and /dev/null differ diff --git a/img/people/christopher-jarvis.jpg b/img/people/christopher-jarvis.jpg deleted file mode 100644 index 3a36bee2..00000000 Binary files a/img/people/christopher-jarvis.jpg and /dev/null differ diff --git a/img/people/cici-bauer.jpg b/img/people/cici-bauer.jpg deleted file mode 100644 index 5da0b835..00000000 Binary files a/img/people/cici-bauer.jpg and /dev/null differ diff --git a/img/people/claire-thomson.jpg b/img/people/claire-thomson.jpg deleted file mode 100644 index 9db0b048..00000000 Binary files a/img/people/claire-thomson.jpg and /dev/null differ diff --git a/img/people/daniel-gardiner.jpg b/img/people/daniel-gardiner.jpg deleted file mode 100644 index c783c4c0..00000000 Binary files a/img/people/daniel-gardiner.jpg and /dev/null differ diff --git a/img/people/daniel-thomas.jpg b/img/people/daniel-thomas.jpg deleted file mode 100644 index 067bae43..00000000 Binary files a/img/people/daniel-thomas.jpg and /dev/null differ diff --git a/img/people/david-champredon.jpg b/img/people/david-champredon.jpg deleted file mode 100644 index 15422437..00000000 Binary files a/img/people/david-champredon.jpg and /dev/null differ diff --git a/img/people/david-jorgensen.jpg b/img/people/david-jorgensen.jpg deleted file mode 100644 index 4b5be11e..00000000 Binary files a/img/people/david-jorgensen.jpg and /dev/null differ diff --git a/img/people/dean-attali.jpg b/img/people/dean-attali.jpg deleted file mode 100644 index 116f67b3..00000000 Binary files a/img/people/dean-attali.jpg and /dev/null differ diff --git a/img/people/dirk-schumacher.jpg b/img/people/dirk-schumacher.jpg deleted file mode 100644 index 97078c39..00000000 Binary files a/img/people/dirk-schumacher.jpg and /dev/null differ diff --git a/img/people/don-klinkenberg.jpg b/img/people/don-klinkenberg.jpg deleted file mode 100644 index f72159b7..00000000 Binary files a/img/people/don-klinkenberg.jpg and /dev/null differ diff --git a/img/people/eben-kenah.jpg b/img/people/eben-kenah.jpg deleted file mode 100644 index 0bbd5992..00000000 Binary files a/img/people/eben-kenah.jpg and /dev/null differ diff --git a/img/people/edwin-van-leeuwen.jpg b/img/people/edwin-van-leeuwen.jpg deleted file mode 100644 index c808d7db..00000000 Binary files a/img/people/edwin-van-leeuwen.jpg and /dev/null differ diff --git a/img/people/elisabeth-dahlqwist.jpg b/img/people/elisabeth-dahlqwist.jpg deleted file mode 100644 index bc4efc5b..00000000 Binary files a/img/people/elisabeth-dahlqwist.jpg and /dev/null differ diff --git a/img/people/ellie-sherrard-smith.jpg b/img/people/ellie-sherrard-smith.jpg deleted file mode 100644 index 79de916d..00000000 Binary files a/img/people/ellie-sherrard-smith.jpg and /dev/null differ diff --git a/img/people/emma-glennon.jpg b/img/people/emma-glennon.jpg deleted file mode 100644 index bcd1386d..00000000 Binary files a/img/people/emma-glennon.jpg and /dev/null differ diff --git a/img/people/erik-volz.jpg b/img/people/erik-volz.jpg deleted file mode 100644 index cc6d7105..00000000 Binary files a/img/people/erik-volz.jpg and /dev/null differ diff --git a/img/people/esther-van-kleef.jpg b/img/people/esther-van-kleef.jpg deleted file mode 100644 index 92428b3c..00000000 Binary files a/img/people/esther-van-kleef.jpg and /dev/null differ diff --git a/img/people/eve-miguel.jpg b/img/people/eve-miguel.jpg deleted file mode 100644 index ab723787..00000000 Binary files a/img/people/eve-miguel.jpg and /dev/null differ diff --git a/img/people/evgenia-markvardt.jpg b/img/people/evgenia-markvardt.jpg deleted file mode 100644 index cd1176a5..00000000 Binary files a/img/people/evgenia-markvardt.jpg and /dev/null differ diff --git a/img/people/facundo-munoz.jpg b/img/people/facundo-munoz.jpg deleted file mode 100644 index 1001ba54..00000000 Binary files a/img/people/facundo-munoz.jpg and /dev/null differ diff --git a/img/people/finlay-campbell.jpg b/img/people/finlay-campbell.jpg deleted file mode 100644 index 20a63e13..00000000 Binary files a/img/people/finlay-campbell.jpg and /dev/null differ diff --git a/img/people/flavio-finger.jpg b/img/people/flavio-finger.jpg deleted file mode 100644 index 68296412..00000000 Binary files a/img/people/flavio-finger.jpg and /dev/null differ diff --git a/img/people/gabor-csardi.jpg b/img/people/gabor-csardi.jpg deleted file mode 100644 index fb11100f..00000000 Binary files a/img/people/gabor-csardi.jpg and /dev/null differ diff --git a/img/people/george-githinji.jpg b/img/people/george-githinji.jpg deleted file mode 100644 index f79800e0..00000000 Binary files a/img/people/george-githinji.jpg and /dev/null differ diff --git a/img/people/gerry-tonkin-hill.jpg b/img/people/gerry-tonkin-hill.jpg deleted file mode 100644 index 57d8d913..00000000 Binary files a/img/people/gerry-tonkin-hill.jpg and /dev/null differ diff --git a/img/people/ghiwa-nassereddine.jpg b/img/people/ghiwa-nassereddine.jpg deleted file mode 100644 index c87b2d73..00000000 Binary files a/img/people/ghiwa-nassereddine.jpg and /dev/null differ diff --git a/img/people/greg-martin.jpg b/img/people/greg-martin.jpg deleted file mode 100644 index 12669dda..00000000 Binary files a/img/people/greg-martin.jpg and /dev/null differ diff --git a/img/people/gregory-armstrong.jpg b/img/people/gregory-armstrong.jpg deleted file mode 100644 index 6286e852..00000000 Binary files a/img/people/gregory-armstrong.jpg and /dev/null differ diff --git a/img/people/hannah-brindle.jpg b/img/people/hannah-brindle.jpg deleted file mode 100644 index 42c27842..00000000 Binary files a/img/people/hannah-brindle.jpg and /dev/null differ diff --git a/img/people/henry-kyobe-bosa.jpg b/img/people/henry-kyobe-bosa.jpg deleted file mode 100644 index c3cf0395..00000000 Binary files a/img/people/henry-kyobe-bosa.jpg and /dev/null differ diff --git a/img/people/ilana-schafer.jpg b/img/people/ilana-schafer.jpg deleted file mode 100644 index 33c1b949..00000000 Binary files a/img/people/ilana-schafer.jpg and /dev/null differ diff --git a/img/people/inger-damon.jpg b/img/people/inger-damon.jpg deleted file mode 100644 index 0c1a27bc..00000000 Binary files a/img/people/inger-damon.jpg and /dev/null differ diff --git a/img/people/ioannis-karagiannis.jpg b/img/people/ioannis-karagiannis.jpg deleted file mode 100644 index 83e43805..00000000 Binary files a/img/people/ioannis-karagiannis.jpg and /dev/null differ diff --git a/img/people/irina-czogiel.jpg b/img/people/irina-czogiel.jpg deleted file mode 100644 index fdacedd4..00000000 Binary files a/img/people/irina-czogiel.jpg and /dev/null differ diff --git a/img/people/isabel-rodriguez.jpg b/img/people/isabel-rodriguez.jpg deleted file mode 100644 index 0164fa72..00000000 Binary files a/img/people/isabel-rodriguez.jpg and /dev/null differ diff --git a/img/people/jacco-wallinga.jpg b/img/people/jacco-wallinga.jpg deleted file mode 100644 index f97ab074..00000000 Binary files a/img/people/jacco-wallinga.jpg and /dev/null differ diff --git a/img/people/jakob-schumacher.jpg b/img/people/jakob-schumacher.jpg deleted file mode 100644 index 0e2c64fc..00000000 Binary files a/img/people/jakob-schumacher.jpg and /dev/null differ diff --git a/img/people/jamalludin-ab-rahman.jpg b/img/people/jamalludin-ab-rahman.jpg deleted file mode 100644 index ecae40cd..00000000 Binary files a/img/people/jamalludin-ab-rahman.jpg and /dev/null differ diff --git a/img/people/james-hayward.jpg b/img/people/james-hayward.jpg deleted file mode 100644 index b9addd51..00000000 Binary files a/img/people/james-hayward.jpg and /dev/null differ diff --git a/img/people/james-tyson.jpg b/img/people/james-tyson.jpg deleted file mode 100644 index 0317b96b..00000000 Binary files a/img/people/james-tyson.jpg and /dev/null differ diff --git a/img/people/janetta-skarp.jpg b/img/people/janetta-skarp.jpg deleted file mode 100644 index 93002089..00000000 Binary files a/img/people/janetta-skarp.jpg and /dev/null differ diff --git a/img/people/jean-pierre-veyrenche.jpg b/img/people/jean-pierre-veyrenche.jpg deleted file mode 100644 index 6ee84e52..00000000 Binary files a/img/people/jean-pierre-veyrenche.jpg and /dev/null differ diff --git a/img/people/jeff-eaton.jpg b/img/people/jeff-eaton.jpg deleted file mode 100644 index 35267a6c..00000000 Binary files a/img/people/jeff-eaton.jpg and /dev/null differ diff --git a/img/people/jennifer-gardy.jpg b/img/people/jennifer-gardy.jpg deleted file mode 100644 index 5468e3fa..00000000 Binary files a/img/people/jennifer-gardy.jpg and /dev/null differ diff --git a/img/people/jennifer-myers.jpg b/img/people/jennifer-myers.jpg deleted file mode 100644 index 701898b2..00000000 Binary files a/img/people/jennifer-myers.jpg and /dev/null differ diff --git a/img/people/jeroen-de-korte.jpg b/img/people/jeroen-de-korte.jpg deleted file mode 100644 index b0e4c6d4..00000000 Binary files a/img/people/jeroen-de-korte.jpg and /dev/null differ diff --git a/img/people/joana-gomes-dias.jpg b/img/people/joana-gomes-dias.jpg deleted file mode 100644 index ccaf8374..00000000 Binary files a/img/people/joana-gomes-dias.jpg and /dev/null differ diff --git a/img/people/joanna-lewis.jpg b/img/people/joanna-lewis.jpg deleted file mode 100644 index 2fd971cd..00000000 Binary files a/img/people/joanna-lewis.jpg and /dev/null differ diff --git a/img/people/john-lees.jpg b/img/people/john-lees.jpg deleted file mode 100644 index 96b32cdc..00000000 Binary files a/img/people/john-lees.jpg and /dev/null differ diff --git a/img/people/jon-zelner.jpg b/img/people/jon-zelner.jpg deleted file mode 100644 index 9541029e..00000000 Binary files a/img/people/jon-zelner.jpg and /dev/null differ diff --git a/img/people/jonathan-polonsky.jpg b/img/people/jonathan-polonsky.jpg deleted file mode 100644 index d337e7e9..00000000 Binary files a/img/people/jonathan-polonsky.jpg and /dev/null differ diff --git a/img/people/joshua-kaminsky.jpg b/img/people/joshua-kaminsky.jpg deleted file mode 100644 index b1201601..00000000 Binary files a/img/people/joshua-kaminsky.jpg and /dev/null differ diff --git "a/img/people/jos\303\251-guerra.jpg" "b/img/people/jos\303\251-guerra.jpg" deleted file mode 100644 index 067bae43..00000000 Binary files "a/img/people/jos\303\251-guerra.jpg" and /dev/null differ diff --git a/img/people/julia-palacios.jpg b/img/people/julia-palacios.jpg deleted file mode 100644 index dd5dc268..00000000 Binary files a/img/people/julia-palacios.jpg and /dev/null differ diff --git a/img/people/juliet-pulliam.jpg b/img/people/juliet-pulliam.jpg deleted file mode 100644 index 7c0c3b9f..00000000 Binary files a/img/people/juliet-pulliam.jpg and /dev/null differ diff --git a/img/people/julieta-saluzzo.jpg b/img/people/julieta-saluzzo.jpg deleted file mode 100644 index 067bae43..00000000 Binary files a/img/people/julieta-saluzzo.jpg and /dev/null differ diff --git a/img/people/jun-cai.jpg b/img/people/jun-cai.jpg deleted file mode 100644 index 78e803e7..00000000 Binary files a/img/people/jun-cai.jpg and /dev/null differ diff --git a/img/people/justin-lessler.jpg b/img/people/justin-lessler.jpg deleted file mode 100644 index da4c2279..00000000 Binary files a/img/people/justin-lessler.jpg and /dev/null differ diff --git a/img/people/k.m.-rukhsad-asif-zaman.jpg b/img/people/k.m.-rukhsad-asif-zaman.jpg deleted file mode 100644 index 308e7a7b..00000000 Binary files a/img/people/k.m.-rukhsad-asif-zaman.jpg and /dev/null differ diff --git a/img/people/kamarul-imran-musa.jpg b/img/people/kamarul-imran-musa.jpg deleted file mode 100644 index b0b9d708..00000000 Binary files a/img/people/kamarul-imran-musa.jpg and /dev/null differ diff --git a/img/people/karthik-ram.jpg b/img/people/karthik-ram.jpg deleted file mode 100644 index 4966e94b..00000000 Binary files a/img/people/karthik-ram.jpg and /dev/null differ diff --git a/img/people/katie-planey.jpg b/img/people/katie-planey.jpg deleted file mode 100644 index 7fcdbc10..00000000 Binary files a/img/people/katie-planey.jpg and /dev/null differ diff --git a/img/people/kazim-beebeejaun.jpg b/img/people/kazim-beebeejaun.jpg deleted file mode 100644 index e5f9566f..00000000 Binary files a/img/people/kazim-beebeejaun.jpg and /dev/null differ diff --git a/img/people/kevin-mcdermott.jpg b/img/people/kevin-mcdermott.jpg deleted file mode 100644 index 854fc855..00000000 Binary files a/img/people/kevin-mcdermott.jpg and /dev/null differ diff --git a/img/people/lore-merdrignac.jpg b/img/people/lore-merdrignac.jpg deleted file mode 100644 index b40afec0..00000000 Binary files a/img/people/lore-merdrignac.jpg and /dev/null differ diff --git a/img/people/lukas-richter.jpg b/img/people/lukas-richter.jpg deleted file mode 100644 index a17ee117..00000000 Binary files a/img/people/lukas-richter.jpg and /dev/null differ diff --git a/img/people/lulla-opatowski.jpg b/img/people/lulla-opatowski.jpg deleted file mode 100644 index 756e9e61..00000000 Binary files a/img/people/lulla-opatowski.jpg and /dev/null differ diff --git a/img/people/mahendra-bhandari.jpg b/img/people/mahendra-bhandari.jpg deleted file mode 100644 index 436f5a66..00000000 Binary files a/img/people/mahendra-bhandari.jpg and /dev/null differ diff --git a/img/people/manuel-albela-miranda.jpg b/img/people/manuel-albela-miranda.jpg deleted file mode 100644 index 067bae43..00000000 Binary files a/img/people/manuel-albela-miranda.jpg and /dev/null differ diff --git a/img/people/mara-kont.jpg b/img/people/mara-kont.jpg deleted file mode 100644 index 8bab66a3..00000000 Binary files a/img/people/mara-kont.jpg and /dev/null differ diff --git a/img/people/marc-baguelin.jpg b/img/people/marc-baguelin.jpg deleted file mode 100644 index 1035889d..00000000 Binary files a/img/people/marc-baguelin.jpg and /dev/null differ diff --git a/img/people/maria-saavedra-campos.jpg b/img/people/maria-saavedra-campos.jpg deleted file mode 100644 index 33e502d3..00000000 Binary files a/img/people/maria-saavedra-campos.jpg and /dev/null differ diff --git a/img/people/maria-van-kerkhove.jpg b/img/people/maria-van-kerkhove.jpg deleted file mode 100644 index 542cd0f8..00000000 Binary files a/img/people/maria-van-kerkhove.jpg and /dev/null differ diff --git a/img/people/martin-hinsch.jpg b/img/people/martin-hinsch.jpg deleted file mode 100644 index 31393542..00000000 Binary files a/img/people/martin-hinsch.jpg and /dev/null differ diff --git a/img/people/matthew-biggerstaff.jpg b/img/people/matthew-biggerstaff.jpg deleted file mode 100644 index a473385e..00000000 Binary files a/img/people/matthew-biggerstaff.jpg and /dev/null differ diff --git a/img/people/matthieu-rolland.jpg b/img/people/matthieu-rolland.jpg deleted file mode 100644 index 8acbde22..00000000 Binary files a/img/people/matthieu-rolland.jpg and /dev/null differ diff --git a/img/people/matthijs-berends.jpg b/img/people/matthijs-berends.jpg deleted file mode 100644 index 9930c474..00000000 Binary files a/img/people/matthijs-berends.jpg and /dev/null differ diff --git a/img/people/meryam-krit.jpg b/img/people/meryam-krit.jpg deleted file mode 100644 index 13a9507b..00000000 Binary files a/img/people/meryam-krit.jpg and /dev/null differ diff --git a/img/people/michael-hohle.jpg b/img/people/michael-hohle.jpg deleted file mode 100644 index ade4e596..00000000 Binary files a/img/people/michael-hohle.jpg and /dev/null differ diff --git a/img/people/michael-johansson.jpg b/img/people/michael-johansson.jpg deleted file mode 100644 index 067bae43..00000000 Binary files a/img/people/michael-johansson.jpg and /dev/null differ diff --git a/img/people/mika-braginsky.jpg b/img/people/mika-braginsky.jpg deleted file mode 100644 index 571ef0d8..00000000 Binary files a/img/people/mika-braginsky.jpg and /dev/null differ diff --git a/img/people/mohammad-kibria.jpg b/img/people/mohammad-kibria.jpg deleted file mode 100644 index 87eb2948..00000000 Binary files a/img/people/mohammad-kibria.jpg and /dev/null differ diff --git a/img/people/monday-osagie-adenomon.jpg b/img/people/monday-osagie-adenomon.jpg deleted file mode 100644 index 91320a43..00000000 Binary files a/img/people/monday-osagie-adenomon.jpg and /dev/null differ diff --git a/img/people/neale-batra.jpg b/img/people/neale-batra.jpg deleted file mode 100644 index 61fe4a0f..00000000 Binary files a/img/people/neale-batra.jpg and /dev/null differ diff --git a/img/people/nelson-kibinge.jpg b/img/people/nelson-kibinge.jpg deleted file mode 100644 index 7d1a6a1f..00000000 Binary files a/img/people/nelson-kibinge.jpg and /dev/null differ diff --git a/img/people/nicole-white.jpg b/img/people/nicole-white.jpg deleted file mode 100644 index ce985a4a..00000000 Binary files a/img/people/nicole-white.jpg and /dev/null differ diff --git a/img/people/nistara-randhawa.jpg b/img/people/nistara-randhawa.jpg deleted file mode 100644 index 0abdeae7..00000000 Binary files a/img/people/nistara-randhawa.jpg and /dev/null differ diff --git a/img/people/noam-ross.jpg b/img/people/noam-ross.jpg deleted file mode 100644 index 2fec412b..00000000 Binary files a/img/people/noam-ross.jpg and /dev/null differ diff --git a/img/people/nsikak-udoh.jpg b/img/people/nsikak-udoh.jpg deleted file mode 100644 index 658bb896..00000000 Binary files a/img/people/nsikak-udoh.jpg and /dev/null differ diff --git a/img/people/oliver-mcmanus.jpg b/img/people/oliver-mcmanus.jpg deleted file mode 100644 index 4761a90c..00000000 Binary files a/img/people/oliver-mcmanus.jpg and /dev/null differ diff --git a/img/people/oliver-morgan.jpg b/img/people/oliver-morgan.jpg deleted file mode 100644 index cffc90eb..00000000 Binary files a/img/people/oliver-morgan.jpg and /dev/null differ diff --git a/img/people/oliver-watson.jpg b/img/people/oliver-watson.jpg deleted file mode 100644 index 33e650c5..00000000 Binary files a/img/people/oliver-watson.jpg and /dev/null differ diff --git a/img/people/olivia-boyd.jpg b/img/people/olivia-boyd.jpg deleted file mode 100644 index 8d1ac5d2..00000000 Binary files a/img/people/olivia-boyd.jpg and /dev/null differ diff --git a/img/people/olivier-le-polain.jpg b/img/people/olivier-le-polain.jpg deleted file mode 100644 index b024099d..00000000 Binary files a/img/people/olivier-le-polain.jpg and /dev/null differ diff --git a/img/people/patrick-keating.jpg b/img/people/patrick-keating.jpg deleted file mode 100644 index 1c5e1843..00000000 Binary files a/img/people/patrick-keating.jpg and /dev/null differ diff --git a/img/people/paula-moraga.jpg b/img/people/paula-moraga.jpg deleted file mode 100644 index cceb6805..00000000 Binary files a/img/people/paula-moraga.jpg and /dev/null differ diff --git a/img/people/pavel-skums.jpg b/img/people/pavel-skums.jpg deleted file mode 100644 index d912979c..00000000 Binary files a/img/people/pavel-skums.jpg and /dev/null differ diff --git a/img/people/pawel-piatkowski.jpg b/img/people/pawel-piatkowski.jpg deleted file mode 100644 index 80b3b3c6..00000000 Binary files a/img/people/pawel-piatkowski.jpg and /dev/null differ diff --git a/img/people/philip-abdelmalik.jpg b/img/people/philip-abdelmalik.jpg deleted file mode 100644 index 067bae43..00000000 Binary files a/img/people/philip-abdelmalik.jpg and /dev/null differ diff --git a/img/people/philip-turk.jpg b/img/people/philip-turk.jpg deleted file mode 100644 index 08f97e63..00000000 Binary files a/img/people/philip-turk.jpg and /dev/null differ diff --git a/img/people/pierre-nouvellet.jpg b/img/people/pierre-nouvellet.jpg deleted file mode 100644 index 8e32e485..00000000 Binary files a/img/people/pierre-nouvellet.jpg and /dev/null differ diff --git a/img/people/rafael-lopes-paixao-da-silva.jpg b/img/people/rafael-lopes-paixao-da-silva.jpg deleted file mode 100644 index 317b2638..00000000 Binary files a/img/people/rafael-lopes-paixao-da-silva.jpg and /dev/null differ diff --git a/img/people/rawan-araj.jpg b/img/people/rawan-araj.jpg deleted file mode 100644 index 5b8333f1..00000000 Binary files a/img/people/rawan-araj.jpg and /dev/null differ diff --git a/img/people/rich-fitzjohn.jpg b/img/people/rich-fitzjohn.jpg deleted file mode 100644 index ee483104..00000000 Binary files a/img/people/rich-fitzjohn.jpg and /dev/null differ diff --git a/img/people/robert-balshaw.jpg b/img/people/robert-balshaw.jpg deleted file mode 100644 index d64cf9c1..00000000 Binary files a/img/people/robert-balshaw.jpg and /dev/null differ diff --git a/img/people/robin-thompson.jpg b/img/people/robin-thompson.jpg deleted file mode 100644 index ba1fbbbc..00000000 Binary files a/img/people/robin-thompson.jpg and /dev/null differ diff --git a/img/people/roger-morbey.jpg b/img/people/roger-morbey.jpg deleted file mode 100644 index f5c74acf..00000000 Binary files a/img/people/roger-morbey.jpg and /dev/null differ diff --git a/img/people/rolina-van-gaalen.jpg b/img/people/rolina-van-gaalen.jpg deleted file mode 100644 index a4da576b..00000000 Binary files a/img/people/rolina-van-gaalen.jpg and /dev/null differ diff --git a/img/people/roz-eggo.jpg b/img/people/roz-eggo.jpg deleted file mode 100644 index a8558589..00000000 Binary files a/img/people/roz-eggo.jpg and /dev/null differ diff --git a/img/people/sai-thein-than-tun.jpg b/img/people/sai-thein-than-tun.jpg deleted file mode 100644 index c9cfc6f7..00000000 Binary files a/img/people/sai-thein-than-tun.jpg and /dev/null differ diff --git a/img/people/salla-toikkanen.jpg b/img/people/salla-toikkanen.jpg deleted file mode 100644 index 82486738..00000000 Binary files a/img/people/salla-toikkanen.jpg and /dev/null differ diff --git a/img/people/samuel-jenness.jpg b/img/people/samuel-jenness.jpg deleted file mode 100644 index 659dc600..00000000 Binary files a/img/people/samuel-jenness.jpg and /dev/null differ diff --git a/img/people/sangeeta-bhatia.jpg b/img/people/sangeeta-bhatia.jpg deleted file mode 100644 index 6b9c43d3..00000000 Binary files a/img/people/sangeeta-bhatia.jpg and /dev/null differ diff --git a/img/people/savina-stoitsova.jpg b/img/people/savina-stoitsova.jpg deleted file mode 100644 index 326f551f..00000000 Binary files a/img/people/savina-stoitsova.jpg and /dev/null differ diff --git a/img/people/scott-teesdale.jpg b/img/people/scott-teesdale.jpg deleted file mode 100644 index c949a62d..00000000 Binary files a/img/people/scott-teesdale.jpg and /dev/null differ diff --git a/img/people/shikun-li.jpg b/img/people/shikun-li.jpg deleted file mode 100644 index c7a1b059..00000000 Binary files a/img/people/shikun-li.jpg and /dev/null differ diff --git a/img/people/simon-cauchemez.jpg b/img/people/simon-cauchemez.jpg deleted file mode 100644 index 8ed4684c..00000000 Binary files a/img/people/simon-cauchemez.jpg and /dev/null differ diff --git a/img/people/simon-firestone.jpg b/img/people/simon-firestone.jpg deleted file mode 100644 index 6ce3cdce..00000000 Binary files a/img/people/simon-firestone.jpg and /dev/null differ diff --git a/img/people/simon-frost.jpg b/img/people/simon-frost.jpg deleted file mode 100644 index e9349bbf..00000000 Binary files a/img/people/simon-frost.jpg and /dev/null differ diff --git a/img/people/soledad-colombe.jpg b/img/people/soledad-colombe.jpg deleted file mode 100644 index f0589d36..00000000 Binary files a/img/people/soledad-colombe.jpg and /dev/null differ diff --git a/img/people/sompob-saralamba.jpg b/img/people/sompob-saralamba.jpg deleted file mode 100644 index dc69cb48..00000000 Binary files a/img/people/sompob-saralamba.jpg and /dev/null differ diff --git a/img/people/stefan-kroeger.jpg b/img/people/stefan-kroeger.jpg deleted file mode 100644 index d632a291..00000000 Binary files a/img/people/stefan-kroeger.jpg and /dev/null differ diff --git a/img/people/stephan-gloeckner.jpg b/img/people/stephan-gloeckner.jpg deleted file mode 100644 index 694eb913..00000000 Binary files a/img/people/stephan-gloeckner.jpg and /dev/null differ diff --git a/img/people/tambri-housen.jpg b/img/people/tambri-housen.jpg deleted file mode 100644 index 265ca9ce..00000000 Binary files a/img/people/tambri-housen.jpg and /dev/null differ diff --git a/img/people/thibaut-jombart.jpg b/img/people/thibaut-jombart.jpg deleted file mode 100644 index d685d2a3..00000000 Binary files a/img/people/thibaut-jombart.jpg and /dev/null differ diff --git a/img/people/thomas-crellen.jpg b/img/people/thomas-crellen.jpg deleted file mode 100644 index 76efe542..00000000 Binary files a/img/people/thomas-crellen.jpg and /dev/null differ diff --git a/img/people/thomas-finnie.jpg b/img/people/thomas-finnie.jpg deleted file mode 100644 index 4da63143..00000000 Binary files a/img/people/thomas-finnie.jpg and /dev/null differ diff --git a/img/people/thomas-yokota.jpg b/img/people/thomas-yokota.jpg deleted file mode 100644 index 067bae43..00000000 Binary files a/img/people/thomas-yokota.jpg and /dev/null differ diff --git a/img/people/tim-taylor.jpg b/img/people/tim-taylor.jpg deleted file mode 100644 index b88179d2..00000000 Binary files a/img/people/tim-taylor.jpg and /dev/null differ diff --git a/img/people/timothy-ogunleye.jpg b/img/people/timothy-ogunleye.jpg deleted file mode 100644 index bb679801..00000000 Binary files a/img/people/timothy-ogunleye.jpg and /dev/null differ diff --git a/img/people/tini-garske.jpg b/img/people/tini-garske.jpg deleted file mode 100644 index a29dabb2..00000000 Binary files a/img/people/tini-garske.jpg and /dev/null differ diff --git a/img/people/tomas-aragon.jpg b/img/people/tomas-aragon.jpg deleted file mode 100644 index 258506a5..00000000 Binary files a/img/people/tomas-aragon.jpg and /dev/null differ diff --git a/img/people/tony-stewart.jpg b/img/people/tony-stewart.jpg deleted file mode 100644 index 6337e3e5..00000000 Binary files a/img/people/tony-stewart.jpg and /dev/null differ diff --git a/img/people/tony-tsai.jpg b/img/people/tony-tsai.jpg deleted file mode 100644 index 78e803e7..00000000 Binary files a/img/people/tony-tsai.jpg and /dev/null differ diff --git a/img/people/vp-nagraj.jpg b/img/people/vp-nagraj.jpg deleted file mode 100644 index 500f0709..00000000 Binary files a/img/people/vp-nagraj.jpg and /dev/null differ diff --git a/img/people/xavier-didelot.jpg b/img/people/xavier-didelot.jpg deleted file mode 100644 index 43a0f876..00000000 Binary files a/img/people/xavier-didelot.jpg and /dev/null differ diff --git a/img/people/yalda-jafari.jpg b/img/people/yalda-jafari.jpg deleted file mode 100644 index 067bae43..00000000 Binary files a/img/people/yalda-jafari.jpg and /dev/null differ diff --git a/img/people/ying-shih-su.jpg b/img/people/ying-shih-su.jpg deleted file mode 100644 index df180bf8..00000000 Binary files a/img/people/ying-shih-su.jpg and /dev/null differ diff --git a/img/people/yu-luo.jpg b/img/people/yu-luo.jpg deleted file mode 100644 index 29d1eef7..00000000 Binary files a/img/people/yu-luo.jpg and /dev/null differ diff --git a/img/people/zhian-kamvar.jpg b/img/people/zhian-kamvar.jpg deleted file mode 100644 index cb78cbf1..00000000 Binary files a/img/people/zhian-kamvar.jpg and /dev/null differ diff --git a/img/people/zulma-cucunuba.jpg b/img/people/zulma-cucunuba.jpg deleted file mode 100644 index bc462340..00000000 Binary files a/img/people/zulma-cucunuba.jpg and /dev/null differ diff --git a/join.md b/join.md index 03d88b34..ebbefefe 100644 --- a/join.md +++ b/join.md @@ -1,119 +1,114 @@ ---- -title: Joining us ---- - - -## How can I join the RECON community? - -There are two ways to join our community, corresponding to different degrees of -involvement: - -- as a *subscriber* following our activities, by sending us an email to admin@repidemicsconsortium.org -and getting involved in discussions on our -[Slack organisation](https://reconhub.slack.com) - -- as a *member*, who actively contributes to the development of analytics - resources for RECON's areas of interest; this is typically more involved but - also offers advantages reserved to members; see the *Becoming a member* - section below - - -
- -## Becoming a member - -### Who are our members? - -[Our members](../people) form the backbone of RECON. They are actively involved in the -development of analytics tools, contribute free and open training material, run -our workshops, teach at our short courses, or are deployed to the field where -they battle-test our resources to inform the response to disease outbreaks, -health emergencies, and humanitarian crises. Through votes at our annual General -Assembly, they can shape activities of RECON, and are also elligible for roles -in the Executive Board. - - -### Why become a member? - -Members benefit from a number of advantages; they can: - -- attend general assemblies to shape the activities of RECON -- have free access to the RECON mailing lists and forums -- advertise their work, when in line with the remit of RECON, on the association - media, including newsletters, mailing lists, discussion forums, blogs and - websites -- possess a confidential list of other RECON members to facilitate networking - within the association -- attend meetings not otherwise open to the public, such as internal training - workshops, hackathons and retreats organised by the association -- typically get a discount on RECON events where a registration fee applies -- apply for, and benefit from internal resources of RECON (e.g. funding, - equipment) -- (contributing members) vote at general assemblies to shape the activities of RECON -- (contributing members) be candidates to any post of the executive board during its election - -Benefits to members are formally defined in *Article 5.4* of our -[statutes](documents/statutes_en_1.2.pdf) - - - -### How to become a member? - -RECON aims to gather a community of people actively involved in the development -of free analytics resources to inform the response to disease outbreaks, health -emergencies, and humanitarian crises. Beyond the development of analytics tools, -this also includes people contributing to training and capacity building, and -people battle-testing our resources in the field. - - -Anyone can apply to become a *regular member* of RECON, in order to be involved in -RECON projects and events. *Contributing members* need to have made a contribution -in any of the areas of RECON activities including software development, training -and capacity building, or field deployment. See -[our statutes](https://www.repidemicsconsortium.org/documents/statutes_en_1.2.pdf) -for more details on contributions; below is a quick summary: - -- *software development*: you made a substantial contribution to RECON packages - (hosted at https://github.com/reconhub), either through new functions, new - automated tests, documented datasets, or by contributing new documentation - -- *training and capacity building*: you contributed training material, - typically on https://reconlearn.org, taught at one of our short courses, or - co-organised a RECON workshop or a similar event using RECON materials - -- *field deployment*: you battle-tested our resources during a deployment *in - country* to respond to a disease outbreak, a health emergency, or a - humanitarian crisis - - -### Online application form - -To send a membership application, follow [this link](https://forms.gle/jew2yFz4HYTYJVKg6). - - -## Data privacy statement - -In relation to the -[General Data Protection Regulation (GDPR)](https://ico.org.uk/for-organisations/guide-to-the-general-data-protection-regulation-gdpr/individual-rights/), -we hereby provide you with information regarding the data you provide while -joining RECON as a member. In short: - -- '*your data*' refers to the information you provide when sending a request to - become a RECON member using the form linked above, including the profile - picture displayed online; when filling in the form, it will be made clear - which data becomes public or remains private; private data will typically be - your contact details - -- your data will not be used for any commercial purpose - -- the public part of your data will be used to generate your - [public profile](../people) on the RECON - website; this does not include personal contact information - -- your private data may be made available to other RECON members; when filling - in the form, you will be asked if you wish for this data to be made available - -- you can review, amend, or remove your data by [contacting us](../contact) via - email - - +--- +title: Joining us +--- + + +## How can I join the RECON community? + +There are multiple ways to get involved with RECON + +- Subscribe our *email announcements list* to keep up with our activities and learn + about development, training, or deployment opportunities. Sign up with the + [form below](#online-application-form). +- Join our [*Slack workspace*](https://reconhub.slack.com/) to chat with others involved in RECON activities + and use RECON tools. +- Join as a *member*, who actively contributes to the development of analytics + resources for RECON's areas of interest; this is typically more involved but + also offers advantages reserved to members; see the *Becoming a member* + section below + +## Becoming a member + +### Who are our members? + +[Our members](../people) form the backbone of RECON. They are actively involved in the +development of analytics tools, contribute free and open training material, run +our workshops, teach at our short courses, or are deployed to the field where +they battle-test our resources to inform the response to disease outbreaks, +health emergencies, and humanitarian crises. Through votes at our annual General +Assembly, they can shape activities of RECON, and are also elligible for roles +in the Executive Board. + + +### Why become a member? + +Members benefit from a number of advantages; they can: + +- attend general assemblies to shape the activities of RECON +- have free access to the RECON mailing lists and forums +- advertise their work, when in line with the remit of RECON, on the association + media, including newsletters, mailing lists, discussion forums, blogs and + websites +- possess a confidential list of other RECON members to facilitate networking + within the association +- attend meetings not otherwise open to the public, such as internal training + workshops, hackathons and retreats organised by the association +- typically get a discount on RECON events where a registration fee applies +- apply for, and benefit from internal resources of RECON (e.g. funding, + equipment) +- (contributing members) vote at general assemblies to shape the activities of RECON +- (contributing members) be candidates to any post of the executive board during its election + +Benefits to members are formally defined in *Article 5.4* of our +[statutes](documents/statutes_en_1.2.pdf) + + + +### How to become a member? + +RECON aims to gather a community of people actively involved in the development +of free analytics resources to inform the response to disease outbreaks, health +emergencies, and humanitarian crises. Beyond the development of analytics tools, +this also includes people contributing to training and capacity building, and +people battle-testing our resources in the field. + +Anyone can apply to become a *regular member* of RECON, in order to be involved in +RECON projects and events. *Contributing members* need to have made a contribution +in any of the areas of RECON activities including software development, training +and capacity building, or field deployment. See +[our statutes](https://www.repidemicsconsortium.org/documents/statutes_en_1.2.pdf) +for more details on contributions; below is a quick summary: + +- *software development*: you made a substantial contribution to RECON packages + (hosted at https://github.com/reconhub), either through new functions, new + automated tests, documented datasets, or by contributing new documentation + +- *training and capacity building*: you contributed training material, + typically on https://reconlearn.org, taught at one of our short courses, or + co-organised a RECON workshop or a similar event using RECON materials + +- *field deployment*: you battle-tested our resources during a deployment *in + country* to respond to a disease outbreak, a health emergency, or a + humanitarian crisis + +### Online application form + + + + +## Data privacy statement + +In relation to the +[General Data Protection Regulation (GDPR)](https://ico.org.uk/for-organisations/guide-to-the-general-data-protection-regulation-gdpr/individual-rights/), +we hereby provide you with information regarding the data you provide while +joining RECON as a member. In short: + +- '*your data*' refers to the information you provide when sending a request to + become a RECON member using the form linked above, including the profile + picture displayed online; when filling in the form, it will be made clear + which data becomes public or remains private; private data will typically be + your contact details + +- your data will not be used for any commercial purpose + +- the public part of your data will be used to generate your + [public profile](../people) on the RECON + website; this does not include personal contact information + +- your private data may be made available to other RECON members; when filling + in the form, you will be asked if you wish for this data to be made available + +- you can review, amend, or remove your data by [contacting us](../contact) via + email + + diff --git a/mara-kont.jpg b/mara-kont.jpg deleted file mode 100644 index 8bab66a3..00000000 Binary files a/mara-kont.jpg and /dev/null differ diff --git a/monday-osagie-adenomon.jpg b/monday-osagie-adenomon.jpg deleted file mode 100644 index 91320a43..00000000 Binary files a/monday-osagie-adenomon.jpg and /dev/null differ diff --git a/people.md b/people.md index 608bb89c..ddf07883 100644 --- a/people.md +++ b/people.md @@ -1,538 +1,25 @@ --- title: People subtitle: The humans behind this project -executive-board: - - name: Thibaut Jombart - img: /img/people/thibaut-jombart.jpg - desc: Founder, President. Statistician and R programmer specialized in outbreak analysis. London School of Hygiene and Tropical Medicine / Imperial College London, UK. - website: https://thibautjombart.netlify.com/ - url: https://thibautjombart.netlify.com/ - github: https://github.com/thibautjombart/ - twitter: https://twitter.com/TeebzR - - name: Soledad Colombe - img: /img/people/soledad-colombe.jpg - desc: Secretary. Infectious disease epidemiologist with a strong interest in zoonotic diseases. Outbreak Research Team, Institute of Tropical Medicine, Antwerp, Belgium. - github: https://github.com/scolombe - twitter: https://twitter.com/S_Colombe - - name: Janetta Skarp - img: /img/people/janetta-skarp.jpg - desc: Training Coordinator. PhD student working in infectious disease modelling, contributor to RECON packages. Imperial College London, UK. - github: https://github.com/jeskarp - url: https://github.com/jeskarp - - name: Noam Ross - img: /img/people/noam-ross.jpg - desc: Vice-President. Disease Ecologist and Principal Scientist, Computational Research. Software peer review lead for rOpenSci. EcoHealth Alliance United States. - website: https://www.noamross.net - url: https://www.noamross.net - github: https://github.com/noamross - twitter: https://twitter.com/noamross -advisory-board: - - name: Gregory Armstrong - img: /img/people/gregory-armstrong.jpg - desc: Director of the Advanced Molecular Detection initiative, with extensive experience in epidemiology and outbreak response at CDC, Atlanta, USA. - website: http://www.cdc.gov/amd/ - url: http://www.cdc.gov/amd/ - twitter: https://twitter.com/CDC_AMD - - name: Gabor Csardi - img: /img/people/gabor-csardi.jpg - desc: Computer scientist with a strong background in statistics and network theory, Gabor is a prominent member of the R community who develops and contributes to a number of major packages such as igraph, roxygen and R6. Mango Solutions, Chippenham, UK. - website: http://gaborcsardi.org/ - url: http://gaborcsardi.org/ - github: http://github.com/gaborcsardi - twitter: http://twitter.com/gaborcsardi - - name: Christl Donnelly - img: /img/people/christl-donnelly.jpg - desc: Professor of Statistical Epidemiology, Fellow of the Royal Society, Christl has extensive experience in epidemics analysis and emergency outbreak response. Imperial College London, UK. - website: http://www.imperial.ac.uk/people/c.donnelly - url: http://www.imperial.ac.uk/people/c.donnelly - - name: Jennifer Gardy - img: /img/people/jennifer-gardy.jpg - desc: Canada Research Chair in Public Health genomics at the university of British Columbia and BC Centre for Disease Control, with extensive experience in inferring disease transmission from genomic data. Vancouver, Canada. - url: http://www.jennifergardy.com/ - twitter: https://twitter.com/jennifergardy - github: https://github.com/jlgardy - - name: Oliver Morgan - desc: Acting Director, Health Emergency Information and Risk Assessment Department, World Health Organisation. Geneva, Switzerland. - img: /img/people/oliver-morgan.jpg - - name: Jacco Wallinga - img: /img/people/jacco-wallinga.jpg - desc: Professor of infectious disease modelling at Leiden University Medical Center, Head of the Infectious Disease Modelling Department at the National Institute for Public Health and the Environment (RIVM), The Netherlands. - website: http://www.rivm.nl/en/About_RIVM/Knowledge_and_expertise/Experts_and_expertise/Related_information/Modelling_Infectious_Diseases/Prof_Dr_J_Jacco_Wallinga - url: http://www.rivm.nl/en/About_RIVM/Knowledge_and_expertise/Experts_and_expertise/Related_information/Modelling_Infectious_Diseases/Prof_Dr_J_Jacco_Wallinga -members: - - name: Jamalludin Ab Rahman - img: /img/people/jamalludin-ab-rahman.jpg - desc: Professor of epidemiology. International islamic University of Malaysia Malaysia. - github: https://github.com/arjamal70 - url: https://github.com/arjamal70 - twitter: https://twitter.com/arjamal - - name: Monday Osagie Adenomon - img: /img/people/monday-osagie-adenomon.jpg - desc: Senior Lecturer & Chartered Statistician (RSS-UK); coord, NSUK-LISA; Chair, IASC African mem Group; Time series and Biostatistics. Nasarawa State University, Keffi Nigeria. - website: www.nsuk.edu.ng - url: www.nsuk.edu.ng - twitter: https://twitter.com/admonsagie - - name: Ayodele Adeyemo - img: /img/people/ayodele-adeyemo.jpg - desc: Senior Technical Associate, GIS and Data Analytics. eHealth Africa Nigeria. - github: github.com/christad92 - url: github.com/christad92 - twitter: https://twitter.com/iyoaye - - name: Manuel Albela Miranda - img: /img/people/manuel-albela-miranda.jpg - desc: Epidemiology Adviser. M?decins sans Fronti?res (MSF) Switzerland. - website: https://www.msf.ch - url: https://www.msf.ch - - name: Tomas Aragon - img: /img/people/tomas-aragon.jpg - desc: R instructor; infectious disease epidemiologist; public health official. University of California, Berkeley School of Public Health USA. - website: https://taragonmd.github.io/ - url: https://taragonmd.github.io/ - github: https://github.com/taragonmd - twitter: https://twitter.com/TAragonMD - - name: Callum Arnold - img: /img/people/callum-arnold.jpg - desc: PhD in Mathematical Biology studying measles outbreaks and intervention impacts. Pennsylvania State University United States. - website: www.callumarnold.com - url: www.callumarnold.com - github: https://github.com/arnold-c - twitter: https://twitter.com/thecallumarnold - - name: Dean Attali - img: /img/people/dean-attali.jpg - desc: Web and R developer, designer of the RECON website. AttaliTech, Canada. - website: http://deanattali.com/ - url: http://deanattali.com/ - github: https://github.com/daattali/ - twitter: https://twitter.com/daattali - - name: Marc Baguelin - img: /img/people/marc-baguelin.jpg - desc: Mathematical modeller and health economist specialised in Public Health intervention. Strong believer in open code and sharing. Public Health England, UK. - website: http://www.lshtm.ac.uk/aboutus/people/baguelin.marc - url: http://www.lshtm.ac.uk/aboutus/people/baguelin.marc - github: https://github.com/MJomaba/ - twitter: https://twitter.com/marcbaguelin - - name: Amrish Baidjoe - img: /img/people/amrish-baidjoe.jpg - desc: Field epidemiologist/microbiologist, outbreak response expert. President of the EPIET alumni network. - website: https://ammer.tweakblogs.net/ - url: https://ammer.tweakblogs.net/ - twitter: https://twitter.com/Ammer_B - - name: Neale Batra - img: /img/people/neale-batra.jpg - desc: Communicable disease epidemiologist specialized in emergency response and preparedness. - github: https://github.com/nsbatra - url: https://github.com/nsbatra - - name: Cici Bauer - img: /img/people/cici-bauer.jpg - desc: Academic faculty (assistant professor) - Bayesian spatiotemporal modeling. Department of Biostatistics and Data Science, University of Texas Health Science Center in Houston USA. - website: https://cicibauer.netlify.com/ - url: https://cicibauer.netlify.com/ - github: https://github.com/cicibauer - - name: Matthijs Berends - img: /img/people/matthijs-berends.jpg - desc: Infectious Disease Epidemiology. University of Groningen The Netherlands. - website: https://www.rug.nl/staff/m.s.berends/ - url: https://www.rug.nl/staff/m.s.berends/ - github: https://github.com/msberends - twitter: https://twitter.com/msberends - - name: Mahendra Bhandari - img: /img/people/mahendra-bhandari.jpg - desc: Head Intelligent Automation, Predictive Modelling, Ensemble Forecast, Location Based Intelligence, Python / R. AINQA India. - website: www.ainqa.com - url: www.ainqa.com - - name: Sangeeta Bhatia - img: /img/people/sangeeta-bhatia.jpg - desc: Modeller and software developer contributing packages for outbreak analysis using digital surveillance data. Imperial College London, UK. - website: https://sangeetabhatia03.github.io/ - url: https://sangeetabhatia03.github.io/ - github: https://github.com/sangeetabhatia03 - twitter: https://twitter.com/sangeeta0312 - - name: Matthew Biggerstaff - img: /img/people/matthew-biggerstaff.jpg - desc: Epidemiologist focused on using modeling and forecasting outputs to inform public health decision making. U.S. Centers for Disease Control and Prevention, USA. - - name: Olivia Boyd - img: /img/people/olivia-boyd.jpg - desc: Postgrad researcher - Epidemiology. Imperial College London United Kingdom. - - name: Hannah Brindle - img: /img/people/hannah-brindle.jpg - desc: Research Fellow with the Emergency and Epidemic Data at the London School of Hygiene and Tropical Medicine. Current work on electronic data collection methods, automated reporting and research during health emergencies. London School of Hygiene and Tropical Medicine United Kingdom. - github: hannahbrindle - url: hannahbrindle - twitter: https://twitter.com/brindle_hannah - - name: Jun Cai - img: /img/people/jun-cai.jpg - desc: PhD candidate interested in influenza transmission dynamics and R programming. Center for Earth System Science, Tsinghua University, China. - website: http://blog.tonytsai.name/ - url: http://blog.tonytsai.name/ - github: https://github.com/caijun - twitter: https://twitter.com/caijun2046 - - name: Finlay Campbell - img: /img/people/finlay-campbell.jpg - desc: Data scientist interested in outbreak analysis and R package development. WHO Geneva, Switzerland. - github: http://github.com/finlaycampbell - url: http://github.com/finlaycampbell - twitter: https://twitter.com/fcampbell_ - - name: Anne Cori - img: /img/people/anne-cori.jpg - desc: Statistician specialized in disease modelling and outbreak response. Imperial College London, UK. - website: http://www.imperial.ac.uk/people/a.cori - url: http://www.imperial.ac.uk/people/a.cori - github: https://github.com/annecori/ - - name: Zulma Cucunuba - img: /img/people/zulma-cucunuba.jpg - desc: Vector borne disease modelling to inform public health policy, emphasis in Latin America. Imperial College London, UK. - website: http://www.imperial.ac.uk/people/zulma.cucunuba - url: http://www.imperial.ac.uk/people/zulma.cucunuba - github: https://github.com/zulmac - twitter: https://twitter.com/Zulma.Cucunuba - - name: Jeroen De Korte - img: /img/people/jeroen-de-korte.jpg - desc: Data Scientist / Product manager, working on an IoT platform to enable cities to become more sustainable. n/a Netherlands. - - name: Amy Dighe - img: /img/people/amy-dighe.jpg - desc: PhD Student - using mathematical modelling and statistical analyses to better characterise the transmission dynamics of emerging infectious diseases. MRC centre for Global Infectious Disease Analysis, Imperial College London United Kingdom. - twitter: https://twitter.com/amy__dighe - url: https://twitter.com/amy__dighe - - name: Roz Eggo - img: /img/people/roz-eggo.jpg - desc: Infectious disease modeller of outbreaks, epidemics, and endemic infections. LSHTM, UK. - github: https://github.com/rozeggo - url: https://github.com/rozeggo - - name: Flavio Finger - img: /img/people/flavio-finger.jpg - desc: Epidemiologist & Outbreak Analyst. Epicentre, Paris France. - website: ffinger.github.io - url: ffinger.github.io - github: https://github.com/ffinger/ - twitter: https://twitter.com/flavio_finger - - name: Rich Fitzjohn - img: /img/people/rich-fitzjohn.jpg - desc: R developper specialized in data analysis infrastructures. Imperial College London, UK. - website: http://richfitz.github.io/ - url: http://richfitz.github.io/ - github: https://github.com/richfitz/ - twitter: https://twitter.com/rgfitzjohn - - name: Simon Frost - img: /img/people/simon-frost.jpg - desc: Viral evolution, dynamics and epidemiology. University of Cambridge, UK. - website: http://www.vet.cam.ac.uk/directory/sdf22@cam.ac.uk - url: http://www.vet.cam.ac.uk/directory/sdf22@cam.ac.uk - github: http://github.com/sdwfrost - twitter: https://twitter.com/sdwfrost - - name: Amy Gimma - img: /img/people/amy-gimma.jpg - desc: Software development / data management & analysis / research fellow. LSHTM United Kingdom. - github: https://github.com/amygimma - url: https://github.com/amygimma - - name: Emma Glennon - img: /img/people/emma-glennon.jpg - desc: Sir Henry Wellcome Research Fellow. University of Cambridge United Kingdom. - github: github.com/eeg31 - url: github.com/eeg31 - twitter: https://twitter.com/emma__glennon - - name: Ale Guy Franck Biaou - img: /img/people/ale-guy-franck-biaou.jpg - desc: Head of Epidemiology (epidemiology and data science). WaCa Abidjan. - github: https://gitlab.com/biaouguy - url: https://gitlab.com/biaouguy - twitter: https://twitter.com/BIAOUGUY - - name: Michael Hohle - img: /img/people/michael-hohle.jpg - desc: Statistical modelling in infectious disease epidemiology. Stockholm University, Sweden. - website: http://www.math.su.se/~hoehle - url: http://www.math.su.se/~hoehle - github: https://github.com/hoehleatsu - twitter: https://twitter.com/m_hoehle - - name: Benido Impouma - img: /img/people/benido-impouma.jpg - desc: Preparedness for, surveillance of and response to disease outbreaks and other public health emergencies. World Health Organization, Congo, Republic. - - name: Yalda Jafari - img: /img/people/yalda-jafari.jpg - desc: DPhil Candidate. University of Oxford United Kingdom. - - name: Christopher Jarvis - img: /img/people/christopher-jarvis.jpg - desc: Statistician and Researcher. LSHTM United Kingdom. - github: https://github.com/jarvisc1 - url: https://github.com/jarvisc1 - twitter: https://twitter.com/TheJarvisC1 - - name: Samuel Jenness - img: /img/people/samuel-jenness.jpg - desc: Epidemic modeling, network science, HIV/STI epidemiology. Emory University, USA. - website: http://www.samueljenness.org/ - url: http://www.samueljenness.org/ - github: https://github.com/EpiModel - twitter: https://twitter.com/SamuelJenness - - name: Michael Johansson - img: /img/people/michael-johansson.jpg - desc: Biologist. I develop statistical and mechanistic modeling tools for vector-borne diseases and emerging epidemics. Centers for Disease Control and Prevention, Harvard TH Chan School of Public Health, Outbreak Science United States. - github: https://github.com/majohansson - url: https://github.com/majohansson - - name: David Jorgensen - img: /img/people/david-jorgensen.jpg - desc: PhD student in infectious disease epidemiology. Imperial College London UK. - website: https://www.imperial.ac.uk/people/david.jorgensen13 - url: https://www.imperial.ac.uk/people/david.jorgensen13 - github: https://github.com/JorgensenD - - name: Zhian Kamvar - img: /img/people/zhian-kamvar.jpg - desc: R developer and population geneticist. Imperial College London, UK. - website: https://zkamvar.netlify.com/ - url: https://zkamvar.netlify.com/ - github: https://github.com/zkamvar - twitter: https://twitter.com/zkamvar - - name: Patrick Keating - img: /img/people/patrick-keating.jpg - desc: Infectious disease epidemiologist using R for analysis. Austrian Agency for Health and Food Safety, Austria. - - name: Mohammad Kibria - img: /img/people/mohammad-kibria.jpg - desc: Technical advisor in Health Information Systems and Monitoring and Evaluation systems. USAID STAR Senior Fellow Bangladesh. - website: http://globalhealthanalytics.info/ - url: http://globalhealthanalytics.info/ - github: Rampura Bonosree - twitter: https://twitter.com/madhurza_kibria - - name: Mara Kont - img: /img/people/mara-kont.jpg - desc: PhD Student in Infectious Disease Epidemiology. Imperial College London United Kingdom. - github: marakont - url: marakont - twitter: https://twitter.com/mara_kont - - name: Meryam Krit - img: /img/people/meryam-krit.jpg - desc: Mathematical modeller and researcher. Tropical Institute of Medicines Belgium. - website: https://pure.itg.be/en/persons/meryam-krit(ed3c0fa1-dde1-41cc-9a4a-b10051c9f93a).html - url: https://pure.itg.be/en/persons/meryam-krit(ed3c0fa1-dde1-41cc-9a4a-b10051c9f93a).html - - name: Henry Kyobe-bosa - img: /img/people/henry-kyobe-bosa.jpg - desc: Epidemiologist with interest in outbreak risk analysis, surveillance and response to emerging infectious diseases. African Risk Capacity, South Africa. - website: http://www.africanriskcapacity.org/ - url: http://www.africanriskcapacity.org/ - twitter: https://twitter.com/hskyobe - - name: Abraham Lagat - img: /img/people/abraham-lagat.jpg - desc: Data Curator. CIMMYT Kenya. - twitter: https://twitter.com/lagvier - url: https://twitter.com/lagvier - - name: Olivier Le Polain - img: /img/people/olivier-le-polain.jpg - desc: Senior Epidemiologist,. UK-Public Health Rapid Support Team, UK. - - name: Rafael Lopes Paixao Da Silva - img: /img/people/rafael-lopes-paixao-da-silva.jpg - desc: PhD Candidate in physics researching on drivers of epidemics dynamics and Health System impact. Instituto de F?sica Te?rica - IFT (UNESP) Brazil. - github: rafalopespx - url: rafalopespx - twitter: https://twitter.com/rafalpx - - name: Greg Martin - img: /img/people/greg-martin.jpg - desc: Health service executive; host of Global Health and R Programming 101 YouTube series. - website: www.youtube.com/c/drgregmartin - url: www.youtube.com/c/drgregmartin - github: https://github.com/drgregmartin - twitter: https://twitter.com/drgregmartin - - name: Arun Mitra - img: /img/people/arun-mitra.jpg - desc: PhD Scholar, Epidemiology, Public Health Data Science, Infectious Disease Epidemiology. Achutha Menon Centre for Health Science Studies, Sree Chitra Tirunal Institute for Medical Sciences and Technology India. - github: https://github.com/drarunmitra - url: https://github.com/drarunmitra - - name: Paula Moraga - img: /img/people/paula-moraga.jpg - desc: Spatial statistics and disease surveillance. Lancaster University, UK. - website: https://paula-moraga.github.io/ - url: https://paula-moraga.github.io/ - github: https://github.com/Paula-Moraga - twitter: https://twitter.com/paumose - - name: Kamarul Imran Musa - img: /img/people/kamarul-imran-musa.jpg - desc: Associate Professor / Expertise in disease modelling. School of Medical Sciences, Universiti Sains Malaysia Malaysia. - website: http://www.medic.usm.my/jpm/index.php/en/academic-information/587-prof-madya-dr-kamarul-imran-musa - url: http://www.medic.usm.my/jpm/index.php/en/academic-information/587-prof-madya-dr-kamarul-imran-musa - github: https://github.com/drkamarul - twitter: https://twitter.com/kamarul_imran - - name: Vp Nagraj - img: /img/people/vp-nagraj.jpg - desc: R developer and contributor to epicontacts package. University of Virginia, USA. - website: http://nagraj.net/ - url: http://nagraj.net/ - github: https://github.com/vpnagraj - twitter: https://twitter.com/vpnagraj - - name: Ghiwa Nassereddine - img: /img/people/ghiwa-nassereddine.jpg - desc: A passionate public health professional with a concentration in epidemiology and biostatistics. American University of Beirut Lebanon. - github: https://github.com/GhiwaNassereddine - url: https://github.com/GhiwaNassereddine - twitter: https://twitter.com/_ghiwa - - name: Aminata Ndiaye - img: /img/people/aminata-ndiaye.jpg - desc: Biostatistician. WHO France. - twitter: https://twitter.com/aminata_fadl - url: https://twitter.com/aminata_fadl - - name: Pierre Nouvellet - img: /img/people/pierre-nouvellet.jpg - desc: Modelling for outbreak response and zoonotic diseases. Imperial College London, UK. - website: https://www.imperial.ac.uk/people/p.nouvellet - url: https://www.imperial.ac.uk/people/p.nouvellet - github: https://github.com/pnouvellet - - name: Timothy Ogunleye - img: /img/people/timothy-ogunleye.jpg - desc: Executive Director, Tim-R Programming. Statistical Modelling, Econometrics, Morphometrics and Biostatistics. PhD Candidate, University of Ilorin, Kwara State, Nigeria Nigeria. - website: https://tim-rprogramming.com - url: https://tim-rprogramming.com - github: Nil - twitter: https://twitter.com/Tim-R ConsultingOsunGroup - - name: Lulla Opatowski - img: /img/people/lulla-opatowski.jpg - desc: Lecturer in mathematical epidemiology. Universite Versailles St Quentin / Institut Pasteur / Inserm, France. - website: https://research.pasteur.fr/en/member/lulla-opatowski/ - url: https://research.pasteur.fr/en/member/lulla-opatowski/ - - name: Benjamin Ortiz Ulloa - img: /img/people/benjamin-ortiz-ulloa.jpg - desc: Data Visualization Engineer. Freelancer USA. - github: benjaminortizulloa - url: benjaminortizulloa - twitter: https://twitter.com/plzbeemyfriend - - name: Pawel Piatkowski - img: /img/people/pawel-piatkowski.jpg - desc: Bioinformatician, avid R/Shiny programmer. Independent contractor (working for Genentech/Roche), Poland. - website: http://cosi1.github.io/ - url: http://cosi1.github.io/ - github: https://github.com/cosi1/ - twitter: https://twitter.com/Cosi1125 - - name: Jonathan Polonsky - img: /img/people/jonathan-polonsky.jpg - desc: Epidemiologist focusing on humanitarian and outbreak settings. I use R for automating analyses and reproducible reporting. World Health Organisation, Switzerland. - website: http://who.int/emergencies/en/ - url: http://who.int/emergencies/en/ - github: https://github.com/jpolonsky - twitter: https://twitter.com/jonny_polonsky - - name: Juliet Pulliam - img: /img/people/juliet-pulliam.jpg - desc: Infectious disease modeler focusing on outbreaks and zoonotic diseases. Acting Program Director of the ICI3D. Director, South African Centre for Epidemiological Modelling and Analysis (SACEMA) South Africa. - website: www.sacema.org - url: www.sacema.org - github: https://github.com/jrcpulliam - twitter: https://twitter.com/SACEMAdirector - - name: Nistara Randhawa - img: /img/people/nistara-randhawa.jpg - desc: Epidemiologist and R programmer contributing to the Epicontacts package. University of California, Davis, USA. - website: http://nistara.net/ - url: http://nistara.net/ - github: https://github.com/nistara - - name: Matthieu Rolland - img: /img/people/matthieu-rolland.jpg - desc: Statistician - Environmental Epidemiologist. Institute for Advanced Biosciences - INSERM France. - github: https://gitlab.com/mjrolland - url: https://gitlab.com/mjrolland - - name: Ilana Schafer - img: /img/people/ilana-schafer.jpg - desc: Veterinary epidemiologist with expertise in field outbreak response, and software development for outbreak data management and contact tracing. US Centers for Disease Control and Prevention, USA. - - name: Dirk Schumacher - img: /img/people/dirk-schumacher.jpg - desc: R developer with experience in infectious disease epidemiology, surveillance and outbreak response. Berlin, Germany. - website: https://www.dirk-schumacher.net/ - url: https://www.dirk-schumacher.net/ - github: https://github.com/dirkschumacher - twitter: https://twitter.com/dirk_sch - - name: Jakob Schumacher - img: /img/people/jakob-schumacher.jpg - desc: Public health consultant. Local public health institute, Berlin Germany. - website: www.jakiva.de - url: www.jakiva.de - github: https://github.com/jakobschumacher - - name: Amandeep Singh - img: /img/people/amandeep-singh.jpg - desc: Student, Newbie. The University of Lethbridge Canada. - website: www.ulethbridge.ca - url: www.ulethbridge.ca - - name: Alex Spina - img: /img/people/alex-spina.jpg - desc: Infectious disease epidemiologist using R for surveillance data and outbreak response. Austrian Agency for Food and Health Safety / European Centre for Disease Prevention and Control, Austria. - github: https://github.com/aspina7 - url: https://github.com/aspina7 - - name: Savina Stoitsova - img: /img/people/savina-stoitsova.jpg - desc: Infectious disease epidemiologist (EPIET alumni) based in Bulgaria, interested in affordable analytic tools for outbreak response. National center of infectious and parasitic diseases, Bulgaria. - website: http://www.ncipd.org/index.php?option=com_content&view=featured&Itemid=730&lang=en - url: http://www.ncipd.org/index.php?option=com_content&view=featured&Itemid=730&lang=en - - name: Tim Taylor - img: /img/people/tim-taylor.jpg - desc: Sofware Coordinator. Research Software Engineer interested in outbreak analytics and R package development. London School of Hygiene and Tropical Medicine, UK. England. - github: https://github.com/tjtnew - url: https://github.com/tjtnew - twitter: https://twitter.com/_TimT_ - - name: Scott Teesdale - img: /img/people/scott-teesdale.jpg - desc: Product management; epidemiology. Resolve to Save Lives, Louisiana Department of Health United States. - website: https://resolvetosavelives.org/prevent-epidemics - url: https://resolvetosavelives.org/prevent-epidemics - github: https://github.com/steesdale - twitter: https://twitter.com/ScottTees - - name: Claire Thomson - img: /img/people/claire-thomson.jpg - desc: Deputy Secretary and Deputy Treasurer. Project coordinator with a Public Health background. Imperial College London, UK. - website: http://www.imperial.ac.uk/people/c.thomson - url: http://www.imperial.ac.uk/people/c.thomson - - name: Achilleas Tsoumanis - img: /img/people/achilleas-tsoumanis.jpg - desc: Biostatistician - R programmer - PhD candidate. Clinical Trials Unit, Institute of Tropical Medicine, Antwerp Belgium. - - name: Philip Turk - img: /img/people/philip-turk.jpg - desc: Director of Biostatistics and Data Science. Atrium Health United States. - website: https://atriumhealth.org/research/multi-disciplinary-centers-and-cores/core - url: https://atriumhealth.org/research/multi-disciplinary-centers-and-cores/core - github: https://github.com/philturk - - name: Nsikak Udoh - img: /img/people/nsikak-udoh.jpg - desc: Data analyst. University of Lagos Nigeria. - - name: Aliyu Usman Kinafa - img: /img/people/aliyu-usman-kinafa.jpg - desc: Lecturer. Gombe State University Nigeria. - website: Nil - url: Nil - github: Nil - twitter: https://twitter.com/Nil - - name: Esther Van Kleef - img: /img/people/esther-van-kleef.jpg - desc: Senior epidemiologist. Special interest in (modelling) the transmission dynamics of antimicrobial resistance and outbreak analytics. Institute of Tropical Medicine Antwerp Belgium. - github: https://github.com/esthervankleef - url: https://github.com/esthervankleef - twitter: https://twitter.com/estherkleef - - name: Jean-pierre Veyrenche - img: /img/people/jean-pierre-veyrenche.jpg - desc: International expert (WHO, IOM, UNICEF) in WASH and operations management for emergency response to health crises. Freelance consultant, France. - - name: Charlie Whittaker - img: /img/people/charlie-whittaker.jpg - desc: Treasurer, Vice-president. PhD student, epidemiologist. Imperial College, London United Kingdom. - website: https://www.imperial.ac.uk/people/charles.whittaker16 - url: https://www.imperial.ac.uk/people/charles.whittaker16 - github: https://github.com/cwhittaker1000 - twitter: https://twitter.com/charliewhittak - - name: K.m. Rukhsad Asif Zaman - img: /img/people/k.m.-rukhsad-asif-zaman.jpg - desc: Field monitoring officer, data management and analysis using R. International Health Regulation (IHR), CDC, DGHS Bangladesh. - twitter: https://twitter.com/live:.cid.1dca1c8831f930ea - url: https://twitter.com/live:.cid.1dca1c8831f930ea +default_profile_img: /img/people/anonymous.jpg --- - ## Executive board These people are currently heading RECON. -{% include list-circles.html items=page.executive-board %} - - +{% include list-circles.html items=site.data.people.executive_board %} ## Members Members are people actively involved in, and contributing to, RECON's activities. See [this page](../join) if you would like more information on membership. -{% include list-circles.html items=page.members %} - - +{% include list-circles.html items=site.data.people.members %} ## Advisory board We are extremely lucky to have the following people supporting and guiding our efforts: -{% include list-circles.html items=page.advisory-board %} +{% include list-circles.html items=site.data.people.advisory_board %} diff --git a/reconhub.github.io.Rproj b/reconhub.github.io.Rproj new file mode 100644 index 00000000..bdeda500 --- /dev/null +++ b/reconhub.github.io.Rproj @@ -0,0 +1,19 @@ +Version: 1.0 + +RestoreWorkspace: No +SaveWorkspace: No +AlwaysSaveHistory: Yes + +EnableCodeIndexing: Yes +UseSpacesForTab: Yes +NumSpacesForTab: 2 +Encoding: UTF-8 + +RnwWeave: knitr +LaTeX: XeLaTeX + +AutoAppendNewline: Yes +StripTrailingWhitespace: Yes + +QuitChildProcessesOnExit: Yes + diff --git a/renv.lock b/renv.lock new file mode 100644 index 00000000..79a55af1 --- /dev/null +++ b/renv.lock @@ -0,0 +1,812 @@ +{ + "R": { + "Version": "4.1.2", + "Repositories": [ + { + "Name": "CRAN", + "URL": "https://cran.rstudio.com" + }, + { + "Name": "RSPM", + "URL": "https://packagemanager.rstudio.com/all/latest" + } + ] + }, + "Packages": { + "R6": { + "Package": "R6", + "Version": "2.5.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "470851b6d5d0ac559e9d01bb352b4021", + "Requirements": [] + }, + "Rcpp": { + "Package": "Rcpp", + "Version": "1.0.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "22b546dd7e337f6c0c58a39983a496bc", + "Requirements": [] + }, + "airtabler": { + "Package": "airtabler", + "Version": "0.1.6", + "Source": "GitHub", + "RemoteType": "github", + "RemoteHost": "api.github.com", + "RemoteRepo": "airtabler", + "RemoteUsername": "ecohealthalliance", + "RemoteRef": "HEAD", + "RemoteSha": "86747026223b615ef508094a65e43e6130e082fe", + "Hash": "69a8ae87a96599949ebd31e0a848cefc", + "Requirements": [] + }, + "askpass": { + "Package": "askpass", + "Version": "1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e8a22846fff485f0be3770c2da758713", + "Requirements": [] + }, + "aweek": { + "Package": "aweek", + "Version": "1.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8a5d6323e38f0ab57fbf069cf49f9155", + "Requirements": [] + }, + "base64enc": { + "Package": "base64enc", + "Version": "0.1-3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "543776ae6848fde2f48ff3816d0628bc", + "Requirements": [] + }, + "bit": { + "Package": "bit", + "Version": "4.0.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f36715f14d94678eea9933af927bc15d", + "Requirements": [] + }, + "bit64": { + "Package": "bit64", + "Version": "4.0.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "9fe98599ca456d6552421db0d6772d8f", + "Requirements": [] + }, + "brew": { + "Package": "brew", + "Version": "1.0-7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "38875ea52350ff4b4c03849fc69736c8", + "Requirements": [] + }, + "brio": { + "Package": "brio", + "Version": "1.1.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "976cf154dfb043c012d87cddd8bca363", + "Requirements": [] + }, + "cachem": { + "Package": "cachem", + "Version": "1.0.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "648c5b3d71e6a37e3043617489a0a0e9", + "Requirements": [] + }, + "callr": { + "Package": "callr", + "Version": "3.7.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "461aa75a11ce2400245190ef5d3995df", + "Requirements": [] + }, + "cellranger": { + "Package": "cellranger", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f61dbaec772ccd2e17705c1e872e9e7c", + "Requirements": [] + }, + "cli": { + "Package": "cli", + "Version": "3.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "1bdb126893e9ce6aae50ad1d6fc32faf", + "Requirements": [] + }, + "clipr": { + "Package": "clipr", + "Version": "0.8.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3f038e5ac7f41d4ac41ce658c85e3042", + "Requirements": [] + }, + "commonmark": { + "Package": "commonmark", + "Version": "1.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0f22be39ec1d141fd03683c06f3a6e67", + "Requirements": [] + }, + "cpp11": { + "Package": "cpp11", + "Version": "0.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "fa53ce256cd280f468c080a58ea5ba8c", + "Requirements": [] + }, + "crayon": { + "Package": "crayon", + "Version": "1.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "741c2e098e98afe3dc26a7b0e5489f4e", + "Requirements": [] + }, + "credentials": { + "Package": "credentials", + "Version": "1.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "93762d0a34d78e6a025efdbfb5c6bb41", + "Requirements": [] + }, + "curl": { + "Package": "curl", + "Version": "4.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "022c42d49c28e95d69ca60446dbabf88", + "Requirements": [] + }, + "desc": { + "Package": "desc", + "Version": "1.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "28763d08fadd0b733e3cee9dab4e12fe", + "Requirements": [] + }, + "devtools": { + "Package": "devtools", + "Version": "2.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "fc35e13bb582e5fe6f63f3d647a4cbe5", + "Requirements": [] + }, + "diffobj": { + "Package": "diffobj", + "Version": "0.3.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "bcaa8b95f8d7d01a5dedfd959ce88ab8", + "Requirements": [] + }, + "digest": { + "Package": "digest", + "Version": "0.6.29", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "cf6b206a045a684728c3267ef7596190", + "Requirements": [] + }, + "dplyr": { + "Package": "dplyr", + "Version": "1.0.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ef47665e64228a17609d6df877bf86f2", + "Requirements": [] + }, + "ellipsis": { + "Package": "ellipsis", + "Version": "0.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "bb0eec2fe32e88d9e2836c2f73ea2077", + "Requirements": [] + }, + "evaluate": { + "Package": "evaluate", + "Version": "0.15", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "699a7a93d08c962d9f8950b2d7a227f1", + "Requirements": [] + }, + "fansi": { + "Package": "fansi", + "Version": "1.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f28149c2d7a1342a834b314e95e67260", + "Requirements": [] + }, + "fastmap": { + "Package": "fastmap", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "77bd60a6157420d4ffa93b27cf6a58b8", + "Requirements": [] + }, + "fs": { + "Package": "fs", + "Version": "1.5.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7c89603d81793f0d5486d91ab1fc6f1d", + "Requirements": [] + }, + "generics": { + "Package": "generics", + "Version": "0.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "177475892cf4a55865868527654a7741", + "Requirements": [] + }, + "gert": { + "Package": "gert", + "Version": "1.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8fddce7cbd59467106266a6e93e253b4", + "Requirements": [] + }, + "gh": { + "Package": "gh", + "Version": "1.3.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "38c2580abbda249bd6afeec00d14f531", + "Requirements": [] + }, + "gitcreds": { + "Package": "gitcreds", + "Version": "0.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f3aefccc1cc50de6338146b62f115de8", + "Requirements": [] + }, + "glue": { + "Package": "glue", + "Version": "1.6.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4f2596dfb05dac67b9dc558e5c6fba2e", + "Requirements": [] + }, + "googlesheets": { + "Package": "googlesheets", + "Version": "0.3.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "270597dd84ec5ef7f59b27b4d28782ee", + "Requirements": [] + }, + "highr": { + "Package": "highr", + "Version": "0.9", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8eb36c8125038e648e5d111c0d7b2ed4", + "Requirements": [] + }, + "hms": { + "Package": "hms", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "5b8a2dd0fdbe2ab4f6081e6c7be6dfca", + "Requirements": [] + }, + "htmltools": { + "Package": "htmltools", + "Version": "0.5.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "526c484233f42522278ab06fb185cb26", + "Requirements": [] + }, + "httr": { + "Package": "httr", + "Version": "1.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a525aba14184fec243f9eaec62fbed43", + "Requirements": [] + }, + "ini": { + "Package": "ini", + "Version": "0.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6154ec2223172bce8162d4153cda21f7", + "Requirements": [] + }, + "janitor": { + "Package": "janitor", + "Version": "2.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6de84a8c67fb247e721166049c84695f", + "Requirements": [] + }, + "jquerylib": { + "Package": "jquerylib", + "Version": "0.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "5aab57a3bd297eee1c1d862735972182", + "Requirements": [] + }, + "jsonlite": { + "Package": "jsonlite", + "Version": "1.8.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d07e729b27b372429d42d24d503613a0", + "Requirements": [] + }, + "knitr": { + "Package": "knitr", + "Version": "1.37", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a4ec675eb332a33fe7b7fe26f70e1f98", + "Requirements": [] + }, + "lifecycle": { + "Package": "lifecycle", + "Version": "1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a6b6d352e3ed897373ab19d8395c98d0", + "Requirements": [] + }, + "lubridate": { + "Package": "lubridate", + "Version": "1.8.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2ff5eedb6ee38fb1b81205c73be1be5a", + "Requirements": [] + }, + "magrittr": { + "Package": "magrittr", + "Version": "2.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "cdc87ecd81934679d1557633d8e1fe51", + "Requirements": [] + }, + "memoise": { + "Package": "memoise", + "Version": "2.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e2817ccf4a065c5d9d7f2cfbe7c1d78c", + "Requirements": [] + }, + "mime": { + "Package": "mime", + "Version": "0.12", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "18e9c28c1d3ca1560ce30658b22ce104", + "Requirements": [] + }, + "openssl": { + "Package": "openssl", + "Version": "1.4.6", + "Source": "Repository", + "Requirements": [] + }, + "outbreaks": { + "Package": "outbreaks", + "Version": "1.9.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a62a28f56f51694490827b57ee78f970", + "Requirements": [] + }, + "pillar": { + "Package": "pillar", + "Version": "1.7.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "51dfc97e1b7069e9f7e6f83f3589c22e", + "Requirements": [] + }, + "pkgbuild": { + "Package": "pkgbuild", + "Version": "1.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "66d2adfed274daf81ccfe77d974c3b9b", + "Requirements": [] + }, + "pkgconfig": { + "Package": "pkgconfig", + "Version": "2.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "01f28d4278f15c76cddbea05899c5d6f", + "Requirements": [] + }, + "pkgload": { + "Package": "pkgload", + "Version": "1.2.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7533cd805940821bf23eaf3c8d4c1735", + "Requirements": [] + }, + "praise": { + "Package": "praise", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a555924add98c99d2f411e37e7d25e9f", + "Requirements": [] + }, + "prettyunits": { + "Package": "prettyunits", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "95ef9167b75dde9d2ccc3c7528393e7e", + "Requirements": [] + }, + "processx": { + "Package": "processx", + "Version": "3.5.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0cbca2bc4d16525d009c4dbba156b37c", + "Requirements": [] + }, + "progress": { + "Package": "progress", + "Version": "1.2.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "14dc9f7a3c91ebb14ec5bb9208a07061", + "Requirements": [] + }, + "ps": { + "Package": "ps", + "Version": "1.6.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "32620e2001c1dce1af49c49dccbb9420", + "Requirements": [] + }, + "purrr": { + "Package": "purrr", + "Version": "0.3.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "97def703420c8ab10d8f0e6c72101e02", + "Requirements": [] + }, + "rappdirs": { + "Package": "rappdirs", + "Version": "0.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "5e3c5dc0b071b21fa128676560dbe94d", + "Requirements": [] + }, + "rcmdcheck": { + "Package": "rcmdcheck", + "Version": "1.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8f25ebe2ec38b1f2aef3b0d2ef76f6c4", + "Requirements": [] + }, + "readr": { + "Package": "readr", + "Version": "2.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "9c59de1357dc209868b5feb5c9f0fe2f", + "Requirements": [] + }, + "readxl": { + "Package": "readxl", + "Version": "1.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "63537c483c2dbec8d9e3183b3735254a", + "Requirements": [] + }, + "rematch": { + "Package": "rematch", + "Version": "1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c66b930d20bb6d858cd18e1cebcfae5c", + "Requirements": [] + }, + "rematch2": { + "Package": "rematch2", + "Version": "2.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "76c9e04c712a05848ae7a23d2f170a40", + "Requirements": [] + }, + "remotes": { + "Package": "remotes", + "Version": "2.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "227045be9aee47e6dda9bb38ac870d67", + "Requirements": [] + }, + "renv": { + "Package": "renv", + "Version": "0.15.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "318c703b833089e1bc0c6a198362ca19", + "Requirements": [] + }, + "rlang": { + "Package": "rlang", + "Version": "1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3bf0219f19d9f5b3c682acbb3546a151", + "Requirements": [] + }, + "rmarkdown": { + "Package": "rmarkdown", + "Version": "2.11", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "320017b52d05a943981272b295750388", + "Requirements": [] + }, + "roxygen2": { + "Package": "roxygen2", + "Version": "7.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "eb9849556c4250305106e82edae35b72", + "Requirements": [] + }, + "rprojroot": { + "Package": "rprojroot", + "Version": "2.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "249d8cd1e74a8f6a26194a91b47f21d1", + "Requirements": [] + }, + "rstudioapi": { + "Package": "rstudioapi", + "Version": "0.13", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "06c85365a03fdaf699966cc1d3cf53ea", + "Requirements": [] + }, + "rversions": { + "Package": "rversions", + "Version": "2.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f88fab00907b312f8b23ec13e2d437cb", + "Requirements": [] + }, + "sessioninfo": { + "Package": "sessioninfo", + "Version": "1.2.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3f9796a8d0a0e8c6eb49a4b029359d1f", + "Requirements": [] + }, + "snakecase": { + "Package": "snakecase", + "Version": "0.11.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4079070fc210c7901c0832a3aeab894f", + "Requirements": [] + }, + "stringi": { + "Package": "stringi", + "Version": "1.7.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "bba431031d30789535745a9627ac9271", + "Requirements": [] + }, + "stringr": { + "Package": "stringr", + "Version": "1.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0759e6b6c0957edb1311028a49a35e76", + "Requirements": [] + }, + "sys": { + "Package": "sys", + "Version": "3.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b227d13e29222b4574486cfcbde077fa", + "Requirements": [] + }, + "testthat": { + "Package": "testthat", + "Version": "3.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "32454e5780e8dbe31e4b61b13d8918fe", + "Requirements": [] + }, + "tibble": { + "Package": "tibble", + "Version": "3.1.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8a8f02d1934dfd6431c671361510dd0b", + "Requirements": [] + }, + "tidyr": { + "Package": "tidyr", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d8b95b7fee945d7da6888cf7eb71a49c", + "Requirements": [] + }, + "tidyselect": { + "Package": "tidyselect", + "Version": "1.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "17f6da8cfd7002760a859915ce7eef8f", + "Requirements": [] + }, + "tinytex": { + "Package": "tinytex", + "Version": "0.37", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a80abeb527a977e4bef21873d29222dd", + "Requirements": [] + }, + "tzdb": { + "Package": "tzdb", + "Version": "0.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "5e069fb033daf2317bd628d3100b75c5", + "Requirements": [] + }, + "usethis": { + "Package": "usethis", + "Version": "2.1.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c499f488e6dd7718accffaee5bc5a79b", + "Requirements": [] + }, + "utf8": { + "Package": "utf8", + "Version": "1.2.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c9c462b759a5cc844ae25b5942654d13", + "Requirements": [] + }, + "vctrs": { + "Package": "vctrs", + "Version": "0.3.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ecf749a1b39ea72bd9b51b76292261f1", + "Requirements": [] + }, + "vroom": { + "Package": "vroom", + "Version": "1.5.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "976507b5a105bc3bdf6a5a5f29e0684f", + "Requirements": [] + }, + "waldo": { + "Package": "waldo", + "Version": "0.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ad8cfff5694ac5b3c354f8f2044bd976", + "Requirements": [] + }, + "whisker": { + "Package": "whisker", + "Version": "0.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ca970b96d894e90397ed20637a0c1bbe", + "Requirements": [] + }, + "withr": { + "Package": "withr", + "Version": "2.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a376b424c4817cda4920bbbeb3364e85", + "Requirements": [] + }, + "xfun": { + "Package": "xfun", + "Version": "0.29", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e2e5fb1a74fbb68b27d6efc5372635dc", + "Requirements": [] + }, + "xml2": { + "Package": "xml2", + "Version": "1.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "40682ed6a969ea5abfd351eb67833adc", + "Requirements": [] + }, + "xopen": { + "Package": "xopen", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6c85f015dee9cc7710ddd20f86881f58", + "Requirements": [] + }, + "yaml": { + "Package": "yaml", + "Version": "2.3.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "458bb38374d73bf83b1bb85e353da200", + "Requirements": [] + }, + "zip": { + "Package": "zip", + "Version": "2.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c7eef2996ac270a18c2715c997a727c5", + "Requirements": [] + } + } +} diff --git a/renv/.gitignore b/renv/.gitignore new file mode 100644 index 00000000..275e4ca3 --- /dev/null +++ b/renv/.gitignore @@ -0,0 +1,6 @@ +library/ +local/ +cellar/ +lock/ +python/ +staging/ diff --git a/renv/activate.R b/renv/activate.R new file mode 100644 index 00000000..89524080 --- /dev/null +++ b/renv/activate.R @@ -0,0 +1,926 @@ + +local({ + + # the requested version of renv + version <- "0.15.3" + + # the project directory + project <- getwd() + + # figure out whether the autoloader is enabled + enabled <- local({ + + # first, check config option + override <- getOption("renv.config.autoloader.enabled") + if (!is.null(override)) + return(override) + + # next, check environment variables + # TODO: prefer using the configuration one in the future + envvars <- c( + "RENV_CONFIG_AUTOLOADER_ENABLED", + "RENV_AUTOLOADER_ENABLED", + "RENV_ACTIVATE_PROJECT" + ) + + for (envvar in envvars) { + envval <- Sys.getenv(envvar, unset = NA) + if (!is.na(envval)) + return(tolower(envval) %in% c("true", "t", "1")) + } + + # enable by default + TRUE + + }) + + if (!enabled) + return(FALSE) + + # avoid recursion + if (identical(getOption("renv.autoloader.running"), TRUE)) { + warning("ignoring recursive attempt to run renv autoloader") + return(invisible(TRUE)) + } + + # signal that we're loading renv during R startup + options(renv.autoloader.running = TRUE) + on.exit(options(renv.autoloader.running = NULL), add = TRUE) + + # signal that we've consented to use renv + options(renv.consent = TRUE) + + # load the 'utils' package eagerly -- this ensures that renv shims, which + # mask 'utils' packages, will come first on the search path + library(utils, lib.loc = .Library) + + # unload renv if it's already been laoded + if ("renv" %in% loadedNamespaces()) + unloadNamespace("renv") + + # load bootstrap tools + `%||%` <- function(x, y) { + if (is.environment(x) || length(x)) x else y + } + + bootstrap <- function(version, library) { + + # attempt to download renv + tarball <- tryCatch(renv_bootstrap_download(version), error = identity) + if (inherits(tarball, "error")) + stop("failed to download renv ", version) + + # now attempt to install + status <- tryCatch(renv_bootstrap_install(version, tarball, library), error = identity) + if (inherits(status, "error")) + stop("failed to install renv ", version) + + } + + renv_bootstrap_tests_running <- function() { + getOption("renv.tests.running", default = FALSE) + } + + renv_bootstrap_repos <- function() { + + # check for repos override + repos <- Sys.getenv("RENV_CONFIG_REPOS_OVERRIDE", unset = NA) + if (!is.na(repos)) + return(repos) + + # check for lockfile repositories + repos <- tryCatch(renv_bootstrap_repos_lockfile(), error = identity) + if (!inherits(repos, "error") && length(repos)) + return(repos) + + # if we're testing, re-use the test repositories + if (renv_bootstrap_tests_running()) + return(getOption("renv.tests.repos")) + + # retrieve current repos + repos <- getOption("repos") + + # ensure @CRAN@ entries are resolved + repos[repos == "@CRAN@"] <- getOption( + "renv.repos.cran", + "https://cloud.r-project.org" + ) + + # add in renv.bootstrap.repos if set + default <- c(FALLBACK = "https://cloud.r-project.org") + extra <- getOption("renv.bootstrap.repos", default = default) + repos <- c(repos, extra) + + # remove duplicates that might've snuck in + dupes <- duplicated(repos) | duplicated(names(repos)) + repos[!dupes] + + } + + renv_bootstrap_repos_lockfile <- function() { + + lockpath <- Sys.getenv("RENV_PATHS_LOCKFILE", unset = "renv.lock") + if (!file.exists(lockpath)) + return(NULL) + + lockfile <- tryCatch(renv_json_read(lockpath), error = identity) + if (inherits(lockfile, "error")) { + warning(lockfile) + return(NULL) + } + + repos <- lockfile$R$Repositories + if (length(repos) == 0) + return(NULL) + + keys <- vapply(repos, `[[`, "Name", FUN.VALUE = character(1)) + vals <- vapply(repos, `[[`, "URL", FUN.VALUE = character(1)) + names(vals) <- keys + + return(vals) + + } + + renv_bootstrap_download <- function(version) { + + # if the renv version number has 4 components, assume it must + # be retrieved via github + nv <- numeric_version(version) + components <- unclass(nv)[[1]] + + # if this appears to be a development version of 'renv', we'll + # try to restore from github + dev <- length(components) == 4L + + # begin collecting different methods for finding renv + methods <- c( + renv_bootstrap_download_tarball, + if (dev) + renv_bootstrap_download_github + else c( + renv_bootstrap_download_cran_latest, + renv_bootstrap_download_cran_archive + ) + ) + + for (method in methods) { + path <- tryCatch(method(version), error = identity) + if (is.character(path) && file.exists(path)) + return(path) + } + + stop("failed to download renv ", version) + + } + + renv_bootstrap_download_impl <- function(url, destfile) { + + mode <- "wb" + + # https://bugs.r-project.org/bugzilla/show_bug.cgi?id=17715 + fixup <- + Sys.info()[["sysname"]] == "Windows" && + substring(url, 1L, 5L) == "file:" + + if (fixup) + mode <- "w+b" + + utils::download.file( + url = url, + destfile = destfile, + mode = mode, + quiet = TRUE + ) + + } + + renv_bootstrap_download_cran_latest <- function(version) { + + spec <- renv_bootstrap_download_cran_latest_find(version) + + message("* Downloading renv ", version, " ... ", appendLF = FALSE) + + type <- spec$type + repos <- spec$repos + + info <- tryCatch( + utils::download.packages( + pkgs = "renv", + destdir = tempdir(), + repos = repos, + type = type, + quiet = TRUE + ), + condition = identity + ) + + if (inherits(info, "condition")) { + message("FAILED") + return(FALSE) + } + + # report success and return + message("OK (downloaded ", type, ")") + info[1, 2] + + } + + renv_bootstrap_download_cran_latest_find <- function(version) { + + # check whether binaries are supported on this system + binary <- + getOption("renv.bootstrap.binary", default = TRUE) && + !identical(.Platform$pkgType, "source") && + !identical(getOption("pkgType"), "source") && + Sys.info()[["sysname"]] %in% c("Darwin", "Windows") + + types <- c(if (binary) "binary", "source") + + # iterate over types + repositories + for (type in types) { + for (repos in renv_bootstrap_repos()) { + + # retrieve package database + db <- tryCatch( + as.data.frame( + utils::available.packages(type = type, repos = repos), + stringsAsFactors = FALSE + ), + error = identity + ) + + if (inherits(db, "error")) + next + + # check for compatible entry + entry <- db[db$Package %in% "renv" & db$Version %in% version, ] + if (nrow(entry) == 0) + next + + # found it; return spec to caller + spec <- list(entry = entry, type = type, repos = repos) + return(spec) + + } + } + + # if we got here, we failed to find renv + fmt <- "renv %s is not available from your declared package repositories" + stop(sprintf(fmt, version)) + + } + + renv_bootstrap_download_cran_archive <- function(version) { + + name <- sprintf("renv_%s.tar.gz", version) + repos <- renv_bootstrap_repos() + urls <- file.path(repos, "src/contrib/Archive/renv", name) + destfile <- file.path(tempdir(), name) + + message("* Downloading renv ", version, " ... ", appendLF = FALSE) + + for (url in urls) { + + status <- tryCatch( + renv_bootstrap_download_impl(url, destfile), + condition = identity + ) + + if (identical(status, 0L)) { + message("OK") + return(destfile) + } + + } + + message("FAILED") + return(FALSE) + + } + + renv_bootstrap_download_tarball <- function(version) { + + # if the user has provided the path to a tarball via + # an environment variable, then use it + tarball <- Sys.getenv("RENV_BOOTSTRAP_TARBALL", unset = NA) + if (is.na(tarball)) + return() + + # allow directories + info <- file.info(tarball, extra_cols = FALSE) + if (identical(info$isdir, TRUE)) { + name <- sprintf("renv_%s.tar.gz", version) + tarball <- file.path(tarball, name) + } + + # bail if it doesn't exist + if (!file.exists(tarball)) + return() + + fmt <- "* Bootstrapping with tarball at path '%s'." + msg <- sprintf(fmt, tarball) + message(msg) + + tarball + + } + + renv_bootstrap_download_github <- function(version) { + + enabled <- Sys.getenv("RENV_BOOTSTRAP_FROM_GITHUB", unset = "TRUE") + if (!identical(enabled, "TRUE")) + return(FALSE) + + # prepare download options + pat <- Sys.getenv("GITHUB_PAT") + if (nzchar(Sys.which("curl")) && nzchar(pat)) { + fmt <- "--location --fail --header \"Authorization: token %s\"" + extra <- sprintf(fmt, pat) + saved <- options("download.file.method", "download.file.extra") + options(download.file.method = "curl", download.file.extra = extra) + on.exit(do.call(base::options, saved), add = TRUE) + } else if (nzchar(Sys.which("wget")) && nzchar(pat)) { + fmt <- "--header=\"Authorization: token %s\"" + extra <- sprintf(fmt, pat) + saved <- options("download.file.method", "download.file.extra") + options(download.file.method = "wget", download.file.extra = extra) + on.exit(do.call(base::options, saved), add = TRUE) + } + + message("* Downloading renv ", version, " from GitHub ... ", appendLF = FALSE) + + url <- file.path("https://api.github.com/repos/rstudio/renv/tarball", version) + name <- sprintf("renv_%s.tar.gz", version) + destfile <- file.path(tempdir(), name) + + status <- tryCatch( + renv_bootstrap_download_impl(url, destfile), + condition = identity + ) + + if (!identical(status, 0L)) { + message("FAILED") + return(FALSE) + } + + message("OK") + return(destfile) + + } + + renv_bootstrap_install <- function(version, tarball, library) { + + # attempt to install it into project library + message("* Installing renv ", version, " ... ", appendLF = FALSE) + dir.create(library, showWarnings = FALSE, recursive = TRUE) + + # invoke using system2 so we can capture and report output + bin <- R.home("bin") + exe <- if (Sys.info()[["sysname"]] == "Windows") "R.exe" else "R" + r <- file.path(bin, exe) + args <- c("--vanilla", "CMD", "INSTALL", "--no-multiarch", "-l", shQuote(library), shQuote(tarball)) + output <- system2(r, args, stdout = TRUE, stderr = TRUE) + message("Done!") + + # check for successful install + status <- attr(output, "status") + if (is.numeric(status) && !identical(status, 0L)) { + header <- "Error installing renv:" + lines <- paste(rep.int("=", nchar(header)), collapse = "") + text <- c(header, lines, output) + writeLines(text, con = stderr()) + } + + status + + } + + renv_bootstrap_platform_prefix <- function() { + + # construct version prefix + version <- paste(R.version$major, R.version$minor, sep = ".") + prefix <- paste("R", numeric_version(version)[1, 1:2], sep = "-") + + # include SVN revision for development versions of R + # (to avoid sharing platform-specific artefacts with released versions of R) + devel <- + identical(R.version[["status"]], "Under development (unstable)") || + identical(R.version[["nickname"]], "Unsuffered Consequences") + + if (devel) + prefix <- paste(prefix, R.version[["svn rev"]], sep = "-r") + + # build list of path components + components <- c(prefix, R.version$platform) + + # include prefix if provided by user + prefix <- renv_bootstrap_platform_prefix_impl() + if (!is.na(prefix) && nzchar(prefix)) + components <- c(prefix, components) + + # build prefix + paste(components, collapse = "/") + + } + + renv_bootstrap_platform_prefix_impl <- function() { + + # if an explicit prefix has been supplied, use it + prefix <- Sys.getenv("RENV_PATHS_PREFIX", unset = NA) + if (!is.na(prefix)) + return(prefix) + + # if the user has requested an automatic prefix, generate it + auto <- Sys.getenv("RENV_PATHS_PREFIX_AUTO", unset = NA) + if (auto %in% c("TRUE", "True", "true", "1")) + return(renv_bootstrap_platform_prefix_auto()) + + # empty string on failure + "" + + } + + renv_bootstrap_platform_prefix_auto <- function() { + + prefix <- tryCatch(renv_bootstrap_platform_os(), error = identity) + if (inherits(prefix, "error") || prefix %in% "unknown") { + + msg <- paste( + "failed to infer current operating system", + "please file a bug report at https://github.com/rstudio/renv/issues", + sep = "; " + ) + + warning(msg) + + } + + prefix + + } + + renv_bootstrap_platform_os <- function() { + + sysinfo <- Sys.info() + sysname <- sysinfo[["sysname"]] + + # handle Windows + macOS up front + if (sysname == "Windows") + return("windows") + else if (sysname == "Darwin") + return("macos") + + # check for os-release files + for (file in c("/etc/os-release", "/usr/lib/os-release")) + if (file.exists(file)) + return(renv_bootstrap_platform_os_via_os_release(file, sysinfo)) + + # check for redhat-release files + if (file.exists("/etc/redhat-release")) + return(renv_bootstrap_platform_os_via_redhat_release()) + + "unknown" + + } + + renv_bootstrap_platform_os_via_os_release <- function(file, sysinfo) { + + # read /etc/os-release + release <- utils::read.table( + file = file, + sep = "=", + quote = c("\"", "'"), + col.names = c("Key", "Value"), + comment.char = "#", + stringsAsFactors = FALSE + ) + + vars <- as.list(release$Value) + names(vars) <- release$Key + + # get os name + os <- tolower(sysinfo[["sysname"]]) + + # read id + id <- "unknown" + for (field in c("ID", "ID_LIKE")) { + if (field %in% names(vars) && nzchar(vars[[field]])) { + id <- vars[[field]] + break + } + } + + # read version + version <- "unknown" + for (field in c("UBUNTU_CODENAME", "VERSION_CODENAME", "VERSION_ID", "BUILD_ID")) { + if (field %in% names(vars) && nzchar(vars[[field]])) { + version <- vars[[field]] + break + } + } + + # join together + paste(c(os, id, version), collapse = "-") + + } + + renv_bootstrap_platform_os_via_redhat_release <- function() { + + # read /etc/redhat-release + contents <- readLines("/etc/redhat-release", warn = FALSE) + + # infer id + id <- if (grepl("centos", contents, ignore.case = TRUE)) + "centos" + else if (grepl("redhat", contents, ignore.case = TRUE)) + "redhat" + else + "unknown" + + # try to find a version component (very hacky) + version <- "unknown" + + parts <- strsplit(contents, "[[:space:]]")[[1L]] + for (part in parts) { + + nv <- tryCatch(numeric_version(part), error = identity) + if (inherits(nv, "error")) + next + + version <- nv[1, 1] + break + + } + + paste(c("linux", id, version), collapse = "-") + + } + + renv_bootstrap_library_root_name <- function(project) { + + # use project name as-is if requested + asis <- Sys.getenv("RENV_PATHS_LIBRARY_ROOT_ASIS", unset = "FALSE") + if (asis) + return(basename(project)) + + # otherwise, disambiguate based on project's path + id <- substring(renv_bootstrap_hash_text(project), 1L, 8L) + paste(basename(project), id, sep = "-") + + } + + renv_bootstrap_library_root <- function(project) { + + prefix <- renv_bootstrap_profile_prefix() + + path <- Sys.getenv("RENV_PATHS_LIBRARY", unset = NA) + if (!is.na(path)) + return(paste(c(path, prefix), collapse = "/")) + + path <- renv_bootstrap_library_root_impl(project) + if (!is.null(path)) { + name <- renv_bootstrap_library_root_name(project) + return(paste(c(path, prefix, name), collapse = "/")) + } + + renv_bootstrap_paths_renv("library", project = project) + + } + + renv_bootstrap_library_root_impl <- function(project) { + + root <- Sys.getenv("RENV_PATHS_LIBRARY_ROOT", unset = NA) + if (!is.na(root)) + return(root) + + type <- renv_bootstrap_project_type(project) + if (identical(type, "package")) { + userdir <- renv_bootstrap_user_dir() + return(file.path(userdir, "library")) + } + + } + + renv_bootstrap_validate_version <- function(version) { + + loadedversion <- utils::packageDescription("renv", fields = "Version") + if (version == loadedversion) + return(TRUE) + + # assume four-component versions are from GitHub; three-component + # versions are from CRAN + components <- strsplit(loadedversion, "[.-]")[[1]] + remote <- if (length(components) == 4L) + paste("rstudio/renv", loadedversion, sep = "@") + else + paste("renv", loadedversion, sep = "@") + + fmt <- paste( + "renv %1$s was loaded from project library, but this project is configured to use renv %2$s.", + "Use `renv::record(\"%3$s\")` to record renv %1$s in the lockfile.", + "Use `renv::restore(packages = \"renv\")` to install renv %2$s into the project library.", + sep = "\n" + ) + + msg <- sprintf(fmt, loadedversion, version, remote) + warning(msg, call. = FALSE) + + FALSE + + } + + renv_bootstrap_hash_text <- function(text) { + + hashfile <- tempfile("renv-hash-") + on.exit(unlink(hashfile), add = TRUE) + + writeLines(text, con = hashfile) + tools::md5sum(hashfile) + + } + + renv_bootstrap_load <- function(project, libpath, version) { + + # try to load renv from the project library + if (!requireNamespace("renv", lib.loc = libpath, quietly = TRUE)) + return(FALSE) + + # warn if the version of renv loaded does not match + renv_bootstrap_validate_version(version) + + # load the project + renv::load(project) + + TRUE + + } + + renv_bootstrap_profile_load <- function(project) { + + # if RENV_PROFILE is already set, just use that + profile <- Sys.getenv("RENV_PROFILE", unset = NA) + if (!is.na(profile) && nzchar(profile)) + return(profile) + + # check for a profile file (nothing to do if it doesn't exist) + path <- renv_bootstrap_paths_renv("profile", profile = FALSE) + if (!file.exists(path)) + return(NULL) + + # read the profile, and set it if it exists + contents <- readLines(path, warn = FALSE) + if (length(contents) == 0L) + return(NULL) + + # set RENV_PROFILE + profile <- contents[[1L]] + if (!profile %in% c("", "default")) + Sys.setenv(RENV_PROFILE = profile) + + profile + + } + + renv_bootstrap_profile_prefix <- function() { + profile <- renv_bootstrap_profile_get() + if (!is.null(profile)) + return(file.path("profiles", profile, "renv")) + } + + renv_bootstrap_profile_get <- function() { + profile <- Sys.getenv("RENV_PROFILE", unset = "") + renv_bootstrap_profile_normalize(profile) + } + + renv_bootstrap_profile_set <- function(profile) { + profile <- renv_bootstrap_profile_normalize(profile) + if (is.null(profile)) + Sys.unsetenv("RENV_PROFILE") + else + Sys.setenv(RENV_PROFILE = profile) + } + + renv_bootstrap_profile_normalize <- function(profile) { + + if (is.null(profile) || profile %in% c("", "default")) + return(NULL) + + profile + + } + + renv_bootstrap_path_absolute <- function(path) { + + substr(path, 1L, 1L) %in% c("~", "/", "\\") || ( + substr(path, 1L, 1L) %in% c(letters, LETTERS) && + substr(path, 2L, 3L) %in% c(":/", ":\\") + ) + + } + + renv_bootstrap_paths_renv <- function(..., profile = TRUE, project = NULL) { + renv <- Sys.getenv("RENV_PATHS_RENV", unset = "renv") + root <- if (renv_bootstrap_path_absolute(renv)) NULL else project + prefix <- if (profile) renv_bootstrap_profile_prefix() + components <- c(root, renv, prefix, ...) + paste(components, collapse = "/") + } + + renv_bootstrap_project_type <- function(path) { + + descpath <- file.path(path, "DESCRIPTION") + if (!file.exists(descpath)) + return("unknown") + + desc <- tryCatch( + read.dcf(descpath, all = TRUE), + error = identity + ) + + if (inherits(desc, "error")) + return("unknown") + + type <- desc$Type + if (!is.null(type)) + return(tolower(type)) + + package <- desc$Package + if (!is.null(package)) + return("package") + + "unknown" + + } + + renv_bootstrap_user_dir <- function() { + chartr("\\", "/", renv_bootstrap_user_dir_impl()) + } + + renv_bootstrap_user_dir_impl <- function() { + + # use local override if set + override <- getOption("renv.userdir.override") + if (!is.null(override)) + return(override) + + # use R_user_dir if available + tools <- asNamespace("tools") + if (is.function(tools$R_user_dir)) + return(tools$R_user_dir("renv", "cache")) + + # try using our own backfill for older versions of R + envvars <- c("R_USER_CACHE_DIR", "XDG_CACHE_HOME") + for (envvar in envvars) { + root <- Sys.getenv(envvar, unset = NA) + if (!is.na(root)) + return(file.path(root, "R/renv")) + } + + # use platform-specific default fallbacks + if (Sys.info()[["sysname"]] == "Windows") + file.path(Sys.getenv("LOCALAPPDATA"), "R/cache/R/renv") + else if (Sys.info()[["sysname"]] == "Darwin") + "~/Library/Caches/org.R-project.R/R/renv" + else + "~/.cache/R/renv" + + } + + + renv_json_read <- function(file = NULL, text = NULL) { + + text <- paste(text %||% read(file), collapse = "\n") + + # find strings in the JSON + pattern <- '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + locs <- gregexpr(pattern, text)[[1]] + + # if any are found, replace them with placeholders + replaced <- text + strings <- character() + replacements <- character() + + if (!identical(c(locs), -1L)) { + + # get the string values + starts <- locs + ends <- locs + attr(locs, "match.length") - 1L + strings <- substring(text, starts, ends) + + # only keep those requiring escaping + strings <- grep("[[\\]{}:]", strings, perl = TRUE, value = TRUE) + + # compute replacements + replacements <- sprintf('"\032%i\032"', seq_along(strings)) + + # replace the strings + mapply(function(string, replacement) { + replaced <<- sub(string, replacement, replaced, fixed = TRUE) + }, strings, replacements) + + } + + # transform the JSON into something the R parser understands + transformed <- replaced + transformed <- gsub("[[{]", "list(", transformed) + transformed <- gsub("[]}]", ")", transformed) + transformed <- gsub(":", "=", transformed, fixed = TRUE) + text <- paste(transformed, collapse = "\n") + + # parse it + json <- parse(text = text, keep.source = FALSE, srcfile = NULL)[[1L]] + + # construct map between source strings, replaced strings + map <- as.character(parse(text = strings)) + names(map) <- as.character(parse(text = replacements)) + + # convert to list + map <- as.list(map) + + # remap strings in object + remapped <- renv_json_remap(json, map) + + # evaluate + eval(remapped, envir = baseenv()) + + } + + renv_json_remap <- function(json, map) { + + # fix names + if (!is.null(names(json))) { + lhs <- match(names(json), names(map), nomatch = 0L) + rhs <- match(names(map), names(json), nomatch = 0L) + names(json)[rhs] <- map[lhs] + } + + # fix values + if (is.character(json)) + return(map[[json]] %||% json) + + # handle true, false, null + if (is.name(json)) { + text <- as.character(json) + if (text == "true") + return(TRUE) + else if (text == "false") + return(FALSE) + else if (text == "null") + return(NULL) + } + + # recurse + if (is.recursive(json)) { + for (i in seq_along(json)) { + json[i] <- list(renv_json_remap(json[[i]], map)) + } + } + + json + + } + + # load the renv profile, if any + renv_bootstrap_profile_load(project) + + # construct path to library root + root <- renv_bootstrap_library_root(project) + + # construct library prefix for platform + prefix <- renv_bootstrap_platform_prefix() + + # construct full libpath + libpath <- file.path(root, prefix) + + # attempt to load + if (renv_bootstrap_load(project, libpath, version)) + return(TRUE) + + # load failed; inform user we're about to bootstrap + prefix <- paste("# Bootstrapping renv", version) + postfix <- paste(rep.int("-", 77L - nchar(prefix)), collapse = "") + header <- paste(prefix, postfix) + message(header) + + # perform bootstrap + bootstrap(version, libpath) + + # exit early if we're just testing bootstrap + if (!is.na(Sys.getenv("RENV_BOOTSTRAP_INSTALL_ONLY", unset = NA))) + return(TRUE) + + # try again to load + if (requireNamespace("renv", lib.loc = libpath, quietly = TRUE)) { + message("* Successfully installed and loaded renv ", version, ".") + return(renv::load()) + } + + # failed to download or load renv; warn the user + msg <- c( + "Failed to find an renv installation: the project will not be loaded.", + "Use `renv::activate()` to re-initialize the project." + ) + + warning(paste(msg, collapse = "\n"), call. = FALSE) + +}) diff --git a/renv/settings.dcf b/renv/settings.dcf new file mode 100644 index 00000000..169d82f1 --- /dev/null +++ b/renv/settings.dcf @@ -0,0 +1,10 @@ +bioconductor.version: +external.libraries: +ignored.packages: +package.dependency.fields: Imports, Depends, LinkingTo +r.version: +snapshot.type: implicit +use.cache: TRUE +vcs.ignore.cellar: TRUE +vcs.ignore.library: TRUE +vcs.ignore.local: TRUE