From 68bfa3a7715826240a5084abe4d08c897e313a2b Mon Sep 17 00:00:00 2001 From: orichters Date: Wed, 31 May 2023 16:47:38 +0200 Subject: [PATCH] use explicit gdx_refprices in convGDX2MIF, ignore LDV variables with NA unit --- .buildlibrary | 3 +-- CITATION.cff | 4 ++-- DESCRIPTION | 4 ++-- R/convGDX2MIF.R | 10 ++++++---- R/reportPrices.R | 7 ++++--- README.md | 6 +++--- man/convGDX2MIF.Rd | 5 ++++- tests/testthat/test-convGDX2mif.R | 1 + 8 files changed, 23 insertions(+), 17 deletions(-) diff --git a/.buildlibrary b/.buildlibrary index 9879c730..66436b14 100644 --- a/.buildlibrary +++ b/.buildlibrary @@ -1,10 +1,9 @@ -ValidationKey: '216742277' +ValidationKey: '216772896' AcceptedWarnings: - 'Warning: package ''.*'' was built under R version' - 'Warning: namespace ''.*'' is not available and has been replaced' - .*qpdf.* is needed for checks on size reduction of PDFs - .*following variables are expected in the piamInterfaces.* -- These variables and units contain NA AcceptedNotes: - Imports includes .* non-default packages. - unable to verify current time diff --git a/CITATION.cff b/CITATION.cff index 97a404cf..b446543c 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: 'remind2: The REMIND R package (2nd generation)' -version: 1.111.1 -date-released: '2023-05-30' +version: 1.111.2 +date-released: '2023-05-31' abstract: Contains the REMIND-specific routines for data and model output manipulation. authors: - family-names: Rodrigues diff --git a/DESCRIPTION b/DESCRIPTION index 3c0de2ad..e54d1930 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,8 +1,8 @@ Type: Package Package: remind2 Title: The REMIND R package (2nd generation) -Version: 1.111.1 -Date: 2023-05-30 +Version: 1.111.2 +Date: 2023-05-31 Authors@R: c( person("Renato", "Rodrigues", , "renato.rodrigues@pik-potsdam.de", role = c("aut", "cre")), person("Lavinia", "Baumstark", role = "aut"), diff --git a/R/convGDX2MIF.R b/R/convGDX2MIF.R index ac739e8b..1374ea8c 100644 --- a/R/convGDX2MIF.R +++ b/R/convGDX2MIF.R @@ -12,6 +12,7 @@ #' @param scenario scenario name that is used in the *.mif reporting #' @param t temporal resolution of the reporting, default: #' t=c(seq(2005,2060,5),seq(2070,2110,10),2130,2150) +#' @param gdx_refprices reference-gdx for < cm_startyear, used for fixing the prices to this scenario #' @author Lavinia Baumstark #' @examples #' @@ -22,9 +23,10 @@ #' @importFrom magclass mbind write.report convGDX2MIF <- function(gdx, gdx_ref = NULL, file = NULL, scenario = "default", - t = c(seq(2005, 2060, 5), seq(2070, 2110, 10), - 2130, 2150)) { - # Define region subsets + t = c(seq(2005, 2060, 5), seq(2070, 2110, 10), 2130, 2150), + gdx_refprices = NULL) { + + # Define region subsets regionSubsetList <- toolRegionSubsets(gdx) # ADD EU-27 region aggregation if possible if("EUR" %in% names(regionSubsetList)){ @@ -68,7 +70,7 @@ convGDX2MIF <- function(gdx, gdx_ref = NULL, file = NULL, scenario = "default", message("running reportTechnology...") output <- mbind(output,reportTechnology(gdx,output,regionSubsetList,t)[,t,]) # needs output from reportSE message("running reportPrices...") - output <- mbind(output,reportPrices(gdx,output,regionSubsetList,t,gdx_ref = gdx_ref)[,t,]) # needs output from reportSE, reportFE, reportEmi, reportExtraction, reportMacroEconomy + output <- mbind(output,reportPrices(gdx,output,regionSubsetList,t,gdx_ref = gdx_refprices)[,t,]) # needs output from reportSE, reportFE, reportEmi, reportExtraction, reportMacroEconomy message("running reportCosts...") output <- mbind(output,reportCosts(gdx,output,regionSubsetList,t)[,t,]) # needs output from reportEnergyInvestment, reportPrices, reportEnergyInvestments message("running reportTax...") diff --git a/R/reportPrices.R b/R/reportPrices.R index 50f62c38..1856a8e0 100644 --- a/R/reportPrices.R +++ b/R/reportPrices.R @@ -691,6 +691,7 @@ reportPrices <- function(gdx, output=NULL, regionSubsetList=NULL, out.reporting <- pmax(out, 0) # avoid negative prices # for cm_startyear and non-SSP2, replace price by average of period before and after + # this is a workaround to avoid spikes caused by https://github.com/remindmodel/remind/issues/1068 if (! grepl("gdp_SSP2", readGDX(gdx, "cm_GDPscen", format = "simplest")) && cm_startyear > min(getYears(out, as.integer = TRUE))) { out.reporting[, cm_startyear, ] <- 0.5 * (out[, cm_startyear - 5, ] + out[, cm_startyear + 5, ]) @@ -919,11 +920,11 @@ reportPrices <- function(gdx, output=NULL, regionSubsetList=NULL, ) - ## weights definition for FE prices region aggregation + ## add weights definition for region aggregation for FE prices that were added automatically if(length(pm_FEPrice_by_FE) > 0) { - margPriceVars <- getItems(out,3)[grep("Price|Final Energy|", getItems(out,3), fixed = TRUE)] + margPriceVars <- grep("Price|Final Energy|", getItems(out,3), fixed = TRUE, value = TRUE) margPriceVars <- setdiff(margPriceVars, names(int2ext)) - vars <- gsub("US\\$2005/GJ","EJ/yr",gsub("Price\\|Final Energy\\|","FE|",margPriceVars)) + vars <- gsub("US\\$2005/GJ", "EJ/yr", gsub("Price\\|Final Energy\\|","FE|",margPriceVars)) names(vars) <- margPriceVars vars <- gsub("Efuel","Hydrogen",vars) ###warning FE variable should be renamed and this line should be removed in the future # for(var in vars){ # display price variables with no matching FE weight diff --git a/README.md b/README.md index 0750019b..c56adc27 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # The REMIND R package (2nd generation) -R package **remind2**, version **1.111.1** +R package **remind2**, version **1.111.2** [![CRAN status](https://www.r-pkg.org/badges/version/remind2)](https://cran.r-project.org/package=remind2) [![R build status](https://github.com/pik-piam/remind2/workflows/check/badge.svg)](https://github.com/pik-piam/remind2/actions) [![codecov](https://codecov.io/gh/pik-piam/remind2/branch/master/graph/badge.svg)](https://app.codecov.io/gh/pik-piam/remind2) [![r-universe](https://pik-piam.r-universe.dev/badges/remind2)](https://pik-piam.r-universe.dev/builds) @@ -49,7 +49,7 @@ In case of questions / problems please contact Renato Rodrigues . +Rodrigues R, Baumstark L, Benke F, Dietrich J, Dirnaichner A, Führlich P, Giannousakis A, Hasse R, Hilaire J, Klein D, Koch J, Kowalczyk K, Levesque A, Malik A, Merfort A, Merfort L, Morena-Leiva S, Pehl M, Pietzcker R, Rauner S, Richters O, Rottoli M, Schötz C, Schreyer F, Siala K, Sörgel B, Spahr M, Strefler J, Verpoort P (2023). _remind2: The REMIND R package (2nd generation)_. R package version 1.111.2, . A BibTeX entry for LaTeX users is @@ -58,7 +58,7 @@ A BibTeX entry for LaTeX users is title = {remind2: The REMIND R package (2nd generation)}, author = {Renato Rodrigues and Lavinia Baumstark and Falk Benke and Jan Philipp Dietrich and Alois Dirnaichner and Pascal Führlich and Anastasis Giannousakis and Robin Hasse and Jérome Hilaire and David Klein and Johannes Koch and Katarzyna Kowalczyk and Antoine Levesque and Aman Malik and Anne Merfort and Leon Merfort and Simón Morena-Leiva and Michaja Pehl and Robert Pietzcker and Sebastian Rauner and Oliver Richters and Marianna Rottoli and Christof Schötz and Felix Schreyer and Kais Siala and Björn Sörgel and Mike Spahr and Jessica Strefler and Philipp Verpoort}, year = {2023}, - note = {R package version 1.111.1}, + note = {R package version 1.111.2}, url = {https://github.com/pik-piam/remind2}, } ``` diff --git a/man/convGDX2MIF.Rd b/man/convGDX2MIF.Rd index effe57e2..5af4b59b 100644 --- a/man/convGDX2MIF.Rd +++ b/man/convGDX2MIF.Rd @@ -9,7 +9,8 @@ convGDX2MIF( gdx_ref = NULL, file = NULL, scenario = "default", - t = c(seq(2005, 2060, 5), seq(2070, 2110, 10), 2130, 2150) + t = c(seq(2005, 2060, 5), seq(2070, 2110, 10), 2130, 2150), + gdx_refprices = NULL ) } \arguments{ @@ -25,6 +26,8 @@ returned} \item{t}{temporal resolution of the reporting, default: t=c(seq(2005,2060,5),seq(2070,2110,10),2130,2150)} + +\item{gdx_refprices}{reference-gdx for < cm_startyear, used for fixing the prices to this scenario} } \description{ Read in all information from GDX file and create diff --git a/tests/testthat/test-convGDX2mif.R b/tests/testthat/test-convGDX2mif.R index 54b60e88..e9bcaf11 100644 --- a/tests/testthat/test-convGDX2mif.R +++ b/tests/testthat/test-convGDX2mif.R @@ -42,6 +42,7 @@ checkIntegrity <- function(out, gdxPath = NULL) { warning("These variable names have wrong bars and spaces: ", paste(barspace, collapse = ", ")) } NAvar <- grep("[\\|\\( ]NA[\\|\\) ]|^NA", unique(dt[["variable"]]), value = TRUE) + NAvar <- NAvar[! grepl("^Services and Products\\|Transport\\|non-LDV\\|S", NAvar)] # unit NA, but ok, see issue #408 if (length(NAvar) > 0) { warning("These variables and units contain NA: ", paste(NAvar, collapse = ", ")) }