Seasonal evolution and its effects on competition
Data files
Jan 21, 2026 version files 984.62 KB
-
all_effs.csv
6.34 KB
-
body_mass.csv
38.40 KB
-
census.csv
13.13 KB
-
chill_coma.csv
115.08 KB
-
compet_analyze_dryad.Rmd
36.07 KB
-
competition.csv
13.91 KB
-
fecundity.csv
38.26 KB
-
haldanes_dryad.Rmd
44.65 KB
-
haldanes_errors.csv
8.95 KB
-
heat_tolerance.csv
139.75 KB
-
ibuttons.csv
344.73 KB
-
pcva_dryad.Rmd
20.52 KB
-
pheno_analyze_dryad.Rmd
41.44 KB
-
README.md
6.41 KB
-
starvation_tolerance.csv
116.96 KB
Abstract
Rapid evolution can influence competitive dynamics. While theory and past work have focused on the competitive consequences of rapid evolution in response to competitors (e.g., character displacement), abiotic environmental factors are also responsible for much of the rapid evolution observed in nature. Yet, we lack knowledge of how evolution in response to a variable abiotic environment shapes competition between evolving species. Our knowledge of these effects is limited not only by the absence of direct quantification of environment-driven evolution’s effects on competition, but also by the rarity of systems in which environment-driven evolution itself has been measured across multiple competitors. Here, we used an outdoor mesocosm experiment with three species of naturally co-occurring Drosophilid fly competitors to quantify the seasonal evolution of stress tolerance and reproductive traits and the effects of this evolution on demographic performance under competition. We found that rapid seasonal evolution occurred across all three species, across all measured traits, and across every sampling interval. Throughout the course of their growing season, species first converged on similar phenotypic profiles (e.g., high heat tolerance and low fecundity), then evolved in parallel. This seasonal evolution had clear impacts on pairwise competition between species. In competition trials in a common garden greenhouse environment, seasonal evolution had the potential to alter demographic performance by over 30%. Under seasonally varying field conditions over the summer, in one species pair, seasonal evolution had 7x stronger effects on competitive performance than did the changing environmental conditions themselves. Our work highlights that the rapid, environment-driven evolution increasingly documented by evolutionary biologists can have a major, underappreciated influence on ecological competitive dynamics.
Here, we present data and code for the paper: Seasonal evolution and its effects on competition. In this study, we maintained outdoor mesocosms of three species of drosophilid flies, tracked the evolution of these populations over the summer and fall, and conducted competition trials in the lab and field to quantify the effects of seasonal evolution on competition.
The repository contains datasets on phenotypic traits (body mass, fecundity, starvation tolerance, chill coma recovery, heat tolerance); competition trials; population dynamics in outdoor mesocosms; temperature data from ibuttons; and quantities derived from models using some of these data. The repository also contains code in R to analyze these datasets. Specifically, "pheno_analyze_dryad.Rmd" contains models analyzing phenotypic evolution; "pheno_pca_dryad.Rmd" analyzes this phenotypic evolution using principle components analysis; "haldanes_dryad.Rmd" computes rates of phenotypic evolution; "pcva_dryad.Rmd" conducts phenotypic change vector analysis, used to test parallelism and convergence of phenotypic evolution across species; "census_temp_dryad.Rmd" plots mesocosm census (i.e., population size) measurements throughout the experiment in addition to temperature measurements; and "compet_analyze_dryad.Rmd" analyzes data from competition trials.
Datasets for phenotypic traits all contain the following columns: treatment (for the month of the measurement or founder); species (hydei, melanogaster, or zaprionus); and cage (for the mesocosm cage). Below, we detail dataset-specific columns besides these.
"body_mass.csv" contains data on male and female body mass. Other columns are: replicate (within cage and timepoint); sex; mass (mg), num (the number of flies in the pool being weighed); and mass.per (mass divided by number of flies).
"fecundity.csv" contains data on fecundity assays. Pools of five females were placed into a bottle with a small petri dish of food slotted in at the top of the bottle. Every 24 hours, for 72 hours, the dish was replaced with a fresh dish. All eggs laid were counted. Some flies occasionally escaped during the trial, so we also record how many flies were laying eggs per day. The other columns are: replicate, bottle (within each cage and timepoint), and eggs.1, eggs.2, and eggs.3 (eggs laid on specific days); fem.1, fem.2, and fem.3 (the number of egg-laying females per day); avg.day1, avg.day2, and avg.3 (eggs per female in each day); and eggs.per.fem (the average of the previous three columns).
"starvation_tolerance.csv" contains data on starvation tolerance assays. Other columns include: replicate.vial (within cage and timepoint); replicate.female (within each vial); death.time; and time.median, which is the median time between the last time the fly was observed alive and the first time it was observed dead.
"chill_coma.csv" contains data on chill coma recovery assays. Other columns include: replicate.vial (within cage and timepoint); replicate.female (within vial); and recovery.time (time in mins of recovery from chill coma).
"heat_tolerance.csv" contains data on heat tolerance assays. These were mortality assays (for D. melanogaster) or heat knockdown assays (for D. hydei and Z. indianus). Further details for each species can be found in the manuscript. Other columns are: replicate.vial (within cage and timepoint); replicate.female (within vial); dead (for mortality assays); alive (for mortality assays; inverse of dead); knockdown.day (1 if the fly was knocked down at the end of the trial); and up_day (the inverse of knockdown.day).
"census.csv" contains data on population dynamics in mesocosm cages. Columns are: cage; species; date (of measurement); sq1, sq2, sq3, sq4, sq5, sq6, sq7, and sq8 (for the number of flies in each square at the top of the cage); total.count (summed across all squares); and total.estimate (total.count x 20.125, a scaling factor which extrapolates from the squares at the top to the full top of the cage and the top 0.4 m of the sides of the cage, where flies aggregate at dusk, when these censuses were conducted.
"ibuttons.csv" contains data on temperature from ibuttons placed in nine random cages. The columns are: date; time; temp (in C); and cage (a unique identifier but not the same as the actual cage ID's used in other datasets, as we never match this data to any other data; we only average across caged)
"competition.csv" contains data on competition trials. Columns include: date; location (of the trial, either field or greenhouse); treatment (either stock or evolving for field trials, always evolving for greenhouse trials); id (either of the replicate for stock trials, or of the two cages from which evolving flies were sourced); cage; species pair (with just one letter from each species: M for melanogaster, H for hydei, or Z for zaprionus); replicate (just for stock trials); species (as each row has data on only one species); and count (for the number of adult offspring that ultimately emerged for that species and trial)
"haldanes_errors.csv" has data on estimates of rates of evolution (in haldanes) calculated from the phenotypic data and models constructed in "pheno_analyze.dryad". I store this data in a csv because it takes a somewhat long time for the models to run, and I didn't want to rerun them every time I wanted to tweak a figure. The columns are: species, period (for the period over which evolutionary change occurred, either f_1 for founder to first timepoint, etc.); unit (for assay); haldanes (estimate); upper (upper 95% credible interval); lower (lower 95% credible interval); abs_haldanes (absolute value); abs_lower (lower 95% CI); abs_upper (upper 95% CI); raw (estimate of the number of SD's of change, not standardized by number of gens); raw_lower (lower CI); raw_upper (upper CI); and gens (estimated number of gens over this period).
Finally, "all_effs.csv" contains estimates from the models in "pheno_analyze.dryad". Again, I save these estimates so I don't have to recalculate them every time I close R without saving the workspace and then want to change figures. The columns are: treatment; species; recovery (just named recovery from the chill coma recovery column, but is actually the median estimate for any assay); lower (lower 95% CI); upper (upper 95% CI); unit (for the assay); and date.
