Learn R Programming

phenofit

A state-of-the-art remote sensing vegetation phenology extraction package: phenofit

  • phenofit combine merits of TIMESAT and phenopix
  • A simple and stable growing season dividing method was proposed
  • Provide a practical snow elimination method based on Whittaker
  • 7 curve fitting methods and 4 phenology extraction methods
  • We add parameters boundary for every curve fitting method according to their ecological meaning.
  • optimx is used to select the best optimization method for different curve fitting methods.

Task lists

  • Test the performance of phenofit in multiple growing seasons regions (e.g., the North China Plain);
  • Uncertainty analysis of curve fitting and phenological metrics;
  • shiny app has been moved to phenofit.shiny;
  • Complete script automatic generating module in shinyapp;
  • Rcpp improve double logistics optimization efficiency by 60%;
  • Support spatial analysis;
  • Support annual season in curve fitting;
  • flexible fine fitting input ( original time-series or smoothed time-series by rough fitting).
  • Asymmetric Threshold method

Installation

You can install phenofit from github with:

# install.packages("remotes")
remotes::install_github("eco-hydro/phenofit")

Note

Users can through the following options to improve the performance of phenofit in multiple growing season regions:

  • Users can decrease those three parameters nextend, minExtendMonth and maxExtendMonth to a relative low value, by setting option set_options(fitting = list(nextend = 1, minExtendMonth = 0, maxExtendMonth = 0.5)).

  • Use wHANTS as the rough fitting function. Due to the nature of Fourier functions, wHANTS is more stable for multiple growing seasons, but it is less flexible than wWHIT. wHANTS is suitable for regions with the static growing season pattern across multiple years, wWHIT is more suitable for regions with the dynamic growing season pattern. Dynamic growing season pattern is the most challenging task, which also means that a large uncertainty might exist.

    When using wHANTS as the rough fitting function, r_min is suggested to be set as zero.

  • Use only one iteration in the fine fitting procedure.

References

[1] Kong, D., McVicar, T. R., Xiao, M., Zhang, Y., Peña-Arancibia, J. L., Filippa, G., Xie, Y., Gu, X. (2022). phenofit: An R package for extracting vegetation phenology from time series remote sensing. Methods in Ecology and Evolution, 13, 1508-1527. https://doi.org/10.1111/2041-210X.13870

[2] Kong, D., Zhang, Y.*, Wang, D., Chen, J., & Gu, X*. (2020). Photoperiod Explains the Asynchronization Between Vegetation Carbon Phenology and Vegetation Greenness Phenology. Journal of Geophysical Research: Biogeosciences, 125(8), e2020JG005636. https://doi.org/10.1029/2020JG005636

[3] Kong, D., Zhang, Y.*, Gu, X., & Wang, D. (2019). A robust method for reconstructing global MODIS EVI time series on the Google Earth Engine. ISPRS Journal of Photogrammetry and Remote Sensing, 155, 13–24.

[4] Kong, D., (2020). R package: A state-of-the-art Vegetation Phenology extraction package, phenofit version 0.3.5, https://doi.org/10.5281/zenodo.6320537

[5] Zhang, Q.*, Kong, D.*, Shi, P., Singh, V.P., Sun, P., 2018. Vegetation phenology on the Qinghai-Tibetan Plateau and its response to climate change (1982–2013). Agricultural and Forest Meteorology. 248, 408–417. https://doi.org/10.1016/j.agrformet.2017.10.026

Acknowledgements

Keep in mind that this repository is released under a GPL2 license, which permits commercial use but requires that the source code (of derivatives) is always open even if hosted as a web service.

Copy Link

Version

Install

install.packages('phenofit')

Monthly Downloads

572

Version

0.3.9

License

GPL-2 | file LICENSE

Issues

Pull Requests

Stars

Forks

Maintainer

Dongdong Kong

Last Published

January 23rd, 2024

Functions in phenofit (0.3.9)

curvefits

Fine Curve fitting
curvefits_LocalModel

curvefits by local model functions of TIMESAT
R2_sign

Critical value of determined correlation
check_ylu

check_ylu
check_input

check_input
brks2rfit

get rough fitting
findpeaks

findpeaks
curvefit0

curvefit0
check_GS_HeadTail

Check growing season head and tail minimum values
fFIT

S3 class of fine curve fitting object.
find_season.peaks

find_season
curvefit

Fine curve fitting
add_HeadTail

Add one year data in the head and tail
f_goal

Goal function of fine curve fitting methods
cutoff

cutoff
cv_coef

weighted CV
fFITs

S3 class of multiple fine curve fittings object.
lambda_vcurve

lambda_vcurve
getRealDate

getRealDate
f_goal2

objective function of double logistics
kurtosis

skewness and kurtosis
Logistic

Fine fitting functions
get_pheno

get_pheno
opt_FUN

Unified optimization function
plot_season

plot_season
logistic

Double logistics in Rcpp
init_lambda

Initial lambda value of Whittaker smoother
process_phenofit

Extract Vegetation Phenology at site scale
input_single

input object with one growing season per year
init_param

init_param
optim_pheno

optim_pheno
phenofit

phenofit
plot_curvefits

plot_curvefits
get_GOF

get_GOF
get_fitting

getFittings
get_param

Get parameters from curve fitting result
qc_levels

qc level, color and shape
qc_sentinel2

Initial weights for sentinel2 according to SCL band
plot_input

Plot INPUT returned by check_input
season

Growing season division
qcFUN

Initial weights according to qc
process_season

divide_seasons
plot_phenofit

plot_phenofit
roughFit

Rough fitting
season_mov

Moving growing season division
season_input

Growing season division (unstable version)
smooth_wHANTS

Weighted HANTS SMOOTH
set_options

set and get phenofit option
movmean

movmean
melt_list

melt_list
rcpp_season_filter

season_filter
tidy_MOD13

tidy_MOD13
tidy_pheno

tidy_pheno
reexports

Objects exported from other packages
removeClosedExtreme

rm too closed peaks or troughs
wSELF

Weight updating functions
whit2

Weighted Whittaker smoothing with a second order finite difference penalty
v_curve

V-curve theory to optimize Whittaker parameter lambda.
smooth_wWHIT

Weigthed Whittaker Smoother
smooth_wSG

Weighted Savitzky-Golay
rcpp_wSG

Weighted Savitzky-Golay written in RcppArmadillo
D

D
PhenoKl

Phenology extraction in Inflection method (Zhang)
PhenoTrs

Phenology extraction in Threshold method (TRS)
PhenoGu

Phenology extraction in GU method (GU)
PhenoDeriv

Phenology extraction in Derivative method (DER)
I_optim

Interface of unified optimization functions.
CA_NS6

MOD13A1 EVI observations at flux site CA-NS6
MOD13A1

MOD13A1
FitDL

Fine fitting
GOF

GOF