1
$\begingroup$

I have a species tree to which I am trying to add species, which includes a tip "Geissospermum laeve". When I run: with_polytomes = phytools::add.species.to.genus(tree, "Geissospermum polytome1", where='root'), the original tree is returned with the error message: 'could not match your species to a genus check spelling, including case'.

Reproducible example:

test_tree = ape::rtree(5)
test_tree$tip.label = c("t3 sp1", "t4 sp1", "t5 sp1", "t2 sp1", "t1 sp1")
with_polytomes = phytools::add.species.to.genus(test_tree, "t1 polytome1", where='root')

I don't understand why this is happening, if anyone could shed some light on what's causing this error that would be great

$\endgroup$

1 Answer 1

1
$\begingroup$

Two things to try,

  1. setting genus=NULL, The logic being it doesn't know which genus to add it to. Just as a precaution setting all blank space within a taxa id in the tree to _ ...
add.species.to.genus(test_tree, "t1_polytome1", genus=NULL, where=c("root"))

Maybe replace root with random to get it working.

  1. alternative using tree instead
genus.to.species.tree(test_tree, "t1_polytome1")
$\endgroup$
2
  • 1
    $\begingroup$ I tried lots of different combinations of parameters but in the end the only thing that resolved the issue was using underscores instead of spaces in the tree labels i.e. test_tree$tip.label = c("t3_sp1", "t4_sp1", "t5_sp1", "t2_sp1", "t1_sp1"). Curiously though when the tip labels are set like this, the function works with species = "t1_polytome1" and species = "t1 polytome1". WRT (2), phytools::genus.to.species.tree(test_tree, "t1_polytome1") returned a tree without t1_polytome1 added and no error given, maybe because it expects a genus-level tree. $\endgroup$
    – A. Bollans
    Aug 9, 2023 at 8:55
  • $\begingroup$ Thanks @A.Bollans thats good debugging. In tree files removing all blank space is standard practice, in phylip format this a bug. $\endgroup$
    – M__
    Aug 9, 2023 at 13:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.