class_docstr: Implements psychoacoustic model of Lin and Abdulla (2015) following Qin et al. (2019) simplifications.
  
  | Paper link: Lin and Abdulla (2015), https://www.springer.com/gp/book/9783319079738
  | Paper link: Qin et al. (2019), http://proceedings.mlr.press/v97/qin19a.html
docstr: Calculate global masking threshold.
  
  :param individual_threshold: Individual masking threshold vector.
  :return: Global threshold vector of shape `(window_size // 2 + 1)`.
code: def calculate_global_threshold(self, individual_threshold):
      """
      Calculate global masking threshold.
  
      :param individual_threshold: Individual masking threshold vector.
      :return: Global threshold vector of shape `(window_size // 2 + 1)`.
      """
      # note: deviates from Qin et al. implementation by taking the log of the summation, which they do for numerical
      #       stability of the stage 2 optimization. We stabilize the optimization in the loss itself.
      with np.errstate(divide="ignore"):
          return 10 * np.log10(
              np.sum(10 ** (individual_threshold / 10), axis=0)
              + 10 ** (self.absolute_threshold_hearing / 10)
          )
  
imports: from __future__ import absolute_import, division, print_function, unicode_literals
  import logging
  from typing import TYPE_CHECKING, Optional, Tuple, Union
  import numpy
  import scipy.signal
  from art.attacks.attack import EvasionAttack
  from art.estimators.estimator import BaseEstimator, LossGradientsMixin, NeuralNetworkMixin
  from art.estimators.pytorch import PyTorchEstimator
  from art.estimators.speech_recognition.speech_recognizer import SpeechRecognizerMixin
  from art.estimators.tensorflow import TensorFlowV2Estimator
  from art.utils import pad_sequence_input
label_desc: Use image node_id 13 for calling the PsychoacousticMasker obj's underlying member method code with example usage: obj.calculate_global_threshold(individual_threshold) and returns: unknown