DOI: 10.5061/dryad.zpc866tgr
title: MetaSqueeze: A spatially-explicit metapopulation model for Banksia hookeriana in south-west Australia

description: Climate change, with warming and drying weather conditions, is reducing
 the growth, seed production, and survival of fire-adapted plants in
 fire-prone regions such as Mediterranean-type ecosystems. These effects of
 climate change on local plant demographics have recently been shown to
 reduce the persistence time of local populations of the fire-killed shrub
 Banksia hookeriana dramatically. In principle, extinctions of local
 populations may be partly compensated by recolonization events through
 long-distance dispersal mechanisms of seeds, such as post-fire wind and
 bird-mediated dispersal, facilitating persistence in spatially structured
 metapopulations. However, to what degree and under which assumptions
 metapopulation dynamics might compensate for the drastically increased
 local extinction risk remains to be explored. Given the long
 timespans involved and the complexity of interwoven local and regional
 processes, mechanistic, process-based models are one of the most suitable
 approaches to systematically explore the potential role of metapopulation
 dynamics and its underlying ecological assumptions for fire-prone
 ecosystems. Here we extend a recent mechanistic, process-based,
 spatially implicit population model for the well-studied fire-killed and
 serotinous shrub species B. hookeriana to a spatially explicit
 metapopulation model. We systematically tested the effects of different
 ecological processes and assumptions on metapopulation dynamics under past
 (1988–2002) and current (2003–2017) climatic conditions, including (i)
 effects of different spatiotemporal fires, (ii) effects of (likely)
 reduced intraspecific plant competition under current conditions, and
 (iii) effects of variation in plant performance among and within
 patches. In general, metapopulation dynamics had the potential to
 increase the overall regional persistence of B. hookeriana.
 However, increased population persistence only occurred under specific
 optimistic assumptions. In both climate scenarios, the highest persistence
 occurred with larger fires and intermediate to long inter-fire intervals.
 The assumption of lower intraspecific plant competition caused by lower
 densities under current conditions alone was not sufficient to increase
 persistence significantly. To achieve long-term persistence (defined as
 &gt; 400 years) it was necessary to additionally consider empirically
 observed variation in plant performance among and within patches, i.e.,
 improved habitat quality in some large habitat patches (≥ seven) that
 could function as source patches and a higher survival rate and seed
 production for a subset of plants, specifically the top 25% of flower
 producers based on current climate conditions monitoring
 data. Our model results demonstrate that the impacts of ongoing
 climate change on plant demographics are so severe that even under
 optimistic assumptions, the existing metapopulation dynamics shift to an
 unstable source-sink dynamic state. Based on our findings, we recommend
 increased research efforts to understand the consequences of intraspecific
 trait variation on plant demographics, emphasizing the variation of
 individual traits both among and within populations. From a conservation
 perspective, we encourage fire and land managers to revise their
 prescribed fire plans, which are typically short interval, small fires, as
 they conflict with the ecologically appropriate spatio-temporal fire
 regime for B. hookeriana, and likely as well for many other fire-killed
 species.
