Filters: minimum before='all' size.#

Remove bad folds by using the filter parameter. Must be a predicate (start, mid, end) -> bool.

from rics import configure_stuff
from time_split import log_split_progress, plot, split

configure_stuff(datefmt="")

data = ("2022-02", "2022-03")
config = dict(schedule="7d", before="all", after="5d", available=data)

plot(**config, bar_labels="days")

for fold in log_split_progress(split(**config), logger="my-logger"):
    print("Doing work..")
time_split.split(schedule='7d', before='all', after='5d', available=('2022-02-01', '2022-03-01'))
👻 Configured some stuff just the way I like it!
[my-logger:INFO] Begin fold 1/4: '2022-02-01' <= [schedule: '2022-02-03' (Thursday)] < '2022-02-08'.
Doing work..
[my-logger:INFO] Finished fold 1/4: [schedule: '2022-02-03' (Thursday)] after 27 μs.
[my-logger:INFO] Begin fold 2/4: '2022-02-01' <= [schedule: '2022-02-10' (Thursday)] < '2022-02-15'.
Doing work..
[my-logger:INFO] Finished fold 2/4: [schedule: '2022-02-10' (Thursday)] after 22 μs.
[my-logger:INFO] Begin fold 3/4: '2022-02-01' <= [schedule: '2022-02-17' (Thursday)] < '2022-02-22'.
Doing work..
[my-logger:INFO] Finished fold 3/4: [schedule: '2022-02-17' (Thursday)] after 22 μs.
[my-logger:INFO] Begin fold 4/4: '2022-02-01' <= [schedule: '2022-02-24' (Thursday)] < '2022-03-01'.
Doing work..
[my-logger:INFO] Finished fold 4/4: [schedule: '2022-02-24' (Thursday)] after 20 μs.

By using a Filter, arbitrary conditions may be forced on the generated folds.

def at_least_10_days(start, mid, end):
    # end: fixed distance from `mid` since after="5d"
    return (mid - start).days >= 10

Enforcing 10 days of training data.

plot(**config, filter=at_least_10_days, bar_labels="days", show_removed=True)

for fold in log_split_progress(
    split(**config, filter=at_least_10_days),
    logger="my-logger",
):
    print("Doing work..")
time_split.split(schedule='7d', before='all', after='5d', filter=at_least_10_days, available=('2022-02-01', '2022-03-01'))
[my-logger:INFO] Begin fold 1/2: '2022-02-01' <= [schedule: '2022-02-17' (Thursday)] < '2022-02-22'.
Doing work..
[my-logger:INFO] Finished fold 1/2: [schedule: '2022-02-17' (Thursday)] after 25 μs.
[my-logger:INFO] Begin fold 2/2: '2022-02-01' <= [schedule: '2022-02-24' (Thursday)] < '2022-03-01'.
Doing work..
[my-logger:INFO] Finished fold 2/2: [schedule: '2022-02-24' (Thursday)] after 22 μs.

Total running time of the script: (0 minutes 0.364 seconds)

Gallery generated by Sphinx-Gallery