Beispiel #1
0
def iterate_both(stage, **kwargs):
    funcs = iterate_default(stage=stage, **kwargs)

    if stage == "foi":
        return [advance_both] + funcs
    else:
        return funcs
Beispiel #2
0
def iterate_lockdown(network, population, **kwargs):
    from metawards.iterators import iterate_default

    advance_funcs = iterate_default(network=network,
                                    population=population,
                                    **kwargs)

    # read parameters from custom user parameters
    params = network.params
    nstages = int(params.user_params["nstages"])

    start_day = int(params.user_params["start_day"])
    R0 = params.user_params["R0"]

    duration = params.user_params["duration"]
    scale_uv = params.user_params["scale_uv"]
    cutoff = params.user_params["cutoff"]

    day = population.day

    if day >= start_day:
        # in lockdown

        # which stage are we in?
        stage = 0
        scl = scale_uv[0] / R0
        cut = cutoff[0]

        end_day = start_day + int(duration[0])

        if day <= end_day:
            stage = 0
        else:
            for i in range(1, nstages):
                end_day += int(duration[i])
                scl = scale_uv[i] / R0
                cut = cutoff[i]

                if day <= end_day:
                    stage = i
                    break

            if day > end_day:
                print("Lockdown ended")
                scl = 1.0
                cut = 1000  # 1000 km

        population.scale_uv = scl
        params.dyn_dist_cutoff = cut

        Console.debug("LOCKDOWN", variables=[stage, scl, cut])

    return advance_funcs
Beispiel #3
0
def iterate_lockdown(network, population, **kwargs):
    from metawards.iterators import iterate_default

    advance_funcs = iterate_default(network=network,
                                    population=population,
                                    **kwargs)

    start_day = 15 + 7  # (23rd March)
    duration = 184
    scale_uv = 0.2 / 2.8
    cutoff = 1.0  # 1.0 km
    end_day = start_day + duration

    if population.day > 22 and population.day <= end_day:
        # lockdown phase 1
        population.scale_uv = scale_uv
        network.params.dyn_dist_cutoff = cutoff
        print(f"\nLOCKDOWN: scale_uv = {scale_uv}, cutoff = {cutoff} km")

    return advance_funcs