class_docstr: The Split class represents the conditioned data at any point in the decision tree
  It contains the logic for:
  
   - Maintaining a record of which rows of the covariate matrix are in the split
   - Being able to easily access a `Data` object with the relevant rows
   - Applying `SplitConditions` to further break up the data
code: def __init__(
      self,
      data: Data,
      combined_condition: Optional[CombinedCondition] = None,
  ):
      self._data = data
      if combined_condition is None:
          combined_condition = CombinedCondition(
              self._data.X.variables, []
          )
      self._combined_condition = combined_condition
  
file_path: imodels/imodels/experimental/bartpy/split.py
imports: from copy import deepcopy
  from typing import List, Optional
  import numpy
  from .data import Data
  from .splitcondition import CombinedCondition, SplitCondition
label_desc: Use image node_id 1 to create a new Split object  with example: obj = Split(data, combined_condition)