def METHOD_NAME(components, method="wcorr", threshold=0.5, keep_sd=None, **kwargs):
    """**Combine signal sources after decomposition**
    Combine and reconstruct meaningful signal sources after signal decomposition.
    Parameters
    -----------
    components : array
        Array of components obtained via :func:`.signal_decompose`.
    method : str
        The decomposition method. Can be one of ``"wcorr"``.
    threshold : float
        The threshold used to group components together.
    keep_sd : float
        If a float is specified, will only keep the reconstructed components that are superior
        or equal to that percentage of the max standard deviaiton (SD) of the components. For
        instance, ``keep_sd=0.01`` will remove all components with SD lower than 1% of the
        max SD. This can be used to filter out noise.
    **kwargs
        Other arguments used to override, for instance ``metric="chebyshev"``.
    Returns
    -------
    Array
        Components of the recomposed components.
    Examples
    --------
    .. ipython:: python
      import neurokit2 as nk
      # Create complex signal
      signal = nk.signal_simulate(duration=10, frequency=1, noise=0.01)  # High freq
      signal += 3 * nk.signal_simulate(duration=10, frequency=3, noise=0.01)  # Higher freq
      signal += 3 * np.linspace(0, 2, len(signal))  # Add baseline and trend
      signal += 2 * nk.signal_simulate(duration=10, frequency=0.1, noise=0)
      # Decompose signal
      components = nk.signal_decompose(signal, method='emd')
      # Recompose
      recomposed = nk.signal_recompose(components, method='wcorr', threshold=0.90)
      @savefig p_signal_recompose1.png scale=100%
      nk.signal_plot(components)  # Visualize components
      @suppress
      plt.close()
    """
    # Apply method
    method = method.lower()
    if method in ["wcorr"]:
        clusters = _signal_recompose_wcorr(components, threshold=threshold, **kwargs)
        recomposed = _signal_recompose_sum(components, clusters)
    else:
        raise ValueError("NeuroKit error: signal_decompose(): 'method' should be one of 'emd'")
    if keep_sd is not None:
        recomposed = _signal_recompose_filter_sd(components, threshold=keep_sd)
    return recomposed