Artificial selection for adult predation survival impacts life-history and morphology in guppies (Poecilia reticulata)
Data files
May 16, 2025 version files 416.89 KB
-
Experiment_details.xlsx
11.36 KB
-
Length_BP_F2.xlsx
25.70 KB
-
Length_F2.xlsx
131.46 KB
-
Life_history_traits.xlsx
137.63 KB
-
Offspring_traits_female_adults.xlsx
41.52 KB
-
Offspring_traits_juveniles.xlsx
16 KB
-
offspring_traits_male_adults.xlsx
47.06 KB
-
README.md
6.15 KB
Jan 27, 2026 version files 511.65 KB
-
Experiment_details.xlsx
11.36 KB
-
Length_BP_F2.xlsx
25.70 KB
-
Length_F2.xlsx
131.46 KB
-
Life_history_traits.xlsx
137.63 KB
-
Offspring_traits_female_adults.xlsx
41.52 KB
-
Offspring_traits_juveniles.xlsx
16 KB
-
offspring_traits_male_adults.xlsx
47.06 KB
-
R_code_life_history_25-09-24.Rmd
92.98 KB
-
README.md
7.93 KB
Abstract
Predation is accepted as a major evolutionary driver of life history and morphology. However, whether these traits evolve directly via predation or via indirect effects is largely unresolved. We used artificial selection over three generations to experimentally test the impact of adult predation on the evolution of life history and morphology in guppies (Poecilia reticulata). We found that, compared to control fish, predation-selected fish produced larger offspring and larger broods early in life. However, other life history parameters, such as interbrood interval and total number of offspring, showed no response. We also found that predation selected for smaller and lighter females and for shorter tails and gonopodia in males, with no effect on body colouration. Our results show that while several traits evolve fast under selection on adult predation, several ‘classic’ predation-dependent traits seem unaffected by predation selection. By comparing our experimental results to those from natural populations we can disentangle the contribution of direct and indirect effects on trait evolution under predation pressure.
https://doi.org/10.5061/dryad.5x69p8ddp
Description of the data and file structure
Files and variables
note that the file labels are congruent between files and therefore not described extra for every file*
In general: (Rare) empty cells mean missing values as something happened during the measuring process and the value could not be reconstructed. Except for the breeding data in the file 'Life_history_traits' - see below.
File: Experiment_details.xlsx
Description: Experimental details are given.
variable labels explained:
- 'generation': generation of selection from 0 (start) to 2 (second generation of artificial selection
- 'replicate': the experiment was run in 3 independent replicates each containing one predation and one control line
- 'sex': males or females
- 'days_inexp_tank': number of days the fish spent in the selection tank
- 'tank_id': we uesd 6 tanks for this Experiment each with a unique number (1-6)
- 'breeding time': number of days the fish were kept in pairs to let them breed
- 'place' : country where the fish were kept
File: Length_BP_F2.xlsx
Description: standard length of breeding pairs of the F2 generation
variable labels explained:
- 'treatment': two levels: either control (kept in safe space) or predation (exposed to predator)
- 'replicate': the experiment was run in 3 independent replicates each containing one predation and one control line
- 'BP': breeding pair number - identifier of breeding pair
- 'generation': what number of selective generations those fish are in. 'F2' means 2nd generation of selection.
- 'sex': males or females
- 'standard_length_mm' standard length of the fish (tip of the snout to end of caudal peduncle, in mm.
File: Length_F2.xlsx
Description: standard length of F2 generation
File with length of fish from predation lines at various time points
tabs of file:
| Readme | explains tabs |
|---|---|
| Before_selection | group picture of the fish before going in the selection tanks |
| After_selection | individual pictures of the fish after coming out of the selection tanks |
| Final_data | data combined from before and after in one sheet |
Variable labels explained (labels the same for all sheets):
- 'number': running number
- 'fish_nr': identifier number of individual fish
- 'timing': before (or after) selection - coincides with sheet names
- 'photo type': were fish photographed individually or in groups
- 'treatment': two levels: either control (kept in safe space) or predation (exposed to predator)
- 'replicate': the experiment was run in 3 independent replicates each containing one predation and one control line
- 'length_cm': body length of fish
- 'standard_length_mm' standard length of the fish (tip of the snout to end of caudal peduncle, in mm.
- 'standard_length_cm' standard length of the fish (tip of the snout to end of caudal peduncle, in cm.
File: Life_history_traits.xlsx
Description: life history traits of F3 generation
empty cells in 'fry_number' mean no reproduction in that pair for that brood --> also no 'interval_brood' possible, hence also empty cell. The higher the brood number, the less likely that any pair has a value in the 'fry_number'. But, for example, pair 3C18 had 6 broods, that means it has a fry number in all 6 'brood' 'fry_number cells'.
variable labels explained:
- 'generation': generation of selection from 0 (start) to 2 (second generation of artificial selection)
- 'treatment': predation (P) or control (C) treatment of selection
- 'pair_id': number of a pair in a given group
- 'id': individual identifying code for a given pair. e.g.: '1P2" means second pair in replicate one, predation treatment
- 'fry_yes_no' did the pair produce offspring at all
- 'brood': number of brood.
- 'fry_number': number of offspring produced
- 'interval_brood': number of days between this and the last brood
File: Offspring_traits_juveniles.xlsx
Description: morphological traits of F4 juveniles
variable labels explained:
- 'ID': running identifying number of individual measured
- 'tank_ID': number of the tank the fish came from
- 'day': day the fish was measured
- 'date': date the fish was measured
- 'treatment': either control (C) or predation (P) selection treatment
- 'rep': number of replicate
- 'BP_nr': number of the breeding pair
- 'clutch_size': number of siblings in the clutch of the measured animal
- 'fish_nr': always 3 fish per clutch measured (1, 2, 3)
- 'size_mm': body size in mm
- 'id': individual identifying code for a given pair. e.g.: '1P2" means second pair in replicate one, predation treatment
File: Offspring_traits_female_adults.xlsx
Description: morphological traits of F4 adult females
variable labels explained:
(most variables like above, here the extra variables)
All measures in mm or mm2*
- 'body_area': are of body surface measured from picture
- 'tail_length'": length of the tail
- 'eye_size_x': width of the eye
- 'eye_size_y': height of the eye
- 'full length': total body length
- 'weight_mg': weight of the fish in mg
- 'eye_area': surface of the eye area
File: offspring_traits_male_adults.xlsx
Description: morphological traits of F4 adult males
variable labels explained:
(most variables like above in females, here the extra variables)
All measures in mm or mm2*
- 'body_area': body area
- 'gonopodium_size': length of the gonopodium in mm
- 'full_length': total body length including tail
- 'area_black': surface area of black colouration on that fish
- 'area_orange': surface area of orange colouration on that fish
- 'area_iridescent': surface area of iridescent colouration on that fish
R code implementation
R_code_life_history_25-09-24.Rmd
This data repository contains the R Markdown file used to analyse life-history and offspring trait data associated with the accompanying dataset. The code performs data import, preprocessing, statistical analyses, and figure generation.
Software Requirements
R version:
R ≥ 4.2.0
Recommended environment:
RStudio Desktop (for knitting the R Markdown file)
R Package Requirements
We used the following CRAN packages:
tidyverse, readxl, lme4, lmerTest, glmmTMB, emmeans, car, DHARMa, performance, ggplot2, ggpubr, cowplot, FactoMineR, factoextra, sjPlot, kableExtra
Packages are loaded within the script. All packages are available from CRAN.
Data Inputs
Input data are Excel files (.xlsx).
File paths are specified directly in the R Markdown file and must be updated by the user to reflect the local location of the data files.
Required input files include life-history trait data and offspring trait data for juvenile and adult females.
Running the Code
1. Install R (≥ 4.2.0) and required packages.
2. Update file paths in R_code_life_history_25-09-24.Rmd to point to the local data files.
3. Open the R Markdown file in RStudio.
4. Run code chunks sequentially or knit the document to HTML.
- All analyses are fully scripted in a single R Markdown file.
- Results are reproducible given the same input data, R version, and package versions.
- Minor numerical differences may occur across operating systems or R versions.
For questions regarding the data or code, please refer to the associated publication and senior author Alexander Kotrschal, alexander.kotrschal@wur.nl.
Changes after May 16, 2025:
After a reader has alerted the journal that the code for the analyses was missing from the original Dryad package, we have added a file: "R_code_life_history_25-09-24.Rmd"
Alexander Kotrschal, 19.1.2026
