class_docstr: These attacks were originally implemented by Vargas et al. (2019) & Su et al.(2019).
  
  | One Pixel Attack Paper link: https://arxiv.org/abs/1710.08864
  | Pixel and Threshold Attack Paper link: https://arxiv.org/abs/1906.06026
code: def _check_params(self) -> None:
      if self.th is not None:
          if self.th <= 0:
              raise ValueError(
                  "The perturbation size `eps` has to be positive."
              )
  
      if not isinstance(self.es, int):
          raise ValueError("The flag `es` has to be of type int.")
  
      if not isinstance(self.targeted, bool):
          raise ValueError(
              "The flag `targeted` has to be of type bool."
          )
  
      if not isinstance(self.verbose, bool):
          raise ValueError("The flag `verbose` has to be of type bool.")
  
      if not isinstance(self.verbose_es, bool):  # pragma: no cover
          raise ValueError(
              "The argument `verbose` has to be of type bool."
          )
      if self.estimator.clip_values is None:
          raise ValueError(
              "This attack requires estimator clip values to be defined."
          )
  
imports: from __future__ import absolute_import, division, print_function, unicode_literals
  import logging
  from itertools import product
  from typing import List, Optional, Tuple, TYPE_CHECKING
  import numpy
  from six import string_types
  import scipy
  from scipy._lib._util import check_random_state
  from scipy.optimize import OptimizeResult, minimize
  from tqdm.auto import tqdm
  from art.config import ART_NUMPY_DTYPE
  from art.attacks.attack import EvasionAttack
  from art.estimators.estimator import BaseEstimator, NeuralNetworkMixin
  from art.estimators.classification.classifier import ClassifierMixin
  from art.utils import check_and_transform_label_format
label_desc: Use image node_id 2 for calling the PixelThreshold obj's underlying member method code with example usage: obj._check_params() without return types