## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  fig.width = 7,
  fig.height = 4
)

## ----palettes, echo = TRUE, warning = FALSE, message = FALSE------------------
# 1. Set up required libraries
library(palettephines)
library(ggplot2)

# 2. Capture current settings and setup the layout
# We use no.readonly = TRUE to ensure we only try to reset writeable parameters
oldpar <- par(no.readonly = TRUE) 
par(mfrow = c(3, 2), mar = c(4, 4, 3, 1))

# 3. Call the preview functions
# Using names(phines_metadata) is smart—it makes the code future-proof
invisible(lapply(names(phines_metadata), function(pal_name) {
  show_phines(pal_name)
}))

# 4. Reset to original user settings
par(oldpar)

## ----eda, echo = TRUE, warning = FALSE, message = FALSE-----------------------
#1. Load libraries
library(sf)
library(dplyr)
library(sfdep)

# 2. Simulate synthetic dataset
set.seed(42)
bbox <- st_bbox(c(xmin = 0, xmax = 10, ymin = 0, ymax = 10), crs = 3857)

# 3. Create the raw spatial data
reef_sf <- st_make_grid(bbox, cellsize = c(1, 1), n = c(10, 10)) %>%
  st_sf() %>%
  mutate(id = row_number(), sst_stress = runif(n(), 0, 0.3))

# 4. Inject Hotspot
hotspot_ids <- c(44, 45, 46, 54, 55, 56, 64, 65, 66)
reef_sf$sst_stress[hotspot_ids] <- runif(length(hotspot_ids), 0.7, 0.9)

# 5. Plot: Exploratory Data Analysis
ggplot(reef_sf) +
  geom_sf(aes(fill = sst_stress)) +
  scale_fill_viridis_c() +
  theme_void() +
  labs(title = "Step 1: Exploratory Data Analysis using Viridis", 
       subtitle = "Perceptually uniform mapping of raw thermal stress values")


## ----lisa, echo = TRUE, warning = FALSE, message = FALSE----------------------

# 6. Run calculations
reef_lisa <- reef_sf %>%
  mutate(nb = st_contiguity(geometry),
         wt = st_weights(nb),
         lisa = local_moran(sst_stress, nb, wt)) %>%
  tidyr::unnest(lisa)

# 7. Filter for the subsequent interpretive phase
hotspots <- reef_lisa %>%
  filter(p_folded_sim < 0.05, mean == "High-High")

# 8. Plot: Pure LISA Classification
ggplot(reef_lisa) +
  geom_sf(aes(fill = mean), color = "white", size = 0.1) +
  scale_fill_manual(
    values = c("High-High" = "#E31A1C", "Low-Low" = "#1F78B4", 
               "Low-High" = "#A6CEE3", "High-Low" = "#FB9A99"),
    na.value = "grey95", name = "LISA Cluster"
  ) +
  theme_minimal() +
  labs(title = "Step 2: Pure LISA Analysis",
       subtitle = "Mathematical identification of spatial clumping (p < 0.05)")


## ----wrap-local-context, echo = TRUE, warning = FALSE, message = FALSE--------

# 9. Plot: Wrap Local Philippine context 
ggplot() +
  geom_sf(data = reef_lisa, fill = "grey95", color = "white", size = 0.1) +
  geom_sf(data = hotspots, aes(fill = sst_stress), color = "black", size = 0.5) +
  scale_fill_phines(
    palette = "coral_bleach", discrete = FALSE, name = "RHI Alert Level",
    breaks = c(0.7, 0.8, 0.9), labels = c("Stress", "Bleaching", "Mortality")
  ) +
  theme_minimal() +
  labs(title = "Step 3: Local Interpretation",
       subtitle = "Significant clusters translated to Reef Health Index (RHI) states")


## ----cite, echo = TRUE, warning = FALSE, message = FALSE----------------------

# 10. Translate to written insight
if (nrow(hotspots) > 0) {
  representative_value <- median(hotspots$sst_stress, na.rm = TRUE)
  report_status <- cite_phines(palette = "coral_bleach", value = representative_value)
} else {
  report_status <- "No significant thermal hotspots detected."
}

cat("#> Official Analytical Report:", report_status)

