11.0 Adding the Model class

(Linux version)

< 10.0 | 11.0 | 11.1 >

In this part we add a Model class to handle the tedium associated with informing BeagleLib of the details of the substitution model. The Eigen library is used to manage calculation of transition probability matrices.

The only substitution model we’ve implemented thus far has been the JC69 model. The only parameters of this model are edge lengths, and thus it does not model even the most basic aspects of molecular evolution, such as transition/transversion bias and unequal base frequencies. Furthermore, the JC69 model we used assumed that substitution rates were equal across sites and thus did not accommodate among-site rate heterogeneity. This section introduces the standard GTR+I+G model, which can handle among-site rate heterogeneity, unequal nucleotide frequencies, and unequal exchangeabilities (including transition/transversion bias) as well as a codon model that takes into account unequal codon frequencies and the nonsysnonymous/synonymous rate ratio. While our program can read in protein and standard discrete morphological data, this tutorial does not explicitly detail how to calculate likelihoods under those models; however, implementing GTR+I+G and a codon model illustrates enough of the complexity that you should be able to implement other models on your own.

Step Title Description
Step 11.1 Specifying a model

How the user will specify a partitioned model.

Step 11.2 The Model class

Create the Model class

Step 11.3 The QMatrix class

Create the QMatrix, QMatrixNucleotide, and QMatrixCodon classes

Step 11.4 The ASRV class

Create the ASRV class

Step 11.5 Adding the Model to the Likelihood class

Connect the Model class to the Likelihood class.

Step 11.6 Test the Model class

Add program options to specify the model and test the Model class.

< 10.0 | 11.0 | 11.1 >