R/readgcam.R

Defines functions readgcam

Documented in readgcam

#' readgcam
#'
#' This function connects to a gcamdatabase and uses a query file to
#' out results into a table ready for plotting.
#' @param folder Default = getwd(). Path to directory for outputs
#' @param nameAppend  Default="". Name to append to saved files.
#' @param gcamdata_folder (OPTIONAL) Default=NULL. Full path to gcamdata folder. Required for some params.
#' @param gcamdatabase Default = NULL. Full path to GCAM database folder.
#' @param queryFile Defualt = NULL. When NULL gcamextractor loads pre-saved xml file gcamextractor::queries_xml
#' @param dataProjFile Default = NULL. Optional. A default 'dataProj.proj' is produced if no .Proj file is specified.
#' @param maxMemory Default = "4g". Set the maxMemory. Sometimes need to increase this for very large data.
#' @param scenOrigNames Default = "All". Original Scenarios names in GCAM database in a string vector.
#' For example c('scenario1','scenario2).
#' @param scenNewNames New Names which may be shorter and more useful for figures etc.
#' Default will use Original Names. For example c('scenario1','scenario2)
#' @param reReadData If TRUE will read the GCAM data base and create a queryData.proj file
#' in the same folder as the GCAM database. If FALSE will load a '.proj' file if a file
#' with full path is provided otherwise it will search for a dataProj.proj file in the existing
#' folder which may have been created from an old run.
#' @param regionsSelect Default = NULL. The regions to analyze in a vector. Example c('Colombia','Argentina'). Full list:
#' USA, Africa_Eastern, Africa_Northern, Africa_Southern, Africa_Western, Australia_NZ, Brazil, Canada
#' Central America and Caribbean, Central Asia, China, EU-12, EU-15, Europe_Eastern, Europe_Non_EU,
#' European Free Trade Association, India, Indonesia, Japan, Mexico, Middle East, Pakistan, Russia,
#' South Africa, South America_Northern, South America_Southern, South Asia, South Korea, Southeast Asia,
# Taiwan, Argentina, Colombia, Uruguay)
#' @param regionsAggregate Default = NULL. Vector or list of vectors containing regions to aggregate into a new region.
#' Example c('South America_Northern', 'South America_Southern') will add one aggregated region while
#' list(c('South America_Northern', 'South America_Southern'), c('USA', 'Canada', 'Mexico')) will add two aggregated regions.
#' @param regionsAggregateNames Default = NULL. Vector of names for aggregated regions. Length must be 1 if regionsAggregate
#' is a vector or match the length of the list given by regionsAggregate. Example: c('South America', 'North America')
#' @param paramsSelect Default = "diagnostic".
#' @param removeVintages Default = "FALSE".
#'
#' Choose "All" or paramSet from "energy", "electricity", "transport",
#' "water" , "socioecon" ,"ag" , "livestock" ,"land"  ,"emissions".
#'
#' Or pick an individual param from the list:
#'
#' # energy
#' "energyPrimaryByFuelEJ","energyPrimaryRefLiqProdEJ",
#' "energyFinalConsumBySecEJ","energyFinalByFuelEJ","energyFinalSubsecByFuelTranspEJ",
#' "energyFinalSubsecByFuelBuildEJ", "energyFinalSubsecByFuelIndusEJ","energyFinalSubsecBySectorBuildEJ",
#' "energyPrimaryByFuelMTOE","energyPrimaryRefLiqProdMTOE",
#' "energyFinalConsumBySecMTOE","energyFinalbyFuelMTOE","energyFinalSubsecByFuelTranspMTOE",
#' "energyFinalSubsecByFuelBuildMTOE", "energyFinalSubsecByFuelIndusMTOE","energyFinalSubsecBySectorBuildMTOE",
#' "energyPrimaryByFuelTWh","energyPrimaryRefLiqProdTWh",
#' "energyFinalConsumBySecTWh","energyFinalbyFuelTWh","energyFinalSubsecByFuelTranspTWh",
#' "energyFinalSubsecByFuelBuildTWh", "energyFinalSubsecByFuelIndusTWh","energyFinalSubsecBySectorBuildTWh",
#'
#' # electricity
#' "elecByTechTWh","elecCapByFuel","elecFinalBySecTWh","elecFinalByFuelTWh", "elecConsumByDemandSector",
#' "elecNewCapCost","elecNewCapGW","elecAnnualRetPrematureCost","elecAnnualRetPrematureGW","elecCumCapCost","elecCumCapGW","elecCumRetPrematureCost","elecCumRetPrematureGW",
#'
#' # transport
#' "transportPassengerVMTByMode", "transportFreightVMTByMode", "transportPassengerVMTByFuel", "transportFreightVMTByFuel",
#'
#' # buildings
#' "serviceOutputByTechBuildings", "buildingFloorspace",
#'
#' # water
#' "watConsumBySec", "watWithdrawBySec", "watWithdrawByCrop", "watBioPhysCons", "watIrrWithdrawBasin","watIrrConsBasin",
#'
#' # socioecon
#' "gdpPerCapita", "gdp", "gdpGrowthRate", "pop",
#'
#'  # ag
#'  "agProdbyIrrRfd", "agProdBiomass", "agProdForest","agProdByCrop",
#'
#'  # livestock
#' "livestock_MeatDairybyTechMixed","livestock_MeatDairybyTechPastoral","livestock_MeatDairybyTechImports", "livestock_MeatDairybySubsector",
#'
#' # land
#' "landIrrRfd", "landIrrCrop","landRfdCrop", "landAlloc","landAllocByCrop",
#'
#'  # emissions
#' "emissLUC", "emissGHGBySectorGWPAR5","emissGHGBySectorGTPAR5",
#' "emissNonCO2ByResProdGWPAR5", "emissBySectorGWPAR5FFI","emissMethaneBySourceGWPAR5",
#' "emissByGasGWPAR5FFI", "emissByGasGWPAR5LUC", "emissBySectorGWPAR5LUC",
#' "emissNonCO2ByResProdGTPAR5", "emissBySectorGTPAR5FFI","emissMethaneBySourceGTPAR5",
#' "emissByGasGTPAR5FFI", "emissByGasGTPAR5LUC","emissBySectorGTPAR5LUC",
#' "emissCO2BySectorNoBio",
#'
#' # hydrogen
#'
#'
#' @param saveData Default = "T". Set to F if do not want to save any data to file.
#' @return A list with the scenarios in the gcam database, queries in the queryxml file and a
#' tibble with gcam data formatted for gcamextractor charts aggregated to different categories.
#' These include data, dataAggParam, dataAggClass1, dataAggClass2.
#' @keywords gcam, gcam database, query
#' @importFrom magrittr %>%
#' @export


