YuLab-SMU / treeio

:seedling: Base Classes and Functions for Phylogenetic Tree Input and Output
https://yulab-smu.top/treedata-book/
94 stars 24 forks source link

Issue with drop.tip function in removing node C from tree structure A->B->C #119

Open moqi111 opened 9 months ago

moqi111 commented 9 months ago

Problem Description

I am working with a tree structure where nodes are labeled as A->B->C. I am attempting to use the drop.tip function to remove node C from the tree. However, when I execute the function, it returns NULL.

Steps to Reproduce

  1. Create a tree structure with nodes A->B->C.
  2. Use the drop.tip function to remove node C.

Expected Behavior

I expect the drop.tip function to remove node C from the tree and return the modified tree structure.

Actual Behavior

The drop.tip function returns NULL instead of the expected modified tree structure.

brj1 commented 9 months ago

Firstly, treeio is primarily meant to work with phylogenetic trees and thus it expects that nodes will have two (or more) children.

drop.tip does not merely remove the tip(s) from a tree, but also reduces the resultant tree to only contain the remaining tips collapsing internal nodes as necessary. This is the intended behaviour. Your tree does not contain any other tips so reducing the tree leaves an empty tree.