DOI: 10.5061/dryad.69p8cz98j
title: Heterozygote advantage can explain the extraordinary diversity of immune genes

description: The majority of highly polymorphic genes are related to immune functions
 and with over 100 alleles within a population, genes of the major
 histocompatibility complex (MHC) are the most polymorphic loci in
 vertebrates. How such extraordinary polymorphism arose and is maintained
 is controversial. One possibility is heterozygote advantage (HA), which
 can in principle maintain any number of alleles, but biologically explicit
 models based on this mechanism have so far failed to reliably predict the
 coexistence of significantly more than ten alleles. We here present an
 eco-evolutionary model showing that under HA evolution can result in the
 emergence and maintenance of more than 100 alleles if the following two
 assumptions are fulfilled: first, pathogens are lethal in the absence of
 an appropriate immune defense; second, the combined effect of multiple
 pathogens on host survival exceeds the sum of the effects of each pathogen
 alone. Thus, our results show that HA can be a more potent force in
 explaining the extraordinary polymorphism found at MHC loci than currently
 recognized.
description: MATLAB script used for individual-based simulation presented in
 the main paper. This script simulates a
 diploid Wright-Fisher model with mutation and selection to study the
 evolutionary dynamics of allelic values x for both the Gaussian and the
 bit-string model. It considers a diploid population of fixed size N with
 non-overlapping generations and random mating. Individuals produce a large
 number of offspring, independent of their genotype, resulting in
 deterministic Hardy-Weinberg proportions before viability selection. After
 viability selection (based on Equation 5 from the main paper), which
 adjusts the proportion of genotypes, stochasticity is introduced via
 random multinomial sampling of N surviving offspring to form the next
 generation's adult population. This model tracks the fate of
 recurrent mutations occurring with a per-capita mutation probability
 mu.
description: # Heterozygote advantage can explain the extraordinary diversity of immune
 genes MATLAB script used
 for individual based simulation presented in the main paper. This script
 simulates a diploid Wright-Fisher model with mutation and selection to
 study the evolutionary dynamics of allelic values x for both the Gaussian
 and the bit-string model. It considers a diploid population of fixed size
 N with non-overlapping generations and random mating. Individuals produce
 a large number of offspring, independent of their genotype, resulting in
 deterministic Hardy-Weinberg proportions before viability selection. After
 viability selection (based on Equation 5 from the main paper), which
 adjusts the proportion of genotypes, stochasticity is introduced via
 random multinomial sampling of N surviving offspring to form the next
 generation's adult population. This model tracks the fate of
 recurrent mutations occurring with a per-capita mutation probability mu.
 ## Workflow Run the `MHC_sim_Dryad.m` file with MATLAB (version 2022b or
 later), according to one of the following three alternatives ### 1) Run
 `MHC_sim_Dryad` file without input arguments Defaults to
 simulating the Gaussian model with predefined parameter settings*. ### 2)
 Run with chosen model `MHC_sim_Dryad(bit)` Runs the simulation
 for the Gaussian model if `bit=false`, and for the bit-string model if
 `bit=true`, using predefined parameter settings*. ### 3) Run Gaussian
 model with specified parameters `MHC_sim_Dryad(false,m,vir,K)` 
 Runs the Gaussian model simulation with specified parameters: | | |
 \*default value | | ----- | --------------------------------- |
 --------------- | | `m` | number of pathogens | 8 | | `vir` | virulence |
 20 | | `K` | survival half-saturation constant | 0.5 | ### 4) Run
 bit-string model with specified parameters
 `MHC_sim_Dryad(true,m,vir,K)` Runs the bit-string model
 simulation with specified parameters, where: | | | \*default value | |
 ------ | --------------------------------- | --------------- | | `m` |
 number of pathogens | 100 | | `vir` | virulence | 9 | | `K` | survival
 half-saturation constant | 1 | | `npep` | number of peptides per pathogen
 | 5 |