TreeAnnotator has a number of options for setting the topology and for setting internal node heights.
Adding another method for either of these requires adding code to BeastFX, so cannot be done in packages.
Introducing interfaces for both of these and providing them as services in packages solves this problem.
In particular, it would be good to have an interface, say TopologySettingService that has two methods setTopology() for determining a topology given a set of trees and getName() for returning the name of the method so it can be used in the user interface.
Further, have another interface, say NodeHeightSettingService similarly with two methods setNodeHeights() to set node heights of a tree and getName() for the user interface.
TreeAnnotator has a number of options for setting the topology and for setting internal node heights. Adding another method for either of these requires adding code to BeastFX, so cannot be done in packages. Introducing interfaces for both of these and providing them as services in packages solves this problem.
In particular, it would be good to have an interface, say
TopologySettingService
that has two methodssetTopology()
for determining a topology given a set of trees andgetName()
for returning the name of the method so it can be used in the user interface.Further, have another interface, say
NodeHeightSettingService
similarly with two methodssetNodeHeights()
to set node heights of a tree andgetName()
for the user interface.