PhenoMeNals
Phenology Memory signals

📖 Overview
PhenoMeNals is a phenology-aware predictive framework for grapevine yield and quality forecasting, integrating phenology simulation, eco-physiological functions, and statistical modeling.
The framework explicitly accounts for the two-year reproductive cycle of grapevine, combining a dormancy-forcing phenology model with cumulative “memory signals” derived from environmental cues (temperature, radiation, water status, biotic and abiotic stresses). These signals are aligned along a standardized phenological timeline and weighted by their correlation with yield- and quality-related traits, enabling biologically meaningful predictions and interpretation of carry-over effects.
Note: PhenoMeNals is released as an R package with C# routines invoked from R. It is currently available only on Windows, but cross-platform compatibility is under development.
Highlights
- 🍇 Predicts grapevine yield and quality using phenology-aware environmental signals
- 🧠 Integrates phenology simulation, eco-physiological functions, and statistical modeling
- 📈 Accurate forecasting across multiple sites, varieties, and years
- 🔍 Analyzes carry-over effects on yield and quality
- ⚙️ Hybrid architecture: R interface + C# computation
- 🪟 Windows-only (Mac/Linux support coming soon)
Installation
PhenoMeNals is available from GitHub. You need:
- R (≥ 4.0)
-
devtoolsfor installation
install.packages("devtools")
devtools::install_github("GeoModelLab/phenomenals")This installs the R interface and the compiled C# executable backend (Windows only).
Getting Started
You can start with the included sample datasets:
library(phenomenals)
head(colliOrientali)
head(bbchSample)Calibrate phenology with:
res <- phenologyCalibration(
weather_data = colliOrientali,
referenceBBCH = bbchSample,
phenomenalsParameters = phenomenalsParameters,
sites = "ColliOrientali",
varieties = "Carmenere",
iterations = 50,
start_year = 2004,
end_year = 2015,
timestep = "daily"
)Run the full pipeline with:
res <- runPhenomenals(
weather_data = colliOrientali,
target_data = targetSample,
phenomenalsParameters = phenomenalsParameters,
sites = "ColliOrientali",
varieties = "Carmenere",
timestep = "daily",
target_traits = c("yield"),
rolling_window = 5,
evaluation_range = list(c(0, 200)),
multicollinearity_threshold = 0.8,
max_phenomenals = 4,
bin_size = 1
)Documentation
Use ?phenologyCalibration and ?runPhenomenals to access documentation inside R.
To explore more, visit the pkgdown website:
📚 https://geomodellab.github.io/phenomenals