First public release.
FINN is a differentiable forest gap model: a cohort-based dynamic vegetation model whose demographic processes (competition, growth, mortality, regeneration) can each be a mechanistic function, a neural network, or a mixture of the two, all calibrated end-to-end by gradient descent.
Highlights of the current interface:
finn() assembles a model from one process per
demographic component, each built with createProcess()
(mechanistic) or createHybrid() (neural network).simulateForest() runs a model forward;
fit() calibrates one to data and predict()
scores it, returning patch- and site-level results."mse"/"gaussian"), Poisson, negative
binomial, and a "binomial" likelihood for mortality that
takes a closed-cohort count pair (n_at_risk,
n_died).weights = "auto" (the default in fit())
scales each loss by its intercept-only baseline, so the six responses
are commensurable and every term reads as a fraction of its own null
deviance.makeObsData(),
resolveSiteIDs() and makeInitCohorts() turn a
raw tree list into FINN’s input tables.ALE(),
summary(), feature_importance() and
conditionalEffects().See the vignettes for a guided tour: Introduction to FINN, Plausible succession from a handful of species, Preparing your data for FINN, Fitting FINN to forest inventory data, and Mortality.