A new version of phytools is now on CRAN, although it will probably take a few days for binaries to be built and then percolate through all the mirror repositories.

Unfortunately, as soon it this version was accepted, I discovered a small bug
with the function `make.simmap`

. `make.simmap`

is a
popular phytools function that implements the method of stochastic character
mapping. The bug is present in only the full hierarchical Bayesian method
(`Q="mcmc"`

), and was introduced in the latest version of
phytools because I know use the function `fitMk`

to compute the
likelihood of the M*k* model internally.

Here is how the bug manifests:

```
library(phytools)
```

```
## Loading required package: ape
## Loading required package: maps
```

```
packageVersion("phytools")
```

```
## [1] '0.5.0'
```

```
## load data
data(anoletree)
## pull out the data for tips so we can test make.simmap
x<-getStates(anoletree,"tips")
## default method (empirical Bayesian method)
eb.trees<-make.simmap(anoletree,x,nsim=100,model="ER")
```

```
## make.simmap is sampling character histories conditioned on the transition matrix
## Q =
```

```
## CG GB TC TG Tr Tw
## CG -0.13884868 0.02314145 0.02314145 0.02314145 0.02314145 0.02314145
## GB 0.02314145 -0.13884868 0.02314145 0.02314145 0.02314145 0.02314145
## TC 0.02314145 0.02314145 -0.13884868 0.02314145 0.02314145 0.02314145
## TG 0.02314145 0.02314145 0.02314145 -0.13884868 0.02314145 0.02314145
## Tr 0.02314145 0.02314145 0.02314145 0.02314145 -0.13884868 0.02314145
## Tw 0.02314145 0.02314145 0.02314145 0.02314145 0.02314145 -0.13884868
```

```
## (estimated using likelihood);
## and (mean) root node prior probabilities
## pi =
```

```
## CG GB TC TG Tr Tw
## 0.1666667 0.1666667 0.1666667 0.1666667 0.1666667 0.1666667
```

```
## Done.
```

```
## try full Bayesian method (should fail)
fb.trees<-make.simmap(anoletree,x,nsim=100,model="ER",Q="mcmc")
```

```
## Running MCMC burn-in. Please wait....
```

```
## Error in if (p.odds >= runif(n = 1)) {: argument is of length zero
```

I have fixed this bug and the fixed version can be already be installed from GitHub using devtools. Here I will demo it by loading the function from source:

```
source("../phytools/R/make.simmap.R")
fb.trees<-make.simmap(anoletree,x,nsim=100,model="ER",Q="mcmc")
```

```
## Running MCMC burn-in. Please wait....
## Running 10000 generations of MCMC, sampling every 100 generations.
## Please wait....
##
## make.simmap is simulating with a sample of Q from
## the posterior distribution
##
## Mean Q from the posterior is
## Q =
## CG GB TC TG Tr Tw
## CG -0.11975495 0.02395099 0.02395099 0.02395099 0.02395099 0.02395099
## GB 0.02395099 -0.11975495 0.02395099 0.02395099 0.02395099 0.02395099
## TC 0.02395099 0.02395099 -0.11975495 0.02395099 0.02395099 0.02395099
## TG 0.02395099 0.02395099 0.02395099 -0.11975495 0.02395099 0.02395099
## Tr 0.02395099 0.02395099 0.02395099 0.02395099 -0.11975495 0.02395099
## Tw 0.02395099 0.02395099 0.02395099 0.02395099 0.02395099 -0.11975495
## and (mean) root node prior probabilities
## pi =
## [1] 0.1666667 0.1666667 0.1666667 0.1666667 0.1666667 0.1666667
```

```
## Done.
```

```
obj<-summary(fb.trees)
plot(obj,fsize=0.6,ftype="i",ylim=c(-2,Ntip(anoletree)))
colors<-setNames(palette()[1:length(unique(x))],sort(unique(x)))
add.simmap.legend(colors=colors,x=0,y=-2,prompt=FALSE,vertical=FALSE)
```

This fix can be obtained most easily by installing phytools from GitHub using devtools. In a new R session, run:

```
library(devtools)
install_github("liamrevell/phytools")
```

That's it.