# Why does pratchet() in phangorn not find the most parsimonious trees?

I called pratchet() on a dataset with binary values for the characters and it returned a parsimony value of 35. I then calculated the parsimony value for the dataset with a tree that I myself constructed and it was 7. How is this possible at all? I thought that pratchet() was supposed to return the most parsimonious tree on the basis of the data set, but that clearly did not happen in this case. Is there other software that is guaranteed to find the most parsimonious tree?

• Please provide a minimal working example of code you have tried. That way a concrete and useful answer can be provided. Jun 20, 2018 at 1:12

Perhaps the tree which you have calculated is not being caught in the search heuristic? Have you tried (as a trial) setting the tree which you calculated as the starting topology, just to check that it is indeed being calculated on by pratchet()?

Alternatively, you could try playing around with the search heuristic settings, like varying from ratchet to NNI, or you could also try using an external program, like PAUP*.

• Thank you, I tried these. When I set the start tree to the tree that I created manually, I got the following result: Error in edgeMatrix[, k + 1] <- c(p1, e12, e34, p2, 1L) : number of items to replace is not a multiple of replacement length What does this mean? Jun 19, 2018 at 22:03
• I am unsure. Have you verified that you provided a bifurcating newick tree file and that the data matrix has the same number of taxa as the tree? Jun 19, 2018 at 22:11
• The number of taxa is the same, but the tree is not fully resolved. So I presume that is then the problem. Jun 19, 2018 at 22:29

For dendrograms with less than about 10 OTUs/taxa/leaves it is possible to evaluate all possible dendrograms using an exhaustive search algorithm. However, for more than about 10 OTUs, heuristics need to be employed to try and "home-in" on and score a smaller set of "better" trees. However, these heuristics are not guaranteed to find the best dendrogram.

Without some specific code it is hard to do more than speculate as to the problem you are encountering, especially where you get an error using data you manually create.