in causalml/inference/tree/_tree/_tree.pyx [0:0]
def _check_node_ndarray(node_ndarray, expected_dtype):
if node_ndarray.ndim != 1:
raise ValueError(
"Wrong dimensions for node array from the pickle: "
f"expected 1, got {node_ndarray.ndim}"
)
if not node_ndarray.flags.c_contiguous:
raise ValueError(
"node array from the pickle should be a C-contiguous array"
)
node_ndarray_dtype = node_ndarray.dtype
if node_ndarray_dtype == expected_dtype:
return node_ndarray
node_ndarray_dtype_dict = _dtype_to_dict(node_ndarray_dtype)
all_compatible_dtype_dicts = _all_compatible_dtype_dicts(expected_dtype)
if node_ndarray_dtype_dict not in all_compatible_dtype_dicts:
raise ValueError(
"node array from the pickle has an incompatible dtype:\n"
f"- expected: {expected_dtype}\n"
f"- got : {node_ndarray_dtype}"
)
return node_ndarray.astype(expected_dtype, casting="same_kind")