def is_significant(self, scale, fdr=0.1, independent=False, verbose=False):
        """
        Multiple hypothesis testing with false discovery rate (FDR) control.

        `independent': whether the test statistics of all the null
        hypotheses are independent.
        If `independent=True': FDR <= (m0/m) * q
        otherwise: FDR <= (m0/m) * q * (1 + 1/2 + 1/3 + ... + 1/m)

        References:
        [1] False discovery rate - Wikipedia
            https://en.wikipedia.org/wiki/False_discovery_rate
        """
        coef = self.get_detail(scale)
        std = self.vst_coef[scale]["std"]
        pvalues = 2.0 * (1.0 - sp.stats.norm.cdf(np.abs(coef) / std))
        p_sorted = pvalues.flatten()
        p_sorted.sort()
        N = len(p_sorted)
        if independent:
            cn = 1.0
        else:
            cn = np.sum(1.0 / np.arange(1, N+1))
        p_comp = fdr * np.arange(N) / (N * cn)
        comp = (p_sorted < p_comp)
        if np.sum(comp) == 0:
            # `comp' contains ALL False
            p_cutoff = 0.0
        else:
            # cutoff p-value after FDR control/correction
            p_cutoff = np.max(p_sorted[comp])
        sig = (pvalues <= p_cutoff)
        if verbose:
            print("std/sigma: %g, p_cutoff: %g" % (std, p_cutoff),
                    flush=True, file=sys.stderr)
        return (sig, p_cutoff)