class_docstr: This merges several maskers for different inputs together into a single composite masker.
  
  This is not yet implemented.
class_docstr_tok: ["This","merges","several","maskers","for","different","inputs","together","into","a","single","composite","masker",".","This","is","not","yet","implemented","."]
code: def __call__(self, mask, *args):
      mask = self._standardize_mask(mask, *args)
      assert (
          len(args) == self.total_args
      ), "The number of passed args is incorrect!"
  
      # compute all the shapes and confirm they align
      arg_pos = 0
      shapes = []
      num_rows = None
      for i, masker in enumerate(self.maskers):
          masker_args = args[arg_pos : arg_pos + self.arg_counts[i]]
          if callable(masker.shape):
              shapes.append(masker.shape(*masker_args))
          else:
              shapes.append(masker.shape)
  
          if num_rows is None:
              num_rows = shapes[-1][0]
          elif num_rows == 1 and shapes[-1][0] is not None:
              num_rows = shapes[-1][0]
  
          if (
              shapes[-1][0] != num_rows
              and shapes[-1][0] != 1
              and shapes[-1][0] is not None
          ):
              raise InvalidMaskerError(
                  "The composite masker can only join together maskers with a compatible number of background rows!"
              )
          arg_pos += self.arg_counts[i]
  
      # call all the submaskers and combine their outputs
      arg_pos = 0
      mask_pos = 0
      masked = []
      for i, masker in enumerate(self.maskers):
          masker_args = args[arg_pos : arg_pos + self.arg_counts[i]]
          masked_out = masker(
              mask[mask_pos : mask_pos + shapes[i][1]], *masker_args
          )
          if num_rows > 1 and (
              shapes[i][0] == 1 or shapes[i][0] is None
          ):
              masked_out = tuple(
                  [m[0] for _ in range(num_rows)] for m in masked_out
              )
          masked.extend(masked_out)
  
          mask_pos += shapes[i][1]
          arg_pos += self.arg_counts[i]
  
      return tuple(masked)
  
file_path: shap/shap/maskers/_composite.py
imports: import types
  from ..utils._exceptions import InvalidMaskerError
  from ._masker import Masker
label_desc: Use image node_id 5 for calling the Composite obj's underlying member method code with example usage: obj.__call__(mask) and returns: tuple