code: def bss_eval_sources(reference_sources, estimated_sources,
                       compute_permutation=True):
      if estimated_sources.ndim == 1:
          estimated_sources = estimated_sources[np.newaxis, :]
      if reference_sources.ndim == 1:
          reference_sources = reference_sources[np.newaxis, :]
      validate(reference_sources, estimated_sources)
      if reference_sources.size == 0 or estimated_sources.size == 0:
          return np.array([]), np.array([]), np.array([]), np.array([])
      nsrc = estimated_sources.shape[0]
      if compute_permutation:
          sdr = np.empty((nsrc, nsrc))
          sir = np.empty((nsrc, nsrc))
          sar = np.empty((nsrc, nsrc))
          for jest in range(nsrc):
              for jtrue in range(nsrc):
                  s_true, e_spat, e_interf, e_artif = \
                      _bss_decomp_mtifilt(reference_sources,
                                          estimated_sources[jest],
                                          jtrue, 512)
                  sdr[jest, jtrue], sir[jest, jtrue], sar[jest, jtrue] = \
                      _bss_source_crit(s_true, e_spat, e_interf, e_artif)
          perms = list(itertools.permutations(list(range(nsrc))))
          mean_sir = np.empty(len(perms))
          dum = np.arange(nsrc)
          for (i, perm) in enumerate(perms):
              mean_sir[i] = np.mean(sir[perm, dum])
          popt = perms[np.argmax(mean_sir)]
          idx = (popt, dum)
          return (sdr[idx], sir[idx], sar[idx], np.asarray(popt))
      else:
          sdr = np.empty(nsrc)
          sir = np.empty(nsrc)
          sar = np.empty(nsrc)
          for j in range(nsrc):
              s_true, e_spat, e_interf, e_artif = \
                  _bss_decomp_mtifilt(reference_sources,
                                      estimated_sources[j],
                                      j, 512)
              sdr[j], sir[j], sar[j] = \
                  _bss_source_crit(s_true, e_spat, e_interf, e_artif)
          popt = np.arange(nsrc)
          return (sdr, sir, sar, popt)