From 2da7dbf1f78cfb1b74ae72ed88cdfad0c00b6230 Mon Sep 17 00:00:00 2001 From: Johannes Koch Date: Fri, 18 Aug 2023 12:44:37 +0200 Subject: [PATCH 1/2] Fix bug in harmonization of SSP2EU pop scenarios We used to just glue EUROSTAT data and projections together. However, theses data sources don't have identical data even in the years in which they overlap (2019, 2020, etc..). So now we harmoinze using the EUROSTAT population_projections growth rates instead. Fixes #73 --- R/calcPopulationHarmonized.R | 11 +++++------ R/readEurostatPopGDP.R | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/R/calcPopulationHarmonized.R b/R/calcPopulationHarmonized.R index 872c4bb..664a2e2 100644 --- a/R/calcPopulationHarmonized.R +++ b/R/calcPopulationHarmonized.R @@ -35,15 +35,14 @@ toolHarmonizeWithPEAPandFuture <- function(past, future) { toolHarmonizeSSP2EU <- function(past, future) { harmonizedData <- toolHarmonizeWithPEAPandFuture(past, future) - # For SSP2EU: simply glue past (until 2019) with future (starting 2020) - # Get EUR countries. + # For EUR countries use only growth rates of EUROSTAT projections (load in fresh: future only has 5 year steps) euCountries <- toolGetEUcountries() - - futYears <- getYears(future$x)[getYears(future$x, as.integer = TRUE) >= 2020] - harmonizedData$x[euCountries, futYears, ] <- future$x[euCountries, futYears, ] + dataEurostat <- readSource("EurostatPopGDP", "population_projections") * 1e-6 + x <- toolHarmonizePastGrFuture(past$x[euCountries, , ], dataEurostat[euCountries, , ]) + harmonizedData$x[euCountries, , ] <- x[euCountries, getYears(harmonizedData$x), ] list(x = harmonizedData$x, - description = glue("{harmonizedData$description} For European countries, just glue past with future.")) + description = glue("{harmonizedData$description} For European countries, just use future growth rates.")) } toolHarmonizeISIMIP <- function(past, future, yEnd) { diff --git a/R/readEurostatPopGDP.R b/R/readEurostatPopGDP.R index 5a45e6d..2c9ad49 100644 --- a/R/readEurostatPopGDP.R +++ b/R/readEurostatPopGDP.R @@ -48,7 +48,7 @@ convEurostatPopulation <- function(x) { getNames(x) <- "population" # Use the "DE_TOT" values for Germany, if they exist (DE_TOT = East + West Germany) x["DE", , ] <- if ("DE_TOT" %in% getItems(x, 1)) x["DE_TOT", , ] else x["DE", , ] - # Drop any countries with more than 2 charachters in their Eurostat identifier. Those are aggregates. + # Drop any countries with more than 2 characters in their Eurostat identifier. Those are aggregates. myCountries <- getItems(x, 1)[purrr::map_lgl(getItems(x, 1), ~ nchar(.x) == 2)] x <- x[myCountries, , ] # Convert the eurostat countrycodes to iso3c codes From c2212513c6600b94815541cfabc03f9adf6bc54b Mon Sep 17 00:00:00 2001 From: Johannes Koch Date: Fri, 18 Aug 2023 13:11:09 +0200 Subject: [PATCH 2/2] Bump version --- .buildlibrary | 2 +- .github/workflows/check.yaml | 92 ++++++++---------------------------- .pre-commit-config.yaml | 2 +- CITATION.cff | 4 +- DESCRIPTION | 4 +- README.md | 6 +-- 6 files changed, 30 insertions(+), 80 deletions(-) diff --git a/.buildlibrary b/.buildlibrary index bf12847..b751bb4 100644 --- a/.buildlibrary +++ b/.buildlibrary @@ -1,4 +1,4 @@ -ValidationKey: '2541630' +ValidationKey: '2742180' AutocreateReadme: yes AcceptedWarnings: - 'Warning: package ''.*'' was built under R version' diff --git a/.github/workflows/check.yaml b/.github/workflows/check.yaml index fcd7136..7d564a1 100644 --- a/.github/workflows/check.yaml +++ b/.github/workflows/check.yaml @@ -1,5 +1,3 @@ -# Run CI for R using https://eddelbuettel.github.io/r-ci/ - name: check on: @@ -8,11 +6,6 @@ on: pull_request: branches: [main, master] -env: - USE_BSPM: "true" - _R_CHECK_FORCE_SUGGESTS_: "false" - NO_BINARY_INSTALL_R_PACKAGES: 'c("madrat", "magclass", "citation", "gms", "goxygen", "GDPuc", "roxygen2")' - jobs: check: runs-on: ubuntu-latest @@ -20,80 +13,37 @@ jobs: steps: - uses: actions/checkout@v3 - - name: Bootstrap - run: | - sudo chown runner -R . - sudo locale-gen en_US.UTF-8 - sudo add-apt-repository -y ppa:ubuntugis/ppa - curl -OLs https://eddelbuettel.github.io/r-ci/run.sh - chmod 0755 run.sh - ./run.sh bootstrap - rm -f bspm_*.tar.gz - - - name: Enable r-universe repo, modify bspm integration - run: | - # install packages from https://pik-piam.r-universe.dev and CRAN - echo ' - options(repos = c(universe = "https://pik-piam.r-universe.dev", - CRAN = "https://cloud.r-project.org")) - ' >> .Rprofile - cat .Rprofile - # modify bspm integration to never install binary builds of PIK CRAN packages - sudo sed -i '/bspm::enable()/d' /etc/R/Rprofile.site - # need double % because of printf, %s is replaced with "$NO_BINARY_INSTALL_R_PACKAGES" (see "env:" above) - printf ' - local({ - expr <- quote({ - if (!is.null(repos)) { - noBinaryInstallRPackages <- %s - pkgs <- c(bspm::install_sys(pkgs[!pkgs %%in%% noBinaryInstallRPackages]), - pkgs[pkgs %%in%% noBinaryInstallRPackages]) - } - type <- "source" - }) - trace(utils::install.packages, expr, print = FALSE) - }) - ' "$NO_BINARY_INSTALL_R_PACKAGES" | sudo tee --append /etc/R/Rprofile.site >/dev/null - cat /etc/R/Rprofile.site - - - name: Set up Pandoc - uses: r-lib/actions/setup-pandoc@v2 + - uses: r-lib/actions/setup-pandoc@v2 - - name: Set up Python 3.9 - uses: actions/setup-python@v4 + - uses: r-lib/actions/setup-r@v2 with: - python-version: 3.9 + use-public-rspm: true + extra-repositories: "https://rse.pik-potsdam.de/r/packages" - - name: Cache R libraries - if: ${{ !env.ACT }} # skip when running locally via nektos/act - uses: pat-s/always-upload-cache@v3 + - uses: r-lib/actions/setup-r-dependencies@v2 with: - path: /usr/local/lib/R/ - key: 3-${{ runner.os }}-usr-local-lib-R-${{ hashFiles('DESCRIPTION') }} - restore-keys: | - 3-${{ runner.os }}-usr-local-lib-R- - - - name: Restore R library permissions - run: | - sudo chmod 2777 /usr/local/lib/R /usr/local/lib/R/site-library - - - name: Install dependencies - run: | - ./run.sh install_aptget libhdf5-dev libharfbuzz-dev libfribidi-dev - ./run.sh install_all - ./run.sh install_r_binary covr rstudioapi - ./run.sh install_r lucode2 + extra-packages: | + any::lucode2 + any::covr + any::madrat + any::magclass + any::citation + any::gms + any::goxygen + any::GDPuc + # piam packages also available on CRAN (madrat, magclass, citation, + # gms, goxygen, GDPuc) will usually have an outdated binary version + # available; by using extra-packages we get the newest version + + - uses: actions/setup-python@v4 + with: + python-version: 3.9 - name: Install python dependencies if applicable run: | [ -f requirements.txt ] && python -m pip install --upgrade pip wheel || true [ -f requirements.txt ] && pip install -r requirements.txt || true - - name: Remove bspm integration # to get rid of error when running install.packages - run: | - sudo sed -i '/ trace(utils::install.packages, expr, print = FALSE)/d' /etc/R/Rprofile.site - cat /etc/R/Rprofile.site - - name: Verify validation key shell: Rscript {0} run: lucode2:::validkey(stopIfInvalid = TRUE) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 9c3b069..5d2e4ca 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -15,7 +15,7 @@ repos: - id: mixed-line-ending - repo: https://github.com/lorenzwalthert/precommit - rev: v0.3.2.9013 + rev: v0.3.2.9019 hooks: - id: parsable-R - id: deps-in-desc diff --git a/CITATION.cff b/CITATION.cff index ca38c5c..64a9feb 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -2,8 +2,8 @@ cff-version: 1.2.0 message: If you use this software, please cite it using the metadata from this file. type: software title: 'mrdrivers: Create GDP and Population Scenarios' -version: 1.3.0 -date-released: '2023-07-13' +version: 1.4.0 +date-released: '2023-08-18' abstract: Create GDP and population scenarios This package constructs the GDP and population scenarios used as drivers in both the REMIND and MAgPIE models. authors: diff --git a/DESCRIPTION b/DESCRIPTION index 3fda611..ed7f300 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Package: mrdrivers Type: Package Title: Create GDP and Population Scenarios -Version: 1.3.0 +Version: 1.4.0 Authors@R: c(person(given = "Johannes", family = "Koch", email = "jokoch@pik-potsdam.de", @@ -49,6 +49,6 @@ Suggests: Encoding: UTF-8 Roxygen: list(markdown = TRUE) RoxygenNote: 7.2.3 -Date: 2023-07-13 +Date: 2023-08-18 Config/testthat/edition: 3 VignetteBuilder: knitr diff --git a/README.md b/README.md index c82b57e..017eeaf 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Create GDP and Population Scenarios -R package **mrdrivers**, version **1.3.0** +R package **mrdrivers**, version **1.4.0** [![CRAN status](https://www.r-pkg.org/badges/version/mrdrivers)](https://cran.r-project.org/package=mrdrivers) [![R build status](https://pik-piam.github.io/mrdrivers/workflows/check/badge.svg)](https://pik-piam.github.io/mrdrivers/actions) [![codecov](https://codecov.io/gh/mrdrivers/branch/master/graph/badge.svg)](https://app.codecov.io/gh/mrdrivers) [![r-universe](https://pik-piam.r-universe.dev/badges/mrdrivers)](https://pik-piam.r-universe.dev/builds) @@ -103,7 +103,7 @@ In case of questions / problems please contact Johannes Koch . +Koch J, Soergel B, Leip D, Benke F, Dietrich J (2023). _mrdrivers: Create GDP and Population Scenarios_. R package version 1.4.0, . A BibTeX entry for LaTeX users is @@ -112,7 +112,7 @@ A BibTeX entry for LaTeX users is title = {mrdrivers: Create GDP and Population Scenarios}, author = {Johannes Koch and Bjoern Soergel and Deborra Leip and Falk Benke and Jan Philipp Dietrich}, year = {2023}, - note = {R package version 1.3.0}, + note = {R package version 1.4.0}, url = {https://pik-piam.github.io/mrdrivers}, url = {https://github.com/pik-piam/mrdrivers}, }