
Changelog
dhw 3.0.0
Added
calculate_dhm()for exact reproduction of the rolling monthly Mason et al. workflow, including MATLAB window alignment, strict anomaly thresholds, three- or four-month windows, and optional degree-week conversion.Added the scientifically distinct
calculate_dhmi_lough()annual standardized Degree Heating Month Index and deprecated the ambiguous legacycalculate_dhmi()interface.Added NOAA-compatible final-product encoding via
encoding = "noaa"andencode_noaa().Added NOAA’s 7-day maximum BAA composite (
calculate_baa_7d()and product"baa_7d") plus post-15 December 2023 Alert Level 3–5 fixtures.Added a reproducible, all-cell regional NOAA tile validation workflow and vignette covering coastlines, masks and controlled missing-pixel propagation.
Added release CI across Linux, macOS and Windows plus scheduled/manual differential checks of CRAN and Bioconductor reverse dependencies.
Organised the package into core, optional data-access, and analysis layers; moved provider, plotting, and specialised analysis packages to
Suggests.Replaced packaged multi-megabyte validation rasters with a compact complete one-cell baseline fixture and an optional external validation-cache policy.
Fixed missing-DHW conversion, completeness boundary detection, annual SST metric grouping, elapsed-time trends, atomic downloads, raster-preserving reef extraction, processing defaults, and hindcast overwrite handling.
Accuracy
- Reimplemented the NOAA Coral Reef Watch v3.1 monthly climatology exactly: daily SST is averaged by year-month for 1985–2012, each calendar month’s annual means are regressed against year, and the regression is evaluated at 1988.286.
- Daily climatologies now interpolate cyclically through monthly values on the 15th day, including the December–January and leap-day transitions.
-
calculate_hotspots()now returns the signed SST-minus-MMM product. The 1 degree C accumulation threshold is applied only bycalculate_dhw(). -
calculate_dhw()now uses complete 84-calendar-day windows, includes the current day, and propagates missing dates and values instead of treating them as zero heat stress. -
calculate_baa()implements NOAA’s December 2023 single-day categories from No Stress through Alert Level 5. - Added offline NOAA v3.1 regression fixtures spanning Lizard Island, Hawaii, the Florida Keys, and Belize. The complete Lizard 1985–2012 baseline reproduces the published monthly climatology within its 0.01 degree C storage precision; downstream SSTA, HotSpot, and DHW products are also checked against independent NOAA output.
Breaking changes
- Removed the
baalogical argument fromcreate_climatology(). Request BAA explicitly withproducts = "baa"or include it in a product vector. Withproducts = NULL, the historical default remains all products except BAA. - Missing or non-consecutive dates now produce
NADHW values for every affected 84-day window. Code that previously relied on implicit zero filling must repair or explicitly handle the input gaps. - HotSpots below zero are retained, matching NOAA’s signed product.
Performance and output
- Monthly annual means are produced in one
terra::tapp()pass and fitted with centered analytical OLS, avoiding per-cell model objects. - Daily climatology interpolation reuses exact common-year and leap-year templates.
- Calculation functions accept
filename,overwrite, andwoptso large outputs can be written directly to disk. -
create_climatology()calculates dependencies lazily and returns/writes only requestedproducts.
dhw 1.2.0
- added
hindcast_qm(), anomaly-based quantile mapping to reconstruct a hindcast SST time series by bias-correcting a long model dataset (e.g. ERA5) to a shorter observed reference dataset (e.g. OISST), enabling extension of historical SST records.
dhw 1.1.0
fixed
downloadCoralTemp()anddownload_OISST()to handle date vectorsfixed
calculate_baa()to handle NaN in dhw inputfixed
calculate_dhw()so that ifanomaly >= 1, only daily hotspot values greater than or equal to that threshold are included, and ifanomaly < 1, all non-NA hotspot values are included without thresholdingupdated
process_CoralTemp()to usefutures::future_lapply()instead ofparallel::mclapply()to make OS compatible and fix new mc issues in MacOS (to do:process_OISST())added
isComplete()function that checks for completeness ofdownload_OISST()anddownload_CoralTemp()timeseriesadded
plot_sst_timeseries()function for visualising SST time seriesadded
plot_max_dhw()function for visualising annual max DHW over a timeseriesadded
plot_annual_dhwfunction for visualising daily DHW over an annual timeseriesadded
visualising_outputsvignette to display plot/mapping options for outputs