code: def _matricize_data(draw):
      input_dtype, input, shape = draw(
          helpers.dtype_and_values(
              available_dtypes=helpers.get_dtypes("valid"),
              ret_shape=True,
              min_num_dims=2,
              max_num_dims=5,
          )
      )
      ndims = len(shape)
      dims = {*range(ndims)}
      row_modes = set(
          draw(
              st.lists(
                  helpers.ints(min_value=0, max_value=ndims - 1),
                  min_size=1,
              )
          )
      )
      col_modes = dims - row_modes
      return input_dtype, input, row_modes, col_modes
  
imports: from hypothesis import strategies, assume
  import hypothesis.extra.numpy
  import numpy
  import ivy
  import ivy_tests.test_ivy.helpers
  from ivy_tests.test_ivy.helpers import handle_test, create_concatenable_arrays_dtypes
  from ivy.functional.ivy.experimental.manipulation import _check_bounds
  from ivy_tests.test_ivy.test_functional.test_core.test_manipulation import _get_splits
label_desc: Use image node_id 7 for calling a global function with example usage: _matricize_data(draw) and returns: input_dtype,  input,  row_modes,  col_modes