docs: def has_approx_support(m, m_hat, prob=0.01):
      """Returns 1 if model selection error is less than or equal to prob rate,
      0 else.
  
      NOTE: why does np.nonzero/np.flatnonzero create so much problems?
      """
      m_nz = np.flatnonzero(np.triu(m, 1))
      m_hat_nz = np.flatnonzero(np.triu(m_hat, 1))
  
      upper_diagonal_mask = np.flatnonzero(np.triu(np.ones(m.shape), 1))
      not_m_nz = np.setdiff1d(upper_diagonal_mask, m_nz)
  
      intersection = np.in1d(m_hat_nz, m_nz)  # true positives
      not_intersection = np.in1d(m_hat_nz, not_m_nz)  # false positives
  
      true_positive_rate = 0.0
      if len(m_nz):
          true_positive_rate = 1. * np.sum(intersection) / len(m_nz)
          true_negative_rate = 1. - true_positive_rate
  
      false_positive_rate = 0.0
      if len(not_m_nz):
          false_positive_rate = 1. * np.sum(not_intersection) / len(not_m_nz)
  
      return int(np.less_equal(true_negative_rate + false_positive_rate, prob))