def filter_pipeline(effects, filters):
    """
    Apply each filter to the effect list sequentially. If any filter
    returns zero values then ignore it. As soon as only one effect is left,
    return it.

    Parameters
    ----------
    effects : list of MutationEffect subclass instances

    filters : list of functions
        Each function takes a list of effects and returns a list of effects

    Returns list of effects
    """
    for filter_fn in filters:
        if len(effects) == 1:
            return effects
        filtered_effects = filter_fn(effects)
        if len(filtered_effects) == 0:
            return effects
        effects = filtered_effects
    return effects