Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/robitalec/irg
:package: irg is an R package for calculating the instantaneous rate of green-up.
https://github.com/robitalec/irg
irg modis ndvi r
Last synced: 2 months ago
JSON representation
:package: irg is an R package for calculating the instantaneous rate of green-up.
- Host: GitHub
- URL: https://github.com/robitalec/irg
- Owner: robitalec
- License: gpl-3.0
- Created: 2018-12-05T21:18:27.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2023-09-17T14:37:02.000Z (over 1 year ago)
- Last Synced: 2024-04-28T19:43:24.413Z (8 months ago)
- Topics: irg, modis, ndvi, r
- Language: R
- Homepage: https://robitalec.github.io/irg/
- Size: 1.25 MB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.Rmd
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
- Code of conduct: CODE_OF_CONDUCT.md
- Citation: CITATION.cff
Awesome Lists containing this project
README
---
output: github_document
always_allow_html: yes
---[![lifecycle](https://img.shields.io/badge/lifecycle-active-green.svg)](https://www.tidyverse.org/lifecycle/#active)
[![CRAN status](https://www.r-pkg.org/badges/version/irg)](https://cran.r-project.org/package=irg)```{r setup, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.path = "man/figures/README-",
out.width = "100%"
)
```# irg
`irg` is an R package for calculating the instantaneous rate of green-up (IRG).
It can be used to fit a double logistic curve to a time series of normalized
difference vegetation index (NDVI) and calculate IRG, as described in Bischoff
et al. (2012) [[1]](#references). IRG helps identify the timing of green-up and
can be used to determine if migratory animals are "surfing" a green-wave of high
quality forage or if non-migratory animals are selecting available resources at
the peak IRG in their environments.~~At the moment, the `irg` package is designed to work with MODIS imagery, but
we're working on adding other sensors~~. Update: we recently added an example
Landsat 8 dataset. The `irg` package functions have been updated to be more
flexible to different sensors. Let us know (open an issue!) if you use a sensor
other than MODIS for calculating IRG. Thanks!## Approach
The `irg` package opts for a tabular calculation of IRG as opposed to a raster
based approach. Sampling imagery is left up to the user and a prerequisite
for all functions. The main input (`DT`) for all functions is a
[`data.table`](https://github.com/Rdatatable/data.table) of an NDVI time series.
The sampling unit (`id`) is flexible (a decision for the user) though we would
anticipate points or polygons, or maybe a pixel. All functions leverage the
speed of `data.table` to efficiently filter, scale, and model NDVI time series
and calculate IRG.More details in the first vignette:
[Getting started with IRG](https://robitalec.github.io/irg/articles/getting-started-with-irg.html).## Installation
Install with CRAN
```{r, eval = FALSE}
# Install
install.packages('irg')
```or R-universe
```{r, eval = FALSE}
# Enable the robitalec universe
options(repos = c(
robitalec = 'https://robitalec.r-universe.dev',
CRAN = 'https://cloud.r-project.org'))# Install
install.packages('irg')
```## Usage
IRG is calculated by filtering an NDVI time series, scaling variables, modeling
the time series with a double logistic curve and taking the first derivative of
this curve.Here, the example uses use the meta function `irg`. Generally, users should opt
for the individual filtering, scaling, modeling and irg functions separately to
tweak settings and column names (see
[Getting started with IRG](https://robitalec.github.io/irg/articles/getting-started-with-irg.html)).```{r ggIRG, message = FALSE, warning = FALSE}
library(data.table)
library(ggplot2)
library(irg)# Load package data
ndvi <- fread(system.file("extdata", "sampled-ndvi-MODIS-MOD13Q1.csv", package = "irg"))# Filter and scale NDVI
filter_ndvi(ndvi)
scale_ndvi(ndvi)
scale_doy(ndvi)# Guess starting parameters
model_start(ndvi, id = 'id', year = 'yr')# Double logistic model parameters given starting parameters for nls
mods <- model_params(
ndvi,
returns = 'models',
id = 'id', year = 'yr',
xmidS = 'xmidS_start', xmidA = 'xmidA_start',
scalS = 0.05,
scalA = 0.01
)# Fit double log to NDVI
fit <- model_ndvi(mods, observed = FALSE)# Calculate IRG for each day of the year
calc_irg(fit)# Plot IRG and NDVI for 1 year at 1 point
cols <- c('IRG' = '#14c62f', 'NDVI' = '#47694d')random_yr <- sample(fit$yr, 1)
random_id <- sample(fit$id, 1)ggplot(fit[yr == random_yr & id == random_id], aes(x = t)) +
geom_line(aes(y = irg, color = 'IRG')) +
geom_line(aes(y = fitted, color = 'NDVI')) +
geom_point(aes(y = scaled), data = ndvi[yr == random_yr & id == random_id]) +
scale_color_manual(values = cols) +
labs(y = '', color = '')
```## Functions
## Contributing
Contributions welcome! See details in [CONTRIBUTING.md](CONTRIBUTING.md).Please note that the `irg` package is released with a
[Contributor Code of Conduct](CODE_OF_CONDUCT.md).
By contributing to this package, you agree to abide by its terms.## Thanks
To [Mike Laforge](https://mammalspatialecology.weebly.com/)
([\@MamlSpatialEco](https://twitter.com/MamlSpatialEco)) and
[Eric Vander Wal](https://weel.gitlab.io) for thoughtful discussion that
stimulated development of this package.## References
[[1]](https://www.journals.uchicago.edu/doi/abs/10.1086/667590) Bischof, R., Loe, L. E., Meisingset, E. L., Zimmermann, B., Van Moorter, B., & Mysterud, A. (2012). A migratory northern ungulate in the pursuit of spring: jumping or surfing the green wave? *The American Naturalist*, 180(4), 407-424.