docs: 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