code: def calc_sdr_torch(estimation, origin, mask=None):
      """
      batch-wise SDR caculation for one audio file on pytorch Variables.
      estimation: (batch, nsample)
      origin: (batch, nsample)
      mask: optional, (batch, nsample), binary
      """
  
      if mask is not None:
          origin = origin * mask
          estimation = estimation * mask
  
      origin_power = (
          torch.pow(origin, 2).sum(1, keepdim=True) + 1e-8
      )  # (batch, 1)
  
      scale = (
          torch.sum(origin * estimation, 1, keepdim=True) / origin_power
      )  # (batch, 1)
  
      est_true = scale * origin  # (batch, nsample)
      est_res = estimation - est_true  # (batch, nsample)
  
      true_power = torch.pow(est_true, 2).sum(1)
      res_power = torch.pow(est_res, 2).sum(1)
  
      return 10 * torch.log10(true_power) - 10 * torch.log10(res_power)
  
imports: from itertools import permutations
  import numpy
  import torch
label_desc: Use image node_id 1 for calling a global function with example usage: calc_sdr_torch(estimation, origin, mask) and returns: unknown