Project repository for complex pollen dispersal/mating using Simcoal 2 In collaboration by Kaylee Rosenberger, Sean Hoban, and Emily Schumacher
Simulations (such as those done in the Simcoal software) have been used to test seed sampling strategies used to inform botanic gardens and arboreta. These informed sampling strategies are one way of ensuring that a genetically diverse and representative sample has been collected, to be conserved for future use in restoration efforts for example. However, the simulation software Simcoal models a simplified version of mating and pollen dispersal within the population. For example, any tree in the population has equal opportunity to donate pollen to any other tree in the population. In reality, for many species, the trees closest to another will donate the majority of the pollen. Furthermore, previous seed sampling strategies tested by simulations have assumed that one seed be sampled from one maternal tree--but in reality, collectors will sample many seeds from a given tree if they are available. While it has been shown that sampling as many unique maternal trees as possible will provide the most genetically diverse collection, this is often not feasible or realistic. We aim to quanitfy the difference in genetic diversity captured using a combination of different pollen dispersal patterns and sampling techniques.
At a high level, the approach is as follows: (1) simulate populations to create a genetic dataset representing a plant species, (2) apply sampling functions to this dataset, such that we can create seeds from different pollination, seed sampler decisions etc., (3) each time we sample, compare the genetic diversity in our seed set to the total genetic diversity available, (4) compare efficiency of genetic diversity conserved among the different situations e.g. 5 seeds and 10 mothers vs. 10 seeds and 5 mothers, or skewed sampling or pollination and non skewed sampling or pollination.
Here, we simulate two hypothetical species using the software Simcoal 2–one species with a single population of size 2500 individuals, and one species with two populations each of size 2500. These hypothetical species are simple models that we use to answer our broad question and to make it applicable to many types of species. The two hypothetical species are of medium sizes and moderately rare.
To increase the complexity of mating, pollen dispersal, and seed creation that is represented in base Simcoal 2, we pass the simulation output files to a function that selects maternal trees and pollen donors and randomly selects alleles from each for seeds to inherit. In other words, the function creates seed sets from selected trees, and samples them to test different seed sampling strategies in a realistic way. The function we have written allows for many different combinations of parameters to be passed to the function–parameters include the number of maternal trees, pollen donors, and pollen donation probability. This allows for testing of many different scenarios. We define a scenario as different combinations of parameters that are passed to the function.
We created different scenarios to pass to the seed creation function. The scenarios are different combinations of paramters--parameters include the number of maternal trees collectors will sample from, the number of seeds to be sampled from each tree, the pollen donor notes, and the total seeds collected. In this project, there are three different options for pollen donation. ‘All eligible’ describes a scenario in which the number of pollen donors is equal to the number of seeds to be sampled (so if 5 seeds are being sampled on each tree, then there are 5 potential pollen donors), and each of the donors has equal probability to pollinate another tree to make a seed. ‘All same’ describes a scenario in which one father is randomly selected to pollinate every seed sampled from a given maternal tree (ie., one tree donates 100% of the pollen for another tree). ‘Skewed’ describes scenarios in which there are multiple potential pollen donors, but where one or two donate the majority of the pollen and the remaining donors have a very small chance to donate. This represents a scenario in which the ‘closest’ trees can donate more pollen (though note we have not simulated spatial structure). For ‘skewed’ scenarios, depending on the number of seeds to be sampled from each tree, the number of pollen donors and pollen donation probability varies. If 1 donor, donate 100% If 2 donors, one donates 80%, one donates 20% If 3 donors, two donate 40%, one donates 20% If 4 donors, two donate 40%, two donate 10% If 5 donors, two donate 40%, one donates 10%, and two donate 5% For 6+ donors, two donate 40%, two donate 5%, the remaining 10% is split up evenly among up to 10 others* For the ‘skewed’ scenarios, we cap the number of pollen donors at 14, such that each donor has at least a 1% chance to donate pollen.
We also incorporate two types of scenarios of seed collecting. In the first type--we implement a simple approach where an equal number of seeds are sampled from every tree. Though this is a simplified version of reality, so we implement another approach where the number of seeds sampled from each tree varies. These scenarios representing a seed collector taking many seeds from one tree, and taking fewer from other trees. In reality, some trees in a population have very high reproductive output, while others only make a few seeds.
Simulations: contains simulation parameter files representing a hypothetical species
one_pop_2500: files represent a hypothetical species with one population of size 2500
two_pop_2500: files represent a hypothetical species with two populations each of size 2500
R-scripts: contains R scripts used for data importing and processing, and sampling scripts
functions.R: this script defines the functions used in the main loop script. There are multiple functions--some import and convert data into more usable file types (genalex). The main function in this loop (sample_seed) imports a genetic data and creates new seed sets. The number of pollen donors, number of seeds sampled per tree, and number of trees to sample from are taken as function parameters, making the inputs highly customizable.
parameters.R: this script makes lists that containing sets of function parameters to be passed to the sample_seed function.
main_loop.R: this script loops over simulation replicates and calls the functions defined in the functions.R script to run the functions with varying inputs, defined in parameters.R
Figures: contains figures and plots created in R with ggplot, or in the free software Inkscape