code: def __init__(
      self,
      compute_on_mask=False,
      mask_type=None,
      name=None,
      only_for_test=False,
      is_noise_loss=False,
      is_dereverb_loss=False,
  ):
      _name = "Coherence_on_Spec" if name is None else name
      super().__init__(
          _name,
          only_for_test=only_for_test,
          is_noise_loss=is_noise_loss,
          is_dereverb_loss=is_dereverb_loss,
      )
  
      self._compute_on_mask = False
      self._mask_type = None
  
imports: import math
  from abc import ABC, abstractmethod
  from functools import reduce
  import torch
  import torch.nn.functional
  from packaging.version import parse
  from espnet2.enh.layers.complex_utils import complex_norm, is_complex, new_complex_like
  from espnet2.enh.loss.criterions.abs_loss import AbsEnhLoss
label_desc: Use image node_id 1 to create a new FrequencyDomainAbsCoherence object from inherited base classes: FrequencyDomainLoss with example: obj = FrequencyDomainAbsCoherence(compute_on_mask, mask_type, name, only_for_test, is_noise_loss, is_dereverb_loss)