State frequencies (e.g. nucleotide equilibrium relative frequencies), exchangeabilities (the relative rates for different types of substitution in the GTR model), and subset relative rates differ from other parameters in being both multivariate and constrained (one cannot update them individually because a change to any one of them necessarily forces at least one other one to change).
This part of the tutorial introduces a focussed Dirichlet approach to updating these kinds of model parameters. We will first create a base class (DirichletUpdater
) and then create 3 derived classes (StateFrequencyUpdater
, GTRExchangeabilityUpdater
, and SubsetRelRateUpdater
) that modify only the parts of the base class that are specific to the particular parameter that they manage.
We also create PinvarUpdater
and OmegaUpdater
to handle univariate parameter updates of the proportion of invariable sites and the nonsynonymous-synonymous rate ratio, respectively.
At the conclusion of this part, you will have a program that updates state frequencies, exchangeabilities, omega, pinvar, the gamma rate variance parameter, and subset relative rates as it carries out its Markov chain Monte Carlo simulation. The only remaining updaters needed will modify tree topology and edge lengths.
Step | Title | Description |
Step 16.1 | The Dirichlet Updater Base Class | Create a base class for StateFreqUpdater, ExchangeabilityUpdater, and SubsetRelRateUpdater. |
Step 16.2 | The StateFreqUpdater Class | Create the derived class StateFreqUpdater from the base class DirichletUpdater. |
Step 16.3 | The ExchangeabilityUpdater Class | Create the derived class ExchangeabilityUpdater from the base class DirichletUpdater. |
Step 16.4 | The SubsetRelRateUpdater Class | Create the derived class SubsetRelRateUpdater from the base class DirichletUpdater. |
Step 16.5 | The PinvarUpdater and OmegaUpdater Classes | Create the derived classes PinvarUpdater and OmegaUpdater from the base class Updater. |
Step 16.6 | Test the New Updaters | Perform MCMC analyses that test all of the new Updater-derived classes. |