Comparison of thermal developmental plasticity among seven recently sympatric Anolis species: insights into the evolution of reaction norms
Data files
Oct 14, 2025 version files 374.33 MB
-
datasets.zip
85.47 KB
-
README.md
11.30 KB
-
results.zip
374.14 MB
-
scripts.zip
96.98 KB
Abstract
Theory predicts that thermal developmental plasticity evolves in response to thermal heterogeneity, suggesting that plasticity may be an important trait for establishment in novel climates. However, few studies use multi-species comparisons to examine how plasticity evolves, meaning there is little empirical basis with which to examine key theoretical predictions. We estimate patterns of thermal developmental plasticity in morphological and performance traits for seven Anolis lizard species inhabiting South Florida, USA. We found interspecific differences as well as intraspecific variation in reaction norms across species. Neither temperature heterogeneity in present-day Florida nor historical temperature heterogeneity from the contemporary native ranges predicted reaction norm variation. Phylogeny and species identity typically predicted around 90-95% of reaction norm variation. Overall, these results suggest that thermal developmental plasticity in these traits exhibits variation that could be inconsistent with patterns expected under adaptive evolution to macroclimate. Examining the role of maternal nesting behavior and sampling of additional species can distinguish between neutral variation and selection toward multiple adaptive peaks. Our comparative study of thermal developmental plasticity in lizards provides new insight about macroevolutionary dynamics behind the evolution of developmental plasticity and the conditions under which adaptive plasticity is expected to evolve.
Dataset DOI: 10.5061/dryad.9zw3r22sp
Description of the data and file structure
Code for analyzing reaction norm evolution in a community of invasive Anolis lizards in Miami, FL, USA.
Files and variables
File: results.zip
Description: Zip file of posterior distributions. Folders are separated by trait: water uptake, incubation period, snout-vent length, sprint speed, and endurance. Each trait folder has folders for run1 and run2, which are identical analyses with different random starting seeds.
Within each "run" in the trait folder, files are organized by the following.
Model 1 Folder:
- traitname_autocorr_VCV1.csv – autocorrelation values for random effects
- traitname_heidelfout_1.csv – convergence diagnostics for fixed effects
- traitname_heidelrout_1.csv – convergence diagnostics for random effects
- traitname*_*hpds_model1.txt – 95% highest posterior density intervals for all effects
- traitname_mode_1.csv – posterior modes for random effects
- traitname_summ_model1.txt – model summary with posterior means, modes, and other statistics
Model 2 – with phylogeny and polytomy random effects:
- fullmod_ess.csv – effective sample sizes for all model effects in each iteration of model 2
- fullmod_mcmc_out.csv – all mcmc values for all effects across all 100 iterations of model 2
- fullmod_summary.csv – model output summary with posterior means, modes and other statistics
- traitname_autocorr_fix_longrun.csv – autocorrelation values for fixed effects
- traitname_autocorr_rand_longrun.csv – autocorrelation values for random effects
- traitname_heidelfout_longrun.csv – model diagnostics for fixed effects
- traitname_heidelrout_longrun.csv – model diagnostics for random effects
- rf_sampling_correlations_longrun.csv – sampling correlation between phylogeny and polytomy random effects during each iteration of Model 2
Model 2– with polytomy random effects only:
- same as "Model 2" section above, but with prefixes of "poly" or "reducemod"
- No analog for sampling correlation file (because only one random effect is included)
File: scripts.zip
Description: Scripts used to run analyses.
- 'cluster-scripts' folder contains scripts used to run model 1 and model 2 analyses on each trait
- Scripts beginning with 'miabayes' prefix perform the analysis for a given trait
- Scripts beginning with 'ess' calculate effective sample size values from MCMC chains for a given trait
- Scripts with the suffix "seed1" or "seed 2" are identical to the other file with the corresponding seed, except the script runs models on a different starting seed to verify replication of Bayesian results
- Trait names in filenames:
- "wu" = water uptake
- "inc" = incubation period
- "svl" = snout-vent length
- "ss" = sprint speed
- "endur" = endurance
- Units of variables used in model structures, by trait:
- Model 1 – Water Uptake
- log transformed Water Uptake (egg mass measured at second timepoint) ~ 1 + Egg Mass (grams) + Percent Developed (valued from 0 to 1) + Treatment (cool or warm) + SpeciesID + Treatment*SpeciesID
- Model 1 – Incubation Period
- log transformed Incubation Period (days) ~ 1 + EggMass (grams) + Treatment (cool or warm) + SpeciesID + Treatment*SpeciesID
- Model 1 – Snout-vent Length
- log transformed SVL (mm) ~ 1 + EggMass (grams) + Treatment (cool or warm) + SpeciesID + Treatment*SpeciesID
- Model 1 – Sprint speed
- log transformed Sprint speed (cm/s) ~ 1 + Treatment (cool or warm) + SpeciesID + SVL (mm) + Number of Stops during sprint trial + Number of failed sprint trials out of 3 + Temperature of Room during sprint trial (ºC) + Age at time of sprint trial (days) + Treatment*SpeciesID
- Model 1 – Endurance
- log transformed Endurance (total distance run in cm) ~ 1 + Treatment (cool or warm) + SpeciesID + SVL (mm) + Velocity (cm/s) + Age at endurance trial (days) + Treatment*SpeciesID
- All "Treatment" values for Model 1 are -0.5 for the cool treatment and 0.5 for the warm treatment. We assigned these values in order to compute family-level reaction norm slopes across a unit of 1
- All "Cage" values in Model 1 random effect structure are a cage ID where two females of the same species were held
- All Model 2 structures:
- Reaction Norm Slope ~ scaled and centered Historic Climate Values ("PreClim") + scaled and centered Invasion Climate Values ("InvClim") + InvasionTime (years since first documented in South Florida; the at.level() specification is to remove this component of the model for A. carolinensis, which is not invasive)
- "Species" random effect name is connected to the phylogeny and "AbSpec" random effect name (short for 'absolute species') is connected to the polytomy/categorical species random effect (the same thing)
- Model 1 – Water Uptake
- envt_data_generation.R – script to parse native and historical ranges to obtain climate estimates
- To access invasion climate data (BIOCLIM variables 2, 4, and 7), visit the WORLDCLIM website and download data at the 2.5 m resolution.
- To accession historic climate data (Chelsa reconstructions of BIOCLIM variables 2, 4, and 7), visit the PALEOCLIM website and download Chelsa data at the 2.5 m resolution.
- To access GBIF datasets used to determine the ranges where we chose to clip the climate datasets for each species, visit links in the following citations for each species dataset.
-
Anolis carolinensis: GBIF.org (22 March 2023) GBIF Occurrence Download https://doi.org/10.15468/dl.cbyj5q
Anolis chlorocyanus: GBIF.org (21 March 2023) GBIF Occurrence Download https://doi.org/10.15468/dl.nke443
Anolis cristatellus: GBIF.org (21 March 2023) GBIF Occurrence Download https://doi.org/10.15468/dl.mjhf9x
Anolis cybotes: GBIF.org (21 March 2023) GBIF Occurrence Download https://doi.org/10.15468/dl.uhsr58
Anolis distichus: GBIF.org (21 March 2023) GBIF Occurrence Download https://doi.org/10.15468/dl.hucuww
Anolis equestris: GBIF.org (22 March 2023) GBIF Occurrence Download https://doi.org/10.15468/dl.hj473r
Anolis sagrei: GBIF.org (22 March 2023) GBIF Occurrence Download https://doi.org/10.15468/dl.2ku9ak
-
- plot_utils.R – additional plotting functions to generate plots
- plots.R – code for generating Figures 3 and 4, as well as the heat map in Figure 1
- posterior-processing_model-2-results.R – brief code for calculating summary statistics from large mcmc files in model 2 output
File: datasets.zip
Description: Input data for models. Climate data and species occurrence datasets can be downloaded using instructions above in under the script for generating environmental data.
- trait_data folder contains R data objects with model data frames for analysis and the data frame for analyzing model 2. Raw trait data are here. Explanations of traits used in models are above in explanation of the scripts.zip folder. Descriptions of other data variables not used in the models are explained below. Some are redundant with other data frames, and are only explained in the first dataset in the list that they appear.
- Water Uptake (wutrim.Rdata – object 'wu')
- ID – number assigned to egg in order laid
- Species – species of egg
- Cage – number assigned to cage the egg was collected from
- nTreatment – cool or warm, assigned as either -0.5 or 0.5 respectively
- Incubator – the incubator the egg came from. C2 and C8 were cold treatment incubators and W4 and W6 were warm treatment incubators
- LayDay – pseudo-Julian date useful for assessing the role of time in the reproductive season on offspring characteristics. Day 1 corresponds to the first day an egg was laid in the lab on May 10th, 2021
- EggMass – mass in grams of egg recorded on day egg was found in cage (e.g., LayDay)
- scEggMass – egg mass scaled and centered by mean and standard deviation respectively
- PercDev – approximate percentage of development completed by the egg at the time of second mass measurement, approximated using a linear model of hatching time and species ID from previous datasets (explained in manuscript)
- Water Uptake – mass in grams at its second timepoint of measurement
- logWU – water uptake values log transformed (used as response variable in analysis)
- Incubation Period (inctrim.Rdata – object 'incp')
- Most variables explained with above in water uptake data frame
- logInc – log-transformed incubation period (number of days an egg took to hatch)
- Snout-vent Length (svltrim.Rdata – object 'hatchmorph')
- Many variables explained above
- logSVL – log-transformed snout-vent length at day of hatching (mm)
- TL – tail length in millimeters at day of hatching
- Mass – hatchling mass at day of hatching
- Sex – hatchling sex, only for species with post-anal scales on males (otherwise, no way to visually assess sex at hatching)
- Sprint Speed (sstrim.rda – object 'ss')
- Many variables explained above
- SVL – snout-vent length on day of hatching
- logSS – log transformed fastest sprint speed in cm/s, calculated based on fastest sprint times out of three sprint trials (see manuscript methods)
- Stops – number of times during sprint trials hatchling stopped running and had to be prompted to continue with a gentle paintbrush tap (see manuscript methods)
- Fails – number of sprint trials (out of three) where hatchling did not run all the way up the track (e.g., an Anolis equestris hatchling that stopped running to attack the paintbrush)
- SprintTemp – room temperature at the time of the sprint trial in Celsius
- AgeSprint – hatchling age in days at the time of the sprint trial
- Endurance (endurtrim.Rdata – object 'endur')
- Many variables explained above
- FastestSprint – fastest sprint speed from sprint trials
- Velocity_m.s – running speed during endurance trial in meters per second
- Velocity_cm.s – same as above but converted to centimeters per second
- logEnd – log-transformed total distance run during endurance trial
- EnduranceTime – number of seconds endurance trial lasted
- AgeEndurance – age at time of endurance trial in days
- Water Uptake (wutrim.Rdata – object 'wu')
- pruned_anole_tree.treefile is the pruned phylogenetic tree from Mahler et al. (2010) used in this analysis (see manuscript for citation)
Access information
Other publicly accessible locations of the data:
Data was derived from the following sources:
- GBIF.org
- WORLDCLIM
- PaleoCLIM
