MetaSqueeze: A spatially-explicit metapopulation model for Banksia hookeriana in south-west Australia
Data files
Jun 07, 2024 version files 393.36 MB
-
metasqueeze.zip
-
README.md
Abstract
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 > 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.
README: 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
Corresponding Author:
Rodrigo Souto-Veiga
Email: rodrigo.souto.veiga@uni-hamburg.de
ORCID: 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:
- 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
).
- Install CMake and Make: Most Linux distributions come with CMake and Make. You can install them via your package manager (e.g.,
- Compilation:
- Navigate to the project directory.
- Run
make
to build the program in debug or release mode.
For Windows Users:
- Installation:
- Install CMake: Download and install CMake from CMake.org.
- Install MinGW or another gcc compiler that includes g++ to get gcc version 9.2 or higher.
- 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:
- Establishing initial conditions for cones and seeds in the simulation,
- Sizing prefire population models,
- Configuring the dispersal kernel for seeds affected by postfire winds,
- Determining the number of seeds per dispersed cone,
- Estimating the proportion of dispersed cones and seeds,
- Adjusting habitat quality coefficients,
- 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.