A phytools reader reported the following issue in using the phytools traitgram
function, phenogram
, to plot a tree with a mapped discrete
character:
library(phytools)
## Loading required package: ape
## Loading required package: maps
tree<-pbtree(n=20,scale=2)
Q=matrix(c(-1,1,1,-1),2,2)
rownames(Q)<-colnames(Q)<-LETTERS[1:2]
x1<-sim.history(tree,Q,anc="A")$states
## Done simulation(s).
x1
## t14 t15 t9 t1 t19 t20 t18 t10 t12 t13 t11 t16 t17 t4 t2 t3 t5 t6
## "A" "B" "B" "A" "A" "A" "A" "A" "A" "A" "A" "A" "A" "A" "A" "B" "A" "A"
## t7 t8
## "A" "A"
y<-fastBM(tree)
t1<-make.simmap(tree,x1)
## make.simmap is sampling character histories conditioned on the transition matrix
## Q =
## A B
## A -0.2959494 0.2959494
## B 0.2959494 -0.2959494
## (estimated using likelihood);
## and (mean) root node prior probabilities
## pi =
## A B
## 0.5 0.5
## Done.
phenogram(t1,y)
By contrast, if we use a numerically indexed discrete character, we don't face the same issue:
x2<-sapply(x1,function(x) if(x=="A") "1" else "2")
t2<-make.simmap(tree,x2)
## make.simmap is sampling character histories conditioned on the transition matrix
## Q =
## 1 2
## 1 -0.2959494 0.2959494
## 2 0.2959494 -0.2959494
## (estimated using likelihood);
## and (mean) root node prior probabilities
## pi =
## 1 2
## 0.5 0.5
## Done.
phenogram(t2,y)
The issue is not that deep. In fact, it can be circumvented if we are willing to
just use the argument colors
(as we would in plotSimmap
) to
set the colors of our mapped discrete trait. E.g.,
colors<-setNames(c("blue","red"),LETTERS[1:2])
colors
## A B
## "blue" "red"
phenogram(t1,y,colors=colors)
I have nonetheless fixed this issue so that we will get the mapped discrete state colored by default if no colors are specified.
source("https://raw.githubusercontent.com/liamrevell/phytools/master/R/phenogram.R")
phenogram(t1,y)
phytools is now on GitHub, so in fact this update can be installed automatically in a fresh R session using the devtools package as follows:
## don't run
library(devtools)
install_github("liamrevell/phytools")
That's all folks.
No comments:
Post a Comment
Note: due to the very large amount of spam, all comments are now automatically submitted for moderation.