PAML activities

expected learning outcomes

The objective of this activity is to help you understand how to use different codon models, and how to test for selection using PAML, and specifically the CODEML program.

Here are the slides for the PAML learning activity: Demo.pdf.

Here is a copy of the book chapter that accompanies these exercises: Book_Chapter.pdf.

exercise 1

The objective of this activity is to use CODEML to evaluate the likelihood of the GstD1 sequences for a variety of ω values. Plot log-likelihood scores against the values of ω and determine the maximum likelihood estimate of ω. Check your finding by running CODEML’s hill-climbing algorithm.

  1. Find the files for exercise 1 on the workshop web-site (ex1_codeml.ctl, ex1_seqfile.txt) and familiarize yourself with them. Pay close attention to the modified control file called ex1_codeml.ctl. When you are ready to run CODEML, delete the ex1_ prefix from the control file and the seq file (e.g., the control file must be called codeml.ctl).
  2. Create a directory where you want your results to go, and place all your files within it. Now open a terminal, move to the directory that contains your files, and run CODEML.
  3. Familiarize yourself with the results (ex1_HelpFile.pdf). If you have not edited the control file the results will be written to a file called results.txt. Identify the line within the results file that gives the likelihood score for the example dataset.
  4. Now change the control files and re-run CODEML. The objective is to compute the likelihood of the example dataset given a fixed value of omega.
    1. Change the name of your result file (via outfile= in the control file) or you will overwrite your previous results!
    2. Change the fixed value for omega by changing the value for omega= in the control file. The values for this exercise are provided as comments at the bottom of the example control file that has been provided to you.
  5. Repeat step 4 for each value of omega given in the comments of the example control file.
  6. Use your favorite spread sheet or statistical package to plot the likelihood score (y-axis) against the fixed value for omega (x-axis). Use a logarithmic scale for the x-axis (do not transform omega). Your figure should look something like this: FigE1.pdf.
  7. From the plot, try to guess the value of omega that will maximize the likelihood score (i.e., the MLE).
  8. Now change the control file so that CODEML will use its hill-climbing algorithm to find the MLE; set fix_omega=0 in the control file. Compare the result to your guess from step 7.

exercise 2

In this exercise you will investigate the sensitivity of your estimate of ω to the transition/transversion ratio (κ), and to the assumed model for codon frequencies (πi’s). After you collect the required data you will determine which assumptions yield the largest and smallest values of S, and what is the effect on ω.

  1. Find the files for Exercise 2 on the workshop web-site (ex2_codeml.ctl, ex2_seqfile.txt) and familiarize yourself with them. It would be best to create a new directory for exercise 2.
  2. Run CODEML using the settings in the control file for exercise 2. Familiarize yourself with the results (ex2_HelpFile.pdf). In addition to the likelihood score you must be able to identify the part of the result file that provides estimates of the following:
    1. Number of synonymous or nonsynonymous sites (S and N)
    2. Synonymous and nonsynonymous rates (dS and dN)
  3. As in exercise 1, you will need to change the control files and re-run CODEML. The objective is to compute the likelihood of the example dataset under different model assumptions. To do this you must:
    1. Change the name of the main result file (via outfile= in the control file) or you will overwrite your previous results
    2. Change the model assumptions about codon frequencies (via CodonFreq=) and kappa (via kappa= and fix_kappa=).
  4. Repeat step 3 for each set of assumptions about codon frequencies and kappa given as comments at the bottom of the example control file.
  5. In your favorite spreadsheet program create a table like “Table E2” in the slides (TableE2.pdf) and fill it in with your results.
  6. Use your table to determine which assumptions yield the largest and smallest values of S. What is the effect on omega?

exercise 3

