code: def log_tree_ratio_prune(model: Model, proposal: PruneMutation):
      numerator = log_probability_node_not_split(
          model, proposal.updated_node
      )
  
      prob_left_not_split = log_probability_node_not_split(
          model, proposal.existing_node.left_child
      )
      prob_right_not_split = log_probability_node_not_split(
          model, proposal.existing_node.left_child
      )
      prob_updated_node_split = log_probability_node_split(
          model, proposal.existing_node
      )
      prob_chosen_split = log_probability_split_within_node(
          GrowMutation(proposal.updated_node, proposal.existing_node)
      )
      denominator = (
          prob_left_not_split
          + prob_right_not_split
          + prob_updated_node_split
          + prob_chosen_split
      )
  
      return numerator - denominator, (numerator, denominator)
  
imports: from typing import List
  import numpy
  from ...model import Model
  from ...mutation import TreeMutation, GrowMutation, PruneMutation
  from ...node import LeafNode, TreeNode
  from ...samplers.treemutation import TreeMutationLikelihoodRatio
  from ...sigma import Sigma
  from ...tree import Tree
label_desc: Use image node_id 10 for calling the UniformTreeMutationLikelihoodRatio obj's underlying member method code with example usage: obj.log_tree_ratio_prune(model, proposal) and returns: unknown,  numerator,  denominator