Science Score: 59.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
Links to: wiley.com, nature.com -
✓Committers with academic emails
2 of 10 committers (20.0%) from academic institutions -
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (16.0%) to scientific vocabulary
Keywords
Repository
A phenology modelling framework in R
Basic Info
- Host: GitHub
- Owner: bluegreen-labs
- License: other
- Language: R
- Default Branch: master
- Homepage: https://bluegreen-labs.github.io/phenor/
- Size: 35 MB
Statistics
- Stars: 49
- Watchers: 4
- Forks: 29
- Open Issues: 4
- Releases: 3
Topics
Metadata Files
README.md
phenor 
The phenor R package is a phenology modelling framework in R. The framework leverages measurements of vegetation phenology from four common phenology observation datasets combined with (global) retrospective and projected climate data (see below).
The package curently focusses on North America and Europe and relies heavily on Daymet and E-OBS climate data for underlying climate driver data in model optimization. The package supports global gridded CMIP6 forecasts scenarios using the ECMWF Copernicus CDS service.
Phenological model calibration / validation data are derived from: - the transition dates derived from PhenoCam time series through the phenocamr R package - the MODIS MCD12Q2 phenology product using the MODISTools R package - the Pan European Phenology Project (PEP725) - the USA National Phenological Network (USA-NPN) - custom CSV based datasets
We refer to Hufkens et al. (2018) for an in depth description and worked example of the phenor R package. All code used to generate the referenced publication is provided in a separate github repository. Please refer to this paper when using the package for modelling efforts.
Keep in mind that some of the scripts will take a significant amount of time to finish. As such, some data generated for the manuscript is included in the manuscript repository. Some scripts generate figures and summary statistics on precompiled datasets rather than clean runs, when available. Furthermore, due to licensing issues no PEP725 data is included and some scripts will require proper login credentials for dependent code to function properly. Similarly, a download routine is not provided for the E-OBS data as to adhere to their data sharing policy and their request to register before downloading data.
Installation
diff
- for the original package as described in the paper use release v1.0. Note that CMIP5 via NASA NEX has been deprecated in this release
To install the latest stable release of the toolbox in R run the following commands in a R terminal
R
if(!require(remotes)){install.packages("remotes")}
remotes::install_github("bluegreen-labs/phenor@v1.3.1")
library(phenor)
The development release can be installed by running
R
if(!require(remotes)){install.packages("remotes")}
remotes::install_github("bluegreen-labs/phenor")
library(phenor)
Download a limited subset of the data described in Richardson et al. (2017) from github or clone the repository:
git clone https://github.com/bluegreen-labs/phenocam_dataset.git
or download the full dataset from the ORNL DAAC.
Use
Example code below shows that in few lines a modelling exercise can be set up. You can either download your own data using the phenocamr package and format them correctly using prfmphenocam()
```R
The command below downloads all time series for deciduous broadleaf
data at the bartlett PhenoCam site and estimates the
phenophases. By default data are downloaded into tempdir() (the
temporary directory)
library(phenocamr) phenocamr::downloadphenocam( vegtype = "DB", roi_id = "1000", site = "bartlett", phenophase = TRUE )
process phenocam transition files into a consistent format
phenocamdata <- prfm_phenocam(tempdir()) ```
Alternatively you can use the included data which consists of 370 site years of deciduous broadleaf forest sites as included in PhenoCam 1.0 dataset (Richardson et al. 2017) precompiled with Daymet climate variables. The file is loaded using a standard data() call or reference them directly (e.g. phenocam_DB).
```R
load the included data using
data("phenocam_DB") ```
Model development, and parameter estimation
The gathered data can now be used in model calibration / validation. Currently 17 models as described by Basler (2016) are provided in the pacakge. These models include: null, LIN, TT, TTs, PTT, PTTs, M1, M1s, PA, Pab, SM1, SM1b, SQ, SQb, UN, UM1, PM1 and PM1b models as described in Basler (2016). In addition three spring grassland (pollen) phenology models: GR, SGSI and AGSI are included as described in Garcia-Mozo et al. 2009 and Xin et al. 2015. Finally, one autumn chilling degree day model (CDD, Jeong et al. 2012) is provided. Parameter values associated with the models are provided in a separate file included in the package but can be specified separately for model development.
```R
comma separated parameter file inlcuded in the package
for all the included models, this file is used by default
in all optimization routines
path <- sprintf("%s/extdata/parameterranges.csv",path.package("phenor")) parranges <- read.table(path, header = TRUE, sep = ",") ```
Your own model development can be done by creating similar functions which take in the described data format and parameters. Below is the function to optimize the model parameters for the TT (thermal time) model using Generalized Simulated Annealing (GenSA). Uppper and lower constraints to the parameter space have to be provided, and in case of GenSA initial parameters are estimated when par = NULL.
```R
optimize model parameters
set.seed(1234) optim.par <- prfitparameters(par = NULL, data = phenocam_data, cost = rmse, model = "TT", method = "GenSA", lower = c(1,-5,0), upper = c(365,10,2000)) ```
After a few minutes optimal parameters are provided. We can use these now to calculate our model values and some accuracy metrics.
```R
now run the model for all data in the nested list using the estimated parameters
modelled <- pr_predict(data = data, par = optim.par$par) ```
Easy model calibration / validation can be achieved using the model_calibration() and model_comparison() functions. Which either allow for quick screening for model development, or the comparison of a suite of models (using different starting parameters). I hope this gets you started.
Model projections and spatial data
The package allows you to download gridded CMIP5 forecast data from the NASA Earth Exchange global daily downscaled climate projections project. Hindcast data are provided for global NASA Earth Exchange, Berkeley Earth, E-OBS and gridded Daymet data (at 1/4th degree, 1 degree, 1/4th degree, 1km resolutions respectively).
```R
running data on spatial data (determined by the class assigned by
various format_*() routines) will return a spatial object (raster map)
map <- prpredict(data = spatialdata, par = optim.par$par) ```
An example of NASA Earth Exchange CMIP5 output and gridded Daymet data is provided below.
Overview map comparing various spatial outputs of the Thermal Time (TT) and Accumulated Growing Season Index (AGSI) model optimized to deciduous broadleaf and grassland PhenoCam data respectively. a) phenor model output of the difference in estimates of spring phenology between the year 2100 and 2011 for 1/4th degree NASA Earth Exchange (NEX) global gridded Coupled Model Intercomparison Project 5 (CMIP5) Mid-Resolution Institut Pierre Simon Laplace Climate Model 5 (IPSL-CM5A-MR) model runs using the TT model parameterized on deciduous forest PhenoCam sites. Only pixels with more than 50% deciduous broadleaf or mixed forest cover per 1/4th degree pixel, using MODIS MCD12Q1 land cover data, are shown; b) phenor model output of the difference in estimates of spring phenology between the year 2100 and 2011 for NEX CMIP5 IPSL-CM5A-MR model runs using the AGSI model parameterized on grassland PhenoCam sites. Only pixels with more than 50% grassland coverage per 1/4th degree pixel, using MODIS MCD12Q1 land cover data, are shown; c) phenor model output for 11 Daymet gridded datasets (tiles) for the year 2011.
References
Hufkens K., Basler J. D., Milliman T. Melaas E., Richardson A.D. 2018 An integrated phenology modelling framework in R: Phenology modelling with phenor. Methods in Ecology & Evolution, 9: 1-10.
Richardson, A.D., Hufkens, K., Milliman, T., Aubrecht, D.M., Chen, M., Gray, J.M., Johnston, M.R., Keenan, T.F., Klosterman, S.T., Kosmala, M., Melaas, E.K., Friedl, M.A., Frolking, S. 2018. Tracking vegetation phenology across diverse North American biomes using PhenoCam imagery. Scientific Data, 5, 180028.
Acknowledgements
This project was is supported by the National Science Foundation’s Macro-system Biology Program (awards EF-1065029 and EF-1702697) and the Marie Skłodowska-Curie Action (H2020 grant 797668). Logo design elements are taken from the FontAwesome library according to these terms.
Owner
- Name: BlueGreen Labs
- Login: bluegreen-labs
- Kind: organization
- Email: info@bluegreenlabs.org
- Location: Melsele, Belgium
- Website: http://bluegreenlabs.org
- Repositories: 17
- Profile: https://github.com/bluegreen-labs
BlueGreen open science labs & consulting, providing environmental research infrastructure and editorial solutions.
CodeMeta (codemeta.json)
{
"@context": [
"https://doi.org/10.5063/schema/codemeta-2.0",
"http://schema.org"
],
"@type": "SoftwareSourceCode",
"identifier": "phenor",
"description": "Provides an R phenology modelling framework.",
"name": "phenor: An R phenology modelling framework",
"license": "https://spdx.org/licenses/AGPL-3.0",
"version": "1.2",
"programmingLanguage": {
"@type": "ComputerLanguage",
"name": "R",
"version": "3.6.3",
"url": "https://r-project.org"
},
"runtimePlatform": "R version 3.6.3 (2020-02-29)",
"author": {},
"contributor": {},
"copyrightHolder": {},
"funder": {},
"maintainer": [
{
"@type": "Person",
"givenName": "Koen",
"familyName": "Hufkens",
"email": "koen.hufkens@gmail.com"
}
],
"softwareSuggestions": [
{
"@type": "SoftwareApplication",
"identifier": "covr",
"name": "covr",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=covr"
},
{
"@type": "SoftwareApplication",
"identifier": "testthat",
"name": "testthat",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=testthat"
}
],
"softwareRequirements": [
{
"@type": "SoftwareApplication",
"identifier": "R",
"name": "R",
"version": ">= 3.4"
},
{
"@type": "SoftwareApplication",
"identifier": "methods",
"name": "methods"
},
{
"@type": "SoftwareApplication",
"identifier": "cli",
"name": "cli",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=cli"
},
{
"@type": "SoftwareApplication",
"identifier": "magrittr",
"name": "magrittr",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=magrittr"
},
{
"@type": "SoftwareApplication",
"identifier": "xml2",
"name": "xml2",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=xml2"
},
{
"@type": "SoftwareApplication",
"identifier": "zoo",
"name": "zoo",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=zoo"
},
{
"@type": "SoftwareApplication",
"identifier": "graphics",
"name": "graphics"
},
{
"@type": "SoftwareApplication",
"identifier": "stats",
"name": "stats"
},
{
"@type": "SoftwareApplication",
"identifier": "GenSA",
"name": "GenSA",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=GenSA"
},
{
"@type": "SoftwareApplication",
"identifier": "rgenoud",
"name": "rgenoud",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=rgenoud"
},
{
"@type": "SoftwareApplication",
"identifier": "httr",
"name": "httr",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=httr"
},
{
"@type": "SoftwareApplication",
"identifier": "rvest",
"name": "rvest",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=rvest"
},
{
"@type": "SoftwareApplication",
"identifier": "jsonlite",
"name": "jsonlite",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=jsonlite"
},
{
"@type": "SoftwareApplication",
"identifier": "raster",
"name": "raster",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=raster"
},
{
"@type": "SoftwareApplication",
"identifier": "ncdf4",
"name": "ncdf4",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=ncdf4"
},
{
"@type": "SoftwareApplication",
"identifier": "sp",
"name": "sp",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=sp"
},
{
"@type": "SoftwareApplication",
"identifier": "snow",
"name": "snow",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=snow"
},
{
"@type": "SoftwareApplication",
"identifier": "foreach",
"name": "foreach",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=foreach"
},
{
"@type": "SoftwareApplication",
"identifier": "doParallel",
"name": "doParallel",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=doParallel"
},
{
"@type": "SoftwareApplication",
"identifier": "daymetr",
"name": "daymetr",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=daymetr"
},
{
"@type": "SoftwareApplication",
"identifier": "phenocamr",
"name": "phenocamr",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=phenocamr"
},
{
"@type": "SoftwareApplication",
"identifier": "BayesianTools",
"name": "BayesianTools",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=BayesianTools"
}
],
"codeRepository": "https://github.com/khufkens/phenor",
"releaseNotes": "https://github.com/khufkens/phenor/blob/master/NEWS.md",
"readme": "https://github.com/khufkens/phenor/blob/master/README.md",
"fileSize": "2068.579KB",
"contIntegration": [
"https://travis-ci.org/khufkens/phenor",
"https://codecov.io/gh/khufkens/phenor"
],
"citation": [
{
"@type": "ScholarlyArticle",
"datePublished": "2018",
"author": [
{
"@type": "Person",
"givenName": "Koen",
"familyName": "Hufkens"
},
{
"@type": "Person",
"givenName": "David",
"familyName": "Basler"
},
{
"@type": "Person",
"givenName": "Tom",
"familyName": "Milliman"
},
{
"@type": "Person",
"givenName": [
"Eli",
"K."
],
"familyName": "Melaas"
},
{
"@type": "Person",
"givenName": [
"Andrew",
"D."
],
"familyName": "Richardson"
}
],
"name": "An integrated phenology modelling framework in R: modelling vegetation phenology with {phenor}",
"url": "http://onlinelibrary.wiley.com/doi/10.1111/2041-210X.12970/full",
"paginiation": "1-10",
"isPartOf": {
"@type": "PublicationIssue",
"datePublished": "2018",
"isPartOf": {
"@type": [
"PublicationVolume",
"Periodical"
],
"volumeNumber": "9",
"name": "Methods in Ecology & Evolution"
}
}
}
]
}
GitHub Events
Total
- Watch event: 5
- Push event: 1
- Fork event: 1
Last Year
- Watch event: 5
- Push event: 1
- Fork event: 1
Committers
Last synced: 7 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Koen Hufkens | k****s@g****m | 411 |
| Koen Hufkens | k****s@P****l | 112 |
| Koen Hufkens | k****s@P****l | 30 |
| akpost21 | 8****1 | 20 |
| dabasler | 2****r | 4 |
| scelmendorf | s****f@n****g | 2 |
| Koen Hufkens | k****s@v****u | 2 |
| jgao | j****o@o****m | 1 |
| Simple1234598 | 9****8 | 1 |
| Alison K Post | A****t@n****u | 1 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 36
- Total pull requests: 17
- Average time to close issues: 10 months
- Average time to close pull requests: 15 days
- Total issue authors: 8
- Total pull request authors: 6
- Average comments per issue: 1.28
- Average comments per pull request: 0.53
- Merged pull requests: 17
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 0
- Pull requests: 1
- Average time to close issues: N/A
- Average time to close pull requests: 5 months
- Issue authors: 0
- Pull request authors: 1
- Average comments per issue: 0
- Average comments per pull request: 0.0
- Merged pull requests: 1
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- khufkens (28)
- MrJGao (2)
- gponce-ars (1)
- ziyuzhou0116 (1)
- bobilong (1)
- dabasler (1)
- Simple1234598 (1)
- catubela (1)
Pull Request Authors
- khufkens (13)
- akpost21 (2)
- dabasler (1)
- Simple1234598 (1)
- MrJGao (1)
- scelmendorf (1)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
- Total downloads: unknown
- Total dependent packages: 0
- Total dependent repositories: 0
- Total versions: 1
proxy.golang.org: github.com/bluegreen-labs/phenor
- Documentation: https://pkg.go.dev/github.com/bluegreen-labs/phenor#section-documentation
- License: other
-
Latest release: v1.3.1
published almost 4 years ago
Rankings
Dependencies
- actions/checkout v3 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
- JamesIves/github-pages-deploy-action v4.4.1 composite
- actions/checkout v3 composite
- r-lib/actions/setup-pandoc v2 composite
- r-lib/actions/setup-r v2 composite
- r-lib/actions/setup-r-dependencies v2 composite
- actions/checkout v3 composite
- actions/upload-artifact v3 composite
- r-lib/actions/setup-r v2 composite
- r-lib/actions/setup-r-dependencies v2 composite
- R >= 3.6 depends
- BayesianTools * imports
- GenSA * imports
- daymetr * imports
- doParallel * imports
- ecmwfr * imports
- foreach * imports
- graphics * imports
- httr * imports
- jsonlite * imports
- magrittr * imports
- methods * imports
- ncdf4 * imports
- raster * imports
- rgenoud * imports
- rvest * imports
- snow * imports
- sp * imports
- stats * imports
- terra * imports
- utils * imports
- xml2 * imports
- zoo * imports
- covr * suggests
- knitr * suggests
- testthat * suggests