<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def check_consistent_parameter_grouping(self):
 """ Ensures this object does not have conflicting groups of parameters. :raises ValueError: For conflicting or absent parameters. """

        parameter_groups = {}
        if self.indices_per_axis is not None:
            parameter_groups["indices_per_axis"] = \
                {"self.indices_per_axis": self.indices_per_axis}
        if (self.split_size is not None) or (self.split_num_slices_per_axis is not None):
            parameter_groups["split_size"] = \
                {
                    "self.split_size": self.split_size,
                    "self.split_num_slices_per_axis": self.split_num_slices_per_axis,
            }
        if self.tile_shape is not None:
            parameter_groups["tile_shape"] = \
                {"self.tile_shape": self.tile_shape}
        if self.max_tile_bytes is not None:
            parameter_groups["max_tile_bytes"] = \
                {"self.max_tile_bytes": self.max_tile_bytes}
        if self.max_tile_shape is not None:
            if "max_tile_bytes" not in parameter_groups.keys():
                parameter_groups["max_tile_bytes"] = {}
            parameter_groups["max_tile_bytes"]["self.max_tile_shape"] = self.max_tile_shape
        if self.sub_tile_shape is not None:
            if "max_tile_bytes" not in parameter_groups.keys():
                parameter_groups["max_tile_bytes"] = {}
            parameter_groups["max_tile_bytes"]["self.sub_tile_shape"] = self.sub_tile_shape

        self.logger.debug("parameter_groups=%s", parameter_groups)

        if len(parameter_groups.keys()) > 1:
            group_keys = sorted(parameter_groups.keys())
            raise ValueError(
                "Got conflicting parameter groups specified, "
                +
                "should only specify one group to define the split:\n"
                +
                (
                    "\n".join(
                        [
                            (
                                ("Group %18s: " % ("'%s'" % group_key))
                                +
                                str(parameter_groups[group_key])
                            )
                            for group_key in group_keys
                        ]
                    )
                )
            )
        if len(parameter_groups.keys()) <= 0:
            raise ValueError(
                "No split parameters specified, need parameters from one of the groups: "
                +
                "'indices_per_axis', 'split_size', 'tile_shape' or 'max_tile_bytes'"
            )