Data for: Limited genomic predictability of complex trait evolution despite genotype-phenotype stability
Data files
Sep 28, 2026 version files 5.74 GB
-
BaselinePigment.csv
1.19 KB
-
full_pigmentation.csv
220.25 KB
-
orch2021_Baseline_Downsampled_Filtered_Mean.RData
17.73 MB
-
orch2021_Downsampled_META_Filtered.RData
3.90 GB
-
orch2021.PigTraitMap_META.RData
1.60 GB
-
Orchard2021_Founders_PigmentationScores.csv
1.47 KB
-
PTM.HAFFreqs.csv
219.74 MB
-
README.md
10.84 KB
-
seasonal_inbred_HL_darkP_manualScores.csv
76.68 KB
-
TraitMappingClasses.csv
113 B
Abstract
The extent to which adaptation can be predicted, particularly for traits with complex genetic bases, is unknown. We leveraged a model complex trait (abdominal pigmentation), a model species (Drosophila melanogaster), and a longitudinal sampling design to test the efficacy of genomic prediction of complex trait variation and evolution in an ecologically relevant setting. We monitored genome-wide allele frequencies and pigmentation variation in genetically diverse populations of D. melanogaster across seven generations of evolution in both field mesocosms exposed to natural environmental fluctuations and mesocosms housed in a controlled, lab-based setting. At two time points throughout trait evolution, we conducted a high-powered, tail-based mapping of pigmentation, producing a well-resolved genotype-phenotype map that reaffirms canonical pigmentation genes and unveils novel loci. While we were able to use this map to correctly infer the direction of pigmentation evolution in both the field and lab mesocosms, the particular loci responding to selection, and thus the architecture of adaptation itself, were largely unpredictable. We suggest this unpredictability to be a result of pleiotropic constraint and genotype-by-environment interactions, which were more pronounced in the field mesocosm, relative to the lab-based environment. Finally, we quantified a striking stability of the genotype-phenotype map across genetically diverged populations, demonstrating that shifting epistatic landscapes throughout the evolutionary process did not alter trait architecture to a degree that precluded phenotypic prediction among independent populations. In concert, our results highlight both the promise and limitations of genomic prediction, and exemplify the challenges of extrapolating from lab-based studies of complex traits to their evolutionary dynamics in the wild.
Dataset DOI: 10.5061/dryad.pnvx0k73t
Description of the data and file structure
Populations of Drosophila melanogaster were raised in outdoor and indoor cages for ten weeks. The populations were composed of 76 inbred lines that were allowed to interbreed and mix for three generations prior to cage seeding. Individuals from each of the 76 inbred lines were phenotyped for abdominal pigmentation, and the means of those are recorded in "Orchard2021_Founders_PigmentationScores.csv". The individual pigmentation measurements of single flies from these lines and others not included in the experiment are recorded in "seasonal_inbred_HL_darkP_manualScores.csv". If the individual measurements of the lines used in the cage experiments are desired, filter seasonal_inbred_HL_darkP_manualScores.csv to only contain lines from Orchard2021_Founders_PigmentationScores.csv. Pigmentation scores are for tergites 5, 6, and 7, and range between 0 and 30, with 0 being no melanization on any of the three tergites and 30 being maximum melanization on all three. Each tergite is scored from 0 to 10, depending on the proportion of the tergite with melanization, and then the scores of all three are summed. Additionally, flies were both phenotyped and genotyped at "baseline", the population just before cage seeding (after the initial three generations of outbreeding). The pigmentation scores reside in "BaselinePigment.csv" and the mean allele frequency measurements for each SNP are in "orch2021_Baseline_Downsampled_Filtered_Mean.RData"
At week four and week ten (denoted timepoint 2 (TP2) and timepoint 8 (TP8) in the data, respectively), samples of eggs were taken from both outdoor and indoor cages (denoted as experimental (E) and indoor (I) respectively) and then the flies were allowed to grow in a common garden for two generations before they were separated into fractions of the darkest 15%, the lightest 15% and a midpoint fraction. The pigmentation score cutoffs for each of these fractions is reported in "TraitMappingClasses.csv". Full detailed pigmentation scores of various numbers of individuals at each timepoint (not just 2 and 8, but also other weeks in between) are in "full_pigmentation.csv". We sequenced each fraction from each cage from each treatment (outdoor or indoor, E or I respectively) at each timepoint (week four and ten, timepoints 2 and 8 respectively) and the allele frequencies, coverage, and sample info are stored in "orch2021.PigTraitMap_META.RData". The allele frequencies were imputed by HAFpipe, and the haplotype frequencies estimated by harp as a part of that (and used in our ancestry correction GLM) are in "PTM.HAFFreqs.csv".
While in this pigmentation mapping study we only took large samples at timepoints 2 and 8, this was part of a larger study that aimed to study seasonal adaptation more generally. As part of this, there were samples taken weekly from week 3 through 14 (timepoints 1 through 12). In this study, we used those to see if our mapping could predict seasonal evolution. The allele frequencies, coverage, and sample info live in "orch2021_Downsampled_META_Filtered.RData"
Files and variables
File: orch2021_Baseline_Downsampled_Filtered_Mean.RData
Description: This RData file contains the initial allele frequencies in the "baseline" population before cage seeding.
afmat.base.mean: mean allele frequency (across 4 baseline populations)
One column "afmat.base.mean", which is the mean allele frequency per SNP
eec.base.mean: mean coverage (across 4 baseline populations)
One column "eec.base.mean", which is the chromosome-wide mean coverage, expanded and applied to every SNP on the chromosome
sites.base: position data for the rows of afmat.base.mean
2 columns -- "chrom", which is the chromosome of the SNP, and "pos" which is the position in release 5. Directly corresponds to the rows of afmat.base.mean and can be used to index it.
File: orch2021.PigTraitMap_META.RData
Description: This RData file contains the allele frequencies and other data from sequencing. There are four dataframes: afmat, eec, sites, and samps
afmat: contains allele frequencies
130 columns, each named with the full sample name (can be found in the full.sample.name column of the samps dataframe). Contains the allele frequency of SNPs (each row is a SNP) in the respective sample.
sites: position data for the rows of afmat
2 columns -- "chrom", which is the chromosome of the SNP, and "pos" which is the position in release 5. Directly corresponds to the rows of afmat and can be used to index it.
eec: per chromosome coverage, expanded into a matrix where every SNP in every sample has a value
130 columns, one per each sample, although each has "_downsamped" appended to the full sample name. The values are all from a per chromosome coverage value -- it's just been applied to every SNP on that chromosome for each sample.
- samps: sample info for each of the 130 samples (10 are technical replicates)
- full.sample.name: the full name of the sample, the name used as a column name for afmat
- samp: the experimental sample that this data is from (there are some technical replicates)
- rep: is this a technical replicate? either NA or "yes"
- tpt: either 2 or 8 (week 4 or week 10)
- cage: cage number
- replicate: just a blank column, sorry
- treatment: either "E" or "I" (outdoor or indoor)
- pig.class: pigment fraction, either "D" (dark), "M" (midpoint), or "L" (light)
File: orch2021_Downsampled_META_Filtered.RData
Description: This RData file contains the allele frequency and other sequencing information about samples taken from the outdoor (E) cages or indoor (I) cages throughout the season. The PigMap data is only timepoints 2 and 8, but this RData file contains allele frequencies taken from the cages from timepoints 1 - 12. (additionally, there are pesticide (P) cages in these data, even though these were for a different study).
afmat: contains allele frequencies
318 columns, each named with the full sample name (can be found in the full.sample.name column of the samps dataframe). Contains the allele frequency of SNPs (each row is a SNP) in the respective sample.
sites: position data for the rows of afmat
2 columns -- "chrom", which is the chromosome of the SNP, and "pos" which is the position in release 5. Directly corresponds to the rows of afmat and can be used to index it.
eec: per chromosome coverage, expanded into a matrix where every SNP in every sample has a value
318 columns, one per each sample, also named with the full sample name. The values are all from a per chromosome coverage value -- it's just been applied to every SNP on that chromosome for each sample.
samps: sample info
full.sample.name: the full name of the sample, the name used as a column name for afmat
sample: the experimental sample that this data is from (there are some technical replicates)
cage: cage number
tpt: timepoint that sample was collected (integer)
treatment: either E (outdoor), I (indoor), or P (pesticide)
biol.rep: is the sample a biological replicate or not -- either "No" or "Yes"
tech.rep: is the sample a technical replicate or not -- either "No" or "Yes"
File: PTM.HAFFreqs.csv
Description: Haplotype frequencies for the trait mapping samples (those collected at timepoints 2 and 8). The haplotype frequencies are imputed in windows, the size of which is dependent on the number of generations that have elapsed.
Variables
- sample: Sample name -- an example is "TP2.E1.D" -- it goes timepoint (TP2 or TP8) [.] then treatment (E or I), cage number (in this case, 1) [.] color fraction (D for dark, L for light, M for midpoint)
- chrom: chromosome
- start.pos: position of the start of the window (in release 5)
- end.pos: position of the end of the window (in release 5)
- All other columns are named for one of the initial lines of the study, and the value is the frequency of the haplotype originating from that line in the window.
File: full_pigmentation.csv
Description:
Variables
- [empty] : the R row number
- Rand_ID: the random cage ID provided to the scorer for the purposes of blind scoring
- Indivudal: the individual fly number within the cage
- T5: tergite 5 score (from 0 to 10, 0 being no melanization and 10 being completely melanized)
- T6: tergite 6 score (from 0 to 10, 0 being no melanization and 10 being completely melanized)
- T7: tergite 7 score (from 0 to 10, 0 being no melanization and 10 being completely melanized)
- Sum: total pigmentation score (the sum of T5, T6, T7)
- Label: Another ID from scoring
- TP: The string "TP" from splitting up the sample name
- Treatment: Either E (outdoor) or I (indoor)
- Cage: cage number
- Sample: full sample name
- Experimenter: Scorer name
File: Orchard2021_Founders_PigmentationScores.csv
Description:
Variables
- Line: Inbred line ID
- PigmentationScore: Mean pigmentation score of the inbred line individuals that were phenotyped (3 per line)
File: BaselinePigment.csv
Description:
Variables
- T5: tergite 5 score (from 0 to 10, 0 being no melanization and 10 being completely melanized)
- T6: tergite 6 score (from 0 to 10, 0 being no melanization and 10 being completely melanized)
- T7: tergite 7 score (from 0 to 10, 0 being no melanization and 10 being completely melanized)
- Sum: total pigmentation score (the sum of T5, T6, T7)
- Observer: Scorer name
File: TraitMappingClasses.csv
Description:
Variables
- Tpt: timepoint of sampling, either TP2 (week four) or TP8 (week 10)
- Treatment: Either E (outdoor) or I (indoor)
- Dark: Cutoff score for dark fraction -- score must be this or above to be "dark"
- Light: Cutoff score for light fraction -- score must be this or above to be "light"
- Midpoint: Cutoff scores for midpoint fraction -- score must be between these two values -- they are in the format "X and Y"
File: seasonal_inbred_HL_darkP_manualScores.csv
Description:
Variables
- genotype: inbred line ID
- replicate: replicate number
- img: image name associated with line (not included in this study -- for another machine learning application)
- part: what part of the fly is being scored -- formatted as "tergite_2", "tergite_5", etc.
- dark_proportion: a machine learning readout for the proportion of the tergite covered in dark pigmentation (not relevant for this study)
- manual_score: The score (from 0 to 10) assigned by a scorer, judging by eye
Code/software
R is needed to view the R data files. I used R 4.2 throughout, and tidyverse is necessary. Scripts are housed in a separate github repository.
