code: def holm(pvals, alpha=0.05):
      """P-values correction with Holm method.
  
      Parameters
      ----------
      pvals : array_like
          Array of p-values of the individual tests.
      alpha : float
          Error rate (= alpha level).
  
      Returns
      -------
      reject : array, bool
          True if a hypothesis is rejected, False if not
      pvals_corrected : array
          P-values adjusted for multiple hypothesis testing using the Holm
          procedure.
  
      See also
      --------
      bonf : Bonferroni correction
      fdr : Benjamini/Hochberg and Benjamini/Yekutieli FDR correction
  
      Notes
      -----
      From Wikipedia:
  
      In statistics, the Holm–Bonferroni method (also called the Holm method) is
      used to counteract the problem of multiple comparisons. It is intended to
      control the family-wise error rate and offers a simple test uniformly more
      powerful than the Bonferroni correction.
  
      The Holm adjusted p-values are the running maximum of the sorted p-values
      divided by the corresponding increasing alpha level:
  
      .. math::
  
          \\frac{\\alpha}{n}, \\frac{\\alpha}{n-1}, ..., \\frac{\\alpha}{1}
  
      where :math:`n` is the number of test.
  
      The full mathematical formula is:
  
      .. math::
          \\widetilde {p}_{{(i)}}=\\max _{{j\\leq i}}\\left\\{(n-j+1)p_{{(j)}}
          \\right\\}_{{1}}
  
      Note that NaN values are not taken into account in the p-values correction.
  
      References
      ----------
      - Holm, S. (1979). A simple sequentially rejective multiple test procedure.
        Scandinavian journal of statistics, 65-70.
  
      - https://en.wikipedia.org/wiki/Holm%E2%80%93Bonferroni_method
  
      Examples
      --------
      >>> import pingouin as pg
      >>> pvals = [.50, .003, .32, .054, .0003]
      >>> reject, pvals_corr = pg.multicomp(pvals, method='holm', alpha=.05)
      >>> print(reject, pvals_corr)
      [False  True False False  True] [0.64   0.012  0.64   0.162  0.0015]
      """
      # Convert to array and save original shape
      pvals = np.asarray(pvals)
      shape_init = pvals.shape
      pvals = pvals.ravel()
      num_nan = np.isnan(pvals).sum()
  
      # Sort the (flattened) p-values
      pvals_sortind = np.argsort(pvals)
      pvals_sorted = pvals[pvals_sortind]
      sortrevind = pvals_sortind.argsort()
      ntests = pvals.size - num_nan
  
      # Now we adjust the p-values
      pvals_corr = pvals_sorted[:ntests] * np.arange(ntests, 0, -1)
      pvals_corr = np.maximum.accumulate(pvals_corr)
      pvals_corr = np.clip(pvals_corr, None, 1)
  
      # And revert to the original shape and order
      pvals_corr = np.append(pvals_corr, np.full(num_nan, np.nan))
      pvals_corrected = pvals_corr[sortrevind].reshape(shape_init)
      with np.errstate(invalid="ignore"):
          reject = np.less(pvals_corrected, alpha)
      return reject, pvals_corrected
  
imports: import numpy
  from pandas import Series
label_desc: Use image node_id 3 for calling a global function with example usage: holm(pvals, alpha) and returns: reject,  pvals_corrected