[Phylobase-devl] Root node number should be one plus number of tips?
Sang Chul Choi
choi at biology.rutgers.edu
Fri Apr 11 18:56:51 CEST 2008
Hi,
I made trees using phylo4 object with time. I tested if it is
ultrametric using is.ultrametric, and I also write it to a tree file.
It seems that the if root node number is not one plus number of tips,
then ultrametric and write.tree does not seem to work. Maybe there is
help document how to create a tree in APE or phylobase package, but I
could not see any requirement except that matrix first column is for
ancestors, and second column is for descendants.
Is there any further requirement for making trees other than this
(that matrix first column is for ancestors, and second column is for
descendants)?
I am trying to update trees or subtree pruning and regrafting kind of
work. I take edge information using edges() function and change it.
Using the changed edge matrix table, I recreate phylo4 object. This
would change root node numbers and changed trees are behave
"awkwardly" (I guess only) to me. By the way, I found a "nice"
function in APE, "reorder", which does somehow help me to change tree
internal information so that tree can properly manipulated by APE
function. Is there a function in phylobase that change tree internal
structure so that tree internal information is corrected?
I do not think that this is a bug, but it is something that is not
that I expected.
Thank you,
Sang Chul
Just if anybody is interested in (I guess not) what I am doing?
CODE start:
All trees are 5 tips binary ultrametric tree.
tree1: root number is 9 -> tree file has a tree with 4 tips, not
ultrametric
tree2: root number is 6 (6 and 9 are reversed from tree1) -> tree
file has the right tree
tree3: root number is 6, and change two internal node numbers (8 <-
> 9) -> tree file has the right tree.
m <- rbind(c(6,8),c(8,7),c(9,6),c(6,5),c(8,4),c(9,3),c(7,2),c(7,1))
m.l <- c(0.13979526, 0.04856891, 1.51140412, 0.46082282,
0.32102756, 1.97222694, 0.27245865, 0.27245865)
tree1 <- phylo4(edge=m, edge.length=m.l)
tree1 <- reorder(as(tree1, "phylo"))
print(tree1)
print(paste("Is tree1 ultametric?", is.ultrametric(tree1)))
print("Coal. Intervals")
print(coalescent.intervals(tree1)$interval.length)
write.tree(tree1, "1.tre")
m <- rbind(c(9,8),c(8,7),c(6,9),c(9,5),c(8,4),c(6,3),c(7,2),c(7,1))
m.l <- c(0.13979526, 0.04856891, 1.51140412, 0.46082282,
0.32102756, 1.97222694, 0.27245865, 0.27245865)
tree2 <- phylo4(edge=m, edge.length=m.l)
tree2 <- reorder(as(tree2, "phylo"))
print(tree2)
print(paste("Is tree2 ultametric?", is.ultrametric(tree2)))
print("Coal. Intervals")
print(coalescent.intervals(tree2)$interval.length)
write.tree(tree2, "2.tre")
m <- rbind(c(8,9),c(9,7),c(6,8),c(8,5),c(9,4),c(6,3),c(7,2),c(7,1))
m.l <- c(0.13979526, 0.04856891, 1.51140412, 0.46082282,
0.32102756, 1.97222694, 0.27245865, 0.27245865)
tree3 <- phylo4(edge=m, edge.length=m.l)
tree3 <- reorder(as(tree3, "phylo"))
print(tree3)
print(paste("Is tree3 ultametric?", is.ultrametric(tree3)))
print("Coal. Intervals")
print(coalescent.intervals(tree3)$interval.length)
write.tree(tree3, "3.tre")
hylogenetic tree with 5 tips and 4 internal nodes.
Tip labels:
[1] "T1" "T2" "T3" "T4" "T5"
Node labels:
[1] "N1" "N2" "N3" "N4"
Rooted; includes branch lengths.
[1] "Is tree1 ultametric? FALSE"
[1] "Coal. Intervals"
[1] 0.46082282 1.32303995 0.04856891 0.13979526
Phylogenetic tree with 5 tips and 4 internal nodes.
Tip labels:
[1] "T1" "T2" "T3" "T4" "T5"
Node labels:
[1] "N1" "N2" "N3" "N4"
Rooted; includes branch lengths.
[1] "Is tree2 ultametric? TRUE"
[1] "Coal. Intervals"
[1] 0.27245865 0.04856891 0.13979526 1.51140412
Phylogenetic tree with 5 tips and 4 internal nodes.
Tip labels:
[1] "T1" "T2" "T3" "T4" "T5"
Node labels:
[1] "N1" "N2" "N3" "N4"
Rooted; includes branch lengths.
[1] "Is tree3 ultametric? TRUE"
[1] "Coal. Intervals"
[1] 0.27245865 0.04856891 0.13979526 1.51140412
More information about the Phylobase-devl
mailing list