Fluctuations in Evolutionary Integration Allow for Big Brains and Disparate Faces

In theory, evolutionary modularity allows anatomical structures to respond differently to selective regimes, thus promoting morphological diversification. These differences can then influence the rate and direction of phenotypic evolution among structures. Here we use geometric morphometrics and phenotypic matrix statistics to compare rates of craniofacial evolution and estimate evolvability in the face and braincase modules of a clade of teleost fishes (Gymnotiformes) and a clade of mammals (Carnivora), both of which exhibit substantial craniofacial diversity. We find that the face and braincase regions of both clades display different degrees of integration. We find that the face and braincase evolve at similar rates in Gymnotiformes and the reverse in Carnivora with the braincase evolving twice as fast as the face. Estimates of evolvability and constraints in these modules suggest differential responses to selection arising from fluctuations in phylogenetic integration, thus influencing differential rates of skull-shape evolution in these two clades.

Frontal point in the sutura incisivomaxillaris at level of dentary row 4 Point behind canine on dentary 5 Point below the lacrimal foramen at level of dentary row 6 Posterior point of dentary row 7 Lacrimal foramen 8 Tip of the supraorbital process 9 Jugal/squamosal suture 10 Tip of mastoid process 11 Posterior point of typanic bulla 12 Superior point of the occipital condyle 13 Most posterior point of sagittal crest 14 Intersection between sutura coronalis, sutura sagittalis, and sutura interfrontali 15 Frontal DataOnly <-setdiff(rownames(Car_data), Car_tree$tip.label) DataOnly # Enter to see what species are in the data set but not the tree.
# In our case, we have overlap issues in both directions. Because we have data for fewer taxa than we have in our phylogeny, let's first prune our tree to just those species in the tree that were also measured before proceeding further.
# We'll prune the tree using drop.tip. We need to give it our tree, and a list of species to prune. We'll use the TreeOnly list of species names we just made to prune these species from the tree.
# In our case, we have overlap issues in both directions. Because we have data for fewer taxa than we have in our phylogeny, let's first prune our tree to just those species in the tree that were also measured before proceeding further.
# We'll prune the tree using drop.tip. We need to give it our tree, and a list of species to prune. We'll use the TreeOnly list of species names we just made to prune these species from the tree.