The objective of this exercise is to use three LRTs to evaluate the following hypotheses: (1) the mutation rate of Ldh-C has increased relative to Ldh-A, (2) a burst of positive selection for functional divergence occurred following the duplication event that gave rise to Ldh-C, and (3) there was a long term shift in selective constraints following the duplication event that gave rise to Ldh-C.

  1. Obtain the files for Exercise 3 from the course web-site (ex3_codeml.ctl, ex3_seqfile.txttreeH0.txttreeH1.txttreeH2.txttreeH3.txt). The tree files represent different hypotheses denoted H0, H1, H2 & H3 (LDH_tree.pdf). These hypotheses represent the following concepts:
    1. H0: homogeneous selection pressure over the tree.
    2. H1: episodic change in selection pressure in Ldh-C (only in the branch that immediately follows the gene duplication event).
    3. H2: Long term shift in selection pressure in Ldh-C only; Ldh-C has a permanent change in selection pressure (as compared to its ancestors) whereas Ldh-A remains subject to the ancestral level of selection pressure.
    4. H3: Long term shift in selection on both Ldh-C and Ldh-A; those lineages are subject to selection pressures different from each other and from the ancestor.
  2. Run CODEML using the settings in the control file for Exercise 3. Familiarize yourself with the results (ex3_HelpFile.pdf). In addition to the likelihood score you must be able to identify the branch-specific estimates of the omega parameter. (In the first run, the branch specific values for omega will all be the same. In later runs there will be differences among some branches).
  3. As in the previous exercises, you will need to change the control files and re-run CODEML. The objective is to compute the likelihood, and estimate omega parameters, under different models of how selection pressure changes in different parts of the tree. Because the relevant model information is contained in the tree file, you will need several tree files (obtained from the course web site) and change the control file so that it reads the different tree files.
    1. As always, you should change the name of the main result file (via outfile= in the control file) or you will overwrite your previous results.
    2. Change the model assumptions about branch specific omega values by changing the tree files (via treefile= and model=) set within the control file.
  4. Repeat step 3 for each of the four tree files that have been provided to you. Again, keep track of your results by using a table like “Table E3” shown in the slides (TableE3.pdf). In addition, carry out likelihood ratio tests (LRT) of the hypotheses below. Use 1 degree of freedom for each LRT. Helpful: Chi-Square Calculator.
    1. H0 vs. H1
    2. H0 vs. H2
    3. H2 vs. H3

exercise 4

The objective of this exercise is to use a series of LRTs to test for sites evolving under positive selection in the nef gene. If you find significant evidence for positive selection, then identify the involved sites by using empirical Bayes methods.

  1. Obtain all the files for exercise 4 from the course website (ex4_codeml.ctl, ex4_seqfile.txt, treeM0.txt, treeM1.txt, treeM2.txt, treeM3.txt, treeM7.txt, treeM8.txt).
  2. If you plan to run two or more models at the same time, then create a separate directory for each run and place a sequence file, control file and tree file in each one.
  3. As in all the previous exercises, you will need to change the control file and re-run CODEML several times. In this case you will be fitting six different codon models (M0, M1a, M2a, M3, M7 & M8) to the example dataset.
    1. If you are running your analyses sequentially in the same directory, then you should change the name of the main result file (via outfile= in the control file) or you will overwrite your previous results.
    2. Set the tree file with treefile=. I have supplied tree files pre-loaded with the ML branch lengths for each model (hence you need to set a different tree for each model). This will greatly speed up your analyses, giving you more “beer time”. See the example control file for more details about treefile names.
    3. Set the codon model with NSsites=.
    4. Fix the value of kappa at the ML estimate with kappa=. Again, this will help speed up the analysis. See the control file for the value of kappa for each model.
    5. For some models you will also need to set the number of categories (ncatG) in the omega distribution:
      • For M3 set ncatG=3
      • For M7 set ncatG=10
      • For M8 set ncatG=10
    6. Once the analysis is complete, rename the rst file because subsequent runs will overwrite it!
    7. Repeat steps a. through f. for each of the six codon models listed above.
  4. Keep track of your results (ex4_HelpFile.pdf) by using a table like “Table E4” shown in the slides (TableE4.pdf).
  5. In addition, carry out the following likelihood ratio tests:
    1. M0 vs. M3 (4 degrees of freedom)
    2. M1a vs. M2a (2 degrees of freedom)
    3. M7 vs. M8 (2 degrees of freedom)
  6. Lastly, open the rst file generated when you ran model M3 (ex4_rst_HelpFile.pdf). Locate the columns of posterior probabilities for each site under the three site-categories of this model. Use these data to reproduce the plot shown in the slides.