Data and code from: Diverging restoration pathways for overstory and understory communities in a Mediterranean-climate riparian ecosystem
Data files
Apr 28, 2025 version files 1.69 MB
-
EAP24-0585_data_and_scripts.zip
1.68 MB
-
README.md
11.82 KB
Abstract
Few restoration studies have long-term longitudinal data to evaluate recovery trajectories, which typically vary among different aspects of ecosystem structure and composition. We used repeat surveys to evaluate if the trajectory of vegetation structure and community composition in restored and reference forests converged from recovery of restored forest or degradation of reference forest, and whether patterns differed for forest overstories and understories. We measured vegetation communities 9–16 years after prior surveys and 21–30 years after planting in 11 restored and 8 reference forest sites along a 100-km span of the Sacramento River, California. We used generalized linear mixed models and non-metric multidimensional scaling to evaluate convergence in overstory structure, understory cover and understory composition. Restored forest structure became more similar to reference forests over time, converging on basal area of ca. 20 m2 ha-1 around 25 years and densities of stems around 35 years. In contrast, overstory species composition remained distinctive, primarily due to the different initial tree species composition and limited overlap in new species recruitment in restored and reference forests. Restored understories had lower native and higher exotic cover than reference sites in both surveys. Restored understory composition became more similar to reference sites as shade-intolerant exotic species cover declined. However, understory composition in restored sites remained distinct from reference sites due to the increased woody cover, primarily from the invasive, shade-tolerant shrub Rubus armeniacus, which increased from 2 to 23 percent mean site cover between the two surveys. Path analysis showed that in restored forests, R. armeniacus cover was negatively related (R = -0.51) to native understory cover, suggesting that it impedes forest recovery. Our results suggest that this system has converged with reference forest in overstory structure but not yet in overstory or understory composition.
Data and code from: Diverging restoration pathways for overstory and understory communities in a Mediterranean-climate riparian ecosystem
This readme explains the steps needed to reproduce the figures in the results and supplemental materials. Before running any of the scripts to create the figures users will need to run the global_variables.R script, which centralizes most of the data loading and function definitions. The scripts use relative paths using the here package https://here.r-lib.org/ which was fully tested on several environments using GitHub repos but may work slightly differently when downloading it from Dryad.
The following describe which scripts are needed to reproduce each figure and table in the document:
(note: legends were rearranged and some changes to color and font were made in Adobe Illustrator)
R programming language (v4.4.0)
Package Version
dplyr 1.1.4
tidyverse 2.0.0
here 1.0.1
ggplot2 3.5.1
mvabund 4.2.1
RVAideMemoire 0.9.83.7
vegan 2.6.6.1
stringr 1.5.1
lme4 1.1.35.3
readxl 1.4.3
MASS 7.3.60.2
emmeans 1.10.2
glmmTMB 1.1.9
DHARMa 0.4.6
patchwork 1.2.0
purrr 1.0.2
progress 1.2.3
lavaan 0.6.18
SCRIPTS
General workflow: Please run the global_variables.R script first which will define all the shared variables and import functions define_functions.R among all the scripts, then you may proceed and run the following scripts to reproduce any figures or tables. None of the following figures or tables are included in the repository they are all in the manuscript titled "Diverging restoration pathways for overstory and understory communities in a Mediterranean-climate riparian ecosystem" published by Ecological Applications in 2025.
Figure 1 - conceptual figure (not data based)
Figure 2 - map (data listed below)
Figure 3 - GLMM_figure_v4.R
- Creates the ggplot for the basal area and stem density GLMM figure (Figure 3)
Figure 4 - nmds_overstory_2023_v2.R
- Creates the ggplot figure for the NMDS figure for overstory composition (Figure 4)
Figure 5 - absolute_cover_figure_v5.R
- Creates a ggplot figure for the absolute native understory cover figure GLMM (Figure 5)
Figure 6 - nmds_2023_v7.R
- Creates a ggplot figure for the NMDS figure for understory composition (Figure 6)
Figure 7 - SEM_variables_summarize_4.R
- Creates the ggplot for the path analysis SEM figure (Figure 7)
Table 1 - glmm_table_v2.R
- Creates the coefficient and test statistics presented in the overstory glmm table (Table 1)
Table 2 - species_change_boxplot_v3.R
- Creates the means and differences presented in the species change boxplot for species level changes between surveys (Table 2)
Table 3 - predict_glmm_exotic_native_under.R
- Creates the means and differences presented in the species change table for species level differences between surveys (Table 3)
Table 4 - absolute_cover_table_v1.R
- Creates all the coefficients and test statistics presented in the understory cover GLMM table (Table 4)
Figure S1 - conceptual figure
Figure S2 - species_change_boxplot_v3.R
- Creates the ggplot for the species change box plot (Figure S2)
Table S1 - method description
Table S2 - env_var_scratch_predict.R
- Creates the tables values for environmental variables and their statistics including range, mean, and SE (Table S2), this output is generated by running the second section of the script.
Table S3 - env_var_scratch_predict.R
- Creates the tables values for the correlation between environmental variables and their statistics for each forest type (Table S3), this output is generated by running the first section of the script.
Table S4 - nmds_overstory_2023_v2.R
- Shows all the coefficients and test statistics for the PERMANOVA related to the NMDS for figure 4 that are put into a table (Table S4)
Table S5 - nmds_2023_v7.R
- Shows all the coefficients and test statistics for the PERMANOVA related to the NMDS for figure 6 that are put into a table (Table S5)
Table S6 - notes of species found
Table S7 - SEM_variables_summarize_4.R
- Creates the model diagnostics describing the path analysis (Figure 7) that are puting into the table (Table S7)
DATASETS
BrookCathyJohn_area5.csv
Description: woody stem measurements from all three surveys for species in forest plots studied
Fields:
plot_id: plot identiferdbh_cm: diameter in centimers at breast heightsurveyor: the survey that the data originated from, either one of the prior studies (Cathy, John) or the current one (Brook (2021), Brook_2 (2022))area_m2: area of the plot study areaspecies_code: code for the species
df_under_2021_2020_rub_arm_format.csv
Description: rubus armeniacus abundance measures for SEM
Fields:
plot_id: plot identiferunderstory: quadrat identifierspecies_code: species codevalue: absolute cover measurement
df_understories_2008_2021_2022_v9.csv
Description: understory measurements calculated from quadrats for the absolute cover of every understory species
Fields:
plot_id: plot identiferspecies_code: code for speciesforestType: restored or reference forestsurvey_period: if record was prior survey or currentunderstory: quadrat identfier in forest plotvalue: cover measurement
updated_elevation.csv
Description: relative floodplain elevation used for the SEM for each forest plot
Fields:
gis_id: links the id of the geometry to the forest plot IDrel_flood_elevation: elevation above the river in meters
distance_to_river_and_forest_2021_2022_v3.csv
Description: distance to remnant forest and river from plots used for the structural equation model for each forest plot
Fields:
gis_id: links the id of the geometry to the forest plot IDdistance_to_river_geo: distance in meters between restored plot and reference forest boundarydistance_to_remnant_geo: distance in meters between restored plot and remnant forest boundaryplot_id: plot identifier
floodplain_age.csv
Description: used for dating reference forests based on the age the floodplain first formed using the location of each plot
Fields:
gis_id: links the id of the geometry to the forest plot IDOID_: links to original geometry from shapefiledistance_to_remnant_geo: distance in meters between restored plot and remnant forest boundarydistance_to_river_geo: distance in meters between restored plot and reference forest boundaryPlotNumber: plot identifier used in GISFloodplainYear: year floodplain formedplanted_year: year restored site was plantedYearSurveyed: year of initial surveyLatitude: latitude dd (WGS84)Longitude: Longitude dd (WGS84)plot_id: plot identifier
long_2022_2021_midstory.csv
Description: shrub measurements that were used as predictors in the SEM in long format
Fields:
transect_number: transect identifierplot_id: plot identifierspecies: species codevalue: absolute cover measurement
overstory_2022_2021_long.csv
Description: overstory cover measurements for SEM that described the cover using a densiometer of the overstory above each quadrat (long instead of wide table)
Fields:
plot_id: plot identfieroverstory_quadrat: the quadrat identifier where this measurement was taken
plant_species_qualities.csv
Description: guild information for species that were used in the structural equation model
Fields:
species_code: code to identify speciesorigin: native or exoticgroup: lifeform type (gram, forb, shrub, tree)
plot_ids_7.csv
Description: plot ids for quadrats and forest plots which linked each plot id to the type of forest and which study did the original survey for dating
Fields:
plot_id: plot identfiersite_group: forest site identifier for comparing between survey periodsforestType: restored or reference forestsoriginal_survey: study original survey came from (Cathy, John)
plotID_2021_2022_forestType.csv
Description: plot ids for quadrats and forest plots formatted for SEM
Fields:
plot_id: plot identfierforestType: restored or reference forest
rub_arm_cover.csv
Description: used to calculate rub arm cover for abstract
Fields:
transect_number: the belt transect identfier that measured the rubus coverplot_id: the plot identifierspecies: species codevalue: absolute cover measureforestType: restored or reference forest
seed_disp_table_3.csv
Description: seed dispersal strategy for native plants to evaluate the landscape level variables on native cover in the SEM
Fields:
species: species codefull_species_name: the full name of each speciesorigin: native or exoticgroup: life form typeseed_dispersal: seed dispersal strategy (wind, water, gravity, animal)citation: relevant citation for certain seed dispersal strategies that were not as clear
species_grouping_12.csv
Description: table for exotic and native species identity and lifeform for understory and overstory measures
Fields:
species_code: species codespecies: species code with underscores for plot labelsorigin: native or exoticgroup: lifeform (graminoid, forb, shrub, tree)
under_2022_2021_sem_merged.csv
Description: understory measurements formatted for SEM that included native and exotic cover for each forest plot in wide format
Fields:
plot_id: the identifier for each plotunderstory: the quadrat identifier for each quadrat- The following other fields are just species codes and their abundance between 0 and 100 percent for each quadrat, they can be converted from species codes (which is done in the scripts), or using
under_species_code_to_scientific_names_v2.csv - bro_dia gal_apa ari_cal bra_nig rub_arm tor_arv mar_fab car_bar ely_tri art_cal hor_sp ger_sp fes_sp jug_hin ave_sp phy_ame ace_neg vic_vil art_dou ely_gla dig_sp vit_cal rub_urs ger_dis sal_lasio que_lob amb_art lac_ser car_pyc tox_div bac_pil rum_sp met_sp aster_unk hyp_per car_oli bra_sp bro_sp bro_hor fes_per aster_long_leaves med_sp ero_sp ari_dou ely_sp ros_cal cle_lig fra_lat aru_don fic_car poa_sp sti_mil sal_exi eri_can tae_cap pop_fre log_gal vit_vil tri_hor ana_arv agr_sp pla_sp ver_lit phy_can ars_cal pla_lan oxa_sp lep_lat cen_nig ver_bon equ_hye sam_nig cir_vul pru_cer ver_tha tar_sp dau_sp sol_vel kic_sp con_mac men_sp pol_sp dat_sp boe_cyl xan_str phyta_sp cen_sol sal_lasia lin_ben ail_alt
under_species_code_to_scientific_names_v2.csv
Description: crosswalk species codes to scientific names
Fields:
species_code: species codescientific_name: full scientific name
map_markers_catographic.shp
Description: centroids for forests studied
Fields:
Field1: restoration site nameLatMin: latitude in minutes and secondsLonMin: longitude in minutes and secondsLatDec: latitude in decimal degreesLonDec: longitude in decimal degreesApproximat: approximation of the centroid (Yes or NULL)Remnant: remnant or restored forest (Yes or NULL)Survey: original study groupin_study: if the plot is in the study area (1 or 0)
Sac_NWR_cartographic.shp
Description: boundaries for Sacramento National Wildlife Refuge areas with forest plots
Fields:
TNC_SacRiv: name of the restoration unitShape_Leng: length of the polygonShape_Area: area of the polygon
