code: def _calc_chunk_params(
      cls,
      in_chunk,
      axes,
      chunk_shape,
      output,
      output_type,
      chunk_op,
      no_shuffle: bool,
  ):
      params = {"index": in_chunk.index}
      if output_type == OutputType.tensor:
          shape_c = list(in_chunk.shape)
          for ax in axes:
              if not no_shuffle and chunk_shape[ax] > 1:
                  shape_c[ax] = np.nan
          params["shape"] = tuple(shape_c)
          params["dtype"] = in_chunk.dtype
          params["order"] = output.order
      elif output_type == OutputType.dataframe:
          shape_c = list(in_chunk.shape)
          if 0 in axes:
              if not no_shuffle and chunk_shape[0] > 1:
                  shape_c[0] = np.nan
          params["shape"] = tuple(shape_c)
          if 1 not in axes:
              params["dtypes"] = in_chunk.dtypes
              params["columns_value"] = in_chunk.columns_value
          else:
              params["dtypes"] = output.dtypes
              params["columns_value"] = output.columns_value
          params["index_value"] = _shuffle_index_value(
              chunk_op, in_chunk.index_value, in_chunk.index
          )
      else:
          assert output_type == OutputType.series
          if no_shuffle:
              params["shape"] = in_chunk.shape
          else:
              params["shape"] = (np.nan,)
          params["name"] = in_chunk.name
          params["index_value"] = _shuffle_index_value(
              chunk_op, in_chunk.index_value, in_chunk.index
          )
          params["dtype"] = in_chunk.dtype
      return params
  
imports: import itertools
  from collections import defaultdict
  from collections.abc import Iterable
  from functools import reduce
  import numpy
  import pandas
  from ...None import opcodes
  from ...core import get_output_types, recursive_tile
  from ...core.operand import OperandStage, MapReduceOperand
  from ...dataframe.utils import parse_index
  from ...lib import sparse
  from ...serialization.serializables import FieldTypes, TupleField, KeyField
  from ...tensor.utils import validate_axis, check_random_state, gen_random_seeds, decide_unify_split
  from ...tensor.array_utils import get_array_module
  from ...utils import tokenize, lazy_import, has_unknown_shape
  from ...core import ExecutableTuple
  from ..operands import LearnOperandMixin, OutputType, LearnShuffleProxy
  from ..utils import convert_to_tensor_or_dataframe
label_desc: Use image node_id 13 for calling the LearnShuffle obj's underlying member method code with example usage: obj._calc_chunk_params(cls, in_chunk, axes, chunk_shape, output, output_type, chunk_op, no_shuffle) and returns: params