Skip to content

TomMakesThings/Phylogenetic-Tree-Inference

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 

Repository files navigation

Phylogenetic Tree Inference

🟠🟠🟠 Code by TomMakesThings 🟠🟠🟠

April 2022


About

This Jupyter notebook contains code to find the optimal mutation rate and single nucleotide polymorphism (SNP) assignments of a hypothetical evolutionary tree through applying the Jukes-Cantor model and Felsenstein’s algorithm.

The Evolutionary Tree

Evolutionary trees are a type of directed acyclic graph encapsulating an evolutionary process over time. For example, the binary tree below is a model of DNA sequence evolution. Each internal node represents an ancestor with two descendants, the branch length between them represents time and leaf node represents the terminal taxa, i.e. the most recent descendant for which an SNP is known.

Jukes-Cantor and Felsenstein’s Pruning Algorithm

The Jukes-Cantor model is Markov model of DNA sequence evolution used when calculating the likelihood of a phylogenetic tree. It assumes that the mutation rate $\mu$ is equal and that the substitution of a base with another occurs with equal probability, i.e. each element in $\pi = (\pi_{A} = \pi_{C} = \pi_{T} = \pi_{G})$ equals $\frac{1}{4}$. Felsenstein’s pruning algorithm is a dynamic programming algorithm that computes the likelihood $\mathcal{L}$ of an evolutionary tree from sequence data. Combining the Jukes-Cantor model with Felsenstein’s pruning algorithm provides a quantive method for assessing the optimal mutation rate and/or likelihood of SNP assignment for terminal taxa.

About

Inferring likelihood and mutation rate of an evolutionary tree through the Jukes-Cantor model and Felsenstein’s algorithm

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published