class_docstr: Dictionary-like object representing an SALib Problem specification.
  
  Attributes
  ----------
  samples : np.array, of generated samples
  results : np.array, of evaluations (i.e., model outputs)
  analysis : np.array or dict, of sensitivity indices
code: def __init__(self, *args, **kwargs):
      super(ProblemSpec, self).__init__(*args, **kwargs)
  
      _check_spec_attributes(self)
  
      self._samples = None
      self._results = None
      self._analysis = None
  
      self["num_vars"] = len(self["names"])
      if "groups" not in self:
          self["groups"] = None
  
      self._add_samplers()
      self._add_analyzers()
  
imports: import warnings
  import importlib
  from types import MethodType
  from functools import partial, wraps
  from multiprocess import Pool, cpu_count
  import numpy
  import SALib.sample
  import SALib.analyze
  from SALib.util import avail_approaches
  from SALib.util.results import ResultDict
label_desc: Use image node_id 1 to create a new ProblemSpec object from inherited base classes: dict with example: obj = ProblemSpec()