docs: def choose_ancestral_states_map(tree, feature, states):
      """
      Chooses node ancestral states based on their marginal probabilities using MAP method.
  
      :param tree: ete3.Tree, the tree of interest
      :param feature: str, character for which the ancestral states are to be chosen
      :param states: numpy.array of possible character states in order corresponding to the probabilities array
      :return: void, modified the get_personalized_feature_name(feature, ALLOWED_STATES) feature of each node
          to only contain the selected states.
      """
      lh_feature = get_personalized_feature_name(feature, LH)
      allowed_state_feature = get_personalized_feature_name(feature, ALLOWED_STATES)
      _, state2array = get_state2allowed_states(states, False)
  
      for node in tree.traverse():
          marginal_likelihoods = getattr(node, lh_feature)
          node.add_feature(allowed_state_feature, state2array[marginal_likelihoods.argmax()])