readgcam <- function(gcamdatabase = NULL,
                     gcamdata_folder = NULL,
                     queryFile = NULL,
                     dataProjFile = "dataProj.proj",
                     maxMemory = "4g",
                     scenOrigNames = "All",
                     scenNewNames = NULL,
                     reReadData = T,
                     regionsSelect = NULL,
                     regionsAggregate = NULL,
                     regionsAggregateNames = NULL,
                     paramsSelect = "diagnostic",
                     folder = getwd(),
                     nameAppend = "",
                     saveData = T,
                     removeVintages=F
){


  # gcamdatabase = NULL
  # gcamdata_folder = NULL
  # maxMemory = "4g"
  # dataProjFile = "dataProj.proj"
  # queryFile = NULL
  # scenOrigNames = "All"
  # scenNewNames = NULL
  # reReadData = T
  # regionsSelect = NULL
  # paramsSelect="diagnostic"
  # folder=paste(getwd(), "/outputs", sep = "")
  # nameAppend=""
  # saveData = T

  #................
  # Initialize variables by setting to NULL
  #................

  NULL -> vintage -> year -> xLabel -> x -> value -> sector -> scenario -> region -> param -> origX -> origValue ->
    origUnits -> origScen -> origQuery -> classPalette2 -> classPalette1 -> classLabel2 -> classLabel1 -> class2 ->
    class1 -> connx -> aggregate -> Units -> sources -> paramx -> fuel -> technology -> input -> output -> water ->
    landleaf -> ghg -> Convert -> regionsSelectAll->cf1971to2100->gcamCapacityFactor -> . -> GWPAR5 -> tblelecByTechTWh ->
    totalFFINonCO2 -> FracBioFuel -> FracFossilFuel -> TotalLiquids -> agg_tech->scenarios->queries->
    class_temp -> resource -> subRegAreaSum -> subsector->tblFinalNrgIntlAvShipMod -> 'transportation' ->
    'International Aviation' -> 'International Ship' -> 'International Aviation oil' -> 'a oil' ->
    'International Ship oil' -> 'International Aviation liquids' -> liquids -> 'International Ship liquids'->crop->
    paramsSelectAll -> tblFinalNrgIntlAvShip -> datax -> group -> basin -> subRegion -> query -> subresource ->
    transport -> gcamdata -> half.life -> lifetime -> read.csv -> sector_1 -> steepness -> PrimaryFuelCO2Coef ->
    PrimaryFuelCO2Coef.name -> country -> grid_region -> 'io-coefficient' -> 'minicam.energy.input' ->
    'remove.fraction' ->  state ->  subsector.name -> 'to.technology' -> coefficient -> tbl_carbon_capture_rate ->
    gcamdata_files -> aggSector -> tblGHGEmissRes -> segment -> hours -> scenarios_new -> str -> subRegions_new -> x_new

  basedir <- getwd()

  # Normalize path to gcamdatabase
  if(!is.null(gcamdatabase)){gcamdatabase <- normalizePath(gcamdatabase)}

  if(any(paramsSelect %in% c('elec_lifetime_scurve_yr', 'elec_lifetime_yr',
                             'elec_fuel_co2_content_tonsperMBTU',
                             'elec_carbon_capture_rate_fraction',
                             'elec_carbon_capture_escl_rate_fraction'))){
    paramsSelect <- c('pop',paramsSelect)
  }

  if(any(!is.null(regionsSelect))){
    if(any(grepl("$all^", regionsSelect, ignore.case = T))){
      regionsSelect <- NULL
    }

    regionsSelect <- gsub("^United States$", "USA", regionsSelect, ignore.case=T)

    }

  if(!is.null(gcamdata_folder)){
    if(!dir.exists(gcamdata_folder)){
      rlang::warn(paste0("gcamdata_folder provided : ", gcamdata_folder, "does not exist."))
      rlang::warn(paste0("Skipped parameters that require gcamdata folder."))
    }
  }

#.....................
# Read in all raw gcamdata base and gcam folder data.
#.....................

  if(T){ # Read in all raw gcamdata base and gcam folder data.

#.....................
# Params and Queries
#.....................

  paramQueryMap <- (gcamextractor::map_param_query)%>%dplyr::select(group,param,query,gcamdata)

  # Check if queriesSelect is a querySet or one of the queries
  if(!any(c("all","All","ALL") %in% paramsSelect)){
  if(any(paramsSelect %in% unique(paramQueryMap$group))){
    queriesSelectx <- as.vector(unlist(unique((paramQueryMap%>%dplyr::filter(group %in% paramsSelect))$query)))
    #rlang::inform(paste("queriesSelect chosen include the following querySets: ",paste(paramsSelect,collapse=", "),".",sep=""))
    #rlang::inform(paste("Which include the following queries: ",paste(queriesSelectx,collapse=", "),".",sep=""))
    #rlang::inform(paste("Other queries not run include: ",paste(as.vector(unlist(querySets))[!as.vector(unlist(querySets)) %in% queriesSelectx],collapse=", "),".",sep=""))
  }else{
    if(any(paramsSelect %in% as.vector(unique(paramQueryMap$param)))){
      queriesSelectx<- as.vector(unlist(unique((paramQueryMap%>%dplyr::filter(param %in% paramsSelect))$query)))
      #rlang::inform(paste("queriesSelect chosen include the following queries: ",paste(queriesSelectx,collapse=", "),".",sep=""))
     # rlang::inform(paste("Other queries not run include: ",paste(as.vector(unlist(querySets))[!as.vector(unlist(querySets)) %in% queriesSelectx],collapse=", "),".",sep=""))
    }else {
      queriesSelectx <-  NULL
      rlang::inform(paste("Params in queries.xml include: ",paste(as.vector(unlist(unique(paramQueryMap$param))),collapse=", "),".",sep=""))
      rlang::inform(paste("None of the chosen paramsSelect are available in gcamextractor params: ",paste(paramsSelect,collapse=", "),".",sep=""))
      stop("None of the params chosen are available.")
      }
  }}else{
    queriesSelectx <- as.vector(unlist(unique(paramQueryMap$query)))
  }

  queriesSelectx <- unique(queriesSelectx [!is.na(queriesSelectx )])

  # remove USA queries if not needed
  if(any(!is.null(regionsSelect)) && !any(c("USA", gcamextractor::regions_US52) %in% regionsSelect)){
    queriesSelectx <- queriesSelectx[!grepl("USA", queriesSelectx)]
  }
  print("SELECTED QUERIES:")
  print(queriesSelectx)

#.............................
# Create necessary directories if they dont exist.
#............................

  if (!dir.exists(folder)){
    dir.create(folder)}  # Output Directory

#................
# Set file paths
#................

  if(is.null(gcamdatabase)){
    gcamdatabasePath = NULL
    gcamdatabaseName = NULL
  }else{
    if(is.character(gcamdatabase)){
      if(dir.exists(gcamdatabase)){
        gcamdatabasePath <- dirname(gcamdatabase); gcamdatabasePath
        gcamdatabaseName <- basename(gcamdatabase); gcamdatabaseName
        rlang::inform(paste("Connecting to GCAM database provided ",gcamdatabase,"...",sep=""))
      }else{stop(paste("The GCAM database path provided does not exist: ", gcamdatabase, sep=""))}
    }else{
      rlang::inform(paste("gcamdatabase provided is not a character string to the GCAM database path. Please check your entry."))
    }
  }

  if(is.null(queryFile)){
    XML::saveXML(gcamextractor::queries_xml, file=paste0(folder,"/queries.xml"))
    queryFile <- paste0(folder,"/queries.xml")
    xfun::gsub_file(queryFile,"&apos;","'")
    queryPath <- gsub("[^/]+$","",queryFile)
    queryxml <- basename(queryFile)
  }else{
    if(is.character(queryFile)){
      if(file.exists(queryFile)){
        queryPath <- gsub("[^/]+$","",queryFile)
        queryxml <- basename(queryFile)
        rlang::inform(paste("Connecting to the queryFile provided ",queryFile,"...",sep=""))
      }else{rlang::inform(paste("The queryFile path provided dos not exist: ", queryFile, sep=""))}
    }else{
      rlang::inform(paste("The queryFile path provided is not a character string to the query file. Please check your entry."))
    }
  }

  if(is.null(dataProjFile)){
    dataProj = "dataProj"
    dataProjPath = gsub("//","/",paste(folder,"/", sep = ""))
  }else{
    if(is.list(dataProjFile)){
      dataProjPath <- gsub("//","/",paste(folder,"/", sep = ""))
      dataProj <- paste("dataProj", sep = "")
    }else{
    if(is.character(dataProjFile)){
      if(grepl("/",dataProjFile)){
        if(file.exists(dataProjFile)){
        dataProjPath <- gsub("[^/]+$","",dataProjFile)
        dataProj <- basename(dataProjFile)
        rlang::inform(paste("Connecting to the dataProjFile provided ",dataProjFile,"...",sep=""))}else{
          dataProjPath <- gsub("[^/]+$","",dataProjFile)
          dataProj <- basename(dataProjFile)
          rlang::inform(paste0("Creating folder for dataProjFile: ", dataProjFile))
          if(!dir.exists(dataProjPath)){dir.create(dataProjPath)}
          rlang::inform(paste0(gsub("//","/",paste("Will save GCAM data to ",dataProjPath,"/",dataProjFile,"...",sep=""))))
        }
      }else{
        dataProjPath <- gsub("//","/",paste(folder,"/", sep = ""))
        dataProj <- dataProjFile
        rlang::inform(paste("Will save data to: ", dataProjPath,"/",dataProjFile, sep=""))
      }
    }else{
      rlang::inform(paste("The dataProjFile path provided is not a character string to the query file. Please check your entry."))
    }
    }
  }

  # Set new scenario names if provided
  if (is.null(scenOrigNames)) {
    scenNewNames <- NULL
    } else {
    if(any(c("all","All","ALL") %in% scenOrigNames)){
      scenNewNames <- NULL
      }
    }

#.............................................
# Read gcam database or existing dataProj.proj
#............................................

  # In case user sets reReadData=F and provides a .proj file instead of a gcamdatabase
  if((is.null(gcamdatabasePath) | is.null(gcamdatabaseName)) &
     reReadData==T){
    if(is.list(dataProjFile)){
      reReadData=F
      }
    if(file.exists(paste(dataProjPath,"/",dataProj,sep=""))){
    reReadData=F
    }
  }

  if(!all(is.na(queriesSelectx))){
  if (!reReadData) {
 # Check for proj file path and folder if incorrect give error
    if(!is.list(dataProjFile)){
    if(!file.exists(gsub("//","/",paste(dataProjPath, "/", dataProj, sep = "")))){
      stop(gsub("//","/",paste("dataProj file: ", dataProjPath,"/",dataProj," is incorrect or doesn't exist.",sep="")))}
    }

  # Checking if dataProjFile is preloaded xml gcamextractor::xmlMetiQueries
  if(is.list(dataProjFile)){
    dataProjLoaded <- rgcam::loadProject(dataProjFile)
    }else{
   if (file.exists(gsub("//","/",paste(dataProjPath, "/", dataProj, sep = "")))) {
      dataProjLoaded <- rgcam::loadProject(gsub("//","/",paste(dataProjPath, "/", dataProj, sep = "")))
   } else {
     stop(paste("No ", dataProj, " file exists. Please set reReadData=T to create dataProj.proj"))
   }}

      scenarios <- rgcam::listScenarios(dataProjLoaded); scenarios  # List of Scenarios in GCAM database
      queries <- rgcam::listQueries(dataProjLoaded); queries  # List of queries in GCAM database

      # Select Scenarios
      if(is.null(scenOrigNames)){
        scenOrigNames <- scenarios[1]
        rlang::inform(paste("scenOrigNames set to NULL so using only first scenario: ",scenarios[1],sep=""))
        rlang::inform(paste("from all available scenarios: ",paste(scenarios,collapse=", "),sep=""))
        rlang::inform(paste0("To run all scenarios please set scenOrigNames to 'All' or"))
        rlang::inform(paste("you can choose a subset of scenarios by setting the scenOrigNames input (eg. scenOrigNames = c('scen1','scen2'))" ,sep=""))
      } else {
        if(any(c("all","All","ALL") %in% scenOrigNames)){
          scenOrigNames <- scenarios
          rlang::inform(paste("scenOrigNames set to 'All' (Default) so using all available scenarios: ",paste(scenarios,collapse=", "),sep=""))
          rlang::inform(paste("You can choose a subset of scenarios by setting the scenOrigNames input (eg. scenOrigNames = c('scen1','scen2'))" ,sep=""))
        } else {
          if(any(scenOrigNames %in% scenarios)){
            rlang::inform(paste("scenOrigNames available in scenarios are :",paste(scenOrigNames[scenOrigNames %in% scenarios],collapse=", "),sep=""))
            if(length(scenOrigNames[!scenOrigNames %in% scenarios])>0){
              rlang::inform(paste("scenOrigNames not available in scenarios are :",paste(scenOrigNames[!scenOrigNames %in% scenarios],collapse=", "),sep=""))}
            if(length(scenarios[!scenarios %in% scenOrigNames])>0){
              rlang::inform(paste("Other scenarios not selected are :",paste(scenarios[!scenarios %in% scenOrigNames],collapse=", "),sep=""))}
          } else {
            rlang::inform(paste("None of the scenOrigNames : ",paste(scenOrigNames,collapse=", "),sep=""))
            rlang::inform(paste("are in the available scenarios : ",paste(scenarios,collapse=", "),sep=""))
          }
        }
      }

      scenarios <- scenOrigNames # Set scenarios to chosen scenarios

  } else {

  # Check for query file and folder if incorrect give error
    if(!file.exists(gsub("//","/",paste(queryPath, "/", queryxml, sep = "")))){stop(paste("query file: ", queryPath,"/",queryxml," is incorrect or doesn't exist.",sep=""))}
    if(file.exists(gsub("//","/",paste(queryPath, "/subSetQueries.xml", sep = "")))){unlink(gsub("//","/",paste(queryPath, "/subSetQueries.xml", sep = "")))}

    # Subset the query file if queriesSelect is not "All"
    if(!any(c("All","all","ALL") %in% paramsSelect)){

    xmlFilePath = gsub("//","/",paste(queryPath, "/", queryxml, sep = ""))
    xmlfile <- XML::xmlTreeParse(xmlFilePath)
    xmltop <- XML::xmlRoot(xmlfile)
    top <- XML::xmlNode(XML::xmlName(xmltop))

    # Subset regions in queries
    for(i in 1:length(xmltop)){
      for(j in 1:length(queriesSelectx)){
       if(queriesSelectx[j] == XML::xmlGetAttr(xmltop[[i]][[length(xmltop[[i]])]], "title")){
          # include only selected regions when applicable
          # (user has selected regions and original query uses "all-regions")
          if(any(!is.null(regionsSelect)) &&
             any(!grepl("all",regionsSelect, ignore.case = T)) &&
             XML::names.XMLNode(xmltop[[i]])[1] == "all-regions" &&
             !(queriesSelectx[j] == "CO2 emissions by sector" &&
               any(c("emissCO2CumGlobal2010to2100", "emissCO2CumGlobal2010to2100RCP") %in% paramsSelect)) &&
             !(queriesSelectx[j] == "prices by sector") &&
             !(queriesSelectx[j] == "elec operating costs by tech and vintage")
             ){
            # keep all regions for CO2 emissions by sector if cumulative global emissions are selected
            # remove the all-regions element
            to_add <- XML::removeChildren(xmltop[[i]],1)
            # add each region
            for(k in 1:length(regionsSelect)){
              to_add <- XML::addChildren(to_add,
                                         XML::xmlNode("region",
                                                      attrs = c(name = regionsSelect[k])))
            }
            # reorder children so that regions are at the top
            XML::xmlChildren(to_add) <- XML::xmlChildren(to_add)[c(2:(length(regionsSelect)+1),1)]
            # add modified node back into xml
            top <- XML::addChildren(top, to_add)
          }else{
            # else include all regions (don't change query from orig query file)
            top <- XML::addChildren(top, xmltop[[i]])
          }
        }
      }
    }

    XML::saveXML(top, file=gsub("//","/",paste(queryPath, "/subSetQueries.xml", sep = "")))
    } else {
      rlang::inform(paste("paramsSelect includes 'All' so running all available queries: ",paste(queriesSelectx,collapse=", "),".",sep=""))
      file.copy(from=gsub("//","/",paste(queryPath, "/", queryxml, sep = "")),
                to=gsub("//","/",paste(queryPath, "/subSetQueries.xml", sep = "")))
    }

    if(!file.exists(gsub("//","/",paste(queryPath, "/subSetQueries.xml", sep = "")))){
      stop(gsub("//","/",paste("query file: ", queryPath,"/subSetQueries.xml is incorrect or doesn't exist.",sep="")))}else{
        xfun::gsub_file(paste(queryPath, "/subSetQueries.xml", sep = ""),"&apos;","'")
        rlang::inform(paste0(gsub("//","/",paste("Reading queries from queryFile created: ", queryPath,"/subSetQueries.xml.",sep=""))))
      }

    # Check for gcamdatbasePath and gcamdatabasename
    if(!is.null(gcamdatabase)){
    if(is.null(gcamdatabasePath) | is.null(gcamdatabaseName)){
      stop(gsub("//","/",paste("GCAM database: ", gcamdatabasePath,"/",gcamdatabaseName," is incorrect or doesn't exist.",sep="")))}
    if(!file.exists(gsub("//","/",paste(gcamdatabasePath, "/", gcamdatabaseName, sep = "")))){
      stop(gsub("//","/",paste("GCAM database: ", gcamdatabasePath,"/",gcamdatabaseName," is incorrect or doesn't exist.",sep="")))}
    }

    # Get names of scenarios in database
    # Change directory to avoid rgcam error when gcamdatabase is in the same folder as gcamextractor
    if(gcamdatabasePath == getwd()){
    rlang::inform("Switching folder because database is in same folder as current working directory which does not work with rgcam.")
    temp_folder <- paste0(getwd(),"/temp_dir")
    dir.create(temp_folder)
    setwd(temp_folder)
    x <- utils::capture.output(rgcam::localDBConn(gcamdatabasePath,gcamdatabaseName,maxMemory=maxMemory), type="message")
    # Reset dir
    setwd(basedir)
    unlink(temp_folder, force=T, recursive=T)
    rlang::inform("Back to original working directory.")} else {
      x <- utils::capture.output(rgcam::localDBConn(gcamdatabasePath,gcamdatabaseName,maxMemory=maxMemory), type="message")
    }
    x <- gsub(", ",",",gsub(": ","",gsub("Database scenarios:  ","",x)));x
    scenarios <- as.vector(unlist(strsplit(gsub("Database scenarios: ","",x),",")))
    rlang::inform(paste("All scenarios in data available: ", paste(scenarios,collapse=", "), sep=""))


    if(file.exists(gsub("//","/",paste(dataProjPath, "/", dataProj, sep = "")))){
      unlink(gsub("//","/",paste(dataProjPath, "/", dataProj, sep = "")))}  # Delete old project file

    # Select Scenarios
    if(is.null(scenOrigNames)){
      scenOrigNames <- scenarios[1]
      rlang::inform(paste("scenOrigNames set to NULL so using only first scenario: ",scenarios[1],sep=""))
      rlang::inform(paste("from all available scenarios: ",paste(scenarios,collapse=", "),sep=""))
      rlang::inform(paste0("To run all scenarios please set scenOrigNames to 'All'"))
    } else {
        if(any(c("all","All","ALL") %in% scenOrigNames)){
          scenOrigNames <- scenarios
          rlang::inform(paste("scenOrigNames set to 'All' so using all available scenarios: ",paste(scenarios,collapse=", "),sep=""))
        } else {
          if(any(scenOrigNames %in% scenarios)){
            rlang::inform(paste("scenOrigNames available in scenarios are : ",paste(scenOrigNames[scenOrigNames %in% scenarios],collapse=", "),sep=""))
            if(length(scenOrigNames[!scenOrigNames %in% scenarios])>0){
            rlang::inform(paste("scenOrigNames not available in scenarios are :",paste(scenOrigNames[!scenOrigNames %in% scenarios],collapse=", "),sep=""))}
            if(length(scenarios[!scenarios %in% scenOrigNames])>0){
            rlang::inform(paste("Other scenarios not selected are :",paste(scenarios[!scenarios %in% scenOrigNames],collapse=", "),sep=""))}
          } else {
            rlang::inform(paste("None of the scenOrigNames : ",paste(scenOrigNames,collapse=", "),sep=""))
            rlang::inform(paste("are in the available scenarios : ",paste(scenarios,collapse=", "),sep=""))
            stop("Please check scenOrigNames and rerun.")
          }
        }
    }

    for (scenario_i in scenOrigNames) {

        # Fix paths
        projPath_i = suppressWarnings(normalizePath(paste0(dataProjPath, "/", dataProj))); projPath_i
        queryPath_i = normalizePath(paste0(queryPath, "/subSetQueries.xml")); queryPath_i
        if(gcamdatabasePath == getwd()){
        # Change directory to avoid rgcam error when gcamdatabase is in the same folder as gcamextractor
        rlang::inform("Switching folder because database is in same folder as current working directory which does not work with rgcam.")
        temp_folder <- paste0(getwd(),"/temp_dir")
        dir.create(temp_folder)
        setwd(temp_folder)
       dataProj.proj <- rgcam::addScenario(conn = rgcam::localDBConn(gcamdatabasePath, gcamdatabaseName,maxMemory=maxMemory),
                                           proj = projPath_i,
                                           scenario = scenario_i,
                                           queryFile = queryPath_i)  # Check your queries file
       # Reset dir
       setwd(basedir)
       unlink(temp_folder, force=T, recursive=T)
       rlang::inform("Back to original working directory.")
        } else {
          dataProj.proj <- rgcam::addScenario(conn = rgcam::localDBConn(gcamdatabasePath, gcamdatabaseName,maxMemory=maxMemory),
                                              proj = projPath_i,
                                              scenario = scenario_i,
                                              queryFile = queryPath_i)  # Check your queries file
        }
      }
    dataProjLoaded <- rgcam::loadProject(gsub("//","/",paste(dataProjPath, "/", dataProj, sep = "")))

    # Save list of scenarios and queries
    scenarios <- rgcam::listScenarios(dataProjLoaded); scenarios  # List of Scenarios in GCAM database
    queries <- rgcam::listQueries(dataProjLoaded); queries  # List of queries in GCAM database
  }

  queries <- rgcam::listQueries(dataProjLoaded); queries  # List of Queries in queryxml
  } else {
    queries <- NA
  }

  # Set new scenario names if provided
  if (is.null(scenNewNames)) {
    scenNewNames <- scenOrigNames}else{
      scenNewNames <- scenNewNames[1:length(scenOrigNames)]
    }

  # Read in paramaters from query file to create formatted table
 queriesx <- queries

  if(!any(queriesSelectx %in% queries)){
    rlang::inform("No queries exist for the param selected in the queryxml file.")}

  paramsSelectAll <- as.vector(unlist(unique(paramQueryMap$param)))


  if(any(c("all","All","ALL") %in% paramsSelect)){
    paramsSelectx <- paramsSelectAll
    } else {
      if(any(paramsSelect %in% as.vector(unique(paramQueryMap$group)))){
        paramsSelectx <- unique((paramQueryMap%>%dplyr::filter(group %in% paramsSelect))$param)
      } else {paramsSelectx=paramsSelect}
    }

  # Read in relevant gcamdatafiles for all params requiring data
  if(!is.null(gcamdata_folder)){
    if(dir.exists(gcamdata_folder)){

      # Get list of relevant gcamdata files for selected params
      (paramQueryMap %>%
        dplyr::filter(gcamdata != "no",
                      param %in% paramsSelectx))$gcamdata %>%
        unlist() %>%
        unique() ->
        gcamdata_filenames; gcamdata_filenames

      # Read in each file needed and assign to list and rename the list item
      gcamdata_files <- list()
      if(!is.null(gcamdata_filenames)){
        count = 1
      for(i in 1:length(gcamdata_filenames)){
        if(!file.exists(paste0(gcamdata_folder, gsub(".csv","",gcamdata_filenames[[i]]), ".csv"))){
          params_remove <- (paramQueryMap %>% dplyr::filter(grepl(gcamdata_filenames[[i]], gcamdata)))$param
          rlang::warn(paste0("File: ", gcamdata_filenames[[i]],
                               " does not exist so skipping file and related param ",
                               (paramQueryMap %>% dplyr::filter(grepl(gcamdata_filenames[[i]], gcamdata)))$param,
                               "."))
          paramsSelectx <- paramsSelectx[!paramsSelectx %in% params_remove]
        } else {
        gcamdata_file_i <-  tibble::as_tibble(utils::read.csv(paste0(gcamdata_folder, gsub(".csv","",gcamdata_filenames[[i]]), ".csv"), comment.char = "#"))
        gcamdata_files[[count]] <- gcamdata_file_i
        names(gcamdata_files)[[count]] <- gcamdata_filenames[[i]]
        count = count + 1
        }
      }
      }
      names(gcamdata_files)
    }
  }

} # Close Read in all raw gcamdata base and gcam folder data.



#.....................
# Collect and format selected parameters
#.....................

  # Check if any of the selected parameters are available in the GCAM data
  if(any(paramsSelectx %in% paramsSelectAll)){

  datax <- tibble::tibble()

  if(T){

  queriesx <- queriesx[queriesx %in% queries]

  print(queriesx)

  # Electricity ------------------------------------------

  # elec_heat_rate_BTUperkWh
  paramx<-"elec_heat_rate_BTUperkWh"
  if(any(c(paramx,"elec_heat_rate_MBTUperMWh") %in% paramsSelectx)){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    queryx <- "elec coeff"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% c(regionsSelect))
      }

      # Check
      #tbl %>% dplyr::filter(sector...6=="gas (CT) (cooling pond)",region=="CO")

      tbl_sector_names <- names(tbl)[grepl("^sector",names(tbl))] %>% sort()
      tbl <- tbl %>%
        dplyr::rename(sector1=tbl_sector_names[1],
                      sector2=tbl_sector_names[2])

      # Set years and vintages to appropriate values
      tbl <- tbl %>%
        dplyr::mutate(vint_year = as.numeric(gsub("vintage=","",`io-coefficient`))) %>%
        dplyr::filter(vint_year <= year) %>%
        dplyr::mutate(year = dplyr::case_when(year<vint_year~vint_year,
                                              TRUE~year)) %>%
        #dplyr::filter(!grepl("pre_1970|1970s|1980s|1990s|2010s|2000s|retire",sector2)) %>%# remove secondary inputs
        dplyr::filter(!grepl("backup", input),
                    !grepl("credits", input),
                    !grepl("water", input))

      # Separate out rows with single values
      tbl_singles <-  tbl %>%
        dplyr::select(-vint_year,-`io-coefficient`) %>% # To be reset later
        dplyr::group_by(Units, scenario, region, sector1, sector2, input) %>%
        summarize(count = n()) %>%
        filter(count == 1); tbl_singles

      tbl_single <- tbl %>%
        merge(tbl_singles) %>%
        dplyr::select(-count); tbl_single

      # Separate out rows with multiple values
      tbl_multi <- tbl %>%
        dplyr::anti_join(tbl_singles); tbl_multi

      # Extrapolate and copy out missing values for tbl_single
      tbl_single_expanded <- tbl_single %>%
        dplyr::select(-vint_year,-`io-coefficient`, -value) %>% # To be reset later
        dplyr::group_by(Units, scenario, region, sector1, sector2, input) %>%
        tidyr::complete(year = seq(2010, 2100, 5)) %>%
        dplyr::left_join(tbl_single %>% dplyr::select(-year,-vint_year,-`io-coefficient`))%>%
        dplyr::ungroup() %>%
        dplyr::mutate(vint_year=year,`io-coefficient`=paste0("vintage=",year));
      tbl_single_expanded %>% as.data.frame() %>% dplyr::arrange(region, year)

      # Check
      # tbl %>% dplyr::filter(region=="FL",sector2=="biomass (conv) (cooling pond)")

      # Extrapolate and fill out missing values
      tbl_multi_expanded<- tbl_multi %>%
        dplyr::select(-vint_year,-`io-coefficient`) %>% # To be reset later
        dplyr::group_by(Units, scenario, region, sector1, sector2, input) %>%
        tidyr::complete(year = seq(2010, 2100, 5),fill = list(value = NA)) %>%
        dplyr::mutate(value = ifelse(is.na(value), approx(year, value, xout = year, rule=2,method = "linear", ties = "mean")$y, value)) %>%
        dplyr::ungroup() %>%
        dplyr::mutate(vint_year=year,`io-coefficient`=paste0("vintage=",year));
      tbl_multi_expanded %>% as.data.frame() %>% dplyr::arrange(region, year)

      # Combine back into single tbl
      tbl <- tbl_multi_expanded %>%
        dplyr::bind_rows(tbl_single_expanded);

      # Missing Regions ---------------------------
      # Expand out to all missing regions
      tbl_regions_expanded_na <- tbl %>%
        dplyr::select(-vint_year,-`io-coefficient`) %>% # To be reset later
        dplyr::group_by(Units, scenario, sector1, sector2, year, input) %>%
        tidyr::complete(region = unique(tbl$region),fill = list(value = NA)) %>%
        dplyr::filter(is.na(value));  tbl_regions_expanded_na

      # Take mean across remaining regions
      tbl_regions_mean <- tbl %>%
        dplyr::select(-vint_year,-`io-coefficient`, -region) %>% # To be reset later
        dplyr::group_by(Units, scenario, sector1, sector2, year, input) %>%
        dplyr::summarize(value=mean(value)); tbl_regions_mean

      # Assign regional means to missing regional values
      tbl_regions_expanded <- tbl_regions_expanded_na %>%
        dplyr::select(-value) %>%
        dplyr::left_join(tbl_regions_mean)%>%
        dplyr::mutate(vint_year=year,`io-coefficient`=paste0("vintage=",year)); tbl_regions_expanded

      # Join back into main tbl
      tbl <- tbl %>%
        dplyr::bind_rows(tbl_regions_expanded)

      # Check
      # tbl %>% dplyr::filter(year %in% c(2025),sector2=="biomass (conv) (cooling pond)"  )
      # tbl %>% dplyr::filter(region=="ND",year %in% c(2025),sector2=="biomass (conv) (cooling pond)"  )
      # tbl %>% dplyr::filter(sector2=="gas (CT) (cooling pond)",grepl("gas",input),year ==2025,region=="CO")

      # Expand 2015 vintage to exist in future years if it doesnt exist already
      # For each future year expand out:
      unique_years <- tbl$year%>%unique()%>%sort(); unique_years
      unique_years <- unique_years[unique_years>=2015 & unique_years<2100]; unique_years
      for(year_i in unique_years){

        rlang::inform(paste0("Expanding vintages for year:",year_i," for elec_heat_rate_BTUperkWh..."))

        if(nrow(tbl %>% dplyr::filter(vint_year==year_i & year>year_i))==0){

          tbl1 <- tbl %>% dplyr::filter(vint_year==year_i); tbl1

          unique_combinations <- unique(tbl1[, c("Units", "scenario", "region", "sector1", "sector2", "input", "io-coefficient", "vint_year")]) %>%
            dplyr::mutate(keep=1); unique_combinations;

          unique_values <- unique(tbl1[, c("Units", "scenario", "region", "sector1", "sector2", "input", "io-coefficient", "vint_year","value")]); unique_values;

          tbl2 <- tbl1 %>%
            dplyr::select(-value) %>%
            tidyr::complete(year=seq(year_i,2100,5), Units, scenario, region, sector1, sector2, input, `io-coefficient`, vint_year) %>%
            dplyr::left_join(unique_combinations)%>%
            dplyr::filter(keep==1) %>%
            dplyr::left_join(unique_values); tbl2

          tbl <- tbl %>%
            dplyr::bind_rows(tbl2 %>% dplyr::select(-keep)) %>%
            unique(); tbl
        } else {rlang::inform(paste0("For year ",year_i," no missing vintages in future years for elec_heat_rate_BTUperkWh."))}

        rlang::inform(paste0("Expansion of vintages for year:",year_i," for elec_heat_rate_BTUperkWh complete."))
      }

      tbl <- tbl %>%
        dplyr::mutate(param = paramx,
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year,
                      subRegion=region,
                      region = dplyr::if_else(region %in% gcamextractor::regions_US52, "USA", region),
                      scenario = scenNewNames,
                      value = (value*gcamextractor::convert$conv_BTU_per_kWh),
                      units = "Heat Rate (BTU per kWh)",
                      vintage = gsub("vintage=", "Vint_",`io-coefficient`),
                      x = year,
                      xLabel = "Year",
                      aggregate = "mean",
                      class1 = dplyr::case_when(grepl("CSP_resource",input)~"solar",
                                                grepl("PV_resource",input)~"solar",
                                                grepl("nuclear",input)~"nuclear",
                                                grepl("wind",input)~"wind",
                                                grepl("oil",input)~"refined liquids",
                                                grepl("refined",input)~"refined liquids",
                                                grepl("biomass",input)~"biomass",
                                                grepl("coal",input)~"coal",
                                                grepl("gas",input)~"gas",
                                                TRUE~input),
                      classLabel1 = "subsector",
                      classPalette1 = "pal_all",
                      class2 = sector2,
                      classLabel2 = "technology",
                      classPalette2 = "pal_all")%>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%
        dplyr::ungroup()%>%
        dplyr::filter(!is.na(value)) %>%
        dplyr::mutate(value = dplyr::if_else(value==3412,0,value))

      # Check
      # tbl %>% dplyr::filter(x %in% c(2020,2025), class2=="gas (CC) (cooling pond)", subRegion=="DC", grepl("gas",class1))%>%as.data.frame()

      if(any(grepl("^cerf$|^go$",paramsSelect,ignore.case = T))){
        tbl <- tbl %>%
          dplyr::filter(grepl("^USA$",region,ignore.case = T))}

      tbl_heat_rate_BTUperkWh <- tbl
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }
  }

  # elec_heat_rate_BTUperkWh
  paramx<-"elec_heat_rate_MBTUperMWh"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    queryx <- "elec coeff"
    if (queryx %in% queriesx) {
      tbl <- tbl_heat_rate_BTUperkWh %>%
        dplyr::mutate(param = paramx,
                      value = value/1000,
                      units = "Heat Rate (MBTU per MWh)")
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }
  }


  ## elec_cap_usa_GW =========================================
  # elec capacity by tech and vintage
  paramx<-"elec_cap_usa_GW"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    queryx <- "elec capacity by tech and vintage"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% c(regionsSelect))
      }
      tbl <- tbl %>%
        dplyr::mutate(param = paramx,
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = "EJ-capacity",
                      origX = year,
                      subRegion=region,
                      region = dplyr::if_else(region %in% gcamextractor::regions_US52, "USA", region),
                      scenario = scenNewNames,
                      value = value*gcamextractor::convert$conv_EJ_to_GW,
                      units = "GW",
                      vintage = paste("Vint_",stringr::str_sub(technology,-4,-1), sep = ""),
                      technology = stringr::str_sub(technology,0,-11),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = subsector,
                      classLabel1 = "subsector",
                      classPalette1 = "pal_all",
                      class2 = technology,
                      classLabel2 = "technology",
                      classPalette2 = "pal_all")%>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%
        dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      tbl_var_om <- tbl
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}


  ## elec_variable_om_2015USDperMWh ============================================
  # Variable OnM costs electricity generation
  paramx<-"elec_variable_om_2015USDperMWh"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    queryx <- "elec operating costs by tech and vintage"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        if("region" %in% names(tbl)){
        tbl <- tbl %>% dplyr::filter(region %in% c(regionsSelect))
        } else {
          tbl <- tbl %>%
            dplyr::mutate(region = "region")
        }
      }
      tbl <- tbl %>%
        dplyr::mutate(param = paramx,
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = "1975USD/GJ",
                      origX = year,
                      subRegion=region,
                      region = dplyr::if_else(region %in% gcamextractor::regions_US52, "USA", region),
                      scenario = scenNewNames,
                      value = (value*gcamextractor::convert$conv_USD_1975_2015/gcamextractor::convert$conv_GJ_to_MWh),
                      units = "OnM Cost (2015 USD/MWh)",
                      vintage = paste("Vint_",stringr::str_sub(technology,-4,-1), sep = ""),
                      technology = stringr::str_sub(technology,0,-11),
                      x = year,
                      xLabel = "Year",
                      aggregate = "mean",
                      class1 = subsector,
                      classLabel1 = "subsector",
                      classPalette1 = "pal_all",
                      class2 = technology,
                      classLabel2 = "technology",
                      classPalette2 = "pal_all")%>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%
        dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      tbl_var_om <- tbl
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}

  ## elec_variable_om_escl_rate_fraction =======================================
  # Variable OnM escalation rate costs electricity generation
  paramx<-"elec_variable_om_escl_rate_fraction"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    queryx <- "elec operating costs by tech and vintage"
    if (queryx %in% queriesx) {
    tbl <- tbl_var_om %>%
      dplyr::group_by(scenario, region, subRegion, param, sources, class1, class2, xLabel,units,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origUnits) %>%
        dplyr::mutate(param = paramx,
                      value_old = value,
                      lag_val = dplyr::lag(value),
                      value = round(((value - dplyr::lag(value)) / dplyr::lag(value)),4),
                      units = "OnM Cost Escalation Rate (fraction)") %>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%
        dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    }
    }

  ## elec_fuel_price_2015USDperMBTU ============================================
  # Fuel price
  paramx<-"elec_fuel_price_2015USDperMBTU"
  if((any(paramx %in% paramsSelectx) | any(paramsSelectx == "elec_fuel_price_escl_rate_fraction"))){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    queryx <- "prices by sector"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        if("region" %in% names(tbl)){
          tbl <- tbl %>% dplyr::filter(region %in% c(regionsSelect))
        } else {
          tbl <- tbl %>%
            dplyr::mutate(region = "region")
        }
      }

      # Regional Biomass reported at State Level
      tbl_bio <- tbl %>%
        dplyr::filter(sector %in% c("regional biomass")) %>%
        dplyr::filter(region %in% gcamextractor::regions_US52); tbl_bio

      # Fossil fuels reported at Grid Region Level
      tbl_fossil <- tbl %>%
        dplyr::filter(sector %in% c("refined liquids industrial",
                                    "regional coal",
                                    "wholesale gas")) %>%
        dplyr::rename(grid_region="region") %>%
        dplyr::left_join(gcamextractor::map_state_to_gridregion, by="grid_region") %>%
        dplyr::filter(!is.na(state)) %>%
        dplyr::rename(region=state) %>%
        dplyr::select(-grid_region,-country); tbl_fossil

      tbl_comb <- tbl_bio %>%
        dplyr::bind_rows(tbl_fossil) %>%
        dplyr::mutate(param = paramx,
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = "1975USD/GJ",
                      origX = year,
                      subRegion=region,
                      region = dplyr::if_else(region %in% gcamextractor::regions_US52, "USA", region),
                      scenario = scenNewNames,
                      value = (value*gcamextractor::gdp_deflator(2015,1975)/gcamextractor::convert$conv_GJ_to_MBTU),
                      units = "Fuel Cost (2015 USD/MBTU)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "mean",
                      class1 = sector,
                      classLabel1 = "sector",
                      classPalette1 = "pal_all",
                      class2 = "class2",
                      classLabel2 = "class2",
                      classPalette2 = "pal_all")%>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%
        dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))


      # Expand fuel price out to related techs
      # Check if all required files are present
      (paramQueryMap %>%
          dplyr::filter(param %in% paramx))$gcamdata %>%
        unlist() %>%
        unique() -> gcamdata_files_needed

      gcamdata_files_needed <- gcamdata_files_needed[!gcamdata_files_needed %in% "no"]

      if(!is.null(gcamdata_folder)){
        if(dir.exists(gcamdata_folder)){
          for(file_i in gcamdata_files_needed){
             file_ix <- paste0(gcamdata_folder, "/", file_i, ".csv")
            if(!file.exists(file_ix)){
              rlang::inform(paste0("File needed does not exist: ", file_ix))
              rlang::inform(paste0("Some results may be missing."))
            }
          }
        }
      }

      if(!is.null(gcamdata_files)){
        if(
          ("/inst/extdata/gcam-usa/calibrated_techs_dispatch_usa" %in% names(gcamdata_files)) &
          ("/inst/extdata/gcam-usa/A23.elec_tech_mapping_cool" %in% names(gcamdata_files))){
      # Read in additional files
      add_techs <- tibble::as_tibble(gcamdata_files[["/inst/extdata/gcam-usa/calibrated_techs_dispatch_usa"]]) %>%
        dplyr::select(class1 = minicam.energy.input,
                      class2a = technology) %>%
        dplyr::left_join(tibble::as_tibble(gcamdata_files[["/inst/extdata/gcam-usa/A23.elec_tech_mapping_cool"]]) %>%
                           dplyr::select(class2a=technology,
                                         class2 = to.technology)) %>%
        dplyr::select(class1,class2) %>%
        dplyr::filter(class1!=""); add_techs

      tbl_comb <- tbl_comb %>%
        dplyr::select(-class2)%>%
        dplyr::left_join(add_techs) %>%
        dplyr::mutate(classLabel1="fuel",
                      classLabel2="technology")
      }}

      if(any(grepl("^cerf$|^go$",paramsSelect,ignore.case = T))){
        tbl_comb <- tbl_comb %>%
          dplyr::filter(grepl("^USA$",region,ignore.case = T))}

      tbl_fuel_price <- tbl_comb
      datax <- dplyr::bind_rows(datax, tbl_comb)

    } else {
      tbl_fuel_price <- NULL
    }}

  ## elec_fuel_price_escl_rate_fraction ========================================
  # Fuel price escalation rate
  paramx<-"elec_fuel_price_escl_rate_fraction"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    if(!is.null(tbl_fuel_price )){
    tbl <- tbl_fuel_price %>%
      dplyr::group_by(scenario, region, subRegion, param, sources, class1, class2, xLabel,units,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origUnits) %>%
      dplyr::mutate(param = paramx,
                    value_old = value,
                    lag_val = dplyr::lag(value),
                    value = round(((value - dplyr::lag(value)) / dplyr::lag(value)),4),
                    units = "Fuel Price Escalation Rate (fraction)") %>%
      dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                    aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                    origScen, origQuery, origValue, origUnits, origX)%>%
      dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%
      dplyr::ungroup()%>%
      dplyr::filter(!is.na(value))
    datax <- dplyr::bind_rows(datax, tbl)
    }
  } else {
    # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
  }

  ## elec_capacity_factor_usa_in ===============================================
  # Capacity Factor USA Input
  paramx<-"elec_capacity_factor_usa_in"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    queryx <- "elec investment capacity factor"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% c(regionsSelect))
      }

      tbl_sector_names <- names(tbl)[grepl("^sector",names(tbl))] %>% sort()
      tbl <- tbl %>%
        dplyr::rename(sector1=tbl_sector_names[1],
                      sector2=tbl_sector_names[2])
      tbl <- tbl %>%
        dplyr::filter(region %in% gcamextractor::regions_US52) %>%
        dplyr::mutate(param = paramx,
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year,
                      subRegion=region,
                      region = "USA",
                      scenario = scenNewNames,
                      units = "Capacity Factor",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "mean",
                      class1 = sector1,
                      classLabel1 = "investment_segment",
                      classPalette1 = "pal_all",
                      class2 = sector2,
                      classLabel2 = "technology",
                      classPalette2 = "pal_all")%>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%
        dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}

  ## elec_lifetime_scurve_yr ===================================================
  # Lifetime S Curve Parameters
  if(!is.null(gcamdata_folder)){
  paramx<-"elec_lifetime_scurve_yr"
  if(paramx %in% paramsSelectx){

    rlang::inform(paste0("Running param: ", paramx,"..."))

    # Check if all required files are present
    (paramQueryMap %>%
        dplyr::filter(param %in% paramx))$gcamdata %>%
      unlist() %>%
      unique() -> gcamdata_files_needed

    gcamdata_files_needed <- gcamdata_files_needed[!gcamdata_files_needed %in% "no"]

    if(!is.null(gcamdata_folder)){
    if(dir.exists(gcamdata_folder)){
      for(file_i in gcamdata_files_needed){
         file_ix <- paste0(gcamdata_folder, "/", file_i, ".csv")
      if(!file.exists(file_ix)){
        rlang::inform(paste0("File needed does not exist: ", file_ix))
        rlang::inform(paste0("Some results may be missing."))
       }
      }
    }
      }

    # US S-Curve
    tibble::as_tibble(gcamdata_files[["/outputs/L2244.TechSCurve_nuc_gen2_USA"]]) %>%
      dplyr::select(subRegion = "region",
                    class1 = "subsector",
                    class2 = "technology",
                    year,lifetime, steepness, half.life) %>%
      dplyr::mutate(classLabel1 = "subsector",
                    classLabel2 = "technology",
                    param = paramx,
                    region = "USA") %>%
      dplyr::bind_rows(tibble::as_tibble(gcamdata_files[["/outputs/L223.TechSCurve_Dispatch"]]) %>%
                  dplyr::select(subRegion = "region",
                                class1 = "subsector",
                                class2 = "technology",
                                year,lifetime,steepness, half.life) %>%
                  dplyr::mutate(classLabel1 = "subsector",
                                classLabel2 = "technology",
                                param = paramx,
                                region = "USA")) %>%
      dplyr::bind_rows(tibble::as_tibble(gcamdata_files[["/outputs/L2241.TechSCurve_coalret_vintage_dispatch_gcamusa"]]) %>%
                  dplyr::select(subRegion = "region",
                                class1 = "subsector",
                                class2 = "technology",
                                year,lifetime,steepness, half.life) %>%
                  dplyr::mutate(classLabel1 = "subsector",
                                classLabel2 = "technology",
                                param = paramx,
                                region = "USA")) -> elec_lifetime_scurve_us

    # Global S-Curve
    tibble::as_tibble(gcamdata_files[["/outputs/L2233.GlobalTechSCurve_elec_cool"]]) %>%
      dplyr::select(class1 = "subsector.name",
                    class2 = "technology",
                    year,lifetime, steepness, half.life) %>%
      dplyr::mutate(classLabel1 = "subsector",
                    classLabel2 = "technology",
                    param = paramx,
                    region = "Global",
                    subRegion = "Global") -> elec_lifetime_scurve_global

    # Combined S-Curve
    elec_lifetime_scurve_comb <- elec_lifetime_scurve_us %>%
      dplyr::bind_rows(elec_lifetime_scurve_global)

    # Collapse into elec_lifetime_scurve_yr param
    elec_lifetime_scurve_comb_long <- elec_lifetime_scurve_comb %>%
      dplyr::mutate(param = paramx,
                    classLabel1 = "scurve_param") %>%
      dplyr::select(-class1)%>%
      tidyr::gather(key="class1",value="value",
                    -year,-subRegion,-class2,-classLabel1,
                    -classLabel2,-param,-region);
    elec_lifetime_scurve_comb_long

    tbl <- elec_lifetime_scurve_comb_long %>%
      dplyr::mutate(param = paramx,
                    sources = "Sources",
                    origScen = "origScen",
                    origQuery = "origQuery",
                    origValue = value,
                    origUnits = "units",
                    origX = year,
                    scenario = "scenario",
                    units = class1,
                    vintage = paste("Vint_", year, sep = ""),
                    x = year,
                    xLabel = "Year",
                    aggregate = "mean",
                    classPalette1 = "pal_all",
                    classPalette2 = "pal_all")%>%
      dplyr::select(scenario, region, subRegion,param, sources, class1, class2, x, xLabel, vintage, units, value,
                    aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                    origScen, origQuery, origValue, origUnits, origX)%>%
      dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%
      dplyr::ungroup()%>%
      dplyr::filter(!is.na(value))

    datax <- dplyr::bind_rows(datax, tbl)
  }
  }

  ## elec_lifetime_yr ==========================================================
  # Lifetime Parameters
  if(!is.null(gcamdata_folder)){
  paramx<-"elec_lifetime_yr"
  if(paramx %in% paramsSelectx){

    rlang::inform(paste0("Running param: ", paramx,"..."))

    # Check if all required files are present
    (paramQueryMap %>%
        dplyr::filter(param %in% paramx))$gcamdata %>%
      unlist() %>%
      unique() -> gcamdata_files_needed

    gcamdata_files_needed <- gcamdata_files_needed[!gcamdata_files_needed %in% "no"]

    if(dir.exists(gcamdata_folder)){
      for(file_i in gcamdata_files_needed){
         file_ix <- paste0(gcamdata_folder, "/", file_i, ".csv")
        if(!file.exists(file_ix)){
          rlang::inform(paste0("File needed does not exist: ", file_ix))
          rlang::inform(paste0("Some results may be missing."))
        }
      }
    }

    # US S-Curve
    tibble::as_tibble(gcamdata_files[["/outputs/L223.TechLifetime_Dispatch"]]) %>%
      dplyr::select(subRegion = "region",
                    class1 = "subsector",
                    class2 = "technology",
                    year,lifetime) %>%
      dplyr::mutate(classLabel1 = "subsector",
                    classLabel2 = "technology",
                    param = paramx,
                    region = "USA") %>%
      dplyr::bind_rows(tibble::as_tibble(gcamdata_files[["/outputs/L2242.TechLifetime_hydro"]]) %>%
                  dplyr::select(subRegion = "region",
                                class1 = "subsector",
                                class2 = "technology",
                                year,lifetime) %>%
                  dplyr::mutate(classLabel1 = "subsector",
                                classLabel2 = "technology",
                                param = paramx,
                                region = "USA")) -> elec_lifetime_us

    # Global S-Curve
    tibble::as_tibble(gcamdata_files[["/outputs/L2233.GlobalTechLifetime_elec_cool"]]) %>%
      dplyr::select(class1 = "subsector.name",
                    class2 = "technology",
                    year,lifetime) %>%
      dplyr::mutate(classLabel1 = "subsector",
                    classLabel2 = "technology",
                    param = paramx,
                    region = "Global",
                    subRegion = "Global") %>%
      dplyr::bind_rows(tibble::as_tibble(gcamdata_files[["/outputs/L2233.GlobalIntTechLifetime_elec_cool"]]) %>%
                          dplyr::select(class1 = "subsector.name",
                                        class2 = "technology",
                                        year,lifetime) %>%
                          dplyr::mutate(classLabel1 = "subsector",
                                        classLabel2 = "technology",
                                        param = paramx,
                                        region = "Global",
                                        subRegion = "Global"))-> elec_lifetime_global

    # Combined S-Curve
    elec_lifetime_comb <- elec_lifetime_us %>%
      dplyr::bind_rows(elec_lifetime_global) %>%
      dplyr::rename(value=lifetime)

    tbl <- elec_lifetime_comb %>%
      dplyr::mutate(param = paramx,
                    sources = "Sources",
                    origScen = "origScen",
                    origQuery = "origQuery",
                    origValue = value,
                    origUnits = "year",
                    origX = year,
                    scenario = "scenario",
                    units = "lifetime (yr)",
                    vintage = paste("Vint_", year, sep = ""),
                    x = year,
                    xLabel = "Year",
                    aggregate = "mean",
                    classPalette1 = "pal_all",
                    classPalette2 = "pal_all")%>%
      dplyr::select(scenario, region, subRegion,param, sources, class1, class2, x, xLabel, vintage, units, value,
                    aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                    origScen, origQuery, origValue, origUnits, origX)%>%
      dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%
      dplyr::ungroup()%>%
      dplyr::filter(!is.na(value))
    datax <- dplyr::bind_rows(datax, tbl)
  }
  }

  ## elec_fuel_co2_content_tonsperMBTU =========================================
  # Fuel CO2 Content
  if(!is.null(gcamdata_folder)){
    paramx<-"elec_fuel_co2_content_tonsperMBTU"
    if(paramx %in% paramsSelectx){

      rlang::inform(paste0("Running param: ", paramx,"..."))

      # Check if all required files are present
      (paramQueryMap %>%
          dplyr::filter(param %in% paramx))$gcamdata %>%
        unlist() %>%
        unique() -> gcamdata_files_needed

      gcamdata_files_needed <- gcamdata_files_needed[!gcamdata_files_needed %in% "no"]

      if(dir.exists(gcamdata_folder)){
        for(file_i in gcamdata_files_needed){
           file_ix <- paste0(gcamdata_folder, "/", file_i, ".csv")
          if(!file.exists(file_ix)){
            rlang::inform(paste0("File needed does not exist: ", file_ix))
            rlang::inform(paste0("Some results may be missing."))
          }
        }
      }

      # Global CO2 content/National for US
      tibble::as_tibble(gcamdata_files[["/outputs/L202.CarbonCoef"]]) %>%
        unique() %>%
        dplyr::left_join(gcamextractor::map_state_to_gridregion %>% dplyr::select(region=country,subRegion=state)) %>%
        dplyr::select(region,
                      class1 = PrimaryFuelCO2Coef.name,
                      origValue = PrimaryFuelCO2Coef,
                      subRegion) %>%
        dplyr::mutate(classLabel1 = "fuel",
                      classLabel2 = "class2",
                      param = paramx,
                      subRegion = dplyr::if_else(is.na(subRegion),region,subRegion),
                      origUnits = "kg C per GJ") %>%
        # US CO2 content
        dplyr::bind_rows(tibble::as_tibble(gcamdata_files[["/outputs/L222.CarbonCoef_en_USA"]]) %>%
                           dplyr::select(region,
                                         class1 = PrimaryFuelCO2Coef.name,
                                         origValue = PrimaryFuelCO2Coef) %>%
                           dplyr::mutate(classLabel1 = "fuel",
                                         classLabel2 = "class2",
                                         param = paramx,
                                         subRegion = region,
                                         region = "USA",
                                         origUnits = "kg C per GJ")) %>%
        # US CO2 carbon content
        dplyr::bind_rows(tibble::as_tibble(gcamdata_files[["/outputs/L2261.CarbonCoef_bio_USA"]]) %>%
                           dplyr::filter(region!="USA") %>%
                           dplyr::select(region,
                                         class1 = PrimaryFuelCO2Coef.name,
                                         origValue = PrimaryFuelCO2Coef) %>%
                           dplyr::mutate(classLabel1 = "fuel",
                                         classLabel2 = "class2",
                                         param = paramx,
                                         subRegion = region,
                                         region = "USA",
                                         origUnits = "kg C per GJ")) -> tbl_comb

      tbl <- tbl_comb %>%
        dplyr::mutate(param = paramx,
                      value = ((origValue * gcamextractor::convert$conv_C_CO2 * gcamextractor::convert$conv_kg_Ton) /
                                 (gcamextractor::convert$conv_GJ_to_MWh*gcamextractor::convert$conv_MWh_to_MBTU)),
                      sources = "Sources",
                      origScen = "origScen",
                      origQuery = "origQuery",
                      origX = NA_real_,
                      scenario = "scenario",
                      units = "Fuel CO2 Content (Tons per MBTU)",
                      vintage = "vintage",
                      x = NA_real_,
                      xLabel = "Year",
                      aggregate = "mean",
                      class2 = "class2",
                      classPalette1 = "pal_all",
                      classPalette2 = "pal_all") %>%
        dplyr::filter(!grepl("remove",subRegion, ignore.case = T)) %>%
        dplyr::select(scenario, region, subRegion,param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%
        dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))


      # Read in additional files
      if(!is.null(gcamdata_files)){
        if(
          ("/inst/extdata/gcam-usa/calibrated_techs_dispatch_usa"%in% names(gcamdata_files)) &
          ("/inst/extdata/gcam-usa/A23.elec_tech_mapping_cool" %in% names(gcamdata_files))){

      add_techs <- tibble::as_tibble(gcamdata_files[["/inst/extdata/gcam-usa/calibrated_techs_dispatch_usa"]]) %>%
        dplyr::select(class1 = minicam.energy.input,
                      class2a = technology) %>%
        dplyr::left_join(tibble::as_tibble(gcamdata_files[["/inst/extdata/gcam-usa/A23.elec_tech_mapping_cool"]]) %>%
                           dplyr::select(class2a=technology,
                                         class2 = to.technology)) %>%
        dplyr::select(class1,class2) %>%
        dplyr::filter(class1!=""); add_techs

      tbl <- tbl %>%
        dplyr::select(-class2)%>%
        dplyr::left_join(add_techs) %>%
        dplyr::mutate(classLabel1="fuel",
                      classLabel2="technology")%>%
        dplyr::filter(!is.na(class2))
      }}

      if(any(grepl("^cerf$|^go$",paramsSelect,ignore.case = T))){
        tbl <- tbl %>%
          dplyr::filter(grepl("^USA$",region,ignore.case = T))}


      datax <- dplyr::bind_rows(datax, tbl)
    }
  }

  ## elec_carbon_capture_rate_fraction =========================================
  # Carbon Capture Rate Fraction
  if(!is.null(gcamdata_folder)){
    paramx<-"elec_carbon_capture_rate_fraction"
    if(paramx %in% paramsSelectx){

      rlang::inform(paste0("Running param: ", paramx,"..."))

      # Check if all required files are present
      (paramQueryMap %>%
          dplyr::filter(param %in% paramx))$gcamdata %>%
        unlist() %>%
        unique() -> gcamdata_files_needed

      gcamdata_files_needed <- gcamdata_files_needed[!gcamdata_files_needed %in% "no"]

      if(dir.exists(gcamdata_folder)){
        for(file_i in gcamdata_files_needed){
           file_ix <- paste0(gcamdata_folder, "/", file_i, ".csv")
          if(!file.exists(file_ix)){
            rlang::inform(paste0("File needed does not exist: ", file_ix))
            rlang::inform(paste0("Some results may be missing."))
          }
        }
      }

      # US carbon capture
      tibble::as_tibble(gcamdata_files[["/outputs/L223.TechCarbonCapture_Dispatch"]]) %>%
        dplyr::select(subRegion = region,
                      class1 = subsector,
                      class2 = technology,
                      origValue = remove.fraction,
                      year) %>%
        dplyr::mutate(classLabel1 = "subsector",
                      classLabel2 = "technology",
                      param = paramx,
                      origUnits = "Carbon Capture Rate (fraction)",
                      region = "USA") %>%
        # US CO2 content
        dplyr::bind_rows(tibble::as_tibble(gcamdata_files[["/outputs/L2233.GlobalTechCapture_elec_cool"]]) %>%
                           dplyr::select(class1 = subsector.name,
                                         class2 = technology,
                                         origValue = remove.fraction,
                                         year) %>%
                           dplyr::mutate(class1 = gsub(" \\(.*","",class1),
                                         classLabel1 = "subsector",
                                         classLabel2 = "technology",
                                         param = paramx,
                                         subRegion = "Global",
                                         region = "Global",
                                         origUnits = "Carbon Capture Rate (fraction)")) -> tbl_comb

      tbl <- tbl_comb %>%
        dplyr::mutate(param = paramx,
                      value = origValue,
                      sources = "Sources",
                      origScen = "origScen",
                      origQuery = "origQuery",
                      origX = year,
                      scenario = "scenario",
                      units = "Carbon Capture Rate (fraction)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "mean",
                      classPalette1 = "pal_all",
                      classPalette2 = "pal_all") %>%
        dplyr::select(scenario, region, subRegion,param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%
        dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      tbl_carbon_capture_rate <- tbl
      datax <- dplyr::bind_rows(datax, tbl)
    }
  }

  ## elec_carbon_capture_escl_rate_fraction ====================================
  # Carbon Capture Escalaction Rate Fraction
  paramx<-"elec_carbon_capture_escl_rate_fraction"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    if(!is.null(tbl_carbon_capture_rate)){
    tbl <- tbl_carbon_capture_rate %>%
      dplyr::group_by(scenario, region, subRegion, param, sources, class1, class2, xLabel,units,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origUnits) %>%
      dplyr::mutate(param = paramx,
                    value_old = value,
                    lag_val = dplyr::lag(value),
                    value = round(((value - dplyr::lag(value)) / dplyr::lag(value)),4),
                    units = "Carbon Capture Escalation Rate (fraction)") %>%
      dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                    aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                    origScen, origQuery, origValue, origUnits, origX)%>%
      dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%
      dplyr::ungroup()%>%
      dplyr::filter(!is.na(value))
    datax <- dplyr::bind_rows(datax, tbl)
    }
  }


  ## elecFinalBySecTWh =========================================================
  paramx<-"elecFinalBySecTWh"
  # Total final energy by aggregate end-use sector
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    queryx <- "inputs by tech"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }

      # USA
      tblUSA <- tbl %>%
        dplyr::filter(grepl("domestic supply",input),
                      region %in% gcamextractor::regions_US52,
                      scenario %in% scenOrigNames)%>%
        dplyr::mutate(
          class2=sector,
          sector=dplyr::case_when(
            grepl("comm |resid |elect_td_bld",sector,ignore.case = T)~"building",
            grepl("elect_td_trn",sector,ignore.case = T)~"transport",
            grepl("elect_td_ind",sector,ignore.case = T)~"industry",
            TRUE~sector))%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(param = "elecFinalBySecTWh",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      value = value * gcamextractor::convert$conv_EJ_to_TWh,
                      units = "Final Electricity by Sector (TWh)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = sector,
                      classLabel1 = "Sector",
                      classPalette1 = "pal_all",
                      classLabel2 = "subsector",
                      classPalette2 = "classPalette2")%>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%
        dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))

      # CORE
      tblCORE <- tbl %>%
        dplyr::filter(!region %in% c(gcamextractor::regions_US52),
                      scenario %in% scenOrigNames,
                      sector %in% c("elect_td_bld","elect_td_trn","elect_td_ind"))%>%
        dplyr::mutate(
          sector=dplyr::case_when(
            grepl("elect_td_bld",sector,ignore.case = T)~"building",
            grepl("elect_td_trn",sector,ignore.case = T)~"transport",
            grepl("elect_td_ind",sector,ignore.case = T)~"industry",
            TRUE~sector))%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(param = "elecFinalBySecTWh",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      value = value * gcamextractor::convert$conv_EJ_to_TWh,
                      units = "Final Electricity by Sector (TWh)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = sector,
                      classLabel1 = "Sector",
                      classPalette1 = "pal_all",
                      class2 = sector,
                      classLabel2 = "subsector",
                      classPalette2 = "classPalette2")%>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%
        dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))

      datax <- dplyr::bind_rows(datax, tblUSA,tblCORE)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}


  ## elecFinalByFuelTWh ========================================================
  paramx<-"elecFinalByFuelTWh"
  # Total final energy by aggregate end-use sector
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    queryx <- "Final energy by detailed end-use sector and fuel"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::filter(grepl("elect",input))%>%
        dplyr::filter(!grepl("trn",input))%>%
        dplyr::mutate(input=gsub("elect\\_td\\_ind","electricity",input),
                      input=gsub("elect\\_td\\_bld","electricity",input),
                      input=gsub("elect\\_td\\_trn","electricity",input),
                      input=gsub("delivered\\scoal","coal",input),
                      input=gsub("refined\\sliquids\\senduse","oil",input),
                      input=gsub("delivered\\sbiomass","biomass",input),
                      input=gsub("H2\\senduse","hydrogen",input),
                      input=gsub("refined\\sliquids industrial","oil",input),
                      input=gsub("wholesale\\sgas","gas",input),
                      input=gsub("traditional\\sbiomass","biomass",input),
                      input=gsub("delivered\\sgas","gas",input),
                      input=gsub("district\\sheat","Other",input))%>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(param = "elecFinalByFuelTWh",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      value = value * gcamextractor::convert$conv_EJ_to_TWh,
                      units = "Final Electricity by Fuel (TWh)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = input,
                      classLabel1 = "Fuel",
                      classPalette1 = "pal_all",
                      class2 = sector,
                      classLabel2 = "Sector",
                      classPalette2 = "classPalette2")%>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%
        dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}


  ## elecConsumByDemandSectorTWh ===============================================
  paramx <- "elecConsumByDemandSectorTWh"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    queryx <- "elec consumption by demand sector"
    if(queryx %in% queriesx){
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::mutate(input=gsub("elect\\_td\\_ind","industry",input),
                      input=gsub("elect\\_td\\_bld","building",input),
                      input=gsub("elect\\_td\\_trn","transportation",input))%>%
        dplyr::rename(aggSector = input) %>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(param = "elecConsumByDemandSectorTWh",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      value = value * gcamextractor::convert$conv_EJ_to_TWh,
                      units = "Electricity Consumption by Sector (TWh)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = aggSector,
                      classLabel1 = "Aggregated Sector",
                      classPalette1 = "pal_all",
                      class2 = sector,
                      classLabel2 = "Sector",
                      classPalette2 = "classPalette2")%>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%
        dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    }
  }


  ## elecLoadBySegmentGW =======================================================
  # Calculate electricity load by US segments by grid and spread to states
  # Electricity Load (GW) by Segment and State
  paramx<-"elecLoadBySegmentGW"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    queryx <- "elec gen by segment (grid level)"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble

      gridregion <- gcamextractor::map_state_to_gridregion %>%
        dplyr::rename(subRegion = state) %>%
        dplyr::select(grid_region, subRegion)

      map_all <- gridregion %>%
        tidyr::expand(scenario = unique(tbl$scenario),
                      subRegion,
                      year = seq(min(tbl$year), max(tbl$year), 5),
                      units = "Electricity Load (GW)") %>%
        dplyr::left_join(gridregion, by = 'subRegion')

      if (any(!is.null(regionsSelect)) &&
          (any(c("USA", gcamextractor::regions_US52, "All", "ALL", "all") %in% regionsSelect))) {
        tbl <- tbl %>%
          dplyr::filter(region %in% unique(gridregion$grid_region))
        if(any(gcamextractor::regions_US52 %in% regionsSelect)){
          tbl <- tbl %>%
            dplyr::filter(region %in% gridregion$grid_region[gridregion$subRegion %in% regionsSelect])
        }
      }


      # Expand fuel price out to related techs
      # Check if all required files are present
      (paramQueryMap %>%
          dplyr::filter(param %in% paramx))$gcamdata %>%
        unlist() %>%
        unique() -> gcamdata_files_needed

      gcamdata_files_needed <- gcamdata_files_needed[!gcamdata_files_needed %in% "no"]

      if(!is.null(gcamdata_folder)){
        if(dir.exists(gcamdata_folder)){
          for(file_i in gcamdata_files_needed){
            file_ix <- paste0(gcamdata_folder, "/", file_i, ".csv")
            if(!file.exists(file_ix)){
              rlang::inform(paste0("File needed does not exist: ", file_ix))
              rlang::inform(paste0("Some results may be missing."))
            }
          }
        }
      }


      if(!is.null(gcamdata_files[["/outputs/L102.load_segments_gcamusa"]])){
        # Read in additional files
        gen_hours <- tibble::as_tibble(gcamdata_files[["/outputs/L102.load_segments_gcamusa"]]) %>%
          dplyr::select(grid_region, segment, hours)

        tbl <- tbl %>%
          dplyr::rename(grid_region = region) %>%
          dplyr::left_join(gen_hours, by = c('grid_region', 'segment')) %>%
          dplyr::mutate(origValue = value,
                        value = value * gcamextractor::convert$conv_EJ_to_GWh / hours,
                        units = "Electricity Load (GW)") %>%
          dplyr::select(scenario, grid_region, year, segment, value, origValue, units)

        tbl_states <- map_all %>%
          dplyr::left_join(tbl,
                           by = c('scenario', 'grid_region', 'units', 'year')) %>%
          dplyr::mutate(param = paramx,
                        sources = "Sources",
                        origScen = scenario,
                        origQuery = queryx,
                        origValue = origValue,
                        origUnits = "EJ",
                        origX = year,
                        subRegion=subRegion,
                        region = 'USA',
                        scenario = scenNewNames,
                        value = value,
                        units = units,
                        vintage = paste("Vint_", year, sep = ""),
                        x = year,
                        xLabel = "Year",
                        aggregate = "sum",
                        class1 = segment,
                        classLabel1 = "segment",
                        classPalette1 = "pal_all",
                        class2 = "class2",
                        classLabel2 = "class2",
                        classPalette2 = "pal_all")%>%
          dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origValue, origUnits, origX)%>%
          dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                          aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                          origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%
          dplyr::ungroup()%>%
          dplyr::filter(!is.na(value))

      } else {
        tbl_states <- NULL
      }

      datax <- dplyr::bind_rows(datax, tbl_states)


    } else {
      # raise error?
    }}


  ## elecByTechTWh =============================================================
  paramx <- "elecByTechTWh"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    tbl<-tibble::tibble()
    tblUSA<-tibble::tibble()
    tblUSACogen<-tibble::tibble()
    tblGCAMReg<-tibble::tibble()

    #.............
    # For GCAM USA no cogen
    #.............
    queryx <- "elec gen by gen tech USA"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>%
          dplyr::filter(region %in% regionsSelect)
      }
      if (nrow(tbl)>0) {
        tbl <- tbl %>%
          dplyr::filter(region %in% gcamextractor::regions_US52)%>%
          dplyr::filter(!sector %in% "industrial energy use")
      }
      tblUSA <- tbl %>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(param = "elecByTechTWh",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      value = value * gcamextractor::convert$conv_EJ_to_TWh,
                      units = "Electricity Generation by Fuel (TWh)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = subsector,
                      classLabel1 = "Fuel",
                      classPalette1 = "pal_all",
                      class2 = paste(technology,sector,sep=" "),
                      classLabel2 = "Technology",
                      classPalette2 = "pal_all")
    }
    #.............
    # For GCAM USA cogen
    #.............
    # queryx <- "elec gen by gen tech cogen USA"
    # if (queryx %in% queriesx) {
    #   tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
    #   if (any(!is.null(regionsSelect))) {
    #     tbl <- tbl %>%
    #       dplyr::filter(region %in% regionsSelect)
    #   }
    #   if (nrow(tbl)>0) {
    #     tbl <- tbl %>%
    #       dplyr::filter(region %in% gcamextractor::regions_US52)
    #   }
    #   tblUSACogen <- tbl %>%
    #     dplyr::filter(scenario %in% scenOrigNames)%>%
    #     dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
    #     dplyr::mutate(param = "elecByTechTWh",
    #                   sources = "Sources",
    #                   origScen = scenario,
    #                   origQuery = queryx,
    #                   origValue = value,
    #                   origUnits = Units,
    #                   origX = year, subRegion=region,
    #                   scenario = scenNewNames,
    #                   value = value * gcamextractor::convert$conv_EJ_to_TWh,
    #                   units = "Electricity Generation by Fuel (TWh)",
    #                   vintage = paste("Vint_", year, sep = ""),
    #                   x = year,
    #                   xLabel = "Year",
    #                   aggregate = "sum",
    #                   class1 = subsector,
    #                   classLabel1 = "Fuel",
    #                   classPalette1 = "pal_all",
    #                   class2 = technology,
    #                   classLabel2 = "Technology",
    #                   classPalette2 = "pal_all")
    # }
    tblUSACogen <- tibble::tibble()
    #....................
    # GCAM other Regions
    #........................
    queryx <- "elec gen by gen tech and cooling tech"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>%
          dplyr::filter(region %in% regionsSelect) %>%
          dplyr::filter(!region %in% gcamextractor::regions_US52)
      }
      tblGCAMReg <- tbl %>%
        dplyr::filter(scenario %in% scenOrigNames,
                      Units == "EJ")%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(param = "elecByTechTWh",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      value = value * gcamextractor::convert$conv_EJ_to_TWh,
                      units = "Electricity Generation by Fuel (TWh)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = subsector,
                      classLabel1 = "Fuel",
                      classPalette1 = "pal_all",
                      class2 = technology,
                      classLabel2 = "Technology",
                      classPalette2 = "pal_all")
    }else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }

    if(nrow(tblUSA)>0 | nrow(tblUSACogen)>0 | nrow(tblGCAMReg)>0){
      # Combine USA with others
      commonNames = c(names(tblUSA),names(tblUSACogen),names(tblGCAMReg))%>%unique()

      tbl <- tibble::tibble()
      if(nrow(tblUSA)>0){tbl <- tbl %>% dplyr::bind_rows(tblUSA %>%
                                                           dplyr::select(commonNames[commonNames %in% names(tblUSA)]))}
      if(nrow(tblUSACogen)>0){tbl <- tbl %>% dplyr::bind_rows(tblUSACogen %>%
                                                                dplyr::select(commonNames[commonNames %in% names(tblUSACogen)]))}
      if(nrow(tblGCAMReg)>0){tbl <- tbl %>% dplyr::bind_rows(tblGCAMReg %>%
                                                               dplyr::select(commonNames[commonNames %in% names(tblGCAMReg)]))}
    } # Check different tblUSA, tblUSACogen and tblGCAMReg

    if(nrow(tbl)>0){
      tbl <- tbl %>%
        dplyr::mutate(class1=dplyr::case_when(class1=="rooftop_pv"~"solar",
                                              TRUE~class1))%>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::mutate(origQuery="origQuery") %>%
        dplyr::group_by(scenario, region, subRegion,    param, sources,class1,class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX) %>%
        dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%
        dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
      tblelecByTechTWh<-tbl}
  }


  ## elecCapByFuel =============================================================
  # Capacity Calculation based on exogenous cap factors
  paramx<-"elecCapByFuel"
  # Total final energy by aggregate end-use sector
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    if(!is.null(tblelecByTechTWh)){
      capfactors <- gcamextractor::capfactors
      capfactors
      tbl <- tblelecByTechTWh  # Tibble
      #rm(tblelecByTechTWh)
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::full_join(capfactors, by="class1")%>%
        dplyr::mutate(param = "elecCapByFuel",
                      gcamCapacityFactor=cf1971to2100,
                      value = value*1000/(8760*gcamCapacityFactor),
                      origValue = value,
                      units = "Electricity Capacity by Fuel (GW)",
                      origUnits = units) %>%
        dplyr::filter(!is.na(value))%>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)

      datax <- dplyr::bind_rows(datax, tbl)


    } else {
      if("elec gen by gen tech and cooling tech" %in% queriesSelectx){
        #rlang::inform(paste("elecByTechTWh did not run so skipping param elecCapByFuel."))
      }
    }}


  # Energy ---------------------------------------------------------------------

  ## energyFinalConsumByIntlShpAvEJ ============================================
  paramx<-"energyFinalConsumByIntlShpAvEJ"
  # Total final energy by aggregate end-use sector
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    queryx <- "transport final energy by mode and fuel"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% c(regionsSelect))
      }
      tbl <- tbl %>%
        dplyr::filter(mode %in% c("International Aviation", "International Ship"))%>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(param = "energyFinalConsumByIntlShpAvEJ",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      units = "Final Energy Intl. Av and Shp (EJ)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = mode,
                      classLabel1 = "Sector",
                      classPalette1 = "pal_all",
                      class2 = gsub(" enduse","",input),
                      classLabel2 = "Fuel",
                      classPalette2 = "pal_all")%>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%
        dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      tblFinalNrgIntlAvShip <- tbl
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}


  ## energyFinalConsumBySecEJ ==================================================
  paramx<-"energyFinalConsumBySecEJ"
  # Total final energy by aggregate end-use sector
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    queryx <- "total final energy by aggregate sector"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(param = "energyFinalConsumBySecEJ",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      units = "Final Energy by Sector (EJ)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = dplyr::case_when(
                        grepl("building|comm|resid",sector)~"building",
                        grepl("industr|alumin|iron and steel",sector)~"industry",
                        grepl("transport",sector)~"transport",
                        grepl("agricultural energy use|municipal|water", sector)~"other"),
                      classLabel1 = "Sector",
                      classPalette1 = "pal_all",
                      class2 = sector,
                      classLabel2 = "Subsector",
                      classPalette2 = "pal_all")%>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%
        dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))

      if(!is.null(tblFinalNrgIntlAvShip)){
      # Separat out Intl. Shipping and Aviation from Transport
      tblTransport <- tbl%>%dplyr::filter(class1 %in% c("transportation","transport")) %>%
        dplyr::mutate(class2="class2",classLabel2="classLabel2",classPalette2="classPalette2",
                      class1=dplyr::if_else(class1=="transportation","transport",class1)) %>%
        dplyr::select(-origValue)# Subset Transport Sector
      tblFinalNrgIntlAvShipMod <- tblFinalNrgIntlAvShip %>%
        dplyr::mutate(param=unique(tblTransport$param),
                      sources=unique(tblTransport$sources),
                      origQuery=unique(tblTransport$origQuery),
                      origUnits=unique(tblTransport$origUnits),
                      units=unique(tblTransport$units),
                      xLabel=unique(tblTransport$xLabel),
                      aggregate=unique(tblTransport$aggregate),
                      class2=unique(tblTransport$class2),
                      classLabel2=unique(tblTransport$classLabel2),
                      classPalette2=unique(tblTransport$classPalette2),
                      classLabel1=unique(tblTransport$classLabel1),
                      classPalette1=unique(tblTransport$classPalette1))%>%
        dplyr::select(-origValue)# Prepare in intl. transport in correct format
      # Separate out Intl. Shipping and Aviation
      tblSepTransportIntlAvShip <- tblTransport %>%
        dplyr::bind_rows(tblFinalNrgIntlAvShipMod) %>%
        tidyr::spread(key="class1",value="value") %>%
        dplyr::mutate(transport=transport-`International Aviation`-`International Ship`)%>%
        dplyr::rename(`transport intl av`=`International Aviation`,
                      `transport intl shp`=`International Ship`) %>%
        tidyr::gather(key="class1",value="value",
                      -scenario, -region, -subRegion, -param, -sources, -class2, -x, -xLabel, -vintage, -units, -aggregate,
                      -classLabel1, -classPalette1, -classLabel2, -classPalette2,
                      -origScen,-origQuery,-origUnits,-origX)%>%
        dplyr::mutate(origValue=value); tblSepTransportIntlAvShip%>%as.data.frame()
      # Rbind Transport, Intl. Shipping and Aviation back to all other Final Energy types
      tblMod<-tbl%>%dplyr::filter(class1!="transport") %>%
        dplyr::bind_rows(tblSepTransportIntlAvShip) # Remove Transport sector from Original tbl

      } else {
        # rlang::inform(paste("tblFinalNrgIntlAvShip does not exist so skipping subset of final energy to remove intl. shipping and aviation."))
        tblMod <- tbl
        }

      tblMod <- tblMod %>%
        dplyr::mutate(class2 = dplyr::case_when(grepl("comm|resid|building",class1)~"building",
                                         grepl("industry",class1)~"industry",
                                         grepl("transport",class1)~"transport",
                                         grepl("other", class1)~"other",
                                         TRUE~class2)) %>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%
        dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))

      datax <- dplyr::bind_rows(datax, tblMod)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}


  ## energyFinalConsumBySecEJNoFeedstock =======================================
  paramx<-"energyFinalConsumBySecEJNoFeedstock"
  # Total final energy by aggregate end-use sector not including industrial feedstocks
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    queryx <- "total final energy by sector"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::filter(scenario %in% scenOrigNames,
                      sector != "industrial feedstocks")%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(param = "energyFinalConsumBySecEJNoFeedstock",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      units = "Final Energy by Sector (EJ)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = dplyr::case_when(
                        grepl("building|comm|resid",sector)~"building",
                        grepl("indus|cement|fert",sector)~"industry",
                        grepl("transport|trn",sector)~"transport",
                        T ~ sector),
                      classLabel1 = "Sector",
                      classPalette1 = "pal_all",
                      class2 = sector,
                      classLabel2 = "Subsector",
                      classPalette2 = "pal_all")%>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%
        dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    }
  }


  ## energyFinalSubsecBySectorBuildEJ ==========================================
  paramx<-"energyFinalSubsecBySectorBuildEJ"
  # Total final energy by aggregate end-use sector
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    queryx <- "building final energy by subsector"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(param = "energyFinalSubsecBySectorBuildEJ",
                      sector=gsub("comm\\scooling","Commercial CoolingHeating",sector),
                      sector=gsub("comm\\sheating","Commercial CoolingHeating",sector),
                      sector=gsub("comm\\sothers","Commercial Others",sector),
                      sector=gsub("resid\\scooling","Residential CoolingHeating",sector),
                      sector=gsub("resid\\sheating","Residential CoolingHeating",sector),
                      sector=gsub("resid\\sothers","Residential Others",sector),
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      units = "Building Final Energy By Subsector (EJ)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = sector,
                      classLabel1 = "Sector",
                      classPalette1 = "pal_all",
                      class2 = subsector,
                      classLabel2 = "classLabel2",
                      classPalette2 = "classPalette2")%>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%
        dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}


  ## energyFinalByFuelEJ =======================================================
  paramx<-"energyFinalByFuelEJ"
  # Total final energy by aggregate end-use sector
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    queryx <- "Final energy by detailed end-use sector and fuel"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::filter(!grepl("trn",input))%>%
        dplyr::mutate(input=dplyr::if_else(input=="biomass","bioenergy",input),
                      sector=gsub("process heat cement","industry",sector),
                      sector=gsub("cement","industry",sector),
                      sector=gsub("other industrial energy use","industry",sector),
                      sector=gsub("other industrial feedstocks","industry",sector),
                      sector=gsub("N fertilizer","industry",sector),
                      sector=gsub("alumina","industry",sector),
                      sector=gsub("aluminum","industry",sector),
                      sector=gsub("industrial wastewater treatment","industry",sector),
                      sector=gsub("industrial water abstraction","industry",sector),
                      sector=gsub("industrial water treatment","industry",sector),
                      sector=gsub("iron and steel","industry",sector),
                      sector=gsub("trn_aviation_intl","trans intl av",sector),
                      sector=gsub("trn_shipping_intl","trans intl shp",sector),
                      sector=replace(sector, stringr::str_detect(sector, "trn"), "transport"),
                      sector=gsub("comm cooling","building",sector),
                      sector=gsub("comm heating","building",sector),
                      sector=gsub("comm others","building",sector),
                      sector=gsub("resid cooling","building",sector),
                      sector=gsub("resid heating","building",sector),
                      sector=gsub("resid others","building",sector),
                      sector=gsub("agricultural energy use","other",sector),
                      sector=gsub("irrigation water abstraction","other",sector),
                      sector=gsub("desalinated water","other",sector),
                      sector=gsub("municipal wastewater treatment","other",sector),
                      sector=gsub("municipal water abstraction","other",sector),
                      sector=gsub("municipal water distribution","other",sector),
                      sector=gsub("municipal water treatment","other",sector),
                      input=gsub("elect\\_td\\_ind","electricity",input),
                      input=gsub("elect\\_td\\_bld","electricity",input),
                      input=gsub("elect\\_td\\_trn","electricity",input),
                      input=gsub("delivered coal","coal",input),
                      input=gsub("refined liquids enduse","liquids",input),
                      input=gsub("delivered biomass","biomass",input),
                      input=gsub("H2 enduse","hydrogen",input),
                      input=replace(input, stringr::str_detect(input, "H2"), "hydrogen"),
                      input=gsub("refined liquids industrial","liquids",input),
                      input=gsub("liquids av", "liquids", input),
                      input=gsub("liquids shp", "liquids", input),
                      input=gsub("wholesale gas","gas",input),
                      input=gsub("traditional biomass","biomass",input),
                      input=gsub("delivered gas","gas",input),
                      input=gsub("district heat","Other",input),
                      param = "energyFinalByFuelEJ",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      units = "Final Energy by Fuel (EJ)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = input,
                      classLabel1 = "Fuel",
                      classPalette1 = "pal_all",
                      class2 = sector,
                      classLabel2 = "classLabel2",
                      classPalette2 = "classPalette2")%>%
        #dplyr::mutate(class1=dplyr::case_when(class2=="trans intl av"~paste(class1,"av",sep=" "),
                                             #class2=="trans intl shp"~paste(class1,"shp",sep=" "),
                                             #TRUE~class1))%>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%
        dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}


  ## energyFinalByFuelEJNoFeedstock ============================================
  paramx<-"energyFinalByFuelEJNoFeedstock"
  # Total final energy by aggregate end-use sector
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    queryx <- "Final energy by detailed end-use sector and fuel"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::filter(!grepl("trn",input),
                      !sector %in% c("industrial feedstocks"))%>%
        dplyr::mutate(input=dplyr::if_else(input=="biomass","bioenergy",input),
                      sector=gsub("process heat cement","industry",sector),
                      sector=gsub("cement","industry",sector),
                      sector=gsub("industrial energy use","industry",sector),
                      sector=gsub("N fertilizer","industry",sector),
                      sector=gsub("alumina","industry",sector),
                      sector=gsub("aluminum","industry",sector),
                      sector=gsub("iron and steel","industry",sector),
                      #sector=gsub("trn_aviation_intl","trans intl av",sector),
                      #sector=gsub("trn_shipping_intl","trans intl shp",sector),
                      sector = replace(sector, stringr::str_detect(sector, "trn"), "transport"),
                      sector=gsub("comm cooling","building",sector),
                      sector=gsub("comm heating","building",sector),
                      sector=gsub("comm others","building",sector),
                      sector=gsub("resid cooling","building",sector),
                      sector=gsub("resid heating","building",sector),
                      sector=gsub("resid others","building",sector),
                      sector=gsub("agricultural energy use","other",sector),
                      sector=gsub("desalinated water","other",sector),
                      sector=gsub("irrigation water abstraction","other",sector),
                      sector=gsub("municipal wastewater treatment","other",sector),
                      sector=gsub("municipal water abstraction","other",sector),
                      sector=gsub("municipal water distribution","other",sector),
                      sector=gsub("municipal water treatment","other",sector),
                      input=gsub("elect\\_td\\_ind","electricity",input),
                      input=gsub("elect\\_td\\_bld","electricity",input),
                      input=gsub("elect\\_td\\_trn","electricity",input),
                      input=gsub("delivered coal","coal",input),
                      input=gsub("refined liquids enduse","liquids",input),
                      input=gsub("delivered biomass","biomass",input),
                      input=gsub("H2 enduse","hydrogen",input),
                      input=gsub("refined liquids industrial","liquids",input),
                      input=gsub("liquids av", "liquids", input),
                      input=gsub("liquids shp", "liquids", input),
                      input=gsub("wholesale gas","gas",input),
                      input=gsub("traditional biomass","biomass",input),
                      input=gsub("delivered gas","gas",input),
                      input=gsub("district heat","Other",input),
                      param = "energyFinalByFuelEJNoFeedstock",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      units = "Final Energy by Fuel (EJ)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = input,
                      classLabel1 = "Fuel",
                      classPalette1 = "pal_all",
                      class2 = sector,
                      classLabel2 = "classLabel2",
                      classPalette2 = "classPalette2")%>%
        #dplyr::mutate(class1=dplyr::case_when(class2=="trans intl av"~paste(class1,"av",sep=" "),
        #class2=="trans intl shp"~paste(class1,"shp",sep=" "),
        #TRUE~class1))%>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%
        dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}


  ## energyFinalSubsecByFuelBuildEJ ============================================
  paramx<-"energyFinalSubsecByFuelBuildEJ"
  # Total final energy by aggregate end-use sector
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    queryx <- "building final energy by fuel"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::rename(sector=input) %>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(sector=dplyr::case_when(grepl("electricity domestic",sector)~"electricity",TRUE~sector),
                      sector=gsub("elect_td_bld","electricity",sector),
                      sector=gsub("delivered gas","gas",sector),
                      sector=gsub("delivered biomass","bioenergy",sector),
                      sector=gsub("delivered coal","coal",sector),
                      sector=gsub("refined liquids enduse","liquids",sector),
                      param = "energyFinalSubsecByFuelBuildEJ",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      units = "Building Final Energy by Fuel (EJ)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = sector,
                      classLabel1 = "Fuel",
                      classPalette1 = "pal_all",
                      class2 = sector,
                      classLabel2 = "classLabel2",
                      classPalette2 = "classPalette2")%>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%
        dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}


  ## energyFinalSubsecByFuelIndusEJ ============================================
  paramx<-"energyFinalSubsecByFuelIndusEJ"
  # Total final energy by aggregate end-use sector
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    queryx <- "industry final energy by fuel"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::rename(sector=input) %>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(sector=gsub("elect_td_ind","electricity",sector),
                      sector=gsub("wholesale gas","gas",sector),
                      sector=gsub("delivered biomass","bioenergy",sector),
                      sector=gsub("delivered coal","coal",sector),
                      sector=gsub("refined liquids industrial","liquids",sector),
                      sector=gsub("H2 enduse","hydrogen",sector),
                      param = "energyFinalSubsecByFuelIndusEJ",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      units = "Industry Final Energy by Fuel (EJ)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = sector,
                      classLabel1 = "Fuel",
                      classPalette1 = "pal_all",
                      class2 = sector,
                      classLabel2 = "classLabel2",
                      classPalette2 = "classPalette2")%>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%
        dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}


  ## energyPrimaryByFuelEJ =====================================================
  paramx<-"energyPrimaryByFuelEJ"
  # primary energy consumption by region (direct equivalent)
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    queryx <- "primary energy consumption by region (direct equivalent)"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(param = "energyPrimaryByFuelEJ",
                      fuel=gsub("biomass","bioenergy",fuel),
                      fuel=gsub("b biomass","bioenergy",fuel),
                      fuel=gsub("traded coal","c coal",fuel),
                      fuel=gsub("traded natural gas","b natural gas",fuel),
                      fuel=gsub("traded oil","a oil",fuel),
                      fuel=gsub("H2 industrial","j hydrogen",fuel),
                      fuel=dplyr::case_when(
                        grepl("j traditional bioenergy", fuel, fixed = TRUE)~"d bioenergy",
                        grepl("regional bioenergy", fuel, fixed = TRUE)~"d bioenergy",
                        TRUE~fuel),
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      units = "Primary Energy Consumption by Fuel (EJ)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = fuel,
                      classLabel1 = "Fuel",
                      classPalette1 = "pal_all",
                      class2 = "class2",
                      classLabel2 = "classLabel2",
                      classPalette2 = "classPalette2")%>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%
        dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))

      if(!is.null(tblFinalNrgIntlAvShip)){
        # Separat out Intl. Shipping and Aviation refined liquids from Primary Energy Oil
        tblPrimaryOil <- tbl%>%dplyr::filter(class1=="a oil") %>%
          dplyr::mutate(class2="class2",classLabel2="classLabel2",classPalette2="classPalette2") %>%
          dplyr::select(-origValue)# Subset Transport Sector
        tblFinalNrgIntlAvShipMod <- tblFinalNrgIntlAvShip %>%
          dplyr::mutate(param=unique(tblPrimaryOil$param),
                        class1=paste(class1,"oil",sep=" "),
                        sources=unique(tblPrimaryOil$sources),
                        origQuery=unique(tblPrimaryOil$origQuery),
                        origUnits=unique(tblPrimaryOil$origUnits),
                        units=unique(tblPrimaryOil$units),
                        xLabel=unique(tblPrimaryOil$xLabel),
                        aggregate=unique(tblPrimaryOil$aggregate),
                        class2=unique(tblPrimaryOil$class2),
                        classLabel2=unique(tblPrimaryOil$classLabel2),
                        classPalette2=unique(tblPrimaryOil$classPalette2),
                        classLabel1=unique(tblPrimaryOil$classLabel1),
                        classPalette1=unique(tblPrimaryOil$classPalette1))%>%
          dplyr::select(-origValue)# Prepare in intl. transport in correct format
        # Separate out Intl. Shipping and Aviation
        tblSepPrimaryIntlAvShip <- tblPrimaryOil %>%
          dplyr::bind_rows(tblFinalNrgIntlAvShipMod) %>%
          tidyr::spread(key="class1",value="value") %>%
          dplyr::mutate(`a oil`=`a oil` -`International Aviation oil`-`International Ship oil`)%>%
          dplyr::rename(`oil intl av`=`International Aviation oil`,
                        `oil intl shp`=`International Ship oil`)%>%
          tidyr::gather(key="class1",value="value",
                        -scenario, -region, -subRegion, -param, -sources, -class2, -x, -xLabel, -vintage, -units, -aggregate,
                        -classLabel1, -classPalette1, -classLabel2, -classPalette2,
                        -origScen,-origQuery,-origUnits,-origX)%>%
          dplyr::mutate(origValue=value); tblSepPrimaryIntlAvShip%>%as.data.frame()
        # Rbind Transport, Intl. Shipping and Aviation back to all other Final Energy types
        tblMod<-tbl%>%dplyr::filter(class1!="a oil") %>%
          dplyr::bind_rows(tblSepPrimaryIntlAvShip) # Remove Transport sector from Original tbl

      } else {
        rlang::inform(paste("tblFinalNrgIntlAvShip does not exist so skipping subset of final energy to remove intl. shipping and aviation."))
        tblMod <- tbl
      }

      tblMod <- tblMod %>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%
        dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))

      datax <- dplyr::bind_rows(datax, tblMod)

    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}


  # chart(tbl,xData="x",yData="value",useNewLabels = 0)




  paramx <- "gdpPerCapita"
  if(paramx  %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    # GDP MER per Capita MER by region
    queryx <- "GDP per capita MER by region"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(param = "gdpPerCapita",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      value = value,
                      units = "GDP per Capita (Thousand 1990 USD per Person)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = "class1",
                      classLabel1 = "GDP Per Capita",
                      classPalette1 = "pal_16",
                      class2 = "class2",
                      classLabel2 = "classLabel2",
                      classPalette2 = "classPalette2") %>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}

  paramx <- "gdp"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    # GDP MER by region
    queryx <- "GDP MER by region"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(param = "gdp",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      value = value/1000,
                      units = "GDP (Billion 1990 USD)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = "class1",
                      classLabel1 = "GDP",
                      classPalette1 = "pal_16",
                      class2 = "class2",
                      classLabel2 = "classLabel2",
                      classPalette2 = "classPalette2") %>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
      tblgdp<-tbl
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}

  paramx <- "gdpGrowthRate"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    # GDP Growth Rate by region
    queryx <- "GDP Growth Rate (Percent)"
    if ("GDP MER by region" %in% queriesx) {
      tbl <- tblgdp  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::group_by(scenario,region) %>%
        dplyr::mutate(param = "gdpGrowthRate",
                      sources = "Sources",
                      value = ((value/dplyr::lag(value,order_by=x))^(1/5)-1)*100,
                      units = "GDP Growth Rate (Percent)",
                      vintage = paste("Vint_", x, sep = ""),
                      classLabel1 = "GDP growth rate",
                      origQuery = "Calculated",
                      origValue = value,
                      origUnits = units,
                      origX = x) %>%
        dplyr::ungroup() %>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
     # rlang::inform(paste("Paramater 'GDP MER by region' not found in database, so cannot calculate" ,queryx, sep = ""))
    }}

  paramx <- "livestock_MeatDairybyTechMixed"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    # Population
    queryx <- "meat and dairy production by tech"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::filter(subsector=="Mixed")%>% # "Mixed"    "Pastoral" "Imports"
        dplyr::mutate(param = "livestock_MeatDairybyTechMixed",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      value = value,
                      units = "Livestock Production Mixed Feed (Mt)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = sector,
                      classLabel1 = "sector",
                      classPalette1 = "pal_all",
                      class2 = technology,
                      classLabel2 = "technology",
                      classPalette2 = "pal_all") %>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}


  paramx <- "livestock_MeatDairybySubsector"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    # Population
    queryx <- "meat and dairy production by tech"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(param = "livestock_MeatDairybySubsector",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      value = value,
                      units = "Livestock Production (Mt)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = sector,
                      classLabel1 = "sector",
                      classPalette1 = "pal_all",
                      class2 = subsector,
                      classLabel2 = "subsector",
                      classPalette2 = "pal_all") %>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}



  paramx <- "livestock_MeatDairybyTechPastoral"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    # Population
    queryx <- "meat and dairy production by tech"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::filter(subsector=="Pastoral")%>% # "Mixed"    "Pastoral" "Imports"
        dplyr::mutate(param = "livestock_MeatDairybyTechPastoral",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      value = value,
                      units = "Livestock Production Pastoral (Mt)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = sector,
                      classLabel1 = "sector",
                      classPalette1 = "pal_all",
                      class2 = technology,
                      classLabel2 = "technology",
                      classPalette2 = "pal_all") %>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}

  paramx <- "livestock_MeatDairybyTechImports"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    # Population
    queryx <- "meat and dairy production by tech"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::filter(subsector=="Imports")%>% # "Mixed"    "Pastoral" "Imports"
        dplyr::mutate(param = "livestock_MeatDairybyTechImports",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      value = value,
                      units = "Livestock Production Imported Feed (Mt)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = sector,
                      classLabel1 = "sector",
                      classPalette1 = "pal_all",
                      class2 = technology,
                      classLabel2 = "technology",
                      classPalette2 = "pal_all") %>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}

  paramx <- "pop"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    # Population
    queryx <- "Population by region"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(param = "pop",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      value = value/1000,
                      units = "Population (Millions)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = "class1",
                      classLabel1 = "Population",
                      classPalette1 = "pal_16",
                      class2 = "class2",
                      classLabel2 = "classLabel2",
                      classPalette2 = "classPalette2") %>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}

  paramx <- "agProdbyIrrRfd"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    # Ag production by tech
    queryx <- "ag production by tech"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        if(any(regionsSelect %in% gcamextractor::regions_US52)){
          tbl <- tbl %>% dplyr::filter(region %in% c(regionsSelect,"USA"))
        } else {
          tbl <- tbl %>% dplyr::filter(region %in% c(regionsSelect))
        }
      }
      tbl <- tbl %>%
        dplyr::filter(Units=="Mt")%>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(param = "agProdbyIrrRfd",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origUnits = Units,
                      origX = year,
                      subRegion=gsub(".*_","",subsector),
                      origValue = value,
                      scenario = scenNewNames,
                      value = value,
                      units = "Ag Production (Mt)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = dplyr::case_when(grepl("IRR",technology)~"irrigation",
                                                grepl("RFD",technology)~"rainfed",
                                                TRUE~"NA"),
                      classLabel1 = "Water Source",
                      classPalette1 = "pal_16",
                      class2 = "class2",
                      classLabel2 = "classLabel2",
                      classPalette2 = "classPalette2") %>%
        dplyr::filter(class1!="NA")%>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}

  paramx <- "agProdBiomass"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    # Ag Production by Crop Type Biomass EJ
    queryx <- "ag production by tech"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        if(any(regionsSelect %in% gcamextractor::regions_US52)){
          tbl <- tbl %>% dplyr::filter(region %in% c(regionsSelect,"USA"))
        } else {
          tbl <- tbl %>% dplyr::filter(region %in% c(regionsSelect))
        }
      }
      tbl <- tbl %>%
        dplyr::filter(Units=="EJ",sector==output)%>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(param = "agProdBiomass",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year,
                      scenario = scenNewNames,
                      units = "Biomass Production (EJ)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = sector,
                      classLabel1 = "Crop",
                      classPalette1 = "pal_all",
                      subRegion=gsub(".*_","",subsector),
                      class2 = gsub("_.*RFD","_RFD",technology),
                      class2 = gsub("_.*IRR","_IRR",class2),
                      classLabel2 = "Detail",
                      classPalette2 = "pal_all")%>%
        dplyr::select(origScen,origQuery, origValue, origUnits, origX, region, subRegion,    param, scenario,
                      value, units, vintage, x, xLabel, aggregate, class1, classLabel1, classPalette1,
                      class2, classLabel2, classPalette2)%>%dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}

  paramx <- "agProdForest"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    # Ag Production by Crop Type Forest
    queryx <- "ag production by tech"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        if(any(regionsSelect %in% gcamextractor::regions_US52)){
          tbl <- tbl %>% dplyr::filter(region %in% c(regionsSelect,"USA"))
        } else {
          tbl <- tbl %>% dplyr::filter(region %in% c(regionsSelect))
        }
      }
      tbl <- tbl %>%
        dplyr::filter(Units=="billion m3",sector==output)%>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(param = "agProdForest",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year,
                      scenario = scenNewNames,
                      value = value,
                      units = "Forest Production (billion m3)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = sector,
                      classLabel1 = "Forest",
                      classPalette1 = "pal_all",
                      class2 = "class2",
                      classLabel2 = "classLabel2",
                      classPalette2 = "classPalette2",
                      subRegion= region)%>%
        dplyr::select(origScen,origQuery, origValue, origUnits, origX, region, subRegion,    param, scenario,
                      value, units, vintage, x, xLabel, aggregate, class1, classLabel1, classPalette1,
                      class2, classLabel2, classPalette2)%>%dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}

  paramx <- "agProdByCrop"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    # Ag Production by Crop Type
    queryx <- "ag production by tech"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        if(any(regionsSelect %in% gcamextractor::regions_US52)){
          tbl <- tbl %>% dplyr::filter(region %in% c(regionsSelect,"USA"))
        } else {
          tbl <- tbl %>% dplyr::filter(region %in% c(regionsSelect))
        }
      }
      tbl <- tbl %>%
        dplyr::filter(Units=="Mt",sector==output, sector!="Pasture")%>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(param = "agProdByCrop",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year,
                      scenario = scenNewNames,
                      value = value,
                      units = "Ag Production (Mt)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = sector,
                      classLabel1 = "Crop",
                      classPalette1 = "pal_all",
                      subRegion=gsub(".*_","",subsector),
                      class2 = gsub("_.*RFD","_RFD",technology),
                      class2 = gsub("_.*IRR","_IRR",class2),
                      classLabel2 = "Detail",
                      classPalette2 = "pal_all")%>%
        dplyr::select(origScen,origQuery, origValue, origUnits, origX, region, subRegion,    param, scenario,
                      value, units, vintage, x, xLabel, aggregate, class1, classLabel1, classPalette1,
                      class2, classLabel2, classPalette2)%>%dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}

  paramx <- "fertConsByAgTech"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    queryx <- "fertilizer consumption by ag tech"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        if(any(regionsSelect %in% gcamextractor::regions_US52)){
          tbl <- tbl %>% dplyr::filter(region %in% c(regionsSelect,"USA"))
        } else {
          tbl <- tbl %>% dplyr::filter(region %in% c(regionsSelect))
        }
      }
      tbl <- tbl %>%
        dplyr::filter(!sector %in% c("N fertilizer")) %>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(param = paramx,
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year,
                      scenario = scenNewNames,
                      value = value,
                      units = "Fertilizer Consumption (Mt N)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = sector,
                      classLabel1 = "Crop",
                      classPalette1 = "pal_all",
                      subRegion=gsub(".*_","",subsector),
                      class2 = gsub(".*RFD","RFD",technology),
                      class2 = gsub(".*IRR","IRR",class2),
                      classLabel2 = "Detail",
                      classPalette2 = "pal_all")%>%
        dplyr::select(origScen,origQuery, origValue, origUnits, origX, region, subRegion,    param, scenario,
                      value, units, vintage, x, xLabel, aggregate, class1, classLabel1, classPalette1,
                      class2, classLabel2, classPalette2)%>%dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}


  paramx <- "landIrrRfd"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    # land allocation by crop and water source
    queryx <- "land allocation by crop and water source"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::filter(!is.na(water))%>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(param = "landIrrRfd",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      value = value,
                      units = "Irr vs Rfd Land (1000 km2)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = water,
                      classLabel1 = "Water Source",
                      classPalette1 = "pal_all",
                      class2 = crop,
                      classLabel2 = "crop",
                      classPalette2 = "pal_all") %>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}

  paramx <- "landIrrCrop"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    # land allocation by crop and water source
    queryx <- "land allocation by crop and water source"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::filter(!is.na(water),water=="IRR")%>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(param = "landIrrCrop",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      value = value,
                      units = "Irr Crop Land (1000 km2)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = crop,
                      classLabel1 = "crop",
                      classPalette1 = "pal_all",
                      class2 = "class2",
                      classLabel2 = "class2",
                      classPalette2 = "pal_all") %>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}

  paramx <- "landRfdCrop"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    # land allocation by crop and water source
    queryx <- "land allocation by crop and water source"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::filter(!is.na(water),water=="RFD")%>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(param = "landRfdCrop",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      value = value,
                      units = "Rainfed Crop Land (1000 km2)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = crop,
                      classLabel1 = "crop",
                      classPalette1 = "pal_all",
                      class2 = "class2",
                      classLabel2 = "class2",
                      classPalette2 = "pal_all") %>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}

  paramx <- "landAlloc"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    # aggregated land allocation
    queryx <- "aggregated land allocation"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::mutate(
          class2=landleaf,
          landleaf=gsub("forest\\s\\(managed\\)","forest",landleaf),
          landleaf=gsub("forest\\s\\(unmanaged\\)","forest",landleaf),
          landleaf=gsub("pasture\\s\\(grazed\\)","pasture",landleaf),
          landleaf=gsub("pasture\\s\\(other\\)","pasture",landleaf),
          landleaf=gsub("otherarable","crops",landleaf),
          landleaf=gsub("biomass","biomass",landleaf),
          landleaf=gsub("grass","naturalOther",landleaf),
          landleaf=gsub("shrubs","naturalOther",landleaf),
          landleaf=gsub("rock\\sand\\sdesert","naturalOther",landleaf),
          landleaf=gsub("tundra","naturalOther",landleaf))%>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(param = "landAlloc",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      value = value,
                      units = "Land Allocation (1000 km2)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = landleaf,
                      classLabel1 = "Land Type",
                      classPalette1 = "pal_all",
                      classLabel2 = "classLabel2",
                      classPalette2 = "classPalette2") %>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}

  paramx <- "inputs"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    queryx <- "inputs by tech"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::mutate(
          subRegion=region,
          class1=input,
          class2=sector)%>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(param = "inputs",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year,
                      scenario = scenNewNames,
                      value = value,
                      units = Units,
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      classLabel1 = "input",
                      classPalette1 = "pal_all",
                      classLabel2 = "sector",
                      classPalette2 = "pal_all") %>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}

  paramx <- "outputs"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    queryx <- "outputs by tech"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::mutate(
          subRegion=region,
          class1=output,
          class2=sector)%>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(param = "outputs",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year,
                      scenario = scenNewNames,
                      value = value,
                      units = Units,
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      classLabel1 = "output",
                      classPalette1 = "pal_all",
                      classLabel2 = "sector",
                      classPalette2 = "pal_all") %>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}


  paramx <- "landAllocDetail"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    # aggregated land allocation
    queryx <- "detailed land allocation"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::mutate(
          subRegion=gsub("^[^_]*_","",landleaf),
          subRegion=gsub("_.*","",subRegion),
          class1=gsub("_.*","",landleaf),
          class2=gsub("^[^_]*_[^_]*_","",landleaf))%>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(param = "landAllocDetail",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year,
                      scenario = scenNewNames,
                      value = value,
                      units = "Land Allocation (1000 km2)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      classLabel1 = "Land Type",
                      classPalette1 = "pal_all",
                      classLabel2 = "Source",
                      classPalette2 = "pal_all") %>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}


  paramx <- "landAllocByCrop"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    # aggregated land allocation
    queryx <- "land allocation by crop"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::mutate(
          class2=landleaf,
          landleaf=gsub("biomass_grass","Biomass",landleaf),
          landleaf=gsub("biomass_tree","Biomass",landleaf),
          landleaf=gsub("ProtectedUnmanagedForest","Delete",landleaf),
          landleaf=gsub("ProtectedUnmanagedPasture","Delete",landleaf),
          landleaf=gsub("UnmanagedPasture","Delete",landleaf),
          landleaf=gsub("OtherArableLand","Delete",landleaf),
          landleaf=gsub("UnmanagedForest","Delete",landleaf),
          landleaf=gsub("ProtectedGrassland","Delete",landleaf),
          landleaf=gsub("ProtectedShrubland","Delete",landleaf),
          landleaf=gsub("RockIceDesert","Delete",landleaf),
          landleaf=gsub("Shrubland","Delete",landleaf),
          landleaf=gsub("Tundra","Delete",landleaf),
          landleaf=gsub("Pasture","Delete",landleaf),
          landleaf=gsub("Forest","Delete",landleaf),
          landleaf=gsub("Grassland","Delete",landleaf),
          landleaf=gsub("UrbanLand","Delete",landleaf)) %>%
        dplyr::filter(!landleaf %in% c('Delete')) %>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(param = "landAllocByCrop",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      value = value,
                      units = "Crop Land (1000 km2)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = landleaf,
                      classLabel1 = "Land Type",
                      classPalette1 = "pal_all",
                      classLabel2 = "classLabel2",
                      classPalette2 = "classPalette2") %>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}


  # Emissions -----------------------------

  ## emissLUC ===========================
  # need LUC for CO2BySector, GHGBYSector, and GHGByGas
  if(any(c("emissCO2BySector", "emissCO2BySectorNoBio", "emissGHGBySectorGWPAR5", "emissGHGBySectorNoBioGWPAR5", "emissGHGByGasGWPAR5", "emissGHGByGasNoBioGWPAR5", "emissLUC") %in% paramsSelectx)){

    queryx <- "Land Use Change Emission (future)"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::left_join(gcamextractor::conv_GgTg_to_MTC,by="Units") %>%
        dplyr::mutate(origValue=value,value=value*Convert*gcamextractor::convert$conv_C_CO2, # convert from MTC to MTCO2eq
                      origUnits=Units,units="Emissions LUC - (MTCO2)")%>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      value = value,
                      origValue = origValue,
                      units = "LUC CO2 Emissions (MTCO2eq)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      classPalette1 = "pal_all",
                      classPalette2 = "classPalette2",
                      ghg = "CO2",
                      sector = "LUC") %>%
        dplyr::select(scenario, region, subRegion, sources, x, xLabel, vintage, units, value,
                      aggregate, classPalette1, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX, ghg, sector) %>%
        dplyr::group_by(scenario, region, subRegion, sources, x, xLabel, vintage, units,
                        aggregate, classPalette1, classPalette2,
                        origScen, origQuery, origUnits, origX, ghg, sector) %>%
        dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup() %>%
        dplyr::filter(!is.na(value))
      tblLUEmiss<-tbl
    }
  } # end CO2 LUC query

    # add LUC to data if emissLUC param is chosen
    if("emissLUC" %in% paramsSelect){
      tblEmissLUC <- tblLUEmiss %>%
        dplyr::rename(class1 = sector, class2 = ghg) %>%
        dplyr::mutate(classLabel1 = "sector",
                      classLabel2 = "ghg",
                      param = "emissLUC")
      datax <- dplyr::bind_rows(datax, tblEmissLUC)
    }

    ## emissCO2BySector ===========================
    # need CO2 for CO2BySector, GHGBySector, and GHGByGas
    if(any(c("emissCO2BySector", "emissGHGBySectorGWPAR5", "emissGHGByGasGWPAR5", "emissGHGBySectorPowerGWPAR5") %in% paramsSelectx)){
      queryx <- "CO2 emissions by sector"
      if (queryx %in% queriesx) {
        tbl <- rgcam::getQuery(dataProjLoaded, queryx)
        if (any(!is.null(regionsSelect))) {
          tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
        }
        tbl <- tbl %>%
          dplyr::filter(scenario %in% scenOrigNames)%>%
          dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
          dplyr::mutate(
            origValue=value,
            value=value*44/12, # convert from MTC to MTCO2eq
            origUnits=Units,
            units="CO2 emissions - (MTCO2)",
            sources = "Sources",
            origScen = scenario,
            origQuery = queryx,
            origX = year, subRegion=region,
            scenario = scenNewNames,
            vintage = paste("Vint_", year, sep = ""),
            x = year,
            xLabel = "Year",
            aggregate = "sum",
            classPalette1 = "pal_all",
            classPalette2 = "pal_all",
            ghg = "CO2") %>%
          dplyr::select(scenario, region, subRegion, sources, x, xLabel, vintage, units, value,
                        aggregate, ghg, sector, classPalette1, classPalette2,
                        origScen, origQuery, origValue, origUnits, origX)
        tblCO2Emiss <- tbl
      }
    }

    # Aggregate sectors
    if(any(c("emissCO2BySector", "emissGHGBySectorGWPAR5", "emissGHGByGasGWPAR5") %in% paramsSelectx)){
        #emiss_sector_mapping <- utils::read.csv(CO2mappingFile, skip=1)
        tblCO2EmissAgg <- tblCO2Emiss %>%
          dplyr::mutate(
            sector=dplyr::case_when(
              grepl("refining",sector,ignore.case=T)~"refining",
              grepl("regional biomass|regional biomassOil|regional corn for ethanol|regional sugar for ethanol|biomass", sector,ignore.case=T)~"biomass",
              grepl("trn_aviation_intl", sector)~"International Aviation",
              grepl("trn_shipping_intl", sector) ~ "International Shipping",
              grepl("trn_",sector,ignore.case=T)~"transport",
              grepl("comm |resid ",sector,ignore.case=T)~"building",
              grepl("electricity|elec_|electricity |csp_backup",sector,ignore.case=T)~"electricity",
              grepl("H2",sector,ignore.case=T)~"hydrogen",
              grepl("cement|N fertilizer|industrial|ind ",sector,ignore.case=T)~"industry",
              grepl("gas pipeline|gas processing|unconventional oil production|gas to liquids",sector,ignore.case=T)~"industry",
              grepl("Beef|Dairy|Pork|Poultry",sector,ignore.case=T)~"livestock",
              grepl("FiberCrop|MiscCrop|OilCrop|OtherGrain|PalmFruit|Corn|Rice|Root_Tuber|RootTuber|SheepGoat|SugarCrop|UnmanagedLand|Wheat|FodderGrass|FodderHerb",sector,ignore.case=T)~"crops",
              TRUE~sector)) %>%
          dplyr::group_by(scenario, region, subRegion, sources, x, xLabel, vintage, units,
                          aggregate, ghg, sector, classPalette1, classPalette2,
                          origScen, origQuery, origUnits, origX) %>%
          dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T))) %>% dplyr::ungroup()%>%
          dplyr::filter(!is.na(value))
  }

  ## emissCO2BySectorNoBio ===========================
  # need CO2 for CO2BySectorNoBio, GHGBySectorNoBio, and GHGByGasNoBio
  if(any(c("emissCO2BySectorNoBio", "emissGHGBySectorNoBioGWPAR5", "emissGHGByGasNoBioGWPAR5", "emissGHGBySectorBuildingsGWPAR5") %in% paramsSelectx)){
    queryx <- "CO2 emissions by sector (no bio)"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      #emiss_sector_mapping <- utils::read.csv(CO2mappingFile, skip=1)
      tbl <- tbl %>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(
          origValue=value,
          value=value*44/12, # convert from MTC to MTCO2eq
          origUnits=Units,
          units="CO2 emissions - (MTCO2)",
          sources = "Sources",
          origScen = scenario,
          origQuery = queryx,
          origX = year, subRegion=region,
          scenario = scenNewNames,
          vintage = paste("Vint_", year, sep = ""),
          x = year,
          xLabel = "Year",
          aggregate = "sum",
          classPalette1 = "pal_all",
          classPalette2 = "pal_all",
          ghg = "CO2") %>%
        dplyr::select(scenario, region, subRegion, sources, x, xLabel, vintage, units, value,
                      aggregate, ghg, sector, classPalette1, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)
      tblCO2EmissNoBio <- tbl
    }

  } # end CO2 by sector (no bio) query

  # Aggregate sectors
  if(any(c("emissCO2BySectorNoBio", "emissGHGBySectorNoBioGWPAR5", "emissGHGByGasNoBioGWPAR5") %in% paramsSelectx)){
      tblCO2EmissNoBioAgg <- tblCO2EmissNoBio %>%
        dplyr::mutate(
          sector=dplyr::case_when(
            grepl("refining",sector,ignore.case=T)~"refining",
            grepl("regional biomass|regional biomassOil|regional corn for ethanol|regional sugar for ethanol", sector,ignore.case=T)~"biomass",
            grepl("trn_aviation_intl", sector)~"International Aviation",
            grepl("trn_shipping_intl", sector) ~ "International Shipping",
            grepl("trn_",sector,ignore.case=T)~"transport",
            grepl("comm |resid ",sector,ignore.case=T)~"building",
            grepl("electricity|elec_|electricity |csp_backup",sector,ignore.case=T)~"electricity",
            grepl("H2",sector,ignore.case=T)~"hydrogen",
            grepl("cement|N fertilizer|industrial|ind |alumin|",sector,ignore.case=T)~"industry",
            grepl("gas pipeline|gas processing|unconventional oil production|gas to liquids|wholesale gas|delivered gas|delivered biomass",sector,ignore.case=T)~"industry",
            grepl("Beef|Dairy|Pork|Poultry",sector,ignore.case=T)~"livestock",
            grepl("FiberCrop|MiscCrop|OilCrop|OtherGrain|PalmFruit|Corn|Rice|Root_Tuber|RootTuber|SheepGoat|SugarCrop|UnmanagedLand|Wheat|FodderGrass|FodderHerb",sector,ignore.case=T)~"crops",
            TRUE~sector)) %>%
        dplyr::group_by(scenario, region, subRegion, sources, x, xLabel, vintage, units,
                        aggregate, ghg, sector, classPalette1, classPalette2,
                        origScen, origQuery, origUnits, origX) %>%
        dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T))) %>% dplyr::ungroup() %>%
        dplyr::filter(!is.na(value))
    }



    # add CO2 by sector to data if emissCO2BySector param is chosen
    if("emissCO2BySector" %in% paramsSelectx){
      # LUC
      tblEmissCO2BySector_LU <- tblLUEmiss %>%
        dplyr::rename(class1 = sector, class2 = ghg) %>%
        dplyr::mutate(classLabel1 = "sector",
                        classLabel2 = "ghg")

      # other sectors
      tblEmissCO2BySector_CO2 <- tblCO2EmissAgg %>%
        dplyr::rename(class1 = sector, class2 = ghg) %>%
        dplyr::mutate(classLabel1 = "sector",
                      classLabel2 = "ghg")

    # other sectors
    tblEmissCO2BySector_CO2 <- tblCO2Emiss %>%
      dplyr::rename(class1 = sector, class2 = ghg) %>%
      dplyr::mutate(classLabel1 = "sector",
                    classLabel2 = "ghg")
    # all CO2
    tblEmissCO2BySector <- dplyr::bind_rows(tblEmissCO2BySector_LU,
                                            #tblEmissCO2BySector_seq,
                                            tblEmissCO2BySector_CO2) %>%
      dplyr::mutate(param = "emissCO2BySector",
             units="CO2 emissions - (MTCO2)")
    datax <- dplyr::bind_rows(datax, tblEmissCO2BySector)
  }

  # add CO2 by sector (no bio) to data if emissCO2BySectorNoBio param is chosen
  if("emissCO2BySectorNoBio" %in% paramsSelectx){
    # LUC
    tblEmissCO2BySector_LU <- tblLUEmiss %>%
      dplyr::rename(class1 = sector, class2 = ghg) %>%
      dplyr::mutate(classLabel1 = "sector",
                    classLabel2 = "ghg")

    # other sectors
    tblEmissCO2BySectorNoBio_CO2 <- tblCO2EmissNoBioAgg %>%
      dplyr::rename(class1 = sector, class2 = ghg) %>%
      dplyr::mutate(classLabel1 = "sector",
                    classLabel2 = "ghg")
    # all CO2
    tblEmissCO2BySectorNoBio <- dplyr::bind_rows(tblEmissCO2BySector_LU,
                                                 #tblEmissCO2BySector_seq,
                                                 tblEmissCO2BySectorNoBio_CO2) %>%
      dplyr::mutate(param = "emissCO2BySectorNoBio",
                    units="CO2 emissions - (MTCO2)")
    datax <- dplyr::bind_rows(datax, tblEmissCO2BySectorNoBio)
  }


  ## emissGHGBySectorGWPAR5 ===========================
  # need nonCO2 for GHGBySector and GHGByGas
  if(any(c("emissGHGBySectorGWPAR5", "emissGHGBySectorNoBioGWPAR5", "emissGHGByGasGWPAR5", "emissGHGByGasNoBioGWPAR5", "emissGHGBySectorBuildingsGWPAR5", "emissGHGBySectorPowerGWPAR5") %in% paramsSelectx)){
      queryx <- "nonCO2 emissions by sector"
      if (queryx %in% queriesx) {
        tbl <- rgcam::getQuery(dataProjLoaded, queryx)
        if (any(!is.null(regionsSelect))) {
          tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
        }
        #emiss_sector_mapping <- utils::read.csv(CO2mappingFile, skip=1)
        tbl <- tbl %>%
          dplyr::filter(scenario %in% scenOrigNames)%>%
          dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
          dplyr::mutate(ghg = dplyr::case_when ((grepl("HFC", ghg)) ~ "HFCs",
                                                   (grepl("SF6", ghg)) ~ "SF6",
                                                   (grepl("CO2", ghg)) ~ "CO2",
                                                   (grepl("N2O", ghg)) ~ "N2O",
                                                   (grepl("CH4", ghg)) ~ "CH4",
                                                   (grepl("SO2", ghg)) ~ "SO2",
                                                   (grepl("NH3", ghg)) ~ "NH3",
                                                   (grepl("CF4", ghg)) ~ "CF4",
                                                   (grepl("C2F6", ghg)) ~ "C2F6",
                                                   TRUE ~ "Other"))%>%
          dplyr::filter(!ghg %in% c('SO2', 'NH3', 'Other')) %>%
          #dplyr::left_join(emiss_sector_mapping, by=c('class2' = 'class1')) %>%
          #dplyr::mutate(class2=agg_sector) %>%
          #dplyr::select(-agg_sector) %>%
          dplyr::left_join(gcamextractor::GWP,by="ghg") %>%
          dplyr::left_join(gcamextractor::conv_GgTg_to_MTC,by="Units") %>%
          dplyr::filter(ghg!='CO2') %>%
          dplyr::mutate(origValue=value,
                        value=value*GWPAR5*Convert,
                        origUnits=Units,
                        origUnits = dplyr::case_when(ghg=="Other"~"Units",TRUE~origUnits),
                        units="GHG Emissions GWPAR5 (MTCO2eq)",
                        sources = "Sources",
                        origScen = scenario,
                        origQuery = queryx,
                        origX = year, subRegion=region,
                        scenario = scenNewNames,
                        vintage = paste("Vint_", year, sep = ""),
                        x = year,
                        xLabel = "Year",
                        aggregate = "sum",
                        classPalette2 = "pal_all",
                        classPalette1 = "pal_all") %>%
          dplyr::select(scenario, region, subRegion, sources, x, xLabel, vintage, units, value,
                        aggregate, ghg, sector, classPalette1, classPalette2,
                        origScen, origQuery, origValue, origUnits, origX)

        tblNonCO2Emiss <- tbl
      } else {
        print("NonCO2 WAS NOT IN QUERIES")
        tblNonCO2Emiss <- tibble::tibble()
        # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
      }

      # Aggregate Sectors
      if(any(c("emissGHGBySectorGWPAR5", "emissGHGBySectorNoBioGWPAR5", "emissGHGByGasGWPAR5", "emissGHGByGasNoBioGWPAR5") %in% paramsSelectx)){
          #emiss_sector_mapping <- utils::read.csv(CO2mappingFile, skip=1)
        print(str(tblNonCO2Emiss))
        tblNonCO2EmissAgg <- tblNonCO2Emiss %>%
            dplyr::mutate(
              sector=dplyr::case_when(
                grepl("refining",sector,ignore.case=T)~"refining",
                grepl("regional biomass|regional biomassOil|regional corn for ethanol|biomass" ,sector,ignore.case=T)~"biomass",
                grepl("trn_",sector,ignore.case=T)~"transport",
                grepl("comm |resid ",sector,ignore.case=T)~"building",
                grepl("electricity|elec_|electricity |csp_backup",sector,ignore.case=T)~"electricity",
                grepl("H2",sector,ignore.case=T)~"hydrogen",
                grepl("cement|N fertilizer|industrial|ind ",sector,ignore.case=T)~"industry",
                grepl("gas pipeline|gas processing|unconventional oil production|gas to liquids",sector,ignore.case=T)~"industry",
                grepl("Beef|Dairy|Pork|Poultry",sector,ignore.case=T)~"livestock",
                grepl("FiberCrop|MiscCrop|OilCrop|OtherGrain|PalmFruit|Corn|Rice|Root_Tuber|RootTuber|SheepGoat|SugarCrop|UnmanagedLand|Wheat|FodderGrass|FodderHerb",sector,ignore.case=T)~"crops",
                TRUE~sector)) %>%
            dplyr::group_by(scenario, region, subRegion, sources, x, xLabel, vintage, units,
                            aggregate, ghg, sector, classPalette1, classPalette2,
                            origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
            dplyr::filter(!is.na(value))
        }

      # nonCO2 emissions for GCAM USA if relevant
      queryx <- "nonCO2 emissions by sector USA"
      if (queryx %in% queriesx) {
        tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
        if (any(!is.null(regionsSelect))) {
          tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
        }
        #emiss_sector_mapping <- utils::read.csv(CO2mappingFile, skip=1)
        tbl <- tbl %>%
          dplyr::filter(ghg!="CO2")%>%
          dplyr::filter(scenario %in% scenOrigNames)%>%
          dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
          dplyr::mutate(ghg = dplyr::case_when ((grepl("HFC", ghg)) ~ "HFCs",
                                                (grepl("SF6", ghg)) ~ "SF6",
                                                (grepl("CO2", ghg)) ~ "CO2",
                                                (grepl("N2O", ghg)) ~ "N2O",
                                                (grepl("CH4", ghg)) ~ "CH4",
                                                (grepl("SO2", ghg)) ~ "SO2",
                                                (grepl("NH3", ghg)) ~ "NH3",
                                                (grepl("CF4", ghg)) ~ "CF4",
                                                (grepl("C2F6", ghg)) ~ "C2F6",
                                                TRUE ~ "Other"))%>%
          dplyr::filter(!ghg %in% c('SO2', 'NH3', 'Other')) %>%
          #dplyr::left_join(emiss_sector_mapping, by=c('class2' = 'class1')) %>%
          #dplyr::mutate(class2=agg_sector) %>%
          #dplyr::select(-agg_sector) %>%
          dplyr::mutate(
            sector=dplyr::case_when(
              grepl("refining",sector,ignore.case=T)~"refining",
              grepl("regional biomass|regional biomassOil|regional corn for ethanol|biomass" ,sector,ignore.case=T)~"biomass",
              grepl("trn_",sector,ignore.case=T)~"transport",
              grepl("comm |resid ",sector,ignore.case=T)~"building",
              grepl("electricity|elec_|electricity |csp_backup",sector,ignore.case=T)~"electricity",
              grepl("H2",sector,ignore.case=T)~"hydrogen",
              grepl("cement|N fertilizer|industrial|ind ",sector,ignore.case=T)~"industry",
              grepl("gas pipeline|gas processing|unconventional oil production|gas to liquids",sector,ignore.case=T)~"industry",
              grepl("Beef|Dairy|Pork|Poultry",sector,ignore.case=T)~"livestock",
              grepl("FiberCrop|MiscCrop|OilCrop|OtherGrain|PalmFruit|Corn|Rice|Root_Tuber|RootTuber|SheepGoat|SugarCrop|UnmanagedLand|Wheat|FodderGrass|FodderHerb",sector,ignore.case=T)~"crops",
              TRUE~sector)) %>%
          dplyr::left_join(gcamextractor::GWP,by="ghg") %>%
          dplyr::left_join(gcamextractor::conv_GgTg_to_MTC,by="Units") %>%
          dplyr::filter(!ghg=='CO2') %>%
          dplyr::mutate(origValue=value,
                        value=value*GWPAR5*Convert,
                        origUnits=Units,
                        origUnits = dplyr::case_when(ghg=="Other"~"Units",TRUE~origUnits),
                        units="GHG Emissions GWPAR5 (MTCO2eq)")%>%
          dplyr::mutate(sources = "Sources",
                        origScen = scenario,
                        origQuery = queryx,
                        origX = year, subRegion=region,
                        scenario = scenNewNames,
                        vintage = paste("Vint_", year, sep = ""),
                        x = year,
                        xLabel = "Year",
                        aggregate = "sum",
                        classPalette2 = "pal_all",
                        classPalette1 = "pal_all") %>%
          dplyr::select(scenario, region, subRegion, sources, x, xLabel, vintage, units, value,
                        aggregate, ghg, sector, classPalette1, classPalette2,
                        origScen, origQuery, origValue, origUnits, origX)%>%
          dplyr::group_by(scenario, region, subRegion, sources, x, xLabel, vintage, units,
                          aggregate, ghg, sector, classPalette1, classPalette2,
                          origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
          dplyr::filter(!is.na(value))
        tblNonCO2EmissUSA <- tbl
      } else {
        tblNonCO2EmissUSA <- tibble::tibble()
        # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
      }
  } # end nonCO2 query


  ## emissGHGByResProdGWPAR5 ===========================
  # need nonCO2 res prod for GHGBySector and GHGByGas
  if(any(c("emissGHGBySectorGWPAR5", "emissGHGBySectorNoBioGWPAR5", "emissGHGByGasGWPAR5", "emissGHGByGasNoBioGWPAR5", "emissGHGByResProdGWPAR5") %in% paramsSelectx)){
    #rlang::inform(paste0("Running param: ", paramx,"..."))
    # GHG emissions by resource production, using AR5 GWP values
    queryx <- "nonCO2 emissions by resource production"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      #emiss_sector_mapping <- utils::read.csv(CO2mappingFile, skip=1)
      tbl <- tbl %>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(sector = resource) %>%
        dplyr::mutate(ghg = dplyr::case_when ((grepl("HFC", ghg)) ~ "HFCs",
                                                 (grepl("SF6", ghg)) ~ "SF6",
                                                 (grepl("CO2_FUG", ghg)) ~ "CO2_FUG",
                                                 (grepl("CO2", ghg)) ~ "CO2",
                                                 (grepl("N2O", ghg)) ~ "N2O",
                                                 (grepl("CH4", ghg)) ~ "CH4",
                                                 (grepl("SO2", ghg)) ~ "SO2",
                                                 (grepl("NH3", ghg)) ~ "NH3",
                                                 (grepl("CF4", ghg)) ~ "CF4",
                                                 (grepl("C2F6", ghg)) ~ "C2F6",
                                                 TRUE ~ "Other"))%>%
        dplyr::filter(!ghg %in% c('SO2', 'NH3', 'Other')) %>%
        #dplyr::left_join(emiss_sector_mapping, by=c('class2' = 'class1')) %>%
        #dplyr::mutate(class2=agg_sector) %>%
        #dplyr::select(-agg_sector) %>%
        dplyr::left_join(gcamextractor::GWP,by="ghg")%>%
        dplyr::left_join(gcamextractor::conv_GgTg_to_MTC,by="Units") %>%
        dplyr::mutate(origValue=value,
                      value=value*GWPAR5*Convert,
                      origUnits=Units,
                      origUnits = dplyr::case_when(ghg=="Other"~"Units",TRUE~origUnits),
                      units="GHG Emissions by Resource GWPAR5 (MTCO2eq)")%>%
        dplyr::mutate(sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      classPalette1 = "pal_all",
                      classPalette2 = "pal_all") %>%
        dplyr::select(scenario, region, subRegion, sources, x, xLabel, vintage, units, value,
                      aggregate, ghg, sector, classPalette1, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion, sources, x, xLabel, vintage, units,
                        aggregate, ghg, sector, classPalette1, classPalette2,
                        origScen, origQuery,origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      tblNonCO2EmissRes <- tbl
    }
  }

  # add GHG by resource production to data if emissGHGByResProdGWPAR5 param is chosen
  if("emissGHGByResProdGWPAR5" %in% paramsSelectx){
    tblGHGEmissByResProd <- tblNonCO2EmissRes %>%
      dplyr::rename(class1 = sector, class2 = ghg) %>%
      dplyr::mutate(classLabel1 = "sector",
                    classLabel2 = "ghg",
                    param = "emissGHGByResProdGWPAR5",
                    units = "GHG emissions (MTCO2eq)")

    datax <- dplyr::bind_rows(datax, tblGHGEmissByResProd)
  }

  # add GHG by sector to data if emissGHGBySectorGWPAR5 param is chosen
  if("emissGHGBySectorGWPAR5" %in% paramsSelectx){
    tblGHGEmissBySector <- dplyr::bind_rows(
      tblLUEmiss, tblCO2EmissAgg, tblNonCO2EmissAgg, tblNonCO2EmissUSA,
      tblNonCO2EmissRes) %>%
      dplyr::rename(class1 = sector, class2 = ghg) %>%
      dplyr::mutate(classLabel1 = "sector",
                    classLabel2 = "ghg",
                    param = "emissGHGBySectorGWPAR5",
                    units = "GHG emissions (MTCO2eq)")

    datax <- dplyr::bind_rows(datax, tblGHGEmissBySector)
  }

  # add GHG by gas to data if emissGHGByGasGWPAR5 param is chosen
  if("emissGHGByGasGWPAR5" %in% paramsSelectx){
    tblGHGEmissByGas <- dplyr::bind_rows(
      tblLUEmiss, tblCO2EmissAgg, tblNonCO2EmissAgg, tblNonCO2EmissUSA,
      tblNonCO2EmissRes) %>%
      dplyr::rename(class1 = ghg, class2 = sector) %>%
      dplyr::mutate(classLabel1 = "ghg",
                    classLabel2 = "sector",
                    param = "emissGHGByGasGWPAR5",
                    units = "GHG emissions (MTCO2eq)")

    datax <- dplyr::bind_rows(datax, tblGHGEmissByGas)
  }

  # add GHG by sector (no bio) to data if emissGHGBySectorNoBioGWPAR5 param is chosen
  if("emissGHGBySectorNoBioGWPAR5" %in% paramsSelectx){
    tblGHGEmissBySectorNoBio <- dplyr::bind_rows(
      tblLUEmiss, tblCO2EmissNoBioAgg, tblNonCO2EmissAgg, tblNonCO2EmissUSA,
      tblNonCO2EmissRes) %>%
      dplyr::rename(class1 = sector, class2 = ghg) %>%
      dplyr::mutate(classLabel1 = "sector",
                    classLabel2 = "ghg",
                    param = "emissGHGBySectorNoBioGWPAR5",
                    units = "GHG emissions (MTCO2eq)")

    datax <- dplyr::bind_rows(datax, tblGHGEmissBySectorNoBio)
  }

  # add GHG by gas (no bio) to data if emissGHGByGasNoBioGWPAR5 param is chosen
  if("emissGHGByGasNoBioGWPAR5" %in% paramsSelectx){
    tblGHGEmissByGasNoBio <- dplyr::bind_rows(
      tblLUEmiss, tblCO2EmissNoBioAgg, tblNonCO2EmissAgg, tblNonCO2EmissUSA,
      tblNonCO2EmissRes) %>%
      dplyr::rename(class1 = ghg, class2 = sector) %>%
      dplyr::mutate(classLabel1 = "ghg",
                    classLabel2 = "sector",
                    param = "emissGHGByGasNoBioGWPAR5",
                    units = "GHG emissions (MTCO2eq)")

    datax <- dplyr::bind_rows(datax, tblGHGEmissByGasNoBio)
  }


  # paramx <- "emissLUC"
  # if(paramx %in% paramsSelectx){
  #   rlang::inform(paste0("Running param: ", paramx,"..."))
  #   # Land Use Change Emission (future)
  #   queryx <- "Land Use Change Emission (future)"
  #   if (queryx %in% queriesx) {
  #     tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
  #     if (any(!is.null(regionsSelect))) {
  #       tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
  #     }
  #     tbl <- tbl %>%
  #       dplyr::left_join(gcamextractor::conv_GgTg_to_MTC,by="Units") %>%
  #       dplyr::mutate(origValue=value,value=value*Convert*gcamextractor::convert$conv_C_CO2,
  #                     origUnits=Units,units="Emissions LUC - (MTCO2eq)") %>%
  #       dplyr::filter(scenario %in% scenOrigNames)%>%
  #       dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
  #       dplyr::mutate(param = "emissLUC",
  #                     sources = "Sources",
  #                     origScen = scenario,
  #                     origQuery = queryx,
  #                     origUnits = Units,
  #                     origX = year, subRegion=region,
  #                     scenario = scenNewNames,
  #                     value = value,
  #                     origValue = origValue,
  #                     units = "LUC CO2 Emissions (MTCO2eq)",
  #                     vintage = paste("Vint_", year, sep = ""),
  #                     x = year,
  #                     xLabel = "Year",
  #                     aggregate = "sum",
  #                     class1 = "class1",
  #                     classLabel1 = "Land Type",
  #                     classPalette1 = "pal_all",
  #                     class2 = "class2",
  #                     classLabel2 = "classLabel2",
  #                     classPalette2 = "classPalette2") %>%
  #       dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
  #                     aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
  #                     origScen, origQuery, origValue, origUnits, origX)%>%
  #       dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
  #                       aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
  #                       origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
  #       dplyr::filter(!is.na(value)) %>%
  #       dplyr::mutate(class1='LUC')
  #     tblLUEmiss<-tbl
  #     datax <- dplyr::bind_rows(datax, tbl)
  #   } else {
  #     # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
  #   }}




  #
  #   # GHG emissions (non CO2) by subsector, using AR5 GWP values USA
  #   queryx <- "nonCO2 emissions by sector USA"
  #   if (queryx %in% queriesx) {
  #     tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
  #     if (any(!is.null(regionsSelect))) {
  #       tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
  #     }
  #     #emiss_sector_mapping <- utils::read.csv(CO2mappingFile, skip=1)
  #     tblUSA <- tbl %>%
  #       dplyr::filter(ghg!="CO2")%>%
  #       dplyr::filter(scenario %in% scenOrigNames)%>%
  #       dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
  #       dplyr::mutate(class1=ghg, class2=sector) %>%
  #       dplyr::mutate(class1 = dplyr::case_when ((grepl("HFC", class1)) ~ "HFCs",
  #                                                (grepl("SF6", class1)) ~ "SF6",
  #                                                (grepl("CO2", class1)) ~ "CO2",
  #                                                (grepl("N2O", class1)) ~ "N2O",
  #                                                (grepl("CH4", class1)) ~ "CH4",
  #                                                (grepl("SO2", class1)) ~ "SO2",
  #                                                (grepl("NH3", class1)) ~ "NH3",
  #                                                (grepl("CF4", class1)) ~ "CF4",
  #                                                (grepl("C2F6", class1)) ~ "C2F6",
  #                                                TRUE ~ "Other"))%>%
  #       dplyr::filter(!class1 %in% c('SO2', 'NH3', 'Other'),
  #                     !(class1 == "SF6" & grepl("grid",region,ignore.case = T)),
  #                     !(class1 %in% c("CH4","HFCs","N2O") & region=="USA")) %>%
  #       #dplyr::left_join(emiss_sector_mapping, by=c('class2' = 'class1')) %>%
  #       #dplyr::mutate(class2=agg_sector) %>%
  #       #dplyr::select(-agg_sector) %>%
  #       dplyr::mutate(
  #         class2=dplyr::case_when(
  #           grepl("refining",class2,ignore.case=T)~"refining",
  #           grepl("regional biomass|regional biomassOil|regional corn for ethanol|biomass" ,class2,ignore.case=T)~"biomass",
  #           grepl("trn_",class2,ignore.case=T)~"transport",
  #           grepl("comm |resid ",class2,ignore.case=T)~"building",
  #           grepl("electricity|elec_|electricity |csp_backup",class2,ignore.case=T)~"electricity",
  #           grepl("H2",class2,ignore.case=T)~"hydrogen",
  #           grepl("cement|N fertilizer|industrial|ind ",class2,ignore.case=T)~"industry",
  #           grepl("gas pipeline|gas processing|unconventional oil production|gas to liquids",class2,ignore.case=T)~"industry",
  #           grepl("Beef|Dairy|Pork|Poultry",class2,ignore.case=T)~"livestock",
  #           grepl("FiberCrop|MiscCrop|OilCrop|OtherGrain|PalmFruit|Corn|Rice|Root_Tuber|RootTuber|SheepGoat|SugarCrop|UnmanagedLand|Wheat|FodderGrass|FodderHerb",class2,ignore.case=T)~"crops",
  #           TRUE~class2))%>%
  #       dplyr::left_join(gcamextractor::GWP%>%dplyr::rename(class1=ghg),by="class1")%>%
  #       dplyr::left_join(gcamextractor::conv_GgTg_to_MTC,by="Units") %>%
  #       #dplyr::filter(!class1=='CO2') %>%
  #       dplyr::mutate(origValue=value,
  #                     value=value*GWPAR5*Convert,
  #                     origUnits=Units,
  #                     origUnits = dplyr::case_when(class1=="Other"~"Units",TRUE~origUnits),
  #                     units="GHG Emissions GWPAR5 (MTCO2eq)")%>%
  #       dplyr::mutate(param = "emissNonCO2BySectorGWPAR5",
  #                     sources = "Sources",
  #                     origScen = scenario,
  #                     origQuery = queryx,
  #                     origX = year, subRegion=region,
  #                     scenario = scenNewNames,
  #                     vintage = paste("Vint_", year, sep = ""),
  #                     x = year,
  #                     xLabel = "Year",
  #                     aggregate = "sum",
  #                     classLabel1 = "GHG",
  #                     classPalette1 = "pal_all",
  #                     classLabel2 = "sector",
  #                     classPalette2 = "pal_all") %>%
  #       dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
  #                     aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
  #                     origScen, origQuery, origValue, origUnits, origX)%>%
  #       dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
  #                       aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
  #                       origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
  #       dplyr::filter(!is.na(value))
  #   } else {
  #     tblUSA <- tibble::tibble()
  #     # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
  #   }
  #
  #   # Combine Core and USA
  #   if(nrow(tblCore)>0){scenariosCore <- unique(tblCore$scenario)}else{
  #     scenariosCore <- NULL
  #   }
  #
  #   tblUSA <- tblUSA %>%
  #     dplyr::filter(!scenario %in% scenariosCore)
  #
  #   datax <- dplyr::bind_rows(datax, tblCore, tblUSA)
  #
  # }


  # paramx <- "emissNonCO2BySector"
  # if(paramx %in% paramsSelectx){
  #   rlang::inform(paste0("Running param: ", paramx,"..."))
  #
  #   # GHG emissions (non CO2) by subsector values
  #   queryx <- "nonCO2 emissions by sector"
  #   if (queryx %in% queriesx) {
  #     tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
  #     if (any(!is.null(regionsSelect))) {
  #       tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
  #     }
  #     tblCore <- tbl %>%
  #       dplyr::filter(ghg!="CO2")%>%
  #       dplyr::filter(scenario %in% scenOrigNames)%>%
  #       dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
  #       dplyr::mutate(class1=sector, class2=ghg) %>%
  #       dplyr::mutate(origValue=value,
  #                     value=value,
  #                     origUnits=Units,
  #                     units=Units)%>%
  #       dplyr::mutate(param = "emissNonCO2BySector",
  #                     sources = "Sources",
  #                     origScen = scenario,
  #                     origQuery = queryx,
  #                     origX = year, subRegion=region,
  #                     scenario = scenNewNames,
  #                     vintage = paste("Vint_", year, sep = ""),
  #                     x = year,
  #                     xLabel = "Year",
  #                     aggregate = "sum",
  #                     classLabel1 = "Sector",
  #                     classPalette1 = "pal_all",
  #                     classLabel2 = "GHG",
  #                     classPalette2 = "pal_all") %>%
  #       dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
  #                     aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
  #                     origScen, origQuery, origValue, origUnits, origX)%>%
  #       dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
  #                       aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
  #                       origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
  #       dplyr::filter(!is.na(value))
  #   } else {
  #     tblCore <- tibble::tibble()
  #     # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
  #   }
  #
  #   # GHG emissions (non CO2) by subsector values USA
  #   queryx <- "nonCO2 emissions by sector USA"
  #   if (queryx %in% queriesx) {
  #     tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
  #     tblUSA <- tbl %>%
  #       dplyr::filter(ghg!="CO2")%>%
  #       dplyr::filter(scenario %in% scenOrigNames)%>%
  #       dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
  #       dplyr::mutate(class1=ghg, class2=sector) %>%
  #       dplyr::mutate(origValue=value,
  #                     value=value,
  #                     origUnits=Units,
  #                     units=Units)%>%
  #       dplyr::mutate(param = "emissNonCO2BySector",
  #                     sources = "Sources",
  #                     origScen = scenario,
  #                     origQuery = queryx,
  #                     origX = year, subRegion=region,
  #                     scenario = scenNewNames,
  #                     vintage = paste("Vint_", year, sep = ""),
  #                     x = year,
  #                     xLabel = "Year",
  #                     aggregate = "sum",
  #                     classLabel1 = "GHG",
  #                     classPalette1 = "pal_all",
  #                     classLabel2 = "sector",
  #                     classPalette2 = "pal_all",
  #                     class1 = paste0(class1," (",units,")")) %>%
  #       dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
  #                     aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
  #                     origScen, origQuery, origValue, origUnits, origX)%>%
  #       dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
  #                       aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
  #                       origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
  #       dplyr::filter(!is.na(value))
  #   } else {
  #     tblUSA <- tibble::tibble()
  #     # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
  #   }
  #
  #   # GHG emissions (non CO2) by subsector values USA
  #   queryx <- "nonCO2 emissions by sector USA nonUS"
  #   if (queryx %in% queriesx) {
  #     tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
  #     tblUSAnonUS <- tbl %>%
  #       dplyr::filter(ghg!="CO2")%>%
  #       dplyr::filter(scenario %in% scenOrigNames)%>%
  #       dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
  #       dplyr::mutate(class1=ghg, class2=sector) %>%
  #       dplyr::mutate(origValue=value,
  #                     value=value,
  #                     origUnits=Units,
  #                     units=Units)%>%
  #       dplyr::mutate(param = "emissNonCO2BySector",
  #                     sources = "Sources",
  #                     origScen = scenario,
  #                     origQuery = queryx,
  #                     origX = year, subRegion=region,
  #                     scenario = scenNewNames,
  #                     vintage = paste("Vint_", year, sep = ""),
  #                     x = year,
  #                     xLabel = "Year",
  #                     aggregate = "sum",
  #                     classLabel1 = "GHG",
  #                     class1 = paste0(class1," (",units,")"),
  #                     classPalette1 = "pal_all",
  #                     classLabel2 = "sector",
  #                     classPalette2 = "pal_all") %>%
  #       dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
  #                     aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
  #                     origScen, origQuery, origValue, origUnits, origX)%>%
  #       dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
  #                       aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
  #                       origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
  #       dplyr::filter(!is.na(value))
  #   } else {
  #     tblUSAnonUS <- tibble::tibble()
  #     # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
  #   }
  #
  #   # Combine Core and USA
  #   if(nrow(tblCore)>0){scenariosCore <- unique(tblCore$scenario)}else{
  #     scenariosCore <- NULL
  #   }
  #
  #   tblUSA <- tblUSA %>%
  #     dplyr::filter(!scenario %in% scenariosCore)
  #
  #   tblUSAnonUS <- tblUSAnonUS %>%
  #     dplyr::filter(!scenario %in% scenariosCore)
  #
  #   datax <- dplyr::bind_rows(datax, tblCore, tblUSA, tblUSAnonUS)
  #
  # }


  ## emissCO2CumGlobal2010to2100s ===========================
  if(any(c("emissCO2CumGlobal2010to2100","emissCO2CumGlobal2010to2100RCP") %in% paramsSelectx)){

    paramx <- "emissCO2CumGlobal2010to2100"
    # GHG emissions (non CO2) by subsector, using AR5 GWP values
    queryx <- "CO2 emissions by sector"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      #emiss_sector_mapping <- utils::read.csv(CO2mappingFile, skip=1)
      tbl <- tbl %>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(class1=sector, class2="class2") %>%
        dplyr::mutate(
          class1=dplyr::case_when(
            grepl("refining",class1,ignore.case=T)~"refining",
            grepl("regional biomass|regional biomassOil|regional corn for ethanol|regional sugar for ethanol|biomass" ,class1,ignore.case=T)~"biomass",
            grepl("trn_",class1,ignore.case=T)~"transport",
            grepl("comm |resid ",class1,ignore.case=T)~"building",
            grepl("electricity|elec_|electricity |csp_backup",class1,ignore.case=T)~"electricity",
            grepl("H2",class1,ignore.case=T)~"hydrogen",
            grepl("cement|N fertilizer|industrial|ind ",class1,ignore.case=T)~"industry",
            grepl("gas pipeline|gas processing|unconventional oil production|gas to liquids",class1,ignore.case=T)~"industry",
            grepl("Beef|Dairy|Pork|Poultry",class1,ignore.case=T)~"livestock",
            grepl("FiberCrop|MiscCrop|OilCrop|OtherGrain|PalmFruit|Corn|Rice|Root_Tuber|RootTuber|SheepGoat|SugarCrop|UnmanagedLand|Wheat|FodderGrass|FodderHerb",class1,ignore.case=T)~"crops",
            TRUE~class1))%>%
        dplyr::mutate(origValue=value,
                      origUnits=Units,
                      units="CO2 (MTC)")%>%
        dplyr::mutate(param = "emissCO2BySector",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      classLabel1 = "sector",
                      classPalette1 = "pal_all",
                      classLabel2 = "classLabel2",
                      classPalette2 = "pal_all") %>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)

      # Add Global Emissions
      tblGlobal <- tbl %>%
        dplyr::mutate(region="Global", subRegion="Global") %>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      # # For selected region
      # if (any(!is.null(regionsSelect))) {
      #   tblSelect <- tbl %>% dplyr::filter(region %in% regionsSelect)  %>%
      #     dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
      #                     aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
      #                     origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
      #     dplyr::filter(!is.na(value))
      # } else {
      #   tblSelect <- tbl %>%
      #     dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
      #                     aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
      #                     origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
      #     dplyr::filter(!is.na(value)) %>%
      #     dplyr::bind_rows(tblGlobal)}

      tblx <- tblGlobal

      # tblx <- tblGlobal %>%
      #   dplyr::bind_rows(tblSelect)

      # Cumulative Global Emissions
      # Expand data to include years
      tblxexpand <- tblx %>%
        dplyr::select(scenario,region,subRegion,units,x,value)%>%
        dplyr::group_by(scenario,region,subRegion,units,x) %>%
        dplyr::summarize_at(dplyr::vars("value"),list(~sum(.,na.rm = T))) %>%
        tibble::as_tibble() %>%
        tidyr::complete(x=seq(max(2010,min(tblx$x)),max(tblx$x),1),tidyr::nesting(scenario,region,subRegion,units)) %>%
        dplyr::ungroup()%>%
        dplyr::mutate(value=zoo::na.approx(value,na.rm =FALSE)) %>%
        dplyr::arrange(x) %>%
        dplyr::filter(!is.na(value));  tblxexpand

      tblxexpandcum2010to2100 <- tblxexpand %>%
        dplyr::filter(x > 2005) %>%
        dplyr::group_by(scenario,region,subRegion,units) %>%
        dplyr::mutate(value=cumsum(value)/1000,
                      units = gsub("MTC","GTC",units),
                      param = "emissCO2CumGlobal2010to2100",
                      sources = "sources",
                      class1 = "class1",
                      class2 = "class2",
                      xLabel = "year",
                      vintage = paste0("vint_",x),
                      aggregate = "sum",
                      classLabel1 = "classLabel1",
                      classPalette1 = "pal_hot",
                      classLabel2 = "classLabel2",
                      classPalette2 = "pal_hot",
                      origScen = scenario,
                      origQuery = queryx,
                      origUnits = units,
                      origX = x,
                      origValue = value); tblxexpandcum2010to2100


      # Comapre CO2 Emissions between core and GCAM-USA Global and the RCP ranges
      # CMIP5 Table SPM.3, pg 27 https://www.ipcc.ch/site/assets/uploads/2018/02/WG1AR5_SPM_FINAL.pdf

      replen <- length(unique(tblxexpand$x))

      rcpranges <- data.frame(scenario=rep("rcpGlobalCumEmissions",replen),
                              class1 = rep("rcp8.5",replen),
                              class2 = rep("max",replen),
                              x = unique(tblxexpand$x),
                              value = rep(1910,replen)) %>%
        dplyr::bind_rows(data.frame(scenario=rep("rcpGlobalCumEmissions",replen),
                                    class1 = rep("rcp8.5",replen),
                                    class2 = rep("min",replen),
                                    x = unique(tblxexpand$x),
                                    value = rep(1415,replen))) %>%
        dplyr::bind_rows(data.frame(scenario=rep("rcpGlobalCumEmissions",replen),
                                    class1 = rep("rcp6.0",replen),
                                    class2 = rep("max",replen),
                                    x = unique(tblxexpand$x),
                                    value = rep(1250,replen))) %>%
        dplyr::bind_rows(data.frame(scenario=rep("rcpGlobalCumEmissions",replen),
                                    class1 = rep("rcp6.0",replen),
                                    class2 = rep("min",replen),
                                    x = unique(tblxexpand$x),
                                    value = rep(840,replen))) %>%
        dplyr::bind_rows(data.frame(scenario=rep("rcpGlobalCumEmissions",replen),
                                    class1 = rep("rcp4.5",replen),
                                    class2 = rep("max",replen),
                                    x = unique(tblxexpand$x),
                                    value = rep(1005,replen))) %>%
        dplyr::bind_rows(data.frame(scenario=rep("rcpGlobalCumEmissions",replen),
                                    class1 = rep("rcp4.5",replen),
                                    class2 = rep("min",replen),
                                    x = unique(tblxexpand$x),
                                    value = rep(595,replen))) %>%
      dplyr::bind_rows(data.frame(scenario=rep("rcpGlobalCumEmissions",replen),
                                  class1 = rep("rcp2.6",replen),
                                  class2 = rep("max",replen),
                                  x = unique(tblxexpand$x),
                                  value = rep(410,replen))) %>%
        dplyr::bind_rows(data.frame(scenario=rep("rcpGlobalCumEmissions",replen),
                                    class1 = rep("rcp2.6",replen),
                                    class2 = rep("min",replen),
                                    x = unique(tblxexpand$x),
                                    value = rep(140,replen))) %>%
        tibble::as_tibble(); rcpranges

      rcpranges <- rcpranges %>%
        dplyr::mutate(units = "CO2 (GTC)",
                      param = "emissCO2CumGlobal2010to2100RCP",
                      sources = "sources",
                      xLabel = "year",
                      vintage = paste0("vint_",x),
                      aggregate = "sum",
                      classLabel1 = "rcp",
                      classPalette1 = "pal_hot",
                      classLabel2 = "minmax",
                      classPalette2 = "pal_hot",
                      origScen = scenario,
                      origQuery = queryx,
                      origUnits = units,
                      origX = x,
                      origValue = value,
                      region="Global",
                      subRegion="Global") %>%
        unique(); rcpranges



      datax <- dplyr::bind_rows(datax, tblx, tblxexpandcum2010to2100, rcpranges)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }


    }


  paramx <- "emissMethaneBySourceGWPAR5"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    # GHG emissions (non CO2) by subsector, using AR5 GWP values
    queryx <- "nonCO2 emissions by sector"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      #emiss_sector_mapping <- utils::read.csv(CO2mappingFile, skip=1)
      tbl <- tbl %>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(class1=sector, class2=ghg) %>%
        dplyr::filter(class2 %in% c('CH4', 'CH4_AGR', 'CH4_AWB')) %>%
        dplyr::mutate(
          class1=dplyr::case_when(
            grepl("refining",class1,ignore.case=T)~"refining",
            grepl("regional biomass|regional biomassOil|regional corn for ethanol|biomass" ,class1,ignore.case=T)~"biomass",
            grepl("trn_",class1,ignore.case=T)~"transport",
            grepl("comm |resid ",class1,ignore.case=T)~"building",
            grepl("electricity|elec_|electricity |csp_backup",class1,ignore.case=T)~"electricity",
            grepl("H2",class1,ignore.case=T)~"hydrogen",
            grepl("cement|N fertilizer|industrial|ind ",class1,ignore.case=T)~"industry",
            grepl("gas pipeline|gas processing|unconventional oil production|gas to liquids",class1,ignore.case=T)~"industry",
            grepl("Beef|Dairy|Pork|Poultry",class1,ignore.case=T)~"livestock",
            grepl("FiberCrop|MiscCrop|OilCrop|OtherGrain|PalmFruit|Corn|Rice|Root_Tuber|RootTuber|SheepGoat|SugarCrop|UnmanagedLand|Wheat|FodderGrass|FodderHerb",class1,ignore.case=T)~"crops",
            TRUE~class1))%>%
        dplyr::left_join(gcamextractor::GWP%>%dplyr::rename(class2=ghg),by="class2")%>%
        dplyr::left_join(gcamextractor::conv_GgTg_to_MTC,by="Units") %>%
        dplyr::mutate(origValue=value,
                      value=value*GWPAR5*Convert,
                      origUnits=Units,
                      origUnits = dplyr::case_when(class2=="Other"~"Units",TRUE~origUnits),
                      units="Methane Emissions GWPAR5 (MTCO2eq)")%>%
        dplyr::mutate(param = "emissMethaneBySourceGWPAR5",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      classLabel1 = "sector",
                      classPalette1 = "pal_all",
                      classLabel2 = "GHG",
                      classPalette2 = "pal_all") %>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}


  ## co2SequestrationBySector -----------------------------
  if(any(c("co2SequestrationBySector") %in% paramsSelectx)){
    queryx <- "CO2 sequestration by sector"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      #emiss_sector_mapping <- utils::read.csv(CO2mappingFile, skip=1)
      tbl <- tbl %>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(
          origValue=value,
          value=value*gcamextractor::convert$conv_C_CO2*(-1), # convert from MTC to MTCO2eq and make negative
          origUnits=Units,
          units="CO2 emissions - (MTCO2)",
          sources = "Sources",
          origScen = scenario,
          origQuery = queryx,
          origX = year, subRegion=region,
          scenario = scenNewNames,
          vintage = paste("Vint_", year, sep = ""),
          x = year,
          xLabel = "Year",
          aggregate = "sum",
          classPalette1 = "pal_all",
          classPalette2 = "pal_all",
          ghg = "CO2") %>%
        dplyr::select(scenario, region, subRegion, sources, x, xLabel, vintage, units, value,
                      aggregate, ghg, sector, classPalette1, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)
      tblCO2Seq <- tbl
      datax <- dplyr::bind_rows(datax, tblCO2Seq)
    }
  } # end CO2 sequestration query


  ## Sectoral details ======================================

  # emissCO2BySubsector
  # need CO2 by subsector for emissGHGBySectorTransportGWPAR5
  if(any(c("emissGHGBySectorTransportGWPAR5", "emissGHGBySectorIndustryGWPAR5") %in% paramsSelectx)){
    queryx <- "CO2 emissions by subsector"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(
          origValue=value,
          value=value*44/12, # convert from MTC to MTCO2eq
          origUnits=Units,
          units="CO2 emissions - (MTCO2)",
          sources = "Sources",
          origScen = scenario,
          origQuery = queryx,
          origX = year, subRegion=region,
          scenario = scenNewNames,
          vintage = paste("Vint_", year, sep = ""),
          x = year,
          xLabel = "Year",
          aggregate = "sum",
          classPalette1 = "pal_all",
          classPalette2 = "pal_all",
          ghg = "CO2") %>%
        dplyr::select(scenario, region, subRegion, sources, x, xLabel, vintage, units, value,
                      aggregate, ghg, sector, subsector, classPalette1, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)
      tblCO2EmissSubsec <- tbl
    }
  }

  # emiss nonCO2 by subsector
  # need for emissGHGBySectorTransportGWPAR5
  if(any(c("emissGHGBySectorTransportGWPAR5", "emissGHGBySectorIndustryGWPAR5") %in% paramsSelectx)){
    queryx <- "nonCO2 emissions by subsector"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      #emiss_sector_mapping <- utils::read.csv(CO2mappingFile, skip=1)
      tbl <- tbl %>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(ghg = dplyr::case_when ((grepl("HFC", ghg)) ~ "HFCs",
                                              (grepl("SF6", ghg)) ~ "SF6",
                                              (grepl("CO2", ghg)) ~ "CO2",
                                              (grepl("N2O", ghg)) ~ "N2O",
                                              (grepl("CH4", ghg)) ~ "CH4",
                                              (grepl("SO2", ghg)) ~ "SO2",
                                              (grepl("NH3", ghg)) ~ "NH3",
                                              (grepl("CF4", ghg)) ~ "CF4",
                                              (grepl("C2F6", ghg)) ~ "C2F6",
                                              TRUE ~ "Other"))%>%
        dplyr::left_join(gcamextractor::GWP,by="ghg") %>%
        dplyr::left_join(gcamextractor::conv_GgTg_to_MTC,by="Units") %>%
        dplyr::filter(ghg!='CO2') %>%
        dplyr::mutate(origValue=value,
                      value=value*GWPAR5*Convert,
                      origUnits=Units,
                      origUnits = dplyr::case_when(ghg=="Other"~"Units",TRUE~origUnits),
                      units="GHG Emissions GWPAR5 (MTCO2eq)",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      classPalette2 = "pal_all",
                      classPalette1 = "pal_all") %>%
        dplyr::select(scenario, region, subRegion, sources, x, xLabel, vintage, units, value,
                      aggregate, ghg, sector, subsector, classPalette1, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)

      tblNonCO2EmissSubsec <- tbl
    } else {
      tblNonCO2EmissSubsec <- tibble::tibble()
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}


  ### Power ##########################################
  paramx <- "emissGHGBySectorPowerGWPAR5"
  if(paramx %in% paramsSelectx) {
    # CO2 emissions
    tblCO2EmissPower <- tblCO2Emiss %>%
      dplyr::filter(grepl("elec", sector)) %>%
      dplyr::mutate(sector = dplyr::case_when(
        grepl("biomass", sector) ~ paste0(ghg, "_biomass"),
        grepl("coal", sector) ~ paste0(ghg, "_coal"),
        grepl("gas", sector) ~ paste0(ghg, "_natural gas"),
        grepl("refined liquids", sector) ~ paste0(ghg, "_refined liquids"),
        ghg != "CO2" ~ ghg,
        T ~ paste0(sector, "_", ghg))) %>%
      dplyr::group_by(scenario, region, subRegion, sources, x, xLabel, vintage, units,
                      aggregate, ghg, sector, classPalette1, classPalette2,
                      origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
      dplyr::filter(!is.na(value)) %>%
      dplyr::rename(class1 = sector, class2 = ghg) %>%
      dplyr::mutate(classLabel1 = "sector",
                    classLabel2 = "ghg")

    # NonCO2 emissions
    tblNonCO2EmissPower <- tblNonCO2Emiss %>%
      dplyr::filter(grepl("elec", sector)) %>%
      dplyr::mutate(sector = dplyr::case_when(
        grepl("biomass", sector) ~ paste0(ghg, "_biomass"),
        grepl("coal", sector) ~ paste0(ghg, "_coal"),
        grepl("gas", sector) ~ paste0(ghg, "_natural gas"),
        grepl("refined liquids", sector) ~ paste0(ghg, "_refined liquids"),
        ghg != "CO2" ~ ghg,
        T ~ paste0(sector, "_", ghg))) %>%
      dplyr::group_by(scenario, region, subRegion, sources, x, xLabel, vintage, units,
                      aggregate, ghg, sector, classPalette1, classPalette2,
                      origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
      dplyr::filter(!is.na(value)) %>%
      dplyr::rename(class1 = sector, class2 = ghg) %>%
      dplyr::mutate(classLabel1 = "sector",
                    classLabel2 = "ghg")

    # all CO2
    tblEmissGHGPower <- dplyr::bind_rows(tblCO2EmissPower,
                                         tblNonCO2EmissPower) %>%
      dplyr::mutate(param = "emissGHGBySectorPowerGWPAR5",
                    units="GHG emissions - (MTCO2eq)")
    datax <- dplyr::bind_rows(datax, tblEmissGHGPower)
  }

  ### Buildings ############################################
  paramx <- "emissGHGBySectorBuildingsGWPAR5"
  if(paramx %in% paramsSelectx) {
      # CO2 emissions
      tblCO2EmissBuild <- tblCO2EmissNoBio %>%
        dplyr::filter(grepl("comm|resid", sector)) %>%
        dplyr::group_by(scenario, region, subRegion, sources, x, xLabel, vintage, units,
                        aggregate, ghg, sector, classPalette1, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
        dplyr::filter(!is.na(value)) %>%
        dplyr::rename(class1 = sector, class2 = ghg) %>%
        dplyr::mutate(classLabel1 = "sector",
                      classLabel2 = "ghg")

      # NonCO2 emissions
      tblNonCO2EmissBuild <- tblNonCO2Emiss %>%
        dplyr::filter(grepl("comm|resid", sector)) %>%
        dplyr::group_by(scenario, region, subRegion, sources, x, xLabel, vintage, units,
                        aggregate, ghg, sector, classPalette1, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
        dplyr::filter(!is.na(value)) %>%
        dplyr::rename(class1 = sector, class2 = ghg) %>%
        dplyr::mutate(classLabel1 = "sector",
                      classLabel2 = "ghg")

      # all CO2
      tblEmissGHGBuild <- dplyr::bind_rows(tblCO2EmissBuild,
                                           tblNonCO2EmissBuild) %>%
        dplyr::mutate(param = "emissGHGBySectorBuildingsGWPAR5",
                      units="GHG emissions - (MTCO2eq)")
      datax <- dplyr::bind_rows(datax, tblEmissGHGBuild)
  }

  ### Transport #############################################
  paramx <- "emissGHGBySectorTransportGWPAR5"
  if(paramx %in% paramsSelectx) {
    # CO2 emissions
    tblCO2EmissTrn <- tblCO2EmissSubsec %>%
      dplyr::filter(grepl("trn", sector)) %>%
      dplyr::mutate(sector = dplyr::case_when(
        subsector %in% c("Car", "Large Car and Truck", "Mini Car") ~ "4W LDV",
        subsector %in% c("Heavy truck", "Light truck", "Medium truck") ~ "Freight road",
        T ~ subsector)) %>%
      dplyr::select(-subsector) %>%
      dplyr::group_by(scenario, region, subRegion, sources, x, xLabel, vintage, units,
                      aggregate, ghg, sector, classPalette1, classPalette2,
                      origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
      dplyr::filter(!is.na(value)) %>%
      dplyr::rename(class1 = sector, class2 = ghg) %>%
      dplyr::mutate(classLabel1 = "sector",
                    classLabel2 = "ghg")

    # NonCO2 emissions
    tblNonCO2EmissTrn <- tblNonCO2EmissSubsec %>%
      dplyr::filter(grepl("trn", sector)) %>%
      dplyr::mutate(sector = dplyr::case_when(
        subsector %in% c("Car", "Large Car and Truck", "Mini Car") ~ "4W LDV",
        subsector %in% c("Heavy truck", "Light truck", "Medium truck") ~ "Freight road",
        T ~ subsector)) %>%
      dplyr::select(-subsector) %>%
      dplyr::group_by(scenario, region, subRegion, sources, x, xLabel, vintage, units,
                      aggregate, ghg, sector, classPalette1, classPalette2,
                      origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
      dplyr::filter(!is.na(value)) %>%
      dplyr::rename(class1 = sector, class2 = ghg) %>%
      dplyr::mutate(classLabel1 = "sector",
                    classLabel2 = "ghg")

    # all CO2
    tblEmissGHGTrn <- dplyr::bind_rows(tblCO2EmissTrn,
                                       tblNonCO2EmissTrn) %>%
      dplyr::mutate(param = "emissGHGBySectorTransportGWPAR5",
                    units="GHG emissions - (MTCO2eq)")
    datax <- dplyr::bind_rows(datax, tblEmissGHGTrn)
  }

  ### Industry #############################################
  paramx <- "emissGHGBySectorIndustryGWPAR5"
  if(paramx %in% paramsSelectx) {
    # CO2 emissions
    tblCO2EmissInd <- tblCO2EmissSubsec %>%
      dplyr::filter(grepl("ind|N fertilizer|cement", sector)) %>%
      dplyr::mutate(sector = dplyr::case_when(
        sector == "industrial energy use" ~ subsector,
        sector == "industrial feedstocks" ~ sector,
        grepl("cement", sector) ~ "cement",
        grepl("industrial processes", sector) ~ "industrial processes",
        grepl("N fertilizer", sector) ~ "N fertilizer",
        T ~ paste0(sector, "_", subsector))) %>%
      dplyr::select(-subsector) %>%
      dplyr::group_by(scenario, region, subRegion, sources, x, xLabel, vintage, units,
                      aggregate, ghg, sector, classPalette1, classPalette2,
                      origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
      dplyr::filter(!is.na(value)) %>%
      dplyr::rename(class1 = sector, class2 = ghg) %>%
      dplyr::mutate(classLabel1 = "sector",
                    classLabel2 = "ghg")

    # NonCO2 emissions
    tblNonCO2EmissInd <- tblNonCO2EmissSubsec %>%
      dplyr::filter(grepl("ind|N fertilizer|cement", sector)) %>%
      dplyr::mutate(sector = dplyr::case_when(
        sector == "industrial energy use" ~ subsector,
        sector == "industrial feedstocks" ~ sector,
        grepl("cement", sector) ~ "cement",
        grepl("industrial processes", sector) ~ "industrial processes",
        grepl("N fertilizer", sector) ~ "N fertilizer",
        T ~ paste0(sector, "_", subsector))) %>%
      dplyr::select(-subsector) %>%
      dplyr::group_by(scenario, region, subRegion, sources, x, xLabel, vintage, units,
                      aggregate, ghg, sector, classPalette1, classPalette2,
                      origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
      dplyr::filter(!is.na(value)) %>%
      dplyr::rename(class1 = sector, class2 = ghg) %>%
      dplyr::mutate(classLabel1 = "sector",
                    classLabel2 = "ghg")

    # all CO2
    tblEmissGHGInd <- dplyr::bind_rows(tblCO2EmissInd,
                                       tblNonCO2EmissInd) %>%
      dplyr::mutate(param = "emissGHGBySectorIndustryGWPAR5",
                    units="GHG emissions - (MTCO2eq)")
    datax <- dplyr::bind_rows(datax, tblEmissGHGInd)
  }

  # Transport -----------------------------

  ## transportPassengerVMTByMode ===========================
  paramx<-"transportPassengerVMTByMode"
  # Total final energy by aggregate end-use sector
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    queryx <- "transport service output by mode"
    vmt_array <- c("trn_aviation_intl", "trn_pass", "trn_pass_road", "trn_pass_road_LDV",
                   "trn_pass_road_LDV_2W", "trn_pass_road_LDV_4W")
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::filter(sector %in% vmt_array, !mode %in% c('Cycle', 'Walk', '2W', '4W', 'LDV', 'road')) %>%
        dplyr::mutate(#mode=gsub("International\\sAviation","Plane",mode),
                      #mode=gsub("Domestic\\sAviation","Plane",mode),
                      mode=gsub("HSR","Rail",mode),
                      mode=gsub("Passenger\\sRail","Rail",mode),
                      mode=gsub("Bus","Bus",mode),
                      mode=gsub("Moped","MotorBike",mode),
                      mode=gsub("Motorcycle\\s[(]50-250cc[)]","MotorBike",mode),
                      mode=gsub("Motorcycle\\s[:(:][:>:]250cc[:):]","MotorBike",mode),
                      mode=gsub("Compact\\sCar","LDV",mode),
                      mode=gsub("Large\\sCar\\sand\\sTruck", "LDV", mode),
                      mode=gsub("2W\\sand\\s3W", "LDV", mode),
                      mode=gsub("Large\\sCar\\sand\\sSUV","LDV",mode),
                      mode=gsub("Mini\\sCar","LDV",mode),
                      mode=gsub("Subcompact\\sCar","LDV",mode),
                      mode=gsub("Car", "LDV", mode),
                      param = "transportPassengerVMTByMode",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      units = "Passenger (million pass-km)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = mode,
                      classLabel1 = "Mode",
                      classPalette1 = "pal_all",
                      class2 = sector,
                      classLabel2 = "classLabel2",
                      classPalette2 = "classPalette2")%>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}


  ## transportFreightVMTByMode =================================================
  paramx<-"transportFreightVMTByMode"
  # Total final energy by aggregate end-use sector
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    queryx <- "transport service output by mode"
    vmt_array <- c("trn_freight", "trn_freight_road")
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::filter(sector %in% vmt_array, !mode %in% c('road')) %>%
        dplyr::mutate(mode=dplyr::if_else(mode=="Domestic Ship","Ship",mode),
                      mode=dplyr::if_else(mode=="Freight Rail","Rail",mode),
                      #mode=dplyr::if_else(mode=="International Ship","Ship",mode),
                      mode=dplyr::if_else(mode=="Truck (6-15t)","Truck",mode),
                      mode=dplyr::if_else(mode=="Truck (0-1t)","Truck",mode),
                      mode=dplyr::if_else(mode=="Truck (>15t)","Truck",mode),
                      param = "transportFreightVMTByMode",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      units = "Freight (million ton-km)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = mode,
                      classLabel1 = "Mode",
                      classPalette1 = "pal_all",
                      class2 = sector,
                      classLabel2 = "classLabel2",
                      classPalette2 = "classPalette2")%>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}


  ## transportPassengerGHGByMode ===============================================
  paramx<-"transportPassengerGHGByMode"
  # GHG emissions by passenger transport mode
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    queryx <- "nonCO2 emissions by subsector"
    pass_array <- c("trn_pass", "trn_pass_road", "trn_pass_road_LDV", "trn_pass_road_LDV_4W")
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::filter(sector %in% pass_array,) %>%
        dplyr::left_join(gcamextractor::GWP,by="ghg") %>%
        dplyr::left_join(gcamextractor::conv_GgTg_to_MTC,by="Units") %>%
        dplyr::mutate(origValue=value,
          value=value*GWPAR5*Convert,
          #subsector=gsub("International\\sAviation","Plane",mode),
          #subsector=gsub("Domestic\\sAviation","Plane",mode),
          subsector=gsub("Domestic Aviation","Air",subsector),
          subsector=gsub("Passenger\\sRail","Rail",subsector),
          subsector=gsub("Bus","Bus",subsector),
          subsector=gsub("Moped","MotorBike",subsector),
          subsector=gsub("Motorcycle\\s[(]50-250cc[)]","MotorBike",subsector),
          subsector=gsub("Motorcycle\\s[:(:][:>:]250cc[:):]","MotorBike",subsector),
          subsector=gsub("Compact\\sCar","LDV",subsector),
          subsector=gsub("Large\\sCar\\sand\\sTruck", "LDV", subsector),
          subsector=gsub("2W\\sand\\s3W", "LDV", subsector),
          subsector=gsub("Large\\sCar\\sand\\sSUV","LDV",subsector),
          subsector=gsub("Mini\\sCar","LDV",subsector),
          subsector=gsub("Subcompact\\sCar","LDV",subsector),
          subsector=gsub("Car", "LDV", subsector,),
          ghg = dplyr::case_when ((grepl("HFC", ghg)) ~ "HFCs",
                                  (grepl("SF6", ghg)) ~ "SF6",
                                  (grepl("CO2", ghg)) ~ "CO2",
                                  (grepl("N2O", ghg)) ~ "N2O",
                                  (grepl("CH4", ghg)) ~ "CH4",
                                  (grepl("SO2", ghg)) ~ "SO2",
                                  (grepl("NH3", ghg)) ~ "NH3",
                                  (grepl("CF4", ghg)) ~ "CF4",
                                  (grepl("C2F6", ghg)) ~ "C2F6",
                                  TRUE ~ "Other"),
          param = "transportPassengerGHGByMode",
          origUnits=Units,
          origUnits = dplyr::case_when(ghg=="Other"~"Units",TRUE~origUnits),
          units="GHG Emissions GWPAR5 (MTCO2eq)",
          sources = "Sources",
          origScen = scenario,
          origQuery = queryx,
          origValue = value,
          origUnits = Units,
          origX = year, subRegion=region,
          scenario = scenNewNames,
          units = "GHG Emissions by Mode (MTCO2eq)",
          vintage = paste("Vint_", year, sep = ""),
          x = year,
          xLabel = "Year",
          aggregate = "sum",
          class1 = subsector,
          classLabel1 = "Mode",
          classPalette1 = "pal_all",
          class2 = ghg,
          classLabel2 = "classLabel2",
          classPalette2 = "classPalette2")%>%
        dplyr::select(scenario, region, subRegion, param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}


  ## transportFreightGHGByMode =================================================
  paramx<-"transportFreightGHGByMode"
  # GHG emissions by freight transport mode
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    queryx <- "nonCO2 emissions by subsector"
    freight_array <- c("trn_freight", "trn_freight_road")
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::filter(sector %in% freight_array,) %>%
        dplyr::left_join(gcamextractor::GWP,by="ghg") %>%
        dplyr::left_join(gcamextractor::conv_GgTg_to_MTC,by="Units") %>%
        dplyr::mutate(origValue=value,
                      value=value*GWPAR5*Convert,
                      #subsector=gsub("International\\sAviation","Plane",mode),
                      #subsector=gsub("Domestic\\sAviation","Plane",mode),
                      subsector=gsub("Domestic Ship","Ship",subsector),
                      subsector=gsub("Freight\\sRail","Rail",subsector),
                      subsector=gsub("Motorcycle\\s[(]50-250cc[)]","MotorBike",subsector),
                      subsector=gsub("Motorcycle\\s[:(:][:>:]250cc[:):]","MotorBike",subsector),
                      subsector=gsub("Compact\\sCar","LDV",subsector),
                      subsector=gsub("Heavy\\struck", "Road", subsector),
                      subsector=gsub("Light\\struck", "Road", subsector),
                      subsector=gsub("Medium\\struck","Road",subsector),
                      ghg = dplyr::case_when ((grepl("HFC", ghg)) ~ "HFCs",
                                              (grepl("SF6", ghg)) ~ "SF6",
                                              (grepl("CO2", ghg)) ~ "CO2",
                                              (grepl("N2O", ghg)) ~ "N2O",
                                              (grepl("CH4", ghg)) ~ "CH4",
                                              (grepl("SO2", ghg)) ~ "SO2",
                                              (grepl("NH3", ghg)) ~ "NH3",
                                              (grepl("CF4", ghg)) ~ "CF4",
                                              (grepl("C2F6", ghg)) ~ "C2F6",
                                              TRUE ~ "Other"),
                      param = "transportFreightGHGByMode",
                      origUnits=Units,
                      origUnits = dplyr::case_when(ghg=="Other"~"Units",TRUE~origUnits),
                      units="GHG Emissions GWPAR5 (MTCO2eq)",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      units = "GHG Emissions by Mode (MTCO2eq)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = subsector,
                      classLabel1 = "Mode",
                      classPalette1 = "pal_all",
                      class2 = ghg,
                      classLabel2 = "classLabel2",
                      classPalette2 = "classPalette2")%>%
        dplyr::select(scenario, region, subRegion, param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}


  ## energyPrimaryRefLiqProdEJ =================================================
  paramx<-"energyPrimaryRefLiqProdEJ"
  # Freight VMT (services) by fuel
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    queryx <- "refined liquids production by subsector"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(subsector=dplyr::if_else(subsector=="biomass liquids","biomass liquids", subsector),
                      subsector=dplyr::if_else(subsector=="coal to liquids","coal to liquids", subsector),
                      subsector=dplyr::if_else(subsector=="gas to liquids","gas to liquids", subsector),
                      subsector=dplyr::if_else(subsector=="oil refining","oil refining", subsector),
                      param = "energyPrimaryRefLiqProdEJ",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      units = "Refined Liquids Production (EJ)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = subsector,
                      classLabel1 = "Liquid",
                      classPalette1 = "pal_all",
                      class2 = sector,
                      classLabel2 = "Refining",
                      classPalette2 = "classPalette2")%>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))

      # Create table that stores total liquids production in refining
      QueryTbl <- tbl
      TotalLiquidsProdTbl <- QueryTbl %>%
        dplyr::group_by(scenario, region, subRegion,    x) %>%
        dplyr::summarise(TotalLiquids=sum(value))
      # Return to original table, and calculate fraction of total liquids production that is biofuels. QueryTbl can now
      # be applied to VMT by fuel categories (passenger and freight) below.
      FracBioFuel_tbl <- QueryTbl %>%
        dplyr::select(scenario, region, subRegion,    class1, x, value) %>%
        dplyr::left_join(TotalLiquidsProdTbl, by=c('x', 'scenario','subRegion', 'region')) %>%
        dplyr::filter(class1=='biomass liquids') %>%
        dplyr::mutate(FracBioFuel=value/TotalLiquids) %>%
        dplyr::mutate(FracFossilFuel=1-FracBioFuel) %>%
        dplyr::select(-value, -TotalLiquids) %>%
        dplyr::mutate(class1 = 'liquids')  #only apply fraction to liquids

      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}


  ## transportPassengerVMTByFuel ===============================================
  paramx<-"transportPassengerVMTByFuel"
  # Passenger VMT (services) by fuel
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    queryx <- "transport service output by tech"
    vmt_array <- c("trn_aviation_intl", "trn_pass", "trn_pass_road", "trn_pass_road_LDV",
                   "trn_pass_road_LDV_2W", "trn_pass_road_LDV_4W")
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::filter(sector %in% vmt_array, !technology %in% c('Cycle', 'Walk', '2W', '4W', 'LDV', 'road')) %>%
        dplyr::mutate(technology=gsub("NG","gas", technology),
                      technology=gsub("FCEV","hydrogen", technology),
                      technology=gsub("Hydrogen","hydrogen", technology),
                      technology=gsub("BEV","electricity", technology),
                      technology=gsub("Electric","electricity", technology),
                      technology=gsub("Liquids","liquids", technology),
                      technology=gsub("Hybrid Liquids","liquids", technology),
                      technology=gsub("Hybrid liquids","liquids", technology),
                      param = "transportPassengerVMTByFuel",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      units = "Passenger (million pass-km)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = technology,
                      classLabel1 = "Fuel",
                      classPalette1 = "pal_all",
                      class2 = subsector,
                      classLabel2 = "subsector",
                      classPalette2 = "classPalette2")
      if("energyPrimaryRefLiqProdEJ" %in% paramsSelectx){
        # Break out biofuels
        tbl <- tbl %>%
          dplyr::left_join(FracBioFuel_tbl, by=c('scenario', 'region','subRegion', 'x', 'class1')) %>%
          dplyr::mutate(value = dplyr::if_else(class1=='liquids', value*FracBioFuel, value)) %>%
          dplyr::select(-FracBioFuel, -FracFossilFuel) %>%
          dplyr::mutate(class1=dplyr::if_else(class1=='liquids', 'biofuel', class1))
        tbl2 <- tbl %>%
          dplyr::left_join(FracBioFuel_tbl %>% dplyr::mutate(class1='biofuel'), by=c('scenario', 'region', 'subRegion','x', 'class1')) %>%
          dplyr::filter(class1=='biofuel') %>%
          dplyr::mutate(class1='fossil fuel') %>%
          dplyr::mutate(value=dplyr::if_else(class1=='fossil fuel', (value/FracBioFuel)*(1-FracBioFuel), value)) %>%
          dplyr::select(-FracBioFuel, -FracFossilFuel)
        tbl <- rbind(tbl, tbl2)
      }
      tbl <- tbl %>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}


  ## transportPassengerVMTByTech ===============================================
  paramx<-"transportPassengerVMTByTech"
  # Passenger VMT (services) by fuel
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    queryx <- "transport service output by tech"
    vmt_array <- c("trn_aviation_intl", "trn_pass", "trn_pass_road", "trn_pass_road_LDV",
                   "trn_pass_road_LDV_2W", "trn_pass_road_LDV_4W")
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::filter(sector %in% vmt_array, !technology %in% c('Cycle', 'Walk', '2W', '4W', 'LDV', 'road')) %>%
        dplyr::mutate(technology=dplyr::case_when(
          subsector == "Bus" & technology %in% c("BEV", "FCEV") ~ "Electric bus",
          subsector == "Bus" & technology %in% c("Liquids", "NG", "Hybrid Liquids") ~ "Non-electric bus",
          subsector %in% c("2W and 3W", "Car", "Large Car and Truck", "Mini Car") & technology %in% c("BEV", "FCEV") ~ "Electric LDV",
          subsector %in% c("2W and 3W", "Car", "Large Car and Truck", "Mini Car") & technology == "Hybrid Liquids" ~ "Hybrid LDV",
          subsector %in% c("2W and 3W", "Car", "Large Car and Truck", "Mini Car") & technology %in% c("Liquids", "NG") ~ "Other LDV",
          subsector == "Passenger Rail" & technology %in% c("Electric", "Tech-Adv-Electric") ~ "Electric rail",
          subsector == "Passenger Rail" & technology %in% c("Liquids", "Tech-Adv-Liquid") ~ "Non-electric Rail",
          grepl("Aviation", subsector) ~ "Airplane",
          subsector == "HSR" ~ "HSR",
          T ~ paste0(subsector, "_", technology)),
                      param = "transportPassengerVMTByTech",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      units = "Passenger (million pass-km)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = technology,
                      classLabel1 = "Fuel",
                      classPalette1 = "pal_all",
                      class2 = subsector,
                      classLabel2 = "subsector",
                      classPalette2 = "classPalette2")
      if("energyPrimaryRefLiqProdEJ" %in% paramsSelectx){
        # Break out biofuels
        tbl <- tbl %>%
          dplyr::left_join(FracBioFuel_tbl, by=c('scenario', 'region','subRegion', 'x', 'class1')) %>%
          dplyr::mutate(value = dplyr::if_else(class1=='liquids', value*FracBioFuel, value)) %>%
          dplyr::select(-FracBioFuel, -FracFossilFuel) %>%
          dplyr::mutate(class1=dplyr::if_else(class1=='liquids', 'biofuel', class1))
        tbl2 <- tbl %>%
          dplyr::left_join(FracBioFuel_tbl %>% dplyr::mutate(class1='biofuel'), by=c('scenario', 'region', 'subRegion','x', 'class1')) %>%
          dplyr::filter(class1=='biofuel') %>%
          dplyr::mutate(class1='fossil fuel') %>%
          dplyr::mutate(value=dplyr::if_else(class1=='fossil fuel', (value/FracBioFuel)*(1-FracBioFuel), value)) %>%
          dplyr::select(-FracBioFuel, -FracFossilFuel)
        tbl <- rbind(tbl, tbl2)
      }
      tbl <- tbl %>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}


  ## transportFreightVMTByFuel =================================================
  paramx<-"transportFreightVMTByFuel"
  # Freight VMT (services) by fuel
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    queryx <- "transport service output by tech"
    vmt_array <- c("trn_freight", "trn_freight_road")
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::filter(sector %in% vmt_array, !technology %in% c('road')) %>%
        dplyr::mutate(technology=gsub("NG","gas", technology),
                      technology=gsub("Liquids","liquids", technology),
                      technology=gsub("Hybrid liquids","liquids", technology),
                      technology=gsub("Hybrid Liquids","liquids", technology),
                      technology=gsub("Electric","electricity", technology),
                      technology=gsub("BEV","electricity", technology),
                      technology=gsub("FCEV","electricity", technology),
                      technology=gsub("Coal","coal", technology),
                      param = "transportFreightVMTByFuel",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      units = "Freight (million ton-km)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = technology,
                      classLabel1 = "Fuel",
                      classPalette1 = "pal_all",
                      class2 = subsector,
                      classLabel2 = "subsector",
                      classPalette2 = "classPalette2")
      if("energyPrimaryRefLiqProdEJ" %in% paramsSelectx){
        # Break out biofuels
        tbl <- tbl %>%
          dplyr::left_join(FracBioFuel_tbl, by=c('scenario', 'region','subRegion', 'x', 'class1')) %>%
          dplyr::mutate(value = dplyr::if_else(class1=='liquids', value*FracBioFuel, value)) %>%
          dplyr::select(-FracBioFuel, -FracFossilFuel) %>%
          dplyr::mutate(class1=dplyr::if_else(class1=='liquids', 'biofuel', class1))
        tbl2 <- tbl %>%
          dplyr::left_join(FracBioFuel_tbl %>% dplyr::mutate(class1='biofuel'), by=c('scenario', 'region','subRegion', 'x', 'class1')) %>%
          dplyr::filter(class1=='biofuel') %>%
          dplyr::mutate(class1='fossil fuel') %>%
          dplyr::mutate(value=dplyr::if_else(class1=='fossil fuel', (value/FracBioFuel)*(1-FracBioFuel), value)) %>%
          dplyr::select(-FracBioFuel, -FracFossilFuel)
        tbl <- rbind(tbl, tbl2)
      }
      tbl <- tbl %>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}


  ## transportFreightVMTByTech =================================================
  paramx<-"transportFreightVMTByTech"
  # Freight VMT (services) by tech
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    queryx <- "transport service output by tech"
    vmt_array <- c("trn_freight", "trn_freight_road")
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::filter(sector %in% vmt_array, !technology %in% c('road')) %>%
        dplyr::mutate(technology = dplyr::case_when(
          subsector == "Domestic Ship" ~ "Shipping",
          subsector == "Freight Rail" & technology == "Coal" ~ "Coal Rail",
          subsector == "Freight Rail" & technology %in% c("Electric", "FCEV", "BEV") ~ "Electric Rail",
          subsector == "Freight Rail" & technology %in% c("Liquids", "Hybrid Liquids") ~ "Liquids Rail",
          sector == "trn_freight_road" & technology %in% c("BEV", "FCEV") ~ "Electric truck",
          sector == "trn_freight_road" & technology %in% c("Liquids", "Hybrid Liquids") ~ "Liquids truck",
          sector == "trn_freight_road" & technology == "NG" ~ "NG truck",
          T ~ paste0(subsector, "_", technology)
        ),
                      param = "transportFreightVMTByTech",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      units = "Freight (million ton-km)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = technology,
                      classLabel1 = "Fuel",
                      classPalette1 = "pal_all",
                      class2 = subsector,
                      classLabel2 = "subsector",
                      classPalette2 = "classPalette2")
      if("energyPrimaryRefLiqProdEJ" %in% paramsSelectx){
        # Break out biofuels
        tbl <- tbl %>%
          dplyr::left_join(FracBioFuel_tbl, by=c('scenario', 'region','subRegion', 'x', 'class1')) %>%
          dplyr::mutate(value = dplyr::if_else(class1=='liquids', value*FracBioFuel, value)) %>%
          dplyr::select(-FracBioFuel, -FracFossilFuel) %>%
          dplyr::mutate(class1=dplyr::if_else(class1=='liquids', 'biofuel', class1))
        tbl2 <- tbl %>%
          dplyr::left_join(FracBioFuel_tbl %>% dplyr::mutate(class1='biofuel'), by=c('scenario', 'region','subRegion', 'x', 'class1')) %>%
          dplyr::filter(class1=='biofuel') %>%
          dplyr::mutate(class1='fossil fuel') %>%
          dplyr::mutate(value=dplyr::if_else(class1=='fossil fuel', (value/FracBioFuel)*(1-FracBioFuel), value)) %>%
          dplyr::select(-FracBioFuel, -FracFossilFuel)
        tbl <- rbind(tbl, tbl2)
      }
      tbl <- tbl %>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}


  ## energyFinalSubsecByFuelTranspEJ ===========================================
  paramx<-"energyFinalSubsecByFuelTranspEJ"
  # Total final energy by aggregate end-use sector
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    queryx <- "transport final energy by fuel"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::rename(sector=input) %>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(sector=gsub("elect_td_trn","electricity",sector),
                      sector=gsub("delivered gas","gas",sector),
                      sector=gsub("refined liquids enduse","liquids",sector),
                      sector=gsub("H2 enduse","hydrogen",sector),
                      sector=gsub("delivered coal","coal",sector),
                      param = "energyFinalSubsecByFuelTranspEJ",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      units = "Transport Final Energy by Fuel (EJ)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = sector,
                      classLabel1 = "Fuel",
                      classPalette1 = "pal_all",
                      class2 = "class2",
                      classLabel2 = "classLabel2",
                      classPalette2 = "classPalette2")
      # if("energyPrimaryRefLiqProdEJ" %in% unique(datax$param)){
      #   # Break out biofuels
      #   tbl <- tbl %>%
      #     dplyr::left_join(FracBioFuel_tbl, by=c('scenario', 'region', 'x', 'class1')) %>%
      #     dplyr::mutate(value = dplyr::if_else(class1=='liquids', value*FracBioFuel, value)) %>%
      #     dplyr::select(-FracBioFuel, -FracFossilFuel) %>%
      #     dplyr::mutate(class1=dplyr::if_else(class1=='liquids', 'biofuel', class1))
      #   tbl2 <- tbl %>%
      #     dplyr::left_join(FracBioFuel_tbl %>% dplyr::mutate(class1='biofuel'), by=c('scenario', 'region', 'x', 'class1')) %>%
      #     dplyr::filter(class1=='biofuel') %>%
      #     dplyr::mutate(class1='fossil fuel liquids') %>%
      #     dplyr::mutate(value=dplyr::if_else(class1=='fossil fuel liquids', (value/FracBioFuel)*(1-FracBioFuel), value)) %>%
      #     dplyr::select(-FracBioFuel, -FracFossilFuel)
      #   tbl <- rbind(tbl, tbl2)
      # }
      tbl <- tbl %>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))

      if(!is.null(tblFinalNrgIntlAvShip)){
        # Separat out Intl. Shipping and Aviation refined liquids from Primary Energy Oil
        tblTransportFinalOil <- tbl%>%dplyr::filter(class1=="liquids") %>%
          dplyr::mutate(class2="class2",classLabel2="classLabel2",classPalette2="classPalette2") %>%
          dplyr::select(-origValue)# Subset Transport Sector
        tblFinalNrgIntlAvShipMod <- tblFinalNrgIntlAvShip %>%
          dplyr::mutate(param=unique(tblTransportFinalOil$param),
                        class1=paste(class1,"liquids",sep=" "),
                        sources=unique(tblTransportFinalOil$sources),
                        origQuery=unique(tblTransportFinalOil$origQuery),
                        origUnits=unique(tblTransportFinalOil$origUnits),
                        units=unique(tblTransportFinalOil$units),
                        xLabel=unique(tblTransportFinalOil$xLabel),
                        aggregate=unique(tblTransportFinalOil$aggregate),
                        class2=unique(tblTransportFinalOil$class2),
                        classLabel2=unique(tblTransportFinalOil$classLabel2),
                        classPalette2=unique(tblTransportFinalOil$classPalette2),
                        classLabel1=unique(tblTransportFinalOil$classLabel1),
                        classPalette1=unique(tblTransportFinalOil$classPalette1))%>%
          dplyr::select(-origValue)# Prepare in intl. transport in correct format
        # Separate out Intl. Shipping and Aviation
        tblSepTransportFinalIntlAvShip <- tblTransportFinalOil %>%
          dplyr::bind_rows(tblFinalNrgIntlAvShipMod) %>%
          tidyr::spread(key="class1",value="value") %>%
          dplyr::mutate(`liquids`=`liquids` -`International Aviation liquids`-`International Ship liquids`)%>%
          dplyr::rename(`liquids intl av`=`International Aviation liquids`,
                        `liquids intl shp`=`International Ship liquids`) %>%
          tidyr::gather(key="class1",value="value",
                        -scenario, -region, -subRegion, -param, -sources, -class2, -x, -xLabel, -vintage, -units, -aggregate,
                        -classLabel1, -classPalette1, -classLabel2, -classPalette2,
                        -origScen,-origQuery,-origUnits,-origX)%>%
          dplyr::mutate(origValue=value); tblSepTransportFinalIntlAvShip%>%as.data.frame()
        # Rbind Transport, Intl. Shipping and Aviation back to all other Final Energy types
        tblMod<-tbl%>%dplyr::filter(class1!="liquids") %>%
          dplyr::bind_rows(tblSepTransportFinalIntlAvShip) # Remove Transport sector from Original tbl

      } else {
        rlang::inform(paste("tblFinalNrgIntlAvShip does not exist so skipping subset of final energy to remove intl. shipping and aviation."))
        tblMod <- tbl
      }

      tblMod <- tblMod %>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))

      datax <- dplyr::bind_rows(datax, tblMod)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}


  # Water ----------------------------------------------------------------------

  ## watConsumBySec ============================================================
  paramx <- "watConsumBySec"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    # water consumption by sector
    queryx <- "water consumption by state, sector, basin (includes desal)"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if(nrow(tbl)>0){
        # If GCAM USA then remove "USA" region and use states
        # if(any(gcamextractor::regions_US52 %in% unique(tbl$region))){
        #   tbl <- tbl %>% dplyr::filter(region!="USA") # Remove region USA and use states instead
        # }
      }
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(sector=dplyr::case_when(
          grepl("desalination",technology,ignore.case=T)~"desalination",
          sector=="water_td_an_C"~"animal",
          sector=="water_td_dom_C"~"domestic",
          sector=="water_td_muni_C"~"domestic",
          sector=="water_td_elec_C"~"electric",
          sector=="water_td_ind_C"~"industry",
          sector=="water_td_pri_C"~"primary",
          grepl("_irr_",sector)~"irrigation",
          TRUE~sector)) %>%
        dplyr::mutate(param = "watConsumBySec",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      value = value,
                      units = "Water Consumption by Sector (km3)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = sector,
                      classLabel1 = "Sector",
                      classPalette1 = "pal_all",
                      class2 = subsector,
                      classLabel2 = "basin",
                      classPalette2 = "pal_all")%>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%
        dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}


  ## watWithdrawBySec ==========================================================
  paramx<- "watWithdrawBySec"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    # water consumption by sector
    queryx <- "water withdrawals by state, sector, basin (includes desal)"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      # if(nrow(tbl)>0){
      #   # If GCAM USA then remove "USA" region and use states
      #   if(any(gcamextractor::regions_US52 %in% unique(tbl$region))){
      #     tbl <- tbl %>% dplyr::filter(region!="USA") # Remove region USA and use states instead
      #   }
      # }
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(sector=dplyr::case_when(
          grepl("desalination",technology,ignore.case=T)~"desalination",
          sector=="water_td_an_W"~"livestock",
          sector=="water_td_dom_W"~"municipal",
          sector=="water_td_muni_W"~"municipal",
          sector=="water_td_elec_W"~"electricity",
          sector=="water_td_ind_W"~"industry",
          sector=="water_td_pri_W"~"mining",
          grepl("_irr_",sector)~"agriculture",
          TRUE~sector)) %>%
        dplyr::mutate(param = "watWithdrawBySec",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      value = value,
                      units = "Water Withdrawal by Sector (km3)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = sector,
                      classLabel1 = "Sector",
                      classPalette1 = "pal_wet",
                      class2 = subsector,
                      classLabel2 = "basin",
                      classPalette2 = "pal_all")%>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%
        dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}


  ## watWithdrawByCrop =========================================================
  paramx <- "watWithdrawByCrop"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    # water withdrawals by sector
    queryx <- "water withdrawals by crop"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      # Need to add in conveyance losses for USA when running GCAM USA
      # gcamusa.CONVEYANCE_LOSSES <- 0.829937455747218 from constants.R
      if(nrow(tbl)>0){
        if(any(unique(tbl$region) %in% gcamextractor::regions_US52)){
          tbl <- tbl %>%
            dplyr::mutate(value = dplyr::case_when(region=="USA"~value/0.829937455747218,
                                                   TRUE~value)) %>%
            dplyr::filter(!region %in% gcamextractor::regions_US52)
        }
      }
      if (any(!is.null(regionsSelect))) {
        if(any(regionsSelect %in% gcamextractor::regions_US52)){
          tbl <- tbl %>% dplyr::filter(region %in% c(regionsSelect,"USA"))
        } else {
          tbl <- tbl %>% dplyr::filter(region %in% c(regionsSelect))
        }
      }
      tbl <- tbl %>%
        dplyr::filter(sector!="industry", sector!="mining" , sector!="municipal"
                      , sector!="electricity" , sector!="livestock", !grepl("water_td_",sector))%>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(param = "watWithdrawByCrop",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      value = value,
                      units = "Water Withdrawals by Crop (km3)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = sector,
                      classLabel1 = "Crop",
                      classPalette1 = "pal_all",
                      class2 = "class2",
                      classLabel2 = "classLabel2",
                      classPalette2 = "classPalette2")%>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%
        dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}


  ## watBioPhysCons ============================================================
  paramx <- "watBioPhysCons"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    # biophysical water demand by crop type and land region
    queryx <- "biophysical water demand by crop type and land region"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(param = "watBioPhysCons",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      value = value,
                      units = "Biophysical Water Consumption (km3)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = sector,
                      classLabel1 = "Crop",
                      classPalette1 = "pal_16",
                      class2 = "class2",
                      classLabel2 = "classLabel2",
                      classPalette2 = "classPalette2") %>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%
        dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}


  ## watIrrWithdrawBasin =======================================================
  paramx <- "watIrrWithdrawBasin"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    # water withdrawals by water mapping source
    queryx <- "water withdrawals by water mapping source"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::filter(grepl("_irr_",input))%>%
        dplyr::mutate(input=gsub("water_td_irr_","",input),
                      input=gsub("_W","",input))%>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(param = "watIrrWithdrawBasin",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      value = value,
                      units = "Irrigation Water Withdrawal (km3)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = input,
                      classLabel1 = "Basin",
                      classPalette1 = "pal_16",
                      class2 = "class2",
                      classLabel2 = "classLabel2",
                      classPalette2 = "classPalette2") %>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%
        dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}


  ## watIrrConsBasin ===========================================================
  paramx <- "watIrrConsBasin"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    # water consumption by water mapping source
    queryx <- "water consumption by water mapping source"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::filter(grepl("_irr_",input))%>%
        dplyr::mutate(input=gsub("water_td_irr_","",input),
                      input=gsub("_C","",input))%>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(param = "watIrrConsBasin",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year, subRegion=region,
                      scenario = scenNewNames,
                      value = value,
                      units = "Irrigation Water Consumption (km3)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1 = input,
                      classLabel1 = "Basin",
                      classPalette1 = "pal_16",
                      class2 = "class2",
                      classLabel2 = "classLabel2",
                      classPalette2 = "classPalette2") %>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%
        dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}


  ## watSupRunoffBasin =========================================================
  paramx <- "watSupRunoffBasin"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    # water consumption by water mapping source
    queryx <- "Basin level available runoff"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::mutate(subRegion=gsub(" ","_",gsub("\\_.*","",basin)))%>%
        dplyr::select(-basin)%>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(param = "watSupRunoffBasin",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year,
                      scenario = scenNewNames,
                      value = value,
                      units = "Runoff (km3)",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1="class1",
                      classLabel1 = "runoff",
                      classPalette1 = "pal_wet",
                      class2 = "class2",
                      classLabel2 = "classLabel2",
                      classPalette2 = "pal_wet") %>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%
        dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}


  ## waterWithdrawROGW =========================================================
  paramx <- "waterWithdrawROGW"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    # water consumption by water mapping source
    queryx <- "Water withdrawals by water source (runoff vs. groundwater)"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        if(any(regionsSelect %in% gcamextractor::regions_US52)){
          tbl <- tbl %>% dplyr::filter(region %in% c(regionsSelect,"USA"))
        } else {
          tbl <- tbl %>% dplyr::filter(region %in% c(regionsSelect))
        }
      }
      tbl <- tbl %>%
        dplyr::mutate(subRegion=gsub(" ","_",gsub("\\_.*","",resource)))%>%
        dplyr::select(-resource)%>%
        dplyr::filter(scenario %in% scenOrigNames)%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(param = "waterWithdrawROGW",
                      sources = "Sources",
                      origScen = scenario,
                      origQuery = queryx,
                      origValue = value,
                      origUnits = Units,
                      origX = year,
                      scenario = scenNewNames,
                      value = value,
                      units = "km3",
                      vintage = paste("Vint_", year, sep = ""),
                      x = year,
                      xLabel = "Year",
                      aggregate = "sum",
                      class1=subresource,
                      classLabel1 = "source",
                      classPalette1 = "pal_all",
                      class2 = "class2",
                      classLabel2 = "classLabel2",
                      classPalette2 = "pal_all") %>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}

  # Buildings ------------------------------------------------------------------
  ## serviceOutputByTechBuildings ==============================================
  paramx <- "serviceOutputByTechBuildings"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    queryx <- "building service output by tech"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::filter(scenario %in% scenOrigNames,
                      grepl("comm|resid", sector))%>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(
          class1 = paste0(sector, " (", technology, ")"),
          param = "serviceOutputByTechBuildings",
          sources = "Sources",
          origScen = scenario,
          origQuery = queryx,
          origValue = value,
          origUnits = Units,
          origX = year, subRegion=region,
          scenario = scenNewNames,
          units = Units,
          vintage = paste("Vint_", year, sep = ""),
          x = year,
          xLabel = "Year",
          aggregate = "sum",
          classLabel1 = "technology",
          classPalette1 = "pal_all",
          class2 = "class2",
          classLabel2 = "classLabel2",
          classPalette2 = "classPalette2")%>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}

  ## buildingFloorspace ========================================================
  paramx <- "buildingFloorspace"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    queryx <- "building floorspace"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::filter(scenario %in% scenOrigNames) %>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(
          class1 = nodeinput,
          param = "buildingFloorspace",
          sources = "Sources",
          origScen = scenario,
          origQuery = queryx,
          origValue = value,
          origUnits = Units,
          origX = year,
          subRegion=region,
          scenario = scenNewNames,
          units = Units,
          vintage = paste("Vint_", year, sep = ""),
          x = year,
          xLabel = "Year",
          aggregate = "sum",
          classLabel1 = "nodeinput",
          classPalette1 = "pal_all",
          class2 = "class2",
          classLabel2 = "classLabel2",
          classPalette2 = "classPalette2")%>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}

  # Hydrogen -------------------------------------------------------------------
  ## hydrogenProdByTech ========================================================
  paramx <- "hydrogenProdByTech"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    queryx <- "hydrogen production by tech"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::filter(scenario %in% scenOrigNames) %>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(
          param = "hydrogenProdByTech",
          sources = "Sources",
          origScen = scenario,
          origQuery = queryx,
          origValue = value,
          origUnits = Units,
          origX = year,
          subRegion=region,
          scenario = scenNewNames,
          units = Units,
          vintage = paste("Vint_", year, sep = ""),
          x = year,
          xLabel = "Year",
          aggregate = "sum",
          class1 = subsector,
          classLabel1 = "subsector",
          classPalette1 = "pal_all",
          class2 = technology,
          classLabel2 = "technology",
          classPalette2 = "classPalette2")%>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}

  ## hydrogenUtilizationByTech =================================================
  paramx <- "hydrogenUtilizationByTech"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    queryx <- "hydrogen utilization by technology"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::filter(scenario %in% scenOrigNames) %>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(
          param = "hydrogenUtilizationByTech",
          sources = "Sources",
          origScen = scenario,
          origQuery = queryx,
          origValue = value,
          origUnits = Units,
          origX = year,
          subRegion=region,
          scenario = scenNewNames,
          units = Units,
          vintage = paste("Vint_", year, sep = ""),
          x = year,
          xLabel = "Year",
          aggregate = "sum",
          class1 = sector,
          classLabel1 = "sector",
          classPalette1 = "pal_all",
          class2 = subsector,
          classLabel2 = "subsector",
          classPalette2 = "classPalette2")%>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}

  ## hydrogenPricesBySector ====================================================
  paramx <- "hydrogenPricesBySector"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    queryx <- "hydrogen prices by sector"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::filter(scenario %in% scenOrigNames) %>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(
          param = "hydrogenPricesBySector",
          sources = "Sources",
          origScen = scenario,
          origQuery = queryx,
          origValue = value,
          origUnits = Units,
          origX = year,
          subRegion=region,
          scenario = scenNewNames,
          units = Units,
          vintage = paste("Vint_", year, sep = ""),
          x = year,
          xLabel = "Year",
          aggregate = "sum",
          class1 = fuel,
          classLabel1 = "fuel",
          classPalette1 = "pal_all",
          class2 = "class2",
          classLabel2 = "classLabel2",
          classPalette2 = "classPalette2")%>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}

  ## hydrogenCostsByTech =======================================================
  paramx <- "hydrogenCostsByTech"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    queryx <- "hydrogen costs by tech"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::filter(scenario %in% scenOrigNames) %>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(
          param = "hydrogenCostsByTech",
          sources = "Sources",
          origScen = scenario,
          origQuery = queryx,
          origValue = value,
          origUnits = Units,
          origX = year,
          subRegion=region,
          scenario = scenNewNames,
          units = Units,
          vintage = paste("Vint_", year, sep = ""),
          x = year,
          xLabel = "Year",
          aggregate = "sum",
          class1 = sector,
          classLabel1 = "sector",
          classPalette1 = "pal_all",
          class2 = paste0(subsector, "_", technology),
          classLabel2 = "subsector_technology",
          classPalette2 = "classPalette2")%>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}

  ## hydrogenInputsByTech ======================================================
  paramx <- "hydrogenInputsByTech"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    queryx <- "hydrogen inputs by tech"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::filter(scenario %in% scenOrigNames) %>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(
          param = "hydrogenInputsByTech",
          sources = "Sources",
          origScen = scenario,
          origQuery = queryx,
          origValue = value,
          origUnits = Units,
          origX = year,
          subRegion=region,
          scenario = scenNewNames,
          units = Units,
          vintage = paste("Vint_", year, sep = ""),
          x = year,
          xLabel = "Year",
          aggregate = "sum",
          class1 = sector,
          classLabel1 = "sector",
          classPalette1 = "pal_all",
          class2 = paste0(subsector, "_", technology, "_", fuel),
          classLabel2 = "subsector_technology_fuel",
          classPalette2 = "classPalette2")%>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}

  ## hydrogenOutputsByTech =====================================================
  paramx <- "hydrogenOutputsByTech"
  if(paramx %in% paramsSelectx){
    rlang::inform(paste0("Running param: ", paramx,"..."))
    queryx <- "hydrogen outputs by technology"
    if (queryx %in% queriesx) {
      tbl <- rgcam::getQuery(dataProjLoaded, queryx)  # Tibble
      if (any(!is.null(regionsSelect))) {
        tbl <- tbl %>% dplyr::filter(region %in% regionsSelect)
      }
      tbl <- tbl %>%
        dplyr::filter(scenario %in% scenOrigNames) %>%
        dplyr::left_join(tibble::tibble(scenOrigNames, scenNewNames), by = c(scenario = "scenOrigNames")) %>%
        dplyr::mutate(
          param = "hydrogenOutputsByTech",
          sources = "Sources",
          origScen = scenario,
          origQuery = queryx,
          origValue = value,
          origUnits = Units,
          origX = year,
          subRegion=region,
          scenario = scenNewNames,
          units = Units,
          vintage = paste("Vint_", year, sep = ""),
          x = year,
          xLabel = "Year",
          aggregate = "sum",
          class1 = sector,
          classLabel1 = "sector",
          classPalette1 = "pal_all",
          class2 = paste0(sector, "_", technology),
          classLabel2 = "subsector_technology",
          classPalette2 = "classPalette2")%>%
        dplyr::select(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units, value,
                      aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                      origScen, origQuery, origValue, origUnits, origX)%>%
        dplyr::group_by(scenario, region, subRegion,    param, sources, class1, class2, x, xLabel, vintage, units,
                        aggregate, classLabel1, classPalette1,classLabel2, classPalette2,
                        origScen, origQuery, origUnits, origX)%>%dplyr::summarize_at(dplyr::vars("value","origValue"),list(~sum(.,na.rm = T)))%>%dplyr::ungroup()%>%
        dplyr::filter(!is.na(value))
      datax <- dplyr::bind_rows(datax, tbl)
    } else {
      # if(queryx %in% queriesSelectx){rlang::inform(paste("Query '", queryx, "' not found in database", sep = ""))}
    }}

  } # Close datax assignments


  if(nrow(datax)>0){

  datax <- datax %>%
    unique()

  # ...........
  # unit Conversions
  # ...........
  # dataxEJtoMTOE <- datax %>% dplyr::filter(grepl("\\(EJ\\)",units)) %>%
  #   dplyr::mutate(value=value*gcamextractor::convert$conv_EJ_to_MTOE,
  #                 units = gsub("\\(EJ\\)","(Mtoe)",units),
  #                 param = gsub("EJ","MTOE",param)); dataxEJtoMTOE
  #
  # dataxEJtoTWh <- datax %>% dplyr::filter(grepl("\\(EJ\\)",units)) %>%
  #   dplyr::mutate(value=value*gcamextractor::convert$conv_EJ_to_TWh,
  #                 units = gsub("\\(EJ\\)","(TWh)",units),
  #                 param = gsub("EJ","TWh",param))

  #datax <- dplyr::bind_rows(datax,dataxEJtoMTOE,dataxEJtoTWh)


  # Remove repeated USA regions
  for(scenario_i in unique(datax$scenario)){
  for(param_i in unique(datax$param)){

    regions_i <-(datax %>% dplyr::filter(param==param_i,scenario==scenario_i))$region%>%unique(); regions_i

    if(any(grepl("USA",regions_i)) & length(regions_i[regions_i %in% gcamextractor::regions_US52])>1){
      datax <- datax %>%
        dplyr::mutate(region = dplyr::case_when(param==param_i &
                                           scenario==scenario_i &
                                           (region=="USA" & !param %in% c("emissNonCO2BySectorGWPAR5",
                                                                          "emissNonCO2BySector",
                                                                          "emissCO2BySector",
                                                                          "emissCO2CumGlobal2010to2100",
                                                                          "emissCO2CumGlobal2010to2100RCP"))~ "RegionRemove",
                                         TRUE ~ region)) %>%
        dplyr::filter(!grepl("remove",region,ignore.case = T)) %>%
        dplyr::filter(!grepl("remove",subRegion,ignore.case = T))
    }

    subRegions_i <-(datax %>% dplyr::filter(param==param_i,scenario==scenario_i))$subRegion%>%unique(); subRegions_i

    if(any(grepl("USA",subRegions_i)) & length(subRegions_i[subRegions_i %in% gcamextractor::regions_US52])>1){
      datax <- datax %>%
        dplyr::mutate(subRegion = dplyr::case_when(param==param_i &
                                           scenario==scenario_i &
                                           (subRegion=="USA" & !param %in% c("emissNonCO2BySectorGWPAR5",
                                                                             "emissNonCO2BySector",
                                                                             "emissCO2BySector",
                                                                             "emissCO2CumGlobal2010to2100",
                                                                             "emissCO2CumGlobal2010to2100RCP"))~ "subRegionRemove",
                                         TRUE ~ subRegion)) %>%
        dplyr::filter(!grepl("remove",region,ignore.case = T))  %>%
        dplyr::filter(!grepl("remove",subRegion,ignore.case = T))
    }
  }
  }

  # datax$scenario%>%unique()
  # datax$param%>%unique()

  # chart(tbl,xData="x",yData="value",useNewLabels = 0)

  # Check
  # unique(datax$param)%>%sort();unique(datax$scenario)%>%sort()
  # datax%>%as.data.frame()%>%dplyr::select(scenario,class1,class2,x,param,value)%>%
  # dplyr::filter(x %in% c(2010:2050),param=="elecNewCapGW",scenario=="GCAMRef")%>%
  # dplyr::group_by(scenario,x)%>%dplyr::summarize(sum=sum(value))

  #.....................
  # Save Data in CSV
  #.....................

  #.................................
  # Expand data to include all scenarios and states for CERF
  #.................................

  if(any(c('elec_lifetime_scurve_yr', 'elec_lifetime_yr',
         'elec_fuel_co2_content_tonsperMBTU',
         'elec_carbon_capture_rate_fraction',
         'elec_carbon_capture_escl_rate_fraction') %in% paramsSelectx)){

  scenarios_expand <- data.frame("scenarios_new" = scenarios) %>%
    dplyr::mutate(scenario = "scenario")

  if(!is.null(scenNewNames)){
    scenarios_expand <- scenarios_expand %>%
      dplyr::rename(scenarios_old=scenarios_new)%>%
    dplyr::left_join(data.frame(scenarios_old=scenOrigNames,
                                scenarios_new=scenNewNames,
                                by="scenarios_old"))
    }

  datax_expand_scenarios <- datax %>%
    dplyr::filter(param %in% c('elec_lifetime_scurve_yr', 'elec_lifetime_yr',
                               'elec_fuel_co2_content_tonsperMBTU',
                               'elec_carbon_capture_rate_fraction',
                               'elec_carbon_capture_escl_rate_fraction')) %>%
    dplyr::filter(scenario=="scenario") %>%
    dplyr::left_join(scenarios_expand, by="scenario") %>%
    dplyr::select(-scenario) %>%
    dplyr::rename(scenario=scenarios_new)

  datax <- datax %>%
    dplyr::filter(!((param %in% c('elec_lifetime_scurve_yr', 'elec_lifetime_yr',
                                  'elec_fuel_co2_content_tonsperMBTU',
                                  'elec_carbon_capture_rate_fraction',
                                  'elec_carbon_capture_escl_rate_fraction')) &
                      (scenario=="scenario"))) %>%
    dplyr::bind_rows(datax_expand_scenarios)

  subRegions_expand <- data.frame("subRegions_new" = gcamextractor::regions_US49) %>%
    dplyr::mutate(subRegion = "Global")

  datax_expand_regions <- datax %>%
    dplyr::filter(param %in% c('elec_lifetime_scurve_yr', 'elec_lifetime_yr',
                               'elec_fuel_co2_content_tonsperMBTU',
                               'elec_carbon_capture_rate_fraction',
                               'elec_carbon_capture_escl_rate_fraction')) %>%
    dplyr::filter(region=="Global") %>%
    dplyr::left_join(subRegions_expand, by="subRegion") %>%
    dplyr::mutate(region = "USA") %>%
    dplyr::select(-subRegion) %>%
    dplyr::rename(subRegion = subRegions_new)

  datax <- datax %>%
    dplyr::filter(!((param %in% c('elec_lifetime_scurve_yr', 'elec_lifetime_yr',
                                'elec_fuel_co2_content_tonsperMBTU',
                                'elec_carbon_capture_rate_fraction',
                                'elec_carbon_capture_escl_rate_fraction')) &
                    ((region == "Global")))) %>%
    dplyr::bind_rows(datax_expand_regions)

  x_expand <- data.frame("x_new" = datax$x%>%unique(),"x" = c("x_expand")) %>%
    dplyr::filter(x_new >=2015); x_expand

  datax_expand_x <- datax %>%
    dplyr::filter(is.na(x)) %>%
    dplyr::mutate(x = "x_expand") %>%
    dplyr::left_join(x_expand, by="x") %>%
    dplyr::select(-x) %>%
    dplyr::rename(x = x_new)

  datax <- datax %>%
    dplyr::filter(!((param %in% c('elec_lifetime_scurve_yr', 'elec_lifetime_yr',
                                 'elec_fuel_co2_content_tonsperMBTU',
                                 'elec_carbon_capture_rate_fraction',
                                 'elec_carbon_capture_escl_rate_fraction')) &
                     ((is.na(x))))) %>%
    dplyr::bind_rows(datax_expand_x)

  # Update vintages for elec_fuel_co2_content_tonsperMBTU
  datax <- datax %>%
    dplyr::mutate(vintage = dplyr::if_else((vintage == "vintage" &
                                              param == "elec_fuel_co2_content_tonsperMBTU"),paste0("Vint_",x),vintage))

  }

  # Rename US regions
  datax <- datax %>%
    dplyr::mutate(region = dplyr::if_else(region %in% c(gcamextractor::map_state_to_gridregion$grid_region%>%unique(),
                                                        gcamextractor::regions_US52),"USA",region)) %>%
    unique()

  #.............................................

  if(!all(regionsSelect %in% unique(datax$region))){
    rlang::inform(paste("Regions not available in data: ", paste(regionsSelect[!(regionsSelect %in% unique(datax$region))],collapse=", "), sep=""))
    rlang::inform(paste("Running remaining regions: ",  paste(regionsSelect[(regionsSelect %in% unique(datax$region))],collapse=", "), sep=""))
  }

  if(saveData){

    # All Data
    utils::write.csv(datax,
                     file = paste(folder, "/gcamDataTable_Extended",nameAppend, ".csv", sep = ""), row.names = F)
    rlang::inform(paste("GCAM data table saved to: ",
                gsub("//","/",paste(folder, "/gcamDataTable_Extended",nameAppend,".csv", sep = ""))))

     # Data
    utils::write.csv(datax %>% dplyr::select("scenario","region","subRegion","param","classLabel1","class1","classLabel2","class2",
                                             "xLabel","x","vintage","units","value"),
                     file = paste(folder, "/gcamDataTable",nameAppend, ".csv", sep = ""), row.names = F)
    rlang::inform(paste("GCAM data table saved to: ",
                gsub("//","/",paste(folder, "/gcamDataTable",nameAppend,".csv", sep = ""))))
  }

  # aggregate regions
  if(!is.null(regionsAggregate)){
    # if regionsAggregate is a vector, convert to list
    if(!is.list(regionsAggregate)){
      regionsAggregate <- list(regionsAggregate)
    }
    useCustomName <- F
    # check length of names vector matches length of groups list
    if(!is.null(regionsAggregateNames)){
      if(length(regionsAggregateNames) == length(regionsAggregate)){
        useCustomName <- T
      } else {rlang::inform("Number of aggregate region names does not match number of aggregate region groups. Using default aggregate names.")}
    }
    # perform aggregation for each group of regions
    for(i in 1:length(regionsAggregate)){
      group = regionsAggregate[[i]]
      # assign custom region aggregate name if given
      if(useCustomName){aggName = regionsAggregateNames[i]}
      # generate default aggregated region name if not given
      else {aggName = paste(group, collapse = "_")}
      # perform aggregation for summed parameters
      dataxAggRegionsSums <- datax %>%
        dplyr::filter(aggregate=="sum",
                      region %in% group) %>%
        dplyr::group_by(dplyr::across(-c(region, subRegion, value, origValue))) %>%
        dplyr::summarise(value=sum(value)) %>%
        dplyr::mutate(region = aggName,
                      subRegion = aggName)
      # perform aggregation for averaged parameters
      dataxAggRegionsMeans <- datax %>%
        dplyr::filter(aggregate=="mean",
                      region %in% group) %>%
        dplyr::group_by(dplyr::across(-c(region, subRegion, value, origValue))) %>%
        dplyr::summarise(value=mean(value)) %>%
        dplyr::mutate(region = aggName,
                      subRegion = aggName)
      # combine aggregated data with original data
      datax<-dplyr::bind_rows(datax, dataxAggRegionsSums, dataxAggRegionsMeans)%>%dplyr::ungroup()
    }

  }


    # Aggregate across Class 2
  if(!removeVintages){
    dataxAggsums<-datax%>%
      dplyr::filter(aggregate=="sum")%>%
      dplyr::select(-c(class1,classLabel1,classPalette1, origQuery, origUnits))%>%
      dplyr::group_by_at(dplyr::vars(-value,-origValue))%>%
      dplyr::summarize_at(c("value"),list(~sum(.,na.rm = T))) %>%
      dplyr::ungroup()
    dataxAggmeans<-datax%>%
      dplyr::filter(aggregate=="mean")%>%
      dplyr::select(-c(class1,classLabel1,classPalette1, origQuery, origUnits))%>%
      dplyr::group_by_at(dplyr::vars(-value,-origValue))%>%
      dplyr::summarize_at(c("value"),list(~mean(.,na.rm = T)))%>%
      dplyr::ungroup()
    dataxAggClass<-dplyr::bind_rows(dataxAggsums,dataxAggmeans)%>%dplyr::ungroup()} else {
      dataxAggsums<-datax%>%
        dplyr::filter(aggregate=="sum")%>%
        dplyr::select(-c(class1,classLabel1,classPalette1, origQuery, origUnits, vintage))%>%
        dplyr::group_by_at(dplyr::vars(-value,-origValue))%>%
        dplyr::summarize_at(c("value"),list(~sum(.,na.rm = T))) %>%
        dplyr::ungroup()
      dataxAggmeans<-datax%>%
        dplyr::filter(aggregate=="mean")%>%
        dplyr::select(-c(class1,classLabel1,classPalette1, origQuery, origUnits, vintage))%>%
        dplyr::group_by_at(dplyr::vars(-value,-origValue))%>%
        dplyr::summarize_at(c("value"),list(~mean(.,na.rm = T)))%>%
        dplyr::ungroup()
      dataxAggClass<-dplyr::bind_rows(dataxAggsums,dataxAggmeans)%>%dplyr::ungroup()
    }

    dataAggClass2 = dataxAggClass %>% dplyr::rename(class=class2,classLabel=classLabel2,classPalette=classPalette2) %>% unique()



    if(saveData){

      if(!removeVintages){
      utils::write.csv(dataxAggClass %>%
                         dplyr::rename(class=class2,classLabel=classLabel2,classPalette=classPalette2)%>%
                         dplyr::select("scenario","region","subRegion","param","classLabel","class","classLabel",
                                       "xLabel","x","vintage","aggregate","units","value"),
                       file = gsub("//","/",paste(folder,
                                                  "/gcamDataTable_aggClass2",
                                                  nameAppend,".csv", sep = "")),row.names = F)} else {
          utils::write.csv(dataxAggClass %>%
                         dplyr::rename(class=class2,classLabel=classLabel2,classPalette=classPalette2)%>%
                         dplyr::select("scenario","region","subRegion","param","classLabel","class","classLabel",
                                       "xLabel","x","aggregate","units","value"),
                       file = gsub("//","/",paste(folder,
                                                  "/gcamDataTable_aggClass2",
                                                  nameAppend,".csv", sep = "")),row.names = F)
                                                  }

      rlang::inform(paste("GCAM data aggregated to class 2 saved to: ",gsub("//","/",paste(folder,
                                "/gcamDataTable_aggClass2",
                                nameAppend,".csv", sep = "")),sep=""))

      }

    # Aggregate across Class 1
    if(!removeVintages){
       dataxAggsums<-datax%>%
        dplyr::filter(aggregate=="sum")%>%
        dplyr::select(-c(class2,classLabel2,classPalette2, origQuery, origUnits))%>%
        dplyr::group_by_at(dplyr::vars(-value,-origValue))%>%
        dplyr::summarize_at(c("value"),list(~sum(.,na.rm = T)))%>%
        dplyr::ungroup()
      dataxAggmeans<-datax%>%
        dplyr::filter(aggregate=="mean")%>%
        dplyr::select(-c(class2,classLabel2,classPalette2, origQuery, origUnits))%>%
        dplyr::group_by_at(dplyr::vars(-value,-origValue))%>%
        dplyr::summarize_at(c("value"),list(~mean(.,na.rm = T)))%>%
        dplyr::ungroup()
      dataxAggClass<-dplyr::bind_rows(dataxAggsums,dataxAggmeans)%>%dplyr::ungroup()} else {
        dataxAggsums<-datax%>%
          dplyr::filter(aggregate=="sum")%>%
          dplyr::select(-c(class2,classLabel2,classPalette2, origQuery, origUnits, vintage))%>%
          dplyr::group_by_at(dplyr::vars(-value,-origValue))%>%
          dplyr::summarize_at(c("value"),list(~sum(.,na.rm = T)))%>%
          dplyr::ungroup()
        dataxAggmeans<-datax%>%
          dplyr::filter(aggregate=="mean")%>%
          dplyr::select(-c(class2,classLabel2,classPalette2, origQuery, origUnits, vintage))%>%
          dplyr::group_by_at(dplyr::vars(-value,-origValue))%>%
          dplyr::summarize_at(c("value"),list(~mean(.,na.rm = T)))%>%
          dplyr::ungroup()
        dataxAggClass<-dplyr::bind_rows(dataxAggsums,dataxAggmeans)%>%dplyr::ungroup()
      }


    dataAggClass1 = dataxAggClass  %>% dplyr::rename(class=class1,classLabel=classLabel1,classPalette=classPalette1) %>% unique()

    if(saveData){

      if(!removeVintages){
    utils::write.csv(dataxAggClass  %>%
                       dplyr::rename(class=class1,classLabel=classLabel1,classPalette=classPalette1) %>%
                       dplyr::select("scenario","region","subRegion","param","classLabel","class","classLabel",
                                     "xLabel","x","vintage","aggregate","units","value"),
                     file = gsub("//","/",paste(folder,
                                                "/gcamDataTable_aggClass1",
                                                nameAppend,".csv", sep = "")),row.names = F)} else {
    utils::write.csv(dataxAggClass  %>%
                           dplyr::rename(class=class1,classLabel=classLabel1,classPalette=classPalette1) %>%
                           dplyr::select("scenario","region","subRegion","param","classLabel","class","classLabel",
                                         "xLabel","x","aggregate","units","value"),
                         file = gsub("//","/",paste(folder,
                                                    "/gcamDataTable_aggClass1",
                                                    nameAppend,".csv", sep = "")),row.names = F)
                                                }

    rlang::inform(paste("GCAM data aggregated to class 1 saved to: ",gsub("//","/",paste(folder,
                                                                                   "/gcamDataTable_aggClass1",
                                                                                   nameAppend,".csv", sep = "")),sep=""))

    }

    # Aggregate across Param
    if(!removeVintages){
    dataxAggsums<-datax%>%
      dplyr::filter(aggregate=="sum")%>%
      dplyr::select(-c(class2,classLabel2,classPalette2,class1,classLabel1))%>%
      dplyr::group_by_at(dplyr::vars(-value,-origValue))%>%
      dplyr::summarize_at(c("value"),list(~sum(.,na.rm = T)))%>%
      dplyr::ungroup()
    dataxAggmeans<-datax%>%
      dplyr::filter(aggregate=="mean")%>%
      dplyr::select(-c(class2,classLabel2,classPalette2,class1,classLabel1))%>%
      dplyr::group_by_at(dplyr::vars(-value,-origValue))%>%
      dplyr::summarize_at(c("value"),list(~mean(.,na.rm = T)))%>%
      dplyr::ungroup()
    dataxAggClass<-dplyr::bind_rows(dataxAggsums,dataxAggmeans)%>%dplyr::ungroup()} else {
      dataxAggsums<-datax%>%
        dplyr::filter(aggregate=="sum")%>%
        dplyr::select(-c(class2,classLabel2,classPalette2,class1,classLabel1, vintage))%>%
        dplyr::group_by_at(dplyr::vars(-value,-origValue))%>%
        dplyr::summarize_at(c("value"),list(~sum(.,na.rm = T)))%>%
        dplyr::ungroup()
      dataxAggmeans<-datax%>%
        dplyr::filter(aggregate=="mean")%>%
        dplyr::select(-c(class2,classLabel2,classPalette2,class1,classLabel1, vintage))%>%
        dplyr::group_by_at(dplyr::vars(-value,-origValue))%>%
        dplyr::summarize_at(c("value"),list(~mean(.,na.rm = T)))%>%
        dplyr::ungroup()
      dataxAggClass<-dplyr::bind_rows(dataxAggsums,dataxAggmeans)%>%dplyr::ungroup()
    }

    dataAggParam = dataxAggClass %>% dplyr::rename(classPalette=classPalette1) %>% unique()

    if(saveData){

    if(!removeVintages){
    utils::write.csv(dataxAggClass %>%
                       dplyr::rename(classPalette=classPalette1) %>%
                       dplyr::select("scenario","region","subRegion","param","xLabel","x","vintage","aggregate","units","value"),
                     file = gsub("//","/",paste(folder,
                                                "/gcamDataTable_aggParam",
                                                nameAppend,".csv", sep = "")),row.names = F)} else {
      utils::write.csv(dataxAggClass %>%
                         dplyr::rename(classPalette=classPalette1) %>%
                         dplyr::select("scenario","region","subRegion","param","xLabel","x","aggregate","units","value"),
                       file = gsub("//","/",paste(folder,
                                                  "/gcamDataTable_aggParam",
                                                  nameAppend,".csv", sep = "")),row.names = F)
                                                }


    rlang::inform(paste("GCAM data aggregated to param saved to: ",gsub("//","/",paste(folder,
                                                                                   "/gcamDataTable_aggParam",
                                                                                   nameAppend,".csv", sep = "")),sep=""))
    }

  }else{rlang::inform(paste0("No data for any of the regions, params or queries selected"))} # Close datax nrow check

  }else{ # CLose Param Check
    rlang::inform(paste("None of the parameters in paramsSelect: ", paste(paramsSelect,collapse=",")," are available."))}

  rlang::inform(paste0("Outputs returned as list containing data, scenarios and queries."))
  rlang::inform(paste0("For example if df <- readgcam(dataProjFile = gcamextractor::example_GCAMv52_2050_proj)"))
  rlang::inform(paste0("Then you can view the outputs as df$data, df$dataAggClass1, df$dataAggClass2, df$dataAggParam, df$scenarios, df$queries."))
  rlang::inform((gsub("//","/",paste("All outputs in : ",normalizePath(folder),sep=""))))
  rlang::inform(paste0("readgcam run completed."))


  if(!removeVintages){
    listOut <- list(dataAll = datax,
                    data = datax %>% dplyr::select("scenario","region","subRegion","param","classLabel1","class1","classLabel2","class2",
                                                   "xLabel","x","vintage","aggregate","units","value"),
                    dataAggClass1 = dataAggClass1 %>% dplyr::select("scenario","region","subRegion","param","classLabel","class","classLabel",
                                                                    "xLabel","x","vintage","aggregate","units","value"),
                    dataAggClass2 = dataAggClass2  %>% dplyr::select("scenario","region","subRegion","param","classLabel","class","classLabel",
                                                                     "xLabel","x","vintage","aggregate","units","value"),
                    dataAggParam = dataAggParam %>% dplyr::select("scenario","region","subRegion","param","xLabel","x","vintage","aggregate","units","value"),
                    scenarios = scenarios,
                    queries = queries)
  }else{
    listOut <- list(dataAll = datax,
                    data = datax %>% dplyr::select("scenario","region","subRegion","param","classLabel1","class1","classLabel2","class2",
                                                   "xLabel","x","aggregate","units","value"),
                    dataAggClass1 = dataAggClass1 %>% dplyr::select("scenario","region","subRegion","param","classLabel","class","classLabel",
                                                                    "xLabel","x","aggregate","units","value"),
                    dataAggClass2 = dataAggClass2  %>% dplyr::select("scenario","region","subRegion","param","classLabel","class","classLabel",
                                                                     "xLabel","x","aggregate","units","value"),
                    dataAggParam = dataAggParam %>% dplyr::select("scenario","region","subRegion","param","xLabel","x","aggregate","units","value"),
                    scenarios = scenarios,
                    queries = queries)
  }

  if(nrow(datax)>0){
  return(listOut)} else {
                rlang::warn("No data extracted for chosen arguments.")
              }

    }
JGCRI/gcamextractor documentation built on Sept. 12, 2023, 11:57 p.m.