yield pandas Series and unique name based on the ndarray object

    Parameters
    ----------
    channel : numpy.ndarray
        channel to be used foir Series
    channel_name : str
        channel name
    unique_names : UniqueDB
        unique names object
    prefix : str
        prefix used in case of nested recarrays

    Returns
    -------
    name, series : (str, pandas.Series)
        tuple of unqiue name and Series object

def components(channel, channel_name, unique_names, prefix="", master=None):
    """ yield pandas Series and unique name based on the ndarray object

    Parameters
    ----------
    channel : numpy.ndarray
        channel to be used foir Series
    channel_name : str
        channel name
    unique_names : UniqueDB
        unique names object
    prefix : str
        prefix used in case of nested recarrays

    Returns
    -------
    name, series : (str, pandas.Series)
        tuple of unqiue name and Series object
    """
    names = channel.dtype.names

    # channel arrays
    if names[0] == channel_name:
        name = names[0]

        if prefix:
            name_ = unique_names.get_unique_name(f"{prefix}.{name}")
        else:
            name_ = unique_names.get_unique_name(name)

        values = channel[name]
        if len(values.shape) > 1:
            arr = [values]
            types = [("", values.dtype, values.shape[1:])]
            values = fromarrays(arr, dtype=types)
            del arr
        yield name_, Series(values, index=master, dtype="O")

        for name in names[1:]:
            values = channel[name]
            axis_name = unique_names.get_unique_name(f"{name_}.{name}")
            if len(values.shape) > 1:
                arr = [values]
                types = [("", values.dtype, values.shape[1:])]
                values = fromarrays(arr, dtype=types)
                del arr
            yield axis_name, Series(values, index=master, dtype="O")

    # structure composition
    else:
        for name in channel.dtype.names:
            values = channel[name]

            if values.dtype.names:
                yield from components(
                    values, name, unique_names,
                    prefix=f"{prefix}.{channel_name}" if prefix else f"{channel_name}",
                    master=master
                )

            else:
                name_ = unique_names.get_unique_name(
                    f"{prefix}.{channel_name}.{name}" if prefix else f"{channel_name}.{name}"
                )
                if len(values.shape) > 1:
                    arr = [values]
                    types = [("", values.dtype, values.shape[1:])]
                    values = fromarrays(arr, dtype=types)
                    del arr
                yield name_, Series(values, index=master)