description: # MetaSqueeze: A spatially-explicit metapopulation model for *Banksia
 hookeriana* in south-west Australia MetaSqueeze is a mechanistic,
 process-based, spatially explicit metapopulation model developed to
 investigate the dynamics of metapopulations under the influence of climate
 change. This model specifically focuses on the fire-killed, serotinous
 shrub *Banksia hookeriana*, studying its response to varying fire regimes
 and climatic conditions. **Reference:** Souto-Veiga, R., Groeneveld, J.,
 Enright, N. J., Fontaine, J. B., & Jeltsch, F. (2024). Climate change
 may shift metapopulations towards unstable source-sink dynamics in a
 fire-killed, serotinous shrub. *Ecology and Evolution, 14*, e11488.
 [https://doi.org/10.1002/ece3.11488](https://doi.org/10.1002/ece3.11488)
 Corresponding Author: Rodrigo Souto-Veiga Email:
 [rodrigo.souto.veiga@uni-hamburg.de](mailto:rodrigo.souto.veiga@uni-hamburg.de) ORCID: [0000-0001-8639-620X](https://orcid.org/0000-0001-8639-620X) ## Requirements The model is developed using C++ 17 and requires gcc compiler version 9.2 or higher for full functionality. ## Setup Instructions ### For Linux Users: 1. **Installation**: * Install CMake and Make: Most Linux distributions come with CMake and Make. You can install them via your package manager (e.g., `sudo apt-get install cmake make`). 2. **Compilation**: * Navigate to the project directory. * Run `make` to build the program in debug or release mode. ### For Windows Users: 1. **Installation**: * Install CMake: Download and install CMake from [CMake.org](https://cmake.org/download/). * Install MinGW or another gcc compiler that includes g++ to get gcc version 9.2 or higher. 2. **Compilation**: * Open CMake GUI and set the source code and build directories. * Configure the project using MinGW Makefiles generator and specify the path to the MinGW compiler. * Click 'Generate' to create Makefiles. * Open Command Prompt and change the directory to your build directory. * Run `mingw32-make` to compile the project. ## Model Execution * **Local Execution**: Use the script `functions.sh` to run models locally. * **High-Performance Cluster**: Use `job_metasqueeze.sh` to submit and manage jobs for parallel simulation execution. ## Project Directory Structure ### Simplified Project Directory Structure \|- build/ \| |- debug/ \| |- release/ \|- data/ \| |- in/ \| |- out/ \|- documentation/ \| |- TRACE_document.pdf \|- src/ \|- tools/ \| |- data_analysis_visualization/ \| |- experiment_generator/ \| |- parallel/ \|- CMakeLists.txt \|- functions.sh \|- job_metasqueeze.sh \|- makefile ### Comprehensive Project Directory Structure \|- build/ \| |- debug/ \| |- release/ \|- data/ \| |- in/ \| | |- climate/ \| | | |- climate_baseline.csv \| | | |- climate_baseline_cali_1998_2006.csv \| | | |- climate_current.csv \| | |- dispersal/ \| | | |- dispersal_baseline.csv \| | | |- dispersal_current.csv \| | | |- dispersal_none.csv \| | |- fire/ \| | | |- fire.csv \| | |- flower_distribution/ \| | | |- flower_distributions_current.csv \| | |- fuzzy_sets/ \| | | |- fuzzy_set_01.csv \| | | |- fuzzy_set_02_low.csv \| | | |- fuzzy_set_03_high.csv \| | | |- fuzzy_set_list.csv \| | |- habitat_quality/ \| | | |- habitat.csv \| | |- metapopulation/ \| | | |- metapop_cali_02.csv \| | | |- metapop_cali_03_mort_scn_0.csv \| | | |- metapop_cali_03_mort_scn_2.csv \| | | |- metapop_cali_03_mort_scn_3_4.csv \| | | |- metapop_baseline.csv \| | | |- metapop_baseline_high.csv \| | | |- metapop_baseline_medium.csv \| | | |- metapop_only_one.csv \| | |- plant_types/ \| | | |- plant_types.csv \| | |- scenarios/ \| | | |- scn_baseline.csv \| | | |- scn_cali_01.csv \| | | |- scn_cali_02_mort_0.csv \| | | |- scn_cali_02_mort_2.csv \| | | |- scn_cali_02_mort_3.csv \| | | |- scn_cali_02_mort_4.csv \| | | |- scn_cali_03_mort_0.csv \| | | |- scn_cali_03_mort_2.csv \| | | |- scn_cali_03_mort_3.csv \| | | |- scn_cali_03_mort_4.csv \| | | |- scn_current.csv \| | |- sim/ \| | | |- manuscript/ \| | | | |- calibration/ \| | | | | |- 01_cali_init_cones_seeds.csv \| | | | | |- 02_cali_init_plants.csv \| | | | | |- 03_cali.csv \| | | | |- experiments/ \| | | | | |- 01_experiment/ \| | | | | | |- 01_01_experiment.csv \| | | | | | |- 01_02_experiment.csv \| | | | | | |- 01_03_experiment.csv \| | | | | | |- 01_04_experiment.csv \| | | | | |- 02_experiment.csv \| | | | | |- 02_suppl_experiment.csv \| | | | | |- 03_experiment.csv \| | | | | |- 03_suppl_experiment.csv \| | | | | |- 04_01_experiment.csv \| | | | | |- 04_02_experiment.csv \| | | | | |- 04_suppl_1_experiment.csv \| | | | | |- 04_suppl_2_01_experiment.csv \| | | | | |- 04_suppl_2_02_experiment.csv \| | | | | |- 04_suppl_2_03_experiment.csv \| | | | | |- 05_experiment.csv \| | | | | |- fire_size_experiment.csv \| | |- species/ \| | | |- banksia_base_90_mort_0.csv \| | | |- banksia_base_90_mort_1.csv \| | | |- banksia_base_90_mort_2.csv \| | | |- banksia_base_90_mort_3.csv \| | | |- banksia_base_90_mort_4.csv \| | | |- banksia_current_65_mort_0.csv \| | | |- banksia_current_65_mort_2.csv \| | |- study_rep/ \| | | |- study_rep_30.csv \| | |- study_size/ \| | | |- He2010_study_size.csv \| |- out/ \|- documentation/ \| |- TRACE_document.pdf \|- src/ \| |- cell.h \| |- cohort.cpp \| |- cohort.h \| |- dispersal.h \| |- environment.cpp \| |- environment.h \| |- equation.cpp \| |- equation.h \| |- fire_simulator.cpp \| |- fire_simulator.h \| |- flower_distribution.h \| |- fuzzy_function.cpp \| |- fuzzy_function.h \| |- gene_flow.h \| |- global.h \| |- grid.cpp \| |- grid.h \| |- habitat_quality.h \| |- main.cpp \| |- model_options.h \| |- output.cpp \| |- output.h \| |- parameter_reader.cpp \| |- parameter_reader.h \| |- parameters.h \| |- plant.cpp \| |- plant.h \| |- plant_type.h \| |- point.h \| |- population.cpp \| |- population.h \| |- random_generator.h \| |- trapezoid.cpp \| |- trapezoid.h \| |- triangle.cpp \| |- triangle.h \| |- weather_simulator.cpp \| |- weather_simulator.h \| |- wind_simulator.cpp \| |- wind_simulator.h \|- tools/ \| |- data_analysis_visualization/ \| | |- data/ \| | | |- field/ \| | | | |- bankhook_Eneabba_fertile_cones_1986.csv \| | | | |- bankhook_Eneabba_fertile_cones_2018.csv \| | | | |- bankhook_Eneabba_flowers_1986_2002.csv \| | | | |- bankhook_Eneabba_flowers_2008_2018.csv \| | | | |- bankhook_Eneabba_follicles_1986.csv \| | | | |- bankhook_Eneabba_follicles_2018.csv \| | | | |- bankhook_Eneabba_open_follicles_1986.csv \| | | | |- bankhook_habitat_quality_flowers_2016.csv \| | | | |- IDCJAC0009_8225_1800_Data.csv \| | | | |- IDCJAC0009_8225_1800_Note.txt \| | | |- papers/ \| | | | |- eneabba_follicles_per_cone.csv \| | | | |- He2004_2010_dune_data.csv \| | | | |- He2010_fig2_unoccupied_dunes_area.csv \| | | | |- He2010_table3_immigrants.csv \| | | | |- Keith2014_mort_rates.csv \| | | |- sim_outputs.zip (Compressed folder containing structured data for simulations including calibration, experimental results, and sensitivity analyses. See "Navigating the Simulation Output Files" section for more details.) \| | |- scripts/ \| | | |- experiments/ \| | | | |- 01_experiment.R \| | | | |- 02_experiment.R \| | | | |- 02_suppl_experiment.R \| | | | |- 03_experiment.R \| | | | |- 03_suppl_experiment.R \| | | | |- 04_experiment.R \| | | | |- 04_suppl_1_experiment.R \| | | | |- 04_suppl_2_experiment.R \| | | | |- 05_experiment.R \| | | | |- fire_size_experiment.R \| | | |- landscape.R \| | |- utils/ \| | | |- pooled_sd.R \| | | |- read_multiple_files.R \| | |- calibration_and_analysis.qmd \| | |- README.md \| | |- renv.lock \| |- experiment_generator/ \| | |- sims/ \| | |- templates/ \| | |- experiment_generator.R \| | |- README.md \| | |- sensitivity_generator.R \| |- parallel/ \| | |- meta-parallel.R\ \|- CMakeLists.txt \|- functions.sh \|- job_metasqueeze.sh \|- makefile ### Navigating the Simulation Output Files The `sim_outputs.zip` file is structured to contain several key types of data organized by simulation purpose and type. Here's how the contents are generally structured: \|-sim_outputs/ \| |- calibration/: \| | |- 01_cali_init_cones_seeds/ (Initial calibration for cones and seeds.) \| | | |- in/sim/: Input parameters for the simulation. \| | | | |- 01_calibration_init_cones_seeds.csv (Main calibration input file.) \| | | |plots/ (Visual outputs of the simulations.) \| | | |raw/ (Raw simulation data.) \| | | | |- 01_cali_init_cones_seeds_sim_1_seed_dynamics.csv: Detailed seed dynamics data. \| | |- 02_01_cali_prefire_pop/, 03_cali/, etc.: Other calibration datasets are structured similarly, tailored to specific experimental conditions. \| |- experiments/ \| | |- 01_experiment/, etc.: Contains folders for each experimental setup, similar in structure to calibration folders. \| |- sensitivity/ \| | |- Data from sensitivity analysis, structured similarly to calibration data. This structure is designed to facilitate comprehensive analysis and quick review, allowing researchers to locate and utilize specific data sets based on their experimental focus. Users are encouraged to decompress the entire folder and maintain the directory structure for ease of navigation and reference. ## Files Description ### Detailed File Description of "data/in/" /sim: in this folder are located the main input simulation files (calibration, and experiments). /study_rep: Files contain a list of seeds for generating random numbers to create the metapopulation (i.e., random patches). This file is read from the main input file, i.e., /sim. /scenarios: The main parameters that define the simulation. This file is read from the main input file, i.e., /sim. /study_size: the parameter that defines the study area. /metapopulation: The file contains the (sub) population characteristics. This file is read from a scenario file. /climate: Climate scenario (i.e., baseline or current). This file is read from a scenario file. /fire: Fire parameters. This file is read from a scenario file. /dispersal: Dispersal parameters. This file is read from a scenario file. /species: Demographic parameters. This file is read from a scenario file. /habitat_quality: Habitat quality of the patches. This file is read from a scenario file. /plant_types: Intraspecific variability of plants (plant performance class). This file is read from a scenario file. /fuzzy_sets: Definitions of fuzzy sets and their membership functions for flower count data. This file is read from a scenario file. /flower_distributions: Probability density functions for each membership function and plant performance class. This file is read from a scenario file. For a more detailed description of input parameters, please refer to the cpp source code in the Parameter_reader class or in the documentation (TRACE document). ### Detailed File Description for "documentation/" * **TRACE_document.pdf**: TRACE documentation of model design, testing, and development. ### Detailed File Descriptions for "/tools/data\_analysis\_visualization/data/field/" * **bankhook_Eneabba_fertile_cones_1986.csv**: Data on fertile cones from *B. hookeriana* in Eneabba, South-West Australia, collected in 1986. This file records the number of fertile and sterile cones per cone age per plant (tag). * **bankhook_Eneabba_fertile_cones_2018.csv**: Data on fertile cones from *B. hookeriana* in Eneabba, South-West Australia, collected in 2018. Each row corresponds to an individual cone from a plant (tag), classified as "f" (fertile) or "s" (sterile). For each cone, the age is recorded in years (coneAge_years), and the length is recorded in centimeters (coneLgth_cm). * **bankhook_Eneabba_flowers_1986_2002.csv**: Flowering records for *B. hookeriana* in Eneabba spanning 1986 to 2002. * **bankhook_Eneabba_flowers_2008_2018.csv**: Flowering records for *B. hookeriana* in Eneabba from 2008 to 2018. This dataset also includes the dimensions of each plant. The height (hgt_cm), first width (wth1_cm), and second width (wth2_cm) are recorded in centimeters. The first width is measured at the widest part of the plant, and the second width is measured at 90 degrees (i.e., perpendicular) to the first width. * **bankhook_Eneabba_follicles_1986.csv**: Data on the number of follicles per cone from *B. hookeriana* individuals in Eneabba, collected in 1986. Cones were subjected to burning to expose and count the follicles. * **bankhook_Eneabba_follicles_2018.csv**: Data on the number of follicles per cone from *B. hookeriana* individuals in Eneabba, collected in 2018. The cones, aged 1, 3, and 5 years from 12 plants (n = 77 fertile cones), were burned to expose and count the follicles. * **bankhook_Eneabba_open_follicles_1986.csv**: Data on the proportion of open follicles per *B. hookeriana* individual in Eneabba in 1986. * **bankhook_habitat_quality_flowers_2016.csv**: Flower count data per *B. hookeriana* individual across various sites in Eneabba in 2016. This dataset includes several columns, where for this study we used the location of the plots (columns "zone" and "plotID") and the number of flowers (flw). Other columns that describe the observation of each plant, but were not used in our analysis, are: latitude and longitude, elevation of the dune in meters ("elevation_m"), time since last fire (TSF), time of the data collection ("seasYr", "season", "visitYr", "visDates"), and dimensions of the plant in meters for height, width1, and width2 ("hgt_m", "w1_m", "w2_m"). * **IDCJAC0009_8225_1800_Data.csv**: Daily rainfall data from Eneabba Weather Station No 08225 (Australian Bureau of Meteorology), covering the period from 1967 to April 1, 2017. * **IDCJAC0009_8225_1800_Note.txt**: Notes (metadata) accompanying the climate data file for Eneabba Weather Station No 08225. ### Detailed File Descriptions for "/tools/data\_analysis\_visualization/data/papers/" * **He2010_table3_immigrants.csv**: Immigrant data extracted from Table 3 in He et al. (2010), *Annals of Botany*. This dataset shows the distance from identified immigrants to the nearest edge of their source population. * **Keith2014_mort_rates.csv**: Mortality rates at two sites (spring and autumn sites) in Eneabba from 1988 to 2002. Each record includes the average mortality across both sites and the total winter-spring rainfall from the previous year ('lagrain' column). Data provided by Dr. Neal J. Enright. ### Detailed File Descriptions for "/tools/data\_analysis\_visualization/scripts/" Each simulation experiment conducted as part of our study is associated with a dedicated R script. These scripts are designed for analyzing and visualizing the outcomes of their respective experiments. ### Model Parameterization and Calibration * **calibration_and_analysis.qmd**: This document details the parameterization and calibration processes used for the model based on empirical data. The parameterization involves setting initial model parameters directly from empirical observations and indirectly via calibration techniques. Key aspects include: 1. Establishing initial conditions for cones and seeds in the simulation, 2. Sizing prefire population models, 3. Configuring the dispersal kernel for seeds affected by postfire winds, 4. Determining the number of seeds per dispersed cone, 5. Estimating the proportion of dispersed cones and seeds, 6. Adjusting habitat quality coefficients, 7. Calibrating flower count distributions. ## Additional Information * **Documentation**: The TRACE document and detailed in-code comments provide comprehensive model descriptions and operational guidance. * **Tools and Scripts**: Refer to the README.md in the `/tools/` directory for details on data analysis and visualization tools.