Converts the content of the get_personalized_feature_name(feature, PARS_STATES) node feature to the predicted states
    and stores them in the `feature` feature to each node.
    The get_personalized_feature_name(feature, PARS_STATES) is deleted.

    :param feature: str, character for which the parsimonious states are reconstructed
    :param tree: ete3.Tree, the tree of interest
    :return: int, number of ancestral scenarios selected,
    calculated by multiplying the number of selected states for all nodes.
    Also adds parsimonious states as the `feature` feature to each node

def choose_parsimonious_states(tree, ps_feature, out_feature):
    """
    Converts the content of the get_personalized_feature_name(feature, PARS_STATES) node feature to the predicted states
    and stores them in the `feature` feature to each node.
    The get_personalized_feature_name(feature, PARS_STATES) is deleted.

    :param feature: str, character for which the parsimonious states are reconstructed
    :param tree: ete3.Tree, the tree of interest
    :return: int, number of ancestral scenarios selected,
    calculated by multiplying the number of selected states for all nodes.
    Also adds parsimonious states as the `feature` feature to each node
    """
    num_scenarios = 1
    unresolved_nodes = 0
    num_states = 0
    for node in tree.traverse():
        states = getattr(node, ps_feature)
        node.add_feature(out_feature, states)
        n = len(states)
        num_scenarios *= n
        unresolved_nodes += 1 if n > 1 else 0
        num_states += n
    return num_scenarios, unresolved_nodes, num_states