Parse splits string to get list of all associated subset strings.

    Parameters
    ----------
    patch : obj
        Patch object containing data to subset
    splits : str
        Specifies how a column of a dataset should be split. See Notes.

    Returns
    -------
    list
        List of subset strings derived from splits string

    Notes
    -----
    {0}

def _parse_splits(patch, splits):
    """
    Parse splits string to get list of all associated subset strings.

    Parameters
    ----------
    patch : obj
        Patch object containing data to subset
    splits : str
        Specifies how a column of a dataset should be split. See Notes.

    Returns
    -------
    list
        List of subset strings derived from splits string

    Notes
    -----
    {0}

    """

    split_list = splits.replace(' ','').split(';')
    subset_list = []  # List of all subset strings

    for split in split_list:
        col, val = split.split(':')

        if val == 'split':
            uniques = []
            for level in patch.table[col]:
                if level not in uniques:
                    uniques.append(level)
            level_list = [col + '==' + str(x) + '; ' for x in uniques]
        else:
            starts, ends = _col_starts_ends(patch, col, val)
            level_list = [col + '>=' + str(x) + '; ' + col + '<' + str(y)+'; '
                          for x, y in zip(starts, ends)]

        subset_list.append(level_list)

    # Get product of all string levels as list, conv to string, drop final ;
    return [''.join(x)[:-2] for x in _product(*subset_list)]