April Wright
08.09.2018
-Tell homology from convergence
-Trace the origins of structures
-Taxonomy
-Taxonomy
library(phytools)
tree <- pbtree(n = 5)
plot(tree, cex = 3.5, no.margin = TRUE, edge.width = 1.5)
tree$tip.label
[1] "t1" "t2" "t3" "t4" "t5"
Tip: What we are putting on the tree. May be species, individuals, or higher-order taxa. May be called terminal node, leaf, one degree node. Access in R: tree$tip.label
library(phytools)
tree <- pbtree(n = 5)
#plot(tree, cex = 3.5, no.margin = TRUE, edge.width = 1.5)
tree$edge
[,1] [,2]
[1,] 6 1
[2,] 6 7
[3,] 7 8
[4,] 8 2
[5,] 8 3
[6,] 7 9
[7,] 9 4
[8,] 9 5
Branch: What connects the tip to the tree. Can have a variety of units, which we will discuss over the next few days. May be called edge. Access in R: tree$edge
library(phytools)
tree <- pbtree(n = 5)
plot(tree, cex = 3.5, no.margin = TRUE, edge.width = 1.5)
nodelabels()
Node: Where nodes meet, implying a most recent common ancestor.
May be called vertex, or three-degree node.
library(ape)
tree <- pbtree(n = 5)
#plot(tree, cex = 3.5, no.margin = TRUE, edge.width = 1.5)
#nodelabels(cex=3.5)
tree$Nnode
[1] 4
getMRCA(tree, c("t1", "t2"))
[1] 6
Node: Where nodes meet, implying a most recent common ancestor. May be called vertex, or three-degree node.
plot(tree, cex = 3.5, no.margin = TRUE, edge.width = 1.5, direction = "downwards")
plot(tree, cex = 3.5, no.margin = TRUE, edge.width = 1.5, type="fan")
plot(tree, cex = 3.5, no.margin = TRUE, edge.width = 1.5)
nodelabels(cex = 3.5)
rotateNodes(tree, c(7, 8))
Phylogenetic tree with 5 tips and 4 internal nodes.
Tip labels:
[1] "t1" "t5" "t4" "t2" "t3"
Rooted; includes branch lengths.
plot(tree, cex = 3.5, no.margin = TRUE, edge.width = 1.5)
is.monophyletic(tree, c("t1", "t2"), plot = TRUE, edge.width = 1.5, cex = 3.5, no.margin = TRUE)
[1] FALSE
# reroot(tree, node.number)
plot(tree, cex = 3.5, no.margin = TRUE, edge.width = 1.5)
Ingroup: Taxa of interest
Outgroup: Taxon closely related used to root the tree
unroot_tree <- unroot(tree)
plot(unroot_tree, cex = 3.5, no.margin = TRUE, edge.width = 1.5)
library(alignfigR)
char_data <- read_alignment("../extdata/bears_fasta.fa")
char_data[1:3]
$Agriarctos_spp
[1] "?" "0" "?" "?" "?" "?" "?" "?" "?" "?" "?" "?" "?" "?" "?" "?" "0"
[18] "0" "0" "1" "1" "1" "1" "0" "0" "1" "?" "1" "1" "?" "0" "1" "1" "1"
[35] "1" "0" "1" "1" "0" "?" "?" "0" "1" "1" "1" "0" "?" "?" "?" "?" "?"
[52] "?" "?" "?" "?" "?" "?" "?" "?" "?" "?" "?"
$Ailurarctos_lufengensis
[1] "?" "0" "?" "?" "?" "?" "?" "?" "?" "?" "?" "?" "?" "?" "?" "?" "?"
[18] "0" "0" "1" "1" "1" "1" "0" "1" "1" "?" "1" "1" "?" "0" "?" "?" "?"
[35] "?" "0" "1" "1" "1" "?" "0" "0" "1" "1" "1" "0" "1" "0" "1" "1" "0"
[52] "1" "1" "?" "?" "?" "?" "?" "?" "?" "?" "?"
$Ailuropoda_melanoleuca
[1] "1" "0" "1" "1" "1" "1" "0" "1" "1" "0" "1" "0" "0" "1" "0" "0" "0"
[18] "0" "0" "1" "1" "1" "1" "0" "1" "0" "1" "1" "1" "0" "0" "1" "0" "1"
[35] "0" "0" "1" "1" "0" "0" "0" "0" "1" "1" "1" "0" "1" "0" "0" "1" "0"
[52] "1" "1" "0" "0" "0" "1" "0" "0" "0" "1" "0"
char_data[1:3]
$Agriarctos_spp
[1] "?" "0" "?" "?" "?" "?" "?" "?" "?" "?" "?" "?" "?" "?" "?" "?" "0"
[18] "0" "0" "1" "1" "1" "1" "0" "0" "1" "?" "1" "1" "?" "0" "1" "1" "1"
[35] "1" "0" "1" "1" "0" "?" "?" "0" "1" "1" "1" "0" "?" "?" "?" "?" "?"
[52] "?" "?" "?" "?" "?" "?" "?" "?" "?" "?" "?"
$Ailurarctos_lufengensis
[1] "?" "0" "?" "?" "?" "?" "?" "?" "?" "?" "?" "?" "?" "?" "?" "?" "?"
[18] "0" "0" "1" "1" "1" "1" "0" "1" "1" "?" "1" "1" "?" "0" "?" "?" "?"
[35] "?" "0" "1" "1" "1" "?" "0" "0" "1" "1" "1" "0" "1" "0" "1" "1" "0"
[52] "1" "1" "?" "?" "?" "?" "?" "?" "?" "?" "?"
$Ailuropoda_melanoleuca
[1] "1" "0" "1" "1" "1" "1" "0" "1" "1" "0" "1" "0" "0" "1" "0" "0" "0"
[18] "0" "0" "1" "1" "1" "1" "0" "1" "0" "1" "1" "1" "0" "0" "1" "0" "1"
[35] "0" "0" "1" "1" "0" "0" "0" "0" "1" "1" "1" "0" "1" "0" "0" "1" "0"
[52] "1" "1" "0" "0" "0" "1" "0" "0" "0" "1" "0"
These data are binary
char_data[1:3]
$Agriarctos_spp
[1] "?" "0" "?" "?" "?" "?" "?" "?" "?" "?" "?" "?" "?" "?" "?" "?" "0"
[18] "0" "0" "1" "1" "1" "1" "0" "0" "1" "?" "1" "1" "?" "0" "1" "1" "1"
[35] "1" "0" "1" "1" "0" "?" "?" "0" "1" "1" "1" "0" "?" "?" "?" "?" "?"
[52] "?" "?" "?" "?" "?" "?" "?" "?" "?" "?" "?"
$Ailurarctos_lufengensis
[1] "?" "0" "?" "?" "?" "?" "?" "?" "?" "?" "?" "?" "?" "?" "?" "?" "?"
[18] "0" "0" "1" "1" "1" "1" "0" "1" "1" "?" "1" "1" "?" "0" "?" "?" "?"
[35] "?" "0" "1" "1" "1" "?" "0" "0" "1" "1" "1" "0" "1" "0" "1" "1" "0"
[52] "1" "1" "?" "?" "?" "?" "?" "?" "?" "?" "?"
$Ailuropoda_melanoleuca
[1] "1" "0" "1" "1" "1" "1" "0" "1" "1" "0" "1" "0" "0" "1" "0" "0" "0"
[18] "0" "0" "1" "1" "1" "1" "0" "1" "0" "1" "1" "1" "0" "0" "1" "0" "1"
[35] "0" "0" "1" "1" "0" "0" "0" "0" "1" "1" "1" "0" "1" "0" "0" "1" "0"
[52] "1" "1" "0" "0" "0" "1" "0" "0" "0" "1" "0"
Always arranged with rows being taxa and columns corresponding to a character - “matrix” structure
Text editor - phylo data, metadata
DNA data tends to be simple
Example character from Brady:
How do we know we've captured the relevant character axes?
library(ggplot2)
colors <- c("blue", "purple","white")
plot_alignment(char_data, colors, taxon_labels = TRUE) + theme(text = element_text(size=40))
library(ggplot2)
colors <- c("blue", "purple","white")
plot_alignment(char_data, colors, taxon_labels = TRUE) + theme(text = element_text(size=40))
How do we go from this to a tree?
RStudio –or–Shiny
library(treesiftr)
aln_path <- "../extdata/bears_fasta.fa"
bears <- read_alignment(aln_path)
tree <- read.tree("../extdata/starting_tree.tre")
sample_df <- generate_sliding(bears, start_char = 1, stop_char = 5, steps = 1)
print(sample_df)
starting_val stop_val step_val
1 1 2 1
2 2 3 1
3 3 4 1
4 4 5 1
5 5 6 1
library(phangorn)
library(ggtree)
output_vector <- generate_tree_vis(sample_df = sample_df, alignment = aln_path,tree = tree, phy_mat = bears, pscore = TRUE)
Final p-score 2 after 0 nni operations
Final p-score 2 after 0 nni operations
Final p-score 2 after 0 nni operations
Final p-score 2 after 1 nni operations
Final p-score 2 after 1 nni operations
output_vector[1] #sample output - you will get more than this when you run in your console
[[1]]
??? Do a couple trees on the board, including the pruning algorithm. Then allow them to play.
execute data/bears_morphology.nex
cstatus
tstatus
showmatrix
showdist
log file="mylogfile"
alltrees
What happened here?
??? This is one character. Imagine many - enumeration is not possible.Also note that several trees have the same “best” tree
Heuristic - use of shortcuts to reduce the number of trees we need to search
hsearch
Heuristic - use of shortcuts to reduce the number of trees we need to search
hsearch swap = nni
Heuristic - use of shortcuts to reduce the number of trees we need to search
hsearch swap = spr
savetrees from=1 to=1 file=results/tree1.tre;
savetrees from=2 to=2 file=results/tree2.tre;
savetrees from=3 to=3 file=results/tree3.tre;
Error in file(file, "r") : cannot open the connection