class_docstr: A sampler for tree mutation space.
  Responsible for producing samples of ways to mutate a tree within a model
  
  A general schema of implementation is to combine a proposer and likelihood evaluator to:
   - propose a mutation
   - assess likelihood
   - accept if likelihood higher than a uniform(0, 1) draw
class_docstr_tok: ["A","sampler","for","tree","mutation","space",".","Responsible","for","producing","samples","of","ways","to","mutate","a","tree","within","a","model","A","general","schema","of","implementation","is","to","combine","a","proposer","and","likelihood","evaluator","to",":","-","propose","a","mutation","-","assess","likelihood","-","accept","if","likelihood","higher","than","a","uniform","(","0",",","1",")","draw"]
code: def sample(self, model: Model, tree: Tree) -> Optional[TreeMutation]:
      raise NotImplementedError()
  
file_path: imodels/imodels/experimental/bartpy/samplers/treemutation.py
imports: import numpy
  from abc import abstractmethod, ABC
  from typing import Optional, Tuple
  from ..model import Model
  from ..mutation import TreeMutation
  from ..samplers.sampler import Sampler
  from ..tree import Tree
label_desc: Use image node_id 1 for calling the TreeMutationSampler obj's underlying member method code with example usage: obj.sample(model, tree) without return types