epwshiftr

Create future EnergyPlus Weather files using CMIP6 data

https://github.com/ideas-lab-nus/epwshiftr

Science Score: 49.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 3 DOI reference(s) in README
  • Academic publication links
  • Committers with academic emails
    2 of 4 committers (50.0%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.1%) to scientific vocabulary

Keywords

climate-change cmip6 energyplus epw esgf
Last synced: 7 months ago · JSON representation

Repository

Create future EnergyPlus Weather files using CMIP6 data

Basic Info
Statistics
  • Stars: 34
  • Watchers: 3
  • Forks: 10
  • Open Issues: 11
  • Releases: 5
Topics
climate-change cmip6 energyplus epw esgf
Created over 6 years ago · Last pushed over 1 year ago
Metadata Files
Readme Changelog Contributing License Code of conduct Support

README.Rmd

---
output: github_document
---



```{r, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  fig.path = "man/figures/README-",
  out.width = "100%"
)

library(epwshiftr)

# copy files in advance
f <- c("tas_day_AWI-CM-1-1-MR_ssp585_r1i1p1f1_gn_20490101-20491231.nc",
       "tas_day_AWI-CM-1-1-MR_ssp585_r1i1p1f1_gn_20500101-20501231.nc",
       "tas_day_AWI-CM-1-1-MR_ssp585_r1i1p1f1_gn_20510101-20511231.nc",
       "hurs_day_AWI-CM-1-1-MR_ssp585_r1i1p1f1_gn_20490101-20491231.nc",
       "hurs_day_AWI-CM-1-1-MR_ssp585_r1i1p1f1_gn_20500101-20501231.nc",
       "hurs_day_AWI-CM-1-1-MR_ssp585_r1i1p1f1_gn_20510101-20511231.nc",
       "tas_day_AWI-CM-1-1-MR_ssp585_r1i1p1f1_gn_20790101-20791231.nc",
       "tas_day_AWI-CM-1-1-MR_ssp585_r1i1p1f1_gn_20800101-20801231.nc",
       "tas_day_AWI-CM-1-1-MR_ssp585_r1i1p1f1_gn_20810101-20811231.nc",
       "hurs_day_AWI-CM-1-1-MR_ssp585_r1i1p1f1_gn_20790101-20791231.nc",
       "hurs_day_AWI-CM-1-1-MR_ssp585_r1i1p1f1_gn_20800101-20801231.nc",
       "hurs_day_AWI-CM-1-1-MR_ssp585_r1i1p1f1_gn_20810101-20811231.nc"
)
file.copy(file.path("/mnt/d/ScenarioMIP", f), tempdir())
```

# epwshiftr 


[![R build status](https://github.com/ideas-lab-nus/epwshiftr/workflows/R-CMD-check/badge.svg)](https://github.com/ideas-lab-nus/epwshiftr/actions)
[![CRAN status](https://www.r-pkg.org/badges/version/epwshiftr)](https://CRAN.R-project.org/package=epwshiftr)
[![Codecov test coverage](https://codecov.io/gh/ideas-lab-nus/epwshiftr/branch/master/graph/badge.svg)](https://app.codecov.io/gh/ideas-lab-nus/epwshiftr?branch=master)
[![CRAN Download Badge](https://cranlogs.r-pkg.org/badges/epwshiftr)](https://cran.r-project.org/package=epwshiftr)


> Create future EnergyPlus Weather files using CMIP6 data

## How to cite

To cite epwshiftr in publications use:

    Jia, Hongyuan, Chong, Adrian, Ning, Baisong, 2023.
    Epwshiftr: incorporating open data of climate change prediction into building performance simulation for future adaptation and mitigation,
    in: Proceedings of Building Simulation 2023: 18th Conference of IBPSA, Building Simulation.
    Presented at the Building Simulation 2023, IBPSA, Shanghai, China, pp. 3201–3207.
    https://doi.org/10.26868/25222708.2023.1612

A BibTeX entry for LaTeX users is:

```bibtex
@inproceedings{jia2023epwshiftr,
  title = {Epwshiftr: Incorporating Open Data of Climate Change Prediction into Building Performance Simulation for Future Adaptation and Mitigation},
  shorttitle = {Epwshiftr},
  booktitle = {Proceedings of {{Building Simulation}} 2023: 18th {{Conference}} of {{IBPSA}}},
  author = {Jia, Hongyuan and Chong, Adrian and Ning, Baisong},
  year = {2023},
  series = {Building {{Simulation}}},
  volume = {18},
  pages = {3201--3207},
  publisher = {{IBPSA}},
  address = {{Shanghai, China}},
  doi = {10.26868/25222708.2023.1612}
}
```



* [Installation](#installation)
* [Get started](#get-started)
    * [Build CMIP6 output file index](#build-cmip6-output-file-index)
    * [Manage CMIP6 output files](#download-cmip6-output-files)
    * [Extract CMIP6 output data](#extract-cmip6-output-data)
    * [Morphing EPW weather variables](#morphing-epw-weather-variables)
    * [Create future EPW files](#create-future-epw-files)
* [Author](#author)
* [License](#license)
* [Contribute](#contribute)



## Installation

You can install the latest stable release of epwshiftr from
[CRAN](https://CRAN.R-project.org).

```{r cran-install, eval = FALSE}
install.packages("epwshiftr")
```

Alternatively, you can install the development version from GitHub.

```{r gh-install, eval = FALSE}
install.packages("epwshiftr",
    repos = c(
        ideaslab = "https://ideas-lab-nus.r-universe.dev",
        cran     = "https://cran.r-project.org"
    )
)
```

## Get started

### Build CMIP6 output file index

* The first step is to build CMIP6 experiment output file index based on queries
  using ESGF search RESTful API

```{r index}
# set directory to store files
options(epwshiftr.dir = tempdir())
options(epwshiftr.verbose = TRUE)

# get CMIP6 data nodes
(nodes <- get_data_node())

# create a CMIP6 output file index
idx <- init_cmip6_index(
    # only consider ScenarioMIP activity
    activity = "ScenarioMIP",

    # specify dry-bulb temperature and relative humidity
    variable = c("tas", "hurs"),

    # specify report frequent
    frequency = "day",

    # specify experiment name
    experiment = c("ssp585"),

    # specify GCM name
    source = "AWI-CM-1-1-MR",

    # specify variant,
    variant = "r1i1p1f1",

    # specify years of interest
    years = c(2050, 2080),

    # save to data dictionary
    save = TRUE
)

# the index has been automatically saved into directory specified using
# `epwshiftr.dir` option and can be reloaded
idx <- load_cmip6_index()

str(head(idx))
```

### Manage CMIP6 output files

* You have to download CMIP6 output file by yourself using your preferable
  methods or tools. The download url can be found in the `file_url` column in
  the index.

* After you have downloaded CMIP6 output files of interest, you can use
  `suumary_database()` to get a summary on files downloaded against the CMIP6
  output file index.

* This step is necessary as it map the loaded files against index so that
  epwshiftr knows which case is complete and can be used for the next step.

```{r database}
# Summary downloaded file by GCM and variable, use the latest downloaded file if
# multiple matches are detected and save matched information into the index file
sm <- summary_database(tempdir(), by = c("source", "variable"), mult = "latest", update = TRUE)

knitr::kable(sm)
```

### Extract CMIP6 output data

* With previous step, now we can match coordinates of an EPW in the CMIP6 output
  file

```{r coord}
epw <- file.path(eplusr::eplus_config(8.8)$dir, "WeatherData/USA_CA_San.Francisco.Intl.AP.724940_TMY3.epw")
# match any coordinates with absolute distance less than 1 degree
coord <- match_coord(epw, threshold = list(lon = 1, lat = 1), max_num = 1)

class(coord)

names(coord)

coord$meta

coord$coord[, .(file_path, coord)]

str(coord$coord$coord[[1]])
```

* Once we get the matched coordinates, we can extract corresponding data related
  to input EPW file using `extract_data()`

```{r data}
data <- extract_data(coord, years = c(2050, 2080))

class(data)
names(data)
knitr::kable(head(data$data))
```

### Morphing EPW weather variables

* With all necessary information extracted above, now we can perform morphing on
  out EPW

```{r morph}
morphed <- morphing_epw(data)

class(morphed)

names(morphed)

knitr::kable(head(morphed$tdb))

knitr::kable(head(morphed$rh))
```

### Create future EPW files

* Once we get the morphed data using `morphing_epw()`, we can now create future
  EPW files using `future_epw()`

```{r epw}
# create future EPWs grouped by GCM, experiment ID, interval (year)
epws <- future_epw(morphed, by = c("source", "experiment", "interval"),
    dir = tempdir(), separate = TRUE, overwrite = TRUE
)

epws

sapply(epws, function (epw) epw$path())
```

## Author

Hongyuan Jia and Adrian Chong

## License

* **epwshiftr**

  epwshiftr is released under the terms of MIT License.

  Copyright © 2019-2024 Hongyuan Jia and Adrian Chong

* **CMIP6 data**

  > To enable modeling groups and others who support CMIP6 to demonstrate its
  > impact (and secure ongoing funding), you are required to cite and
  > acknowledge those who have made CMIP6 possible. You also must abide by any
  > licensing restrictions, which are recorded in each file as a global
  > attribute (named “license”).
  >
  > Please carefully read and adhere to the [CMIP6 Terms of Use](https://pcmdi.llnl.gov/CMIP6/TermsOfUse/).

## Disclaimer

CMIP6 model data is licensed under a [Creative Commons Attribution-ShareAlike
4.0 International License](https://creativecommons.org/licenses/).
Consult [Terms of Use](https://pcmdi.llnl.gov/CMIP6/TermsOfUse/) for terms of use
governing CMIP6 output, including citation requirements and proper
acknowledgment. Further information about each GCM output data, including some
limitations, can be found via the `further_info_url` (recorded as a **global
attribute** in the NetCDF file) and at [EC-Earth](https://ec-earth.org/). The
data producers and data providers make no warranty, either express or implied,
including, but not limited to, warranties of merchantability and fitness for a
particular purpose. All liabilities arising from the supply of the information
(including any liability arising in negligence) are excluded to the fullest
extent permitted by law.

## Contribute

If you encounter a clear bug or have questions about the usage, please file an
issue with a minimal reproducible example on
[GitHub](https://github.com/ideas-lab-nus/epwshiftr/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc)
If you have a solution for an existing bug or an implementation for a missing
feature, please send a pull request and let us review.

------------------------------------------------------------------------

Please note that the 'epwshiftr' project is released with a
[Contributor Code of Conduct](https://github.com/ideas-lab-nus/epwshiftr/blob/master/.github/CODE_OF_CONDUCT.md).
By contributing to this project, you agree to abide by its terms.

Owner

  • Name: IDEAS-lab
  • Login: ideas-lab-nus
  • Kind: organization
  • Email: adrian.chong@nus.edu.sg

GitHub Events

Total
  • Watch event: 4
  • Delete event: 1
  • Issue comment event: 1
  • Fork event: 2
Last Year
  • Watch event: 4
  • Delete event: 1
  • Issue comment event: 1
  • Fork event: 2

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 187
  • Total Committers: 4
  • Avg Commits per committer: 46.75
  • Development Distribution Score (DDS): 0.209
Past Year
  • Commits: 0
  • Committers: 0
  • Avg Commits per committer: 0.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Hongyuan Jia h****a@b****g 148
Hongyuan Jia h****a@c****n 34
Adrian Chong a****g@n****g 4
Hongyuan Jia h****a@o****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 7 months ago

All Time
  • Total issues: 49
  • Total pull requests: 38
  • Average time to close issues: 3 months
  • Average time to close pull requests: 5 days
  • Total issue authors: 10
  • Total pull request authors: 1
  • Average comments per issue: 0.35
  • Average comments per pull request: 0.47
  • Merged pull requests: 37
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • hongyuanjia (37)
  • mitmat (4)
  • IsaakBM (1)
  • lolow (1)
  • San42 (1)
  • milonbrri (1)
  • mohy74 (1)
  • dvictori (1)
  • chrisdane (1)
  • germolinal (1)
Pull Request Authors
  • hongyuanjia (43)
Top Labels
Issue Labels
feature (11) enhancement (8) bug (7) documentation (6) JOSS (5) CI (4) CRAN (2) question (2) refactor (1)
Pull Request Labels
documentation (12) feature (11) bug (9) enhancement (4) CI (4) CRAN (4) refactor (2)

Packages

  • Total packages: 2
  • Total downloads:
    • cran 333 last-month
  • Total dependent packages: 0
    (may contain duplicates)
  • Total dependent repositories: 1
    (may contain duplicates)
  • Total versions: 10
  • Total maintainers: 1
proxy.golang.org: github.com/ideas-lab-nus/epwshiftr
  • Versions: 5
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 5.4%
Average: 5.6%
Dependent repos count: 5.8%
Last synced: 7 months ago
cran.r-project.org: epwshiftr

Create Future 'EnergyPlus' Weather Files using 'CMIP6' Data

  • Versions: 5
  • Dependent Packages: 0
  • Dependent Repositories: 1
  • Downloads: 333 Last month
Rankings
Stargazers count: 10.2%
Forks count: 10.9%
Average: 20.4%
Dependent repos count: 24.3%
Dependent packages count: 27.9%
Downloads: 28.5%
Maintainers (1)
Last synced: 7 months ago

Dependencies

.github/workflows/R-CMD-check.yaml actions
  • actions/cache v2 composite
  • actions/checkout v2 composite
  • r-lib/actions/check-r-package v2 composite
  • r-lib/actions/setup-pandoc v2 composite
  • r-lib/actions/setup-r v2 composite
  • r-lib/actions/setup-r-dependencies v2 composite
.github/workflows/pkgdown.yml actions
  • actions/cache v1 composite
  • actions/checkout v2 composite
  • r-lib/actions/setup-pandoc v2 composite
  • r-lib/actions/setup-r v2 composite
  • r-lib/actions/setup-r-dependencies v2 composite
.github/workflows/pr-commands.yaml actions
  • actions/checkout v2 composite
  • r-lib/actions/pr-fetch v2 composite
  • r-lib/actions/pr-push v2 composite
  • r-lib/actions/setup-r v2 composite
  • r-lib/actions/setup-r-dependencies v2 composite
.github/workflows/test-coverage.yaml actions
  • actions/cache v2 composite
  • actions/checkout v2 composite
  • r-lib/actions/setup-pandoc v2 composite
  • r-lib/actions/setup-r v2 composite
  • r-lib/actions/setup-r-dependencies v2 composite
DESCRIPTION cran
  • PCICt * imports
  • R6 * imports
  • RNetCDF * imports
  • checkmate >= 2.0.0 imports
  • cli >= 3.4.0 imports
  • data.table >= 1.12.4 imports
  • eplusr >= 0.15.2 imports
  • fst * imports
  • future.apply * imports
  • jsonlite * imports
  • progressr * imports
  • psychrolib * imports
  • rappdirs * imports
  • units * imports
  • curl * suggests
  • knitr * suggests
  • mockery * suggests
  • pingr * suggests
  • rmarkdown * suggests
  • testthat >= 3.0.0 suggests
  • withr * suggests