Data from: Spatial ecology of coral reefs at Rapa Nui (Easter Island): Drivers of coral composition and dispersion along a wave exposure gradient
Data files
Nov 09, 2026 version files 13.72 MB
-
RapaNui_coral_dispersion_Dryad_20261108_v1.zip
13.70 MB
-
README.md
24.96 KB
Abstract
Understanding the biological and physical processes affecting spatial distributions of reef-building corals on remote islands is important because corals’ abilities to compete for limiting resources may change drastically along environmental gradients. In this study, we quantified emergent patterns of dispersion and neighborhood composition of Pocillopora corals at Rapa Nui (Easter Island), where a wave exposure gradient encircles the coastline. In 2015, we surveyed three reef sites using large-area imaging to describe wave exposure, habitat structural complexity, benthic habitat cover, and the neighborhood composition, abundance, size, and dispersion of Pocillopora. We characterized the north reef as low exposure and high complexity, the west reef as moderate exposure and moderate complexity, and the southeast reef as high exposure and low complexity. Competitive constraint, biotic clustering, habitat filtering, and physical forcing affected Pocillopora distributions. At the north and west reefs, Pocillopora dispersions were consistent with biotic clustering, habitat filtering, or both; neighborhoods were composed of massive and sub-massive Porites, indicating constraint of clustered Pocillopora to isolated areas within a Porites-dominated reef. Although no spatial models were supported at the southeast reef, Pocillopora abundance and size increased with exposure and Porites shifted to an encrusting morphology. In addition, neighborhood occupation of Pocillopora by Porites decreased while basaltic substrate increased at the southeast reef, which is consistent with chronic wave disturbance. Our study provides evidence that Pocillopora becomes the superior competitor when wave exposure limits Porites coverage and complexity, providing a diagnostic framework to study structuring mechanisms of understudied reefs worldwide.
Dryad DOI: https://doi.org/10.5061/dryad.s1rn8pkp4
Associated publication:
Herlan JJ, McTague SA, Staniczenko PPA, Loh JM, Santos RO, James WR, Gleason ACR, Edwards CB, Gosnell JS, McDonald KC, Friedlander AM, Gaymer CF. Spatial ecology of coral reefs at Rapa Nui (Easter Island): drivers of coral composition and dispersion along a wave exposure gradient. Marine Ecology Progress Series (in press). https://doi.org/10.3354/meps15300
Overview
This repository contains the data and R analysis scripts for a study of how wave exposure shapes the spatial organization of reef-building corals at Rapa Nui (Easter Island), Chile. The study integrates variance-to-mean ratio (VMR) dispersion analysis, spatial point-pattern model comparison (Diggle–Cressie–Loosmore–Ford goodness-of-fit), and a descriptive, null-free analysis of Pocillopora neighborhood composition across three reef sites along a wave-exposure gradient:
- North — Anakena (
ana): sheltered, low wave exposure, high structural complexity - West — Manavai (
man): moderate wave exposure and complexity - Southeast — Vaihú (
vhu): exposed, high wave exposure, low structural complexity
Surveys were conducted in March–April 2015 from 250 m² photomosaic plots (10 m × 25 m) at approximately 15 m depth at each site. File names and data values write Vaihú without the accent (vhu, Vaihu, VHU).
Data accessibility — classification rasters
The primary inputs for the raster-based analyses are large binary PNG files (one per taxon per site: *_poci.png, *_plob.png, *_bare.png, *_dead_poci.png), derived from manual segmentation of orthorectified photomosaics. These rasters are not included in this deposit because of their size; they are available from the corresponding author (James J. Herlan, james.herlan@baruch.cuny.edu) on reasonable request. To allow the published tables and figures to be reproduced without the rasters, the pre-computed intermediate and result CSVs derived from them are provided here (see the File manifest and Data dictionary below). Researchers who obtain the rasters can reproduce every analysis from scratch.
Archive structure
The files are organized into the sub-folders listed under File manifest below, and the archive is provided as a single ZIP that preserves this folder structure (RapaNui_coral_dispersion_Dryad_20261108_v1.zip). Unzip it before use and keep the folder layout intact: each R script expects to be run from the top level of the unzipped folder and reads from / writes to the named sub-folders.
How to use
Each script is self-contained and begins with a header describing its inputs, outputs, and required packages. The single configuration step is working_dir, which is set to "." — run each script with the top level of this folder as the working directory. Scripts read inputs from the named sub-folders below and create their own output folders.
Tested with R ≥ 4.4 (analyses run under R 4.6.0) and packages: tidyverse, terra, sf, raster, spatstat, landscapemetrics, scales, png.
| Reproducible from the data provided here? | Script | Produces |
|---|---|---|
| ✔ yes | rpn_wave_exposure_analysis.R, rpn_wave_rose_dual.R |
Wave exposure (Table 1, Fig. 2A) from wave.csv |
| ✔ yes | rpn_rugosity_analysis.R |
Linear rugosity + Kruskal–Wallis (Table 1, Fig. 2B) from the *_rug_100_transects.csv files; writes output_rugosity/ |
| ✔ yes | rpn_percent_cover_pointrange.R |
Figure 4 from output_percent_cover/ bootstrap CSVs |
| ✔ yes | rpn_poci_pcf_model_comparison.R |
DCLF four-model comparison (Table 5, Fig. 7) from output_patch_utilities/*_poci_sizefiltered.csv |
| ✔ yes | neighborhood_composition/00_run_all.R |
Neighborhood composition + cross-site differences (Table 2, Fig. 5) from the *_interactions_full.csv files |
| ✖ needs rasters | rpn_patch_utilities.R |
Percent-cover bootstrap CSVs (provided in output_percent_cover/) |
| ✖ needs rasters | rpn_poci_vmr_dispersion_bootstrap.R |
VMR + chi-square CSR (results provided in output_vmr/) |
| ✖ needs rasters | rpn_poci_abundance_size_bootstrap.R |
Abundance + colony size (results provided in output_abundance_size/) |
File manifest
Every file in the archive is listed below, grouped by folder. Site prefixes are ana = Anakena (north), man = Manavai (west), vhu = Vaihú (southeast).
Top-level data
wave.csv— WaveWatch III hindcast; 57,415 three-hourly records across the 4 virtual stations combined, Oct 2012–Oct 2017 (57,287 retained for the directional wave-power summaries after excluding records without a valid direction).Rapa_Nui_ww3_coords.csv— coordinates of the 4 WWIII virtual stations.ana_rug_100_transects.csv,man_rug_100_transects.csv,vhu_rug_100_transects.csv— Virtual Profile Gauge rod-by-rod transect output (no header row; see Data dictionary).
Top-level scripts
rpn_wave_exposure_analysis.R— wave-exposure summaries and site exposure (Table 1, Fig. 2A) fromwave.csv.rpn_wave_rose_dual.R— dual wave-rose figure (Fig. 2A) fromwave.csv.rpn_rugosity_analysis.R— linear rugosity, Kruskal–Wallis, and pairwise Wilcoxon (Table 1, Fig. 2B); writesoutput_rugosity/.rpn_percent_cover_pointrange.R— percent-cover point-range figure (Fig. 4) fromoutput_percent_cover/.rpn_patch_utilities.R— percent-cover bootstrap pipeline (needs the omitted rasters; results provided inoutput_percent_cover/).rpn_poci_abundance_size_bootstrap.R— Pocillopora abundance and colony-size bootstrap (needs rasters; results inoutput_abundance_size/).rpn_poci_vmr_dispersion_bootstrap.R— VMR dispersion and chi-square CSR (needs rasters; results inoutput_vmr/).rpn_poci_pcf_model_comparison.R— DCLF four-model pair-correlation comparison (Table 5, Fig. 7) fromoutput_patch_utilities/*_poci_sizefiltered.csv.
output_wave/ — wave-exposure results (from rpn_wave_exposure_analysis.R and rpn_wave_rose_dual.R)
wave_exposure_by_site.csv— site-specific wave-exposure summary (Table 1).wave_power_sector_summary.csv— directional wave power by 16 compass sectors.wave_power_station_summary.csv— per-station wave-power summaries.Figure_1B_wave_power_rose.png,Figure_1B_wave_rose_dual.png,wave_direction_histogram.png,wave_site_exposure_comparison.png— wave-climate figures (Fig. 2A components).
output_percent_cover/ — bootstrapped percent-cover summaries (B = 1000, seed = 42; Table 2, Fig. 4)
rpn_poci_bootstrap_results.csv— live Pocillopora percent cover.rpn_plob_bootstrap_results.csv— massive Porites lobata percent cover.rpn_bare_bootstrap_results.csv— bare-substrate percent cover.rpn_dead_poci_bootstrap_results.csv— dead-Pocillopora percent cover.
output_patch_utilities/ — size-filtered Pocillopora colony centroids (inputs to the DCLF comparison)
ana_poci_sizefiltered.csv,man_poci_sizefiltered.csv,vhu_poci_sizefiltered.csv— colony centroids after the 9 cm² size filter (124, 368 and 3,106 colonies).
output_dispersion_from_csv/ — DCLF model-comparison results (Table 5)
Table_dclf_4model_manuscript.csv— DCLF four-model p-values as reported in the manuscript.Table_dclf_4model_results.csv— full DCLF four-model results with adequacy/interpretation.Table_model_parameters.csv— fitted point-process model parameters.
output_vmr/ — dispersion and CSR results (Table 4, Fig. 6C)
Table_vmr_dispersion_results.csv— variance-to-mean ratio dispersion results.Table_chisq_csr_results.csv— chi-square goodness-of-fit test for complete spatial randomness.
output_abundance_size/ — abundance and colony-size results (Table 3, Fig. 6A,B)
rpn_poci_abundance_size_results.csv— bootstrap Pocillopora abundance (count per 250 m² plot) and mean colony size.
output_rugosity/ — rugosity results (Table 1; from rpn_rugosity_analysis.R)
rugosity_site_summary.csv— per-site linear-rugosity summary.rugosity_transect_data.csv— per-transect linear-rugosity values.rugosity_kruskal_wallis.csv— Kruskal–Wallis test result.rugosity_pairwise_wilcoxon.csv— Bonferroni-corrected pairwise Wilcoxon results.
neighborhood_composition/ — null-free neighborhood-composition workflow (Table 2, Fig. 5)
Numbered pipeline; run 00_run_all.R to execute 01–04 in order.
00_run_all.R— master script that sources01–04.01_load_neighborhood_data.R— loads the*_interactions_full.csvneighbor data.02_descriptive_bootstrap.R— observed mean composition with bootstrap CIs.03_cross_site_comparison.R— cross-site bootstrap difference intervals.04_figures.R— neighborhood-composition figures (Fig. 5).config.R— configuration (paths, site labels, bootstrap settings).functions.R— helper functions used by the pipeline.ana_interactions_full.csv,man_interactions_full.csv,vhu_interactions_full.csv— per-focal-colony neighbor proportions.
neighborhood_composition/outputs/ — neighborhood-composition results
neighborhood_observed_means_CI.csv— observed mean neighborhood composition with 95% bootstrap CIs (Table 2, Fig. 5).cross_site_pairwise_differences.csv— cross-site pairwise difference intervals.
Data dictionary
Unless noted otherwise: wave power is in kW m⁻¹ (kilowatts per meter of wave crest); wave height in m; wave period in s; directions in degrees (compass bearing, the direction waves propagate from); coordinates and distances in m; colony size / area in cm²; percentages and proportions as indicated; p-values, VMR, and rugosity are dimensionless.
Shared categorical keys (used across many files):
- Site:
ana/north/North (Anakena)/ANA= Anakena (north coast);man/west/West (Manavai)/MAN= Manavai (west);vhu/southeast/Southeast (Vaihu)/VHU= Vaihú (southeast). - Wave exposure:
Low(north),Moderate(west),High(southeast). Some files use the equivalentexposurelabelsSheltered/Intermediate/Exposed. - Complexity class:
High(north),Moderate(west),Low(southeast). - Neighbor / cover class:
poci/pocilloporid= live Pocillopora (conspecific);plob/porites= Porites (massive Porites lobata);dead_poci= dead Pocillopora skeleton;bare= bare substrate. - Direction sector: the 16 compass points
N, NNE, NE, ENE, E, ESE, SE, SSE, S, SSW, SW, WSW, W, WNW, NW, NNW.
Top-level data
wave.csv — WaveWatch III three-hourly hindcast, stacked across the 4 virtual stations (57,415 rows).
| Column | Description |
|---|---|
time |
Timestamp, ISO 8601 UTC (three-hourly). |
depth |
Model depth layer (m); 0 = sea surface. |
latitude |
Station latitude (decimal degrees). |
longitude |
Station longitude (decimal degrees, 0–360° E convention; 250.5 ≈ 109.5° W). |
Tdir |
Peak (dominant) wave direction (degrees). |
Tper |
Peak wave period (s). |
Thgt |
Significant wave height (m). |
sdir |
Swell direction (degrees). |
sper |
Swell period (s). |
shgt |
Swell height (m). |
Rapa_Nui_ww3_coords.csv — one row per virtual station (4 rows).
| Column | Description |
|---|---|
lat |
Station latitude (decimal degrees). |
lon |
Station longitude (decimal degrees, 0–360° E). |
ana_rug_100_transects.csv, man_rug_100_transects.csv, vhu_rug_100_transects.csv — Virtual Profile Gauge (VPG) rod-by-rod output; no header row. Six comma-separated columns, in order:
| Position | Variable | Description |
|---|---|---|
| 1 | resolution | Rod spacing along the transect (m); 0.005 = 5 mm. |
| 2 | transect | Transect index within the site (0-based; 100 transects per site, 99 at Vaihú). |
| 3 | point | Rod (sample point) index along the transect (0-based; 2,049 rods per transect). |
| 4 | x | Horizontal coordinate of the rod in the plot model (m). |
| 5 | y | Second horizontal coordinate of the rod in the plot model (m). |
| 6 | z | Surface height / depth at the rod in the plot model (m); more negative = deeper. A value of 0 marks a missing/invalid point (gap). |
output_wave/
wave_exposure_by_site.csv — one row per site (3 rows).
| Column | Description |
|---|---|
site, name, abbrev |
Site key, full label, 3-letter code. |
exposure_class, complexity_class |
Wave-exposure and structural-complexity class (see keys). |
exposure_sectors |
Compass sectors defining the site's shoreline exposure window. |
n_exposure_obs |
Number of three-hourly records arriving from the site's exposure sectors. |
pct_exposure |
Those records as a percentage of all records (%). |
mean_exposure_power, sd_exposure_power, max_exposure_power |
Mean, SD, and maximum wave power from the exposure sectors (kW m⁻¹). |
mean_exposure_height |
Mean significant wave height from the exposure sectors (m). |
wave_power_sector_summary.csv — one row per compass sector (16 rows). Columns: direction_sector (sector code); n_obs (record count); freq_pct (% of all records); mean_power, sd_power, median_power, max_power, se_power (wave power, kW m⁻¹); mean_height, sd_height, max_height (m); mean_period, sd_period (s); mean_swell_height (m); mean_swell_period (s); sector_center (sector mid-point bearing, degrees).
wave_power_station_summary.csv — one row per virtual station (4 rows). Columns: latitude, longitude (station coordinates); n_obs (record count); mean_power, sd_power (kW m⁻¹); dominant_direction (modal sector); mean_height, max_height (m); mean_period (s).
output_percent_cover/
All four files share one row per site (the ana/man/vhu key) and the following columns; rpn_bare_* and rpn_dead_poci_* add a final substrate column. Values are percent cover (%).
| Column | Description |
|---|---|
Site, site_name |
Site key and full label. |
exposure |
Exposure label (Sheltered/Intermediate/Exposed). |
n_cells |
Number of 1 m² grid cells resampled (250). |
observed_mean, observed_sd |
Observed mean and SD of percent cover across cells. |
boot_median, boot_mean, boot_se |
Median, mean, and standard error of the bootstrap distribution (B = 1000). |
lower_ci, upper_ci |
2.5th and 97.5th percentiles of the bootstrap distribution (95% quantile range). |
exposure_f |
Exposure as an ordered factor label (plotting order). |
substrate |
(bare/dead_poci files only) dominant bare-substrate type: Sand (north, west) or Volcanic Basalt (southeast). |
output_patch_utilities/
{ana,man,vhu}_poci_sizefiltered.csv — one row per Pocillopora colony centroid retained after the 9 cm² size filter.
| Column | Description |
|---|---|
x |
Colony-centroid horizontal coordinate within the plot (m). |
y |
Colony-centroid vertical coordinate within the plot (m). |
output_dispersion_from_csv/
Table_dclf_4model_manuscript.csv — one row per site; columns site plus the four model columns Homogeneous Poisson, Inhomogeneous Poisson, Homogeneous Cauchy, Inhomogeneous Cauchy, each the DCLF p-value for that model.
Table_dclf_4model_results.csv — long form, one row per site × model (12 rows). Columns: site (3-letter code), site_name, model (candidate model name), p_value (DCLF p-value), adequate (Yes/No, i.e., not rejected at α = 0.05), interpretation (plain-text verdict).
Table_model_parameters.csv — fitted point-process parameters; one row per site × kernel-bandwidth candidate. Columns: site, site_name, n_colonies (colonies used), bandwidth.sigma (kernel bandwidth σ, m), bandwidth.cv (cross-validation score at that σ).
output_vmr/
Table_vmr_dispersion_results.csv — one row per site. Columns: Wave Exposure, Site, Location (site name); N Colonies (colony count); Median VMR, Mean VMR, SD (variance-to-mean ratio of quadrat counts, bootstrap distribution); 95% CI (text interval); Dispersion Pattern (e.g. Clustered); Significant Departure (Yes/No, VMR 95% CI excludes 1).
Table_chisq_csr_results.csv — one row per site. Columns: site, wave (exposure), n_colonies, chi_sq (χ² statistic), df (degrees of freedom, 249), p_value, reject_CSR (TRUE/FALSE).
output_abundance_size/
rpn_poci_abundance_size_results.csv — long form, one row per metric × site (6 rows). Columns: Metric (Abundance = colonies per 250 m² plot, or Colony Size (cm^2)); Wave Exposure; Site; Mean (bootstrap mean); 95% CI (text interval, lower - upper).
output_rugosity/
rugosity_site_summary.csv — one row per site. Columns: site_code, site_name, site_short, wave_exposure, complexity_class; n_transects, n_valid (transects total / with valid data); mean, median, sd, se, min, max, iqr, q25, q75, ci_lower, ci_upper (linear-rugosity summary statistics, dimensionless ratio ≥ 1); mean_depth, mean_depth_sd, mean_depth_range (mean z-coordinate of valid points — relative model depth in m, not absolute survey depth); mean_pct_valid (mean % of valid rods per transect); wave_order (ordered factor for plotting).
rugosity_transect_data.csv — one row per transect. Columns: site identifiers as above; transect (index); n_total, n_valid, n_segments, n_gap_points (rod counts and gap structure); contour_distance (summed 3-D surface distance, m); profile_length (regression-line base length, m); linear_rugosity (contour ÷ profile length, dimensionless ≥ 1); depth_mean, depth_sd, depth_range (relative model depth, m); pct_valid (% valid rods).
rugosity_kruskal_wallis.csv — Columns: test, response (linear_rugosity), group (grouping variable), statistic_chisq (Kruskal–Wallis χ²), df, p_value.
rugosity_pairwise_wilcoxon.csv — one row per site pair. Columns: test, comparison (e.g., West vs North), p_value_adj (Bonferroni-adjusted p).
neighborhood_composition/
ana_interactions_full.csv, man_interactions_full.csv, vhu_interactions_full.csv — one row per focal Pocillopora colony only (no Porites or bare-substrate foci): 117, 351 and 2,902 colonies at Anakena, Manavai and Vaihú. These are the colonies remaining after the 9 cm² size filter (124, 368 and 3,106) and after excluding colonies whose 10 cm buffer crossed the plot boundary (7, 17 and 204 colonies, respectively). Columns: focal_taxa (focal class, pocilloporid); buffer_id (unique focal-colony identifier, e.g. pocilloporid_8); bare, dead_poci, pocilloporid, porites (proportion of the focal colony's 10 cm annular buffer, 0–1, occupied by bare substrate, dead Pocillopora skeleton, conspecific live Pocillopora, and Porites, respectively). The four proportions sum to at most 1 (0.95–0.98 on average); the remainder is unsegmented area.
neighborhood_composition/outputs/
neighborhood_observed_means_CI.csv — one row per site × neighbor class. Columns: site, site_label, exposure; neighbor (class key), neighbor_label (readable class); n_colonies (focal colonies at the site); observed_pct (observed mean neighbor proportion, %); ci_lower_pct, ci_upper_pct (95% bootstrap CI, %); boot_se_pct (bootstrap standard error, %).
cross_site_pairwise_differences.csv — one row per neighbor class × site pair. Columns: neighbor, neighbor_label; site_a, site_b, site_a_label, site_b_label (the two sites compared); mean_a_pct, mean_b_pct (site means, %); diff_pct (difference, %); diff_lower_pct, diff_upper_pct (95% bootstrap CI of the difference, %); distinct_diffCI (TRUE if the difference CI excludes 0); ci_overlap (TRUE if the two sites' own CIs overlap).
Notes
- The neighborhood analysis is null-free and descriptive: it reports observed mean composition with bootstrap CIs and compares sites via bootstrap difference intervals, rather than testing against a pooled-community null.
- The DCLF model comparison is run from size-filtered centroids (
rpn_poci_pcf_model_comparison.R), withset.seedand 200 Monte Carlo simulations per model at Anakena and Manavai and 99 at Vaihú (patterns with more than 1,000 colonies), so the smallest attainable p is 0.005 and 0.01, respectively; all four candidate models are rejected at the exposed southeast reef. - Percent-cover values are reported as bootstrapped means with 95% quantile ranges.
Funding
This work was funded by the Chilean Millennium Initiative, Center for Ecology and Sustainable Management of Oceanic Islands (ESMOI). Idea Wild provided field equipment, and the cameras used for large-area imaging were funded through a crowdfunding campaign on Experiment.com (https://doi.org/10.18258/1657).
Version history
- 8 Nov 2026: the three
*_interactions_full.csvfiles now include thedead_pocicolumn used for Table 2 and Fig. 5 (the previous upload lacked it, so the neighborhood pipeline could not run); they contain the focal Pocillopora colonies only, after edge exclusion of 7, 17 and 204 colonies. DCLF simulation counts documented (99 at Vaihú). The Electronic Supplement figure was removed (it is published with the article). README expanded with a data dictionary, raster-access statement, archive-structure note and funding, and updated to the article's final title.
