Wednesday, April 17, 2013

Critical fix for make.simmap

I just identified a critical error in make.simmap that I introduced when I allowed make.simmap to accept uncertain tip states. The priors on our tip states are treated as conditional likelihoods during node sampling following Bollback (2006) and consequently I just put these probabilities in the 1 through Nth element of the matrix of conditional likelihoods from the pruning algorithm. Unfortunately, in an internally called function that assigns node states I neglected to update:

NN[which(tree$edge[,1]==root),1]<- rstate(L[1,]*pi/sum(L[1,]*pi))
which assumes that the root node is in row 1 of L (as it was, through phytools 0.2-33), to:
NN[which(tree$edge[,1]==root),1]<- rstate(L[as.character(root),]*pi/sum(L[as.character(root),]*pi))

Source code for the fixed version of make.simmap is here, but I will post a new phytools version shortly & this fix will be in the next CRAN release.

2 comments:

  1. Liam, I think the link to the fix has the wrong url I am guessing this is the right one?
    http://www.phytools.org/make.simmap/v1.3/make.simmap.R

    cheers

    ReplyDelete
    Replies
    1. Indeed! Thanks for the catch. There's also a new build of phytools here. (Hopefully that link is correct.) - Liam

      Delete