def multi_template_gen(catalog, st, length, swin='all', prepick=0.05,
                       all_horiz=False, delayed=True, plot=False, debug=0,
                       return_event=False, min_snr=None):
    """
    Generate multiple templates from one stream of data.

    Thin wrapper around _template_gen to generate multiple templates from
    one stream of continuous data.  Takes processed (filtered and resampled)
    seismic data!

    :type catalog: obspy.core.event.Catalog
    :param catalog: Events to extract templates for
    :type st: obspy.core.stream.Stream
    :param st:
        Processed stream to extract from, e.g. filtered and re-sampled to what
        you want using pre_processing.dayproc.
    :type length: float
    :param length: Length of template in seconds
    :type swin: string
    :param swin:
        P, S, P_all, S_all or all, defaults to all: see note in
        :func:`eqcorrscan.core.template_gen.template_gen`
    :type prepick: float
    :param prepick:
        Length in seconds to extract before the pick time default is
        0.05 seconds.
    :type all_horiz: bool
    :param all_horiz:
        To use both horizontal channels even if there is only a pick on one of
        them.  Defaults to False.
    :type delayed: bool
    :param delayed:
        If True, each channel will begin relative to it's own pick-time, if set
         to False, each channel will begin at the same time.
    :type plot: bool
    :param plot: To plot the template or not, default is True
    :type debug: int
    :param debug: Debug output level from 0-5.
    :type return_event: bool
    :param return_event: Whether to return the event and process length or not.
    :type min_snr: float
    :param min_snr:
        Minimum signal-to-noise ratio for a channel to be included in the
        template, where signal-to-noise ratio is calculated as the ratio of
        the maximum amplitude in the template window to the rms amplitude in
        the whole window given.

    :returns: List of :class:`obspy.core.stream.Stream` templates.
    :rtype: list

    .. warning::
        Data must be processed before using this function - highcut, lowcut and
        filt_order are only used to generate the meta-data for the templates.

    .. note:: By convention templates are generated with P-phases on the \
        vertical channel and S-phases on the horizontal channels, normal \
        seismograph naming conventions are assumed, where Z denotes vertical \
        and N, E, R, T, 1 and 2 denote horizontal channels, either oriented \
        or not.  To this end we will **only** use Z channels if they have a \
        P-pick, and will use one or other horizontal channels **only** if \
        there is an S-pick on it.

    .. warning:: If there is no phase_hint included in picks, and swin=all, \
        all channels with picks will be used.
    """
    EQcorrscanDeprecationWarning(
        "Function is depreciated and will be removed soon. Use "
        "template_gen.template_gen instead.")
    temp_list = template_gen(
        method="from_meta_file", process=False, meta_file=catalog, st=st,
        lowcut=None, highcut=None, samp_rate=st[0].stats.sampling_rate,
        filt_order=None, length=length, prepick=prepick,
        swin=swin, all_horiz=all_horiz, delayed=delayed, plot=plot,
        debug=debug, return_event=return_event, min_snr=min_snr,
        parallel=False)
    return temp_list
Generate multiple templates from one stream of data.

    Thin wrapper around _template_gen to generate multiple templates from
    one stream of continuous data.  Takes processed (filtered and resampled)
    seismic data!

    :type catalog: obspy.core.event.Catalog
    :param catalog: Events to extract templates for
    :type st: obspy.core.stream.Stream
    :param st:
        Processed stream to extract from, e.g. filtered and re-sampled to what
        you want using pre_processing.dayproc.
    :type length: float
    :param length: Length of template in seconds
    :type swin: string
    :param swin:
        P, S, P_all, S_all or all, defaults to all: see note in
        :func:`eqcorrscan.core.template_gen.template_gen`
    :type prepick: float
    :param prepick:
        Length in seconds to extract before the pick time default is
        0.05 seconds.
    :type all_horiz: bool
    :param all_horiz:
        To use both horizontal channels even if there is only a pick on one of
        them.  Defaults to False.
    :type delayed: bool
    :param delayed:
        If True, each channel will begin relative to it's own pick-time, if set
         to False, each channel will begin at the same time.
    :type plot: bool
    :param plot: To plot the template or not, default is True
    :type debug: int
    :param debug: Debug output level from 0-5.
    :type return_event: bool
    :param return_event: Whether to return the event and process length or not.
    :type min_snr: float
    :param min_snr:
        Minimum signal-to-noise ratio for a channel to be included in the
        template, where signal-to-noise ratio is calculated as the ratio of
        the maximum amplitude in the template window to the rms amplitude in
        the whole window given.

    :returns: List of :class:`obspy.core.stream.Stream` templates.
    :rtype: list

    .. warning::
        Data must be processed before using this function - highcut, lowcut and
        filt_order are only used to generate the meta-data for the templates.

    .. note:: By convention templates are generated with P-phases on the \
        vertical channel and S-phases on the horizontal channels, normal \
        seismograph naming conventions are assumed, where Z denotes vertical \
        and N, E, R, T, 1 and 2 denote horizontal channels, either oriented \
        or not.  To this end we will **only** use Z channels if they have a \
        P-pick, and will use one or other horizontal channels **only** if \
        there is an S-pick on it.

    .. warning:: If there is no phase_hint included in picks, and swin=all, \
        all channels with picks will be used.