DOI: 10.5061/dryad.485qq
title: Data from: Coevolution drives the emergence of complex traits and promotes evolvability

description: The evolution of complex organismal traits is obvious as a historical
 fact, but the underlying causes—including the role of natural
 selection—are contested. Gould argued that a random walk from a
 necessarily simple beginning would produce the appearance of increasing
 complexity over time. Others contend that selection, including
 coevolutionary arms races, can systematically push organisms toward more
 complex traits. Methodological challenges have largely precluded
 experimental tests of these hypotheses. Using the Avida platform for
 digital evolution, we show that coevolution of hosts and parasites greatly
 increases organismal complexity relative to that otherwise achieved. As
 parasites evolve to counter the rise of resistant hosts, parasite
 populations retain a genetic record of past coevolutionary states. As a
 consequence, hosts differentially escape by performing progressively more
 complex functions. We show that coevolution's unique feedback between
 host and parasite frequencies is a key process in the evolution of
 complexity. Strikingly, the hosts evolve genomes that are also more
 phenotypically evolvable, similar to the phenomenon of contingency loci
 observed in bacterial pathogens. Because coevolution is ubiquitous in
 nature, our results support a general model whereby antagonistic
 interactions and natural selection together favor both increased
 complexity and evolvability.
description: Avida Configuration
 Files for the Original ExperimentsThis compressed archive
 contains the configuration files required to perform the original
 experiments in full. Avida is available for free from
 https://github.com/devosoft/avida/. More information can be found about
 each of these files as part of the Avida documentation at
 https://github.com/devosoft/avida/wiki/Configuration-and-Command-Reference.coevolving-complexity-config_files.zipcoevolving-complexity-originalThis file contains the time series data used to generate Figure 2 and Figure 3, as well as some additional details recorded over time. These data were summarized from several individual output files generated by Avida experiments. 1. update - The update (point in time) when this row of data was collected 2. parasite_treatment - Were parasites included in these experiments? (0/1) 3. remove_parasites - Were parasites experimentally removed? (0/1) 4. replicate - The replicate within a group of runs the data are from 5. num_parasites - The density of parasites 6. num_hosts - The density of hosts 7. average_host_nands - Number of NANDs required to perform the hosts average function, averaged across all hosts 8. host_max_task_nands - Number of NANDs required to perform the most complex host function, averaged across all hosts 9. average_number_of_host_tasks - Average number of tasks hosts perform 10. average_number_of_parasite_tasks - Average number of tasks parasites perform 11. lost_parasites - Were parasites driven extinct in this replicate? (0/1) 12. treatment - Number id that identifies the treatment (0 - Evolved, 1 - Coevolved, 2 - Cured)coevolving-complexity-equ_ancestorscoevolving-complexity-equ-distribution_detailThis file contains a breakdown of the frequency at which hosts's most complex functions require 1, 2, 3, 4, or 5 NANDs (Column named N.nand). These data are recorded much more frequently, but for an overall shorter length of time. These data were used to generate Figure S1.coevolving-complexity-dominant_genotype_landscapingThese data are used to make Figure 9 in the manuscript. It contains data generated by systematically mutating the most abundant genotype from each replicate population. Every possible point mutation is made and run through Avida to identify which tasks it now performs. That data is then summarized into the following columns: 1. Treatment - The name of the treatment genotypes came from (Evolved/Coevolved) 3. Replicate - The replicate within the treatment these data are about 4. Point_Decrease - The number of point mutations that decrease the number of tasks this genotype performs 5. Point_Increase - The number of point mutations that increase the number of tasks this genotype performs 6. Point_Neutral - The number of point mutations that change the identity of the tasks performed while keeping the number of tasks the same 7. Point_Viable - The number of point mutations that produce a viable genotype regardless of changes to phenotype 8. Point_Inviable - The number of point mutations that produce inviable genotypes 9. Dominant_Genotype - The sequence of the genotype being analyzedcoevolving-complexity-matching_phenotype_genetic_landscapingThese data specifically pair genotypes from coevolved and evolved populations performing the same exact set of tasks. These data are used to generate Figure 10. 1. ReplicateEvo - The replicate population which the evolved genotype came from 2. ReplicateCoevo - The replicate population which the coevolved genotype came from 3. MatchingPhenotype - The phenotype that was matched between the evolved and coevolved treatments 4. Point_Decrease.Evo - The number of point mutations that decrease the number of tasks this evolved genotype performs 5. Point_Increase.Evo - The number of point mutations that increase the number of tasks this evolved genotype performs 6. Point_Neutral.Evo- The number of point mutations that change the identity of the tasks performed while keeping the number of tasks the same in the evolved genotype 7. Point_Viable.Evo - The number of point mutations that produce a viable genotype regardless of changes to phenotype for the evolved genotype 8. Point_Inviable.Evo - The number of point mutations that produce an inviable genotype for the evolved genotype 9. NumUniqueReachable.Evo - The number of unique phenotypes reachable by only single point mutations from the evolved genotype 10. Point_Decrease.Coevo - The number of point mutations that decrease the number of tasks this coevolved genotype performs 11. Point_Increase.Coevo - The number of point mutations that increase the number of tasks this coevolved genotype performs 12. Point_Neutral.Coevo - The number of point mutations that change the identity of the tasks performed while keeping the number of tasks the same in the coevolved genotype 13. Point_Viable.Coevo - The number of point mutations that produce a viable genotype regardless of changes to phenotype for the coevolved genotype 14. Point_Inviable.Coevo - The number of point mutations that produce an inviable genotype for the coevolved genotype 15. NumUniqueReachable.Coevo - The number of unique phenotypes reachable by only single point mutations from the coevolved genotypecoevolving-complexity-time_to_MRCAThese data are used to generate Figure 8 in the manuscript. The MRCA is identified by essentially building the phylogenetic tree of all living Avida programs at the end of each run and identifying the first branching event. The tree is constructed using data included in the **detail** files, which are provided in the compressed files coevolving-complexity-details_and_phenotype_grids.tar.gz. These detail files record the parent/offspring relationship for every genotype alive as well as their entire line of decent. The summarized data are summarized with the following columns: 1. Treatment - Name of the treatment where these data are from (Coevolved/Evolved) 2. Replicate - The replicate population within the treatment 3. UpdateLCABorn - The update that the last common ancestor of all the organisms present at the end of the experiment (MRCA) was born 4. lost_parasites - Did this population drive parasites extinct? (0/1)coevolving-complexity-details_and_phenotype_grids.tarThis compressed archive contains raw data output from Avida that was used to generate the MRCA data above as well as part of the raw data summarized in coevolving-complexity-original.csv. The detail files were used to generate Figure 7, the phylogenetic tree of example populations, as described above. The GridDump files were used to generate the data panels of Figure 4 (E-H). A more detailed description of these data files can be found with the Avida documentation: https://github.com/devosoft/avida/wiki/PrintData-Options https://github.com/devosoft/avida/wiki/List-of-actions#DumpParasiteTaskGrid https://github.com/devosoft/avida/wiki/List-of-actions#DumpHostTaskGridcoevolving-complexity-replay_parasitesThese two files contain the same data columns as the original experiments, but here the parasite genotypes were replayed exactly from a coevolving population while hosts evolved anew to the changing but non-coevolving parasites (replay treatment). Along with coevolving-complexity-original.csv, these data were used to make Figure 5.coevolving-complexity-freeze_parasitesThese two files contain the same data columns as the original experiments, but here the parasite genotypes were either kept constant (freeze treatment) while hosts evolved anew to the changing but non-coevolving parasites (replay treatment). Along with coevolving-complexity-original.csv, these data were used to make Figure 5.coevolving-complexity-challenge-data-nandsThese data were generated through the challenge experiment, where host and parasite lineages were coevolved through successive "challenge" bouts. The following columns are contained in the csv: 1. replicate - The replicate challenge experiment 2. completed - Were all 50 rounds of challenges complete? 3. step - The round that the data row is from 4. host_phenotype - The integer phenotype for the host - computed by considering the phenotype bitstring (e.g., 10100000 = 4) 5. parasite_phenotype - The integer phenotype for the parasite 6. host_iterations - The number of iterations of generating random host populations that were required to find a succesful mutant 7. parasite_iterations - The number of iterations of generating random parasite populations that were required to find a successful mutant 8. host_sequence - The genetic sequence of the successful host 9. parasite_sequence - The genetic sequence of the successful parasite 10. host_avg_task_nands - The number of NANDs required to compute the hosts average task 11. host_max_task_nands - The number of NANDs required to compute the hosts most complex task