SWAT+

This notebook is an example of BOA running a real environmental model, SWAT+.

In the swat folder you will find a SAASBO configuration file that pulls the SWAT+ possible parameters from the SWAT+ cal_parms.cal file to create a high dimensional optimization problem to run on a SLURM cluster as well as a highly parallelized SLURM configuration file. Both configurations are too computationally expensive to run here as an example, but the swat folder contains the necessary files to run the model on your own machine or cluster. Both configurations are shown below.

Here we will run a simpler example, under the swat/config_local_test.yaml configuration file. This configuration file is a simplified version of the swat configuration file, with 8 parameters, 2 constraints, and 10 trials.

 1# This notebook uses hidden cells to import and display things so
 2# that it can be ran regullary to make sure the documentation
 3# is up to date and not broken (as opposed to a markdown file
 4# that would have an exmaple written once and get out of date
 5# as the code base changes)
 6
 7# These hidden cells are only responsible for rerunning
 8# the documentation to ensure it is correct.
 9# the actual relavent part of the documentation
10# are the non hidden parts

Configuration File

SAASBO

config_auto_saasbo.yaml

1Code(config_saasbo_path, language="yaml")
{% set pathlib = load_py("pathlib") %}
{% set builtins = load_py("builtins") %}
{% set cal_params_f = pathlib.Path("./TxtInOut/cal_parms.cal") %}
objective:
    metrics:
        -   name: flo_out_NSE
            minimize: False

parameters:
    start_date:
        type: fixed
        value: "2008-01-01"
    end_date:
        type: fixed
        value: "2018-01-01"
    years_skip:
        type: fixed
        value: 5
    {% set f = builtins.open(cal_params_f) -%}
    {% for line in f -%}
    {% if loop.index0 >= 3 -%}
    {% set name1, name2, abs_min, abs_max, unit = line.split() %}
    {{ name1 }}.{{ name2 }}:
        type: range
        bounds: [{{ abs_min }}, {{ abs_max }}]
        value_type: float
    {%- endif %}
    {%- endfor %}
    {% do f.close() %}

scheduler:
    n_trials: 500
    max_pending_trials: 25
    run_trials_in_batches: true
generation_strategy:
    num_initialization_trials: 100
    max_parallelism_override: 25
    use_saasbo: true
script_options:
    run_model: sbatch --time=3:00:00 slurm_launch_run_model.sh
    exp_name: swat_plus_slurm_auto_saasbo

The SAASBO configuration file tells BOA to dynamically grab the parameters from the SWAT+ cal_parms.cal file and create a high dimensional optimization problem to run on a SLURM cluster.

When BOA gets the parameters from the cal_parms.cal file, it will create a parameter for each line in the file. The cal_parms.cal file is a text file that contains the SWAT+ parameters that can be optimized as well as their bounds they can be. Each line in the file is a parameter that can be optimized. Optimizing every parameter blindly with their maximum bounds is obviously not the most sound setup, but it demonstrates the flexibility of BOA to handle high dimensional optimization problems.

Parallel

config_parr.yaml

1Code(config_parr_path, language="yaml")
{% set max_parr = 25 %}

objective:
    metrics:
        -   name: flo_out_NSE
            minimize: False

parameters:
    start_date: "2013-01-01"
    end_date: "2018-01-01"
    years_skip: 0
    cn3_swf.hru:
        type: range
        bounds: [0, 1]
        value_type: float
    esco.hru:
        type: range
        bounds: [0, 1]
        value_type: float
    epco.hru:
        type: range
        bounds: [0, 1]
        value_type: float
    perco.hru:
        type: range
        bounds: [0, 1]
        value_type: float
    snofall_tmp.hru:
        type: range
        bounds: [-5, 5]
        value_type: float
    snomelt_tmp.hru:
        type: range
        bounds: [-5, 5]
        value_type: float
    snomelt_max.hru:
        type: range
        bounds: [0, 10]
        value_type: float
    snomelt_min.hru:
        type: range
        bounds: [0, 10]
        value_type: float

parameter_constraints:
    - snomelt_min.hru <= snomelt_max.hru
    - snofall_tmp.hru <= snomelt_tmp.hru

scheduler:
    total_trials: 200
    max_pending_trials: {{ max_parr }}
    run_trials_in_batches: true
generation_strategy:
    steps:
        -   model: SOBOL
            num_trials: 50
            max_parallelism: {{ max_parr }}
        -   model: GPEI
            num_trials: -1
            max_parallelism: {{ max_parr }}
script_options:
    run_model: sbatch --time=3:00:00 --output={{ trial_dir }}/%j.log slurm_launch_run_model.sh
    exp_name: swat_plus_{{ max_parr }}_parr_200_trials

Run Model Wrapper Script

run_model.R

# (linux tested, does not run on Mac, SWATrunR says it runs with Windows, so probably Windows is ok)

# load in any libraries and modules we need
library(SWATrunR)
library(jsonlite)
library(dplyr)
library(here)
library(readr)
library(hydroGOF)

project_path <- here("swat", "TxtInOut")
trial_dir <- commandArgs(trailingOnly=TRUE)[1]
data <- read_json(path=file.path(trial_dir, "parameters.json"))

start_date <- data$start_date
end_date <- data$end_date
years_skip <- data$years_skip
data <- within(data, rm(start_date, end_date, years_skip))

par_comb = c()
for (name in names(data)) {
    par_comb[paste(name, " | change = absval")] = data[[name]]
}

sim <- run_swatplus(
    project_path=project_path,
    start_date = start_date,
    end_date = end_date,
    years_skip = years_skip,
    run_path=trial_dir,
    parameter = par_comb,
    output = define_output(
            file = 'channel_sd_day',
            variable = 'flo_out',
            unit = 1)
        )

obs <- read_csv(here("swat","obs_data.csv"))
obs <- obs %>% filter(between(date, min(sim$simulation$flo_out$date), as.Date(end_date)))

flow_obs <- obs %>% filter(variable == "flow_cms") %>% within(rm(variable))
flow_sim <- sim$simulation$flo_out %>% filter(date %in% flow_obs$date)

# NSE (Nash–Sutcliffe model efficiency coefficient)
nse <- NSE(sim=flow_sim$run_1, obs=flow_obs$value)

jsn <- toJSON(list(
    flo_out_NSE=nse
), pretty = TRUE)
write(jsn, file.path(trial_dir, "output.json"))

Running our script

To run our script we just need to pass the config file to BOA’s CLI

python -m boa --config-file path/to/config.yaml

or

python -m boa -c path/to/config.yaml
[INFO 07-13 16:55:05] ax.service.utils.instantiation: Created search space: SearchSpace(parameters=[FixedParameter(name='start_date', parameter_type=STRING, value='2017-01-01'), FixedParameter(name='end_date', parameter_type=STRING, value='2018-01-01'), FixedParameter(name='years_skip', parameter_type=INT, value=0), RangeParameter(name='cn3_swf.hru', parameter_type=FLOAT, range=[0.0, 1.0]), RangeParameter(name='esco.hru', parameter_type=FLOAT, range=[0.0, 1.0]), RangeParameter(name='epco.hru', parameter_type=FLOAT, range=[0.0, 1.0]), RangeParameter(name='perco.hru', parameter_type=FLOAT, range=[0.0, 1.0]), RangeParameter(name='snofall_tmp.hru', parameter_type=FLOAT, range=[-5.0, 5.0]), RangeParameter(name='snomelt_tmp.hru', parameter_type=FLOAT, range=[-5.0, 5.0]), RangeParameter(name='snomelt_max.hru', parameter_type=FLOAT, range=[0.0, 10.0]), RangeParameter(name='snomelt_min.hru', parameter_type=FLOAT, range=[0.0, 10.0])], parameter_constraints=[OrderConstraint(snomelt_min.hru <= snomelt_max.hru), OrderConstraint(snofall_tmp.hru <= snomelt_tmp.hru)]).
[INFO 07-13 16:55:05] ax.modelbridge.dispatch_utils: Using Models.GPEI since there are more ordered parameters than there are categories for the unordered categorical parameters.
[INFO 07-13 16:55:05] ax.modelbridge.dispatch_utils: Calculating the number of remaining initialization trials based on num_initialization_trials=None max_initialization_trials=None num_tunable_parameters=8 num_trials=None use_batch_trials=False
[INFO 07-13 16:55:05] ax.modelbridge.dispatch_utils: calculated num_initialization_trials=16
[INFO 07-13 16:55:05] ax.modelbridge.dispatch_utils: num_completed_initialization_trials=0 num_remaining_initialization_trials=16
[INFO 07-13 16:55:05] ax.modelbridge.dispatch_utils: Using Bayesian Optimization generation strategy: GenerationStrategy(name='Sobol+GPEI', steps=[Sobol for 16 trials, GPEI for subsequent trials]). Iterations after 16 will take longer to generate due to model-fitting.
[INFO 07-13 16:55:05] Scheduler: `Scheduler` requires experiment to have immutable search space and optimization config. Setting property immutable_search_space_and_opt_config to `True` on experiment.
[INFO 2024-07-13 16:55:05,504 MainProcess MainThread] boa: 

##############################################


BOA Experiment Run
Output Experiment Dir: [/path/to/your/dir/]/swat_plus_local_20240713T165505
Scheduler File Path: [/path/to/your/dir/]/swat_plus_local_20240713T165505/scheduler.json
Optimization CSV File Path: [/path/to/your/dir/]/swat_plus_local_20240713T165505/optimization.csv
Start Time: 20240713T165505
Version: 0.10.2

##############################################

[INFO 07-13 16:55:05] Scheduler: Running trials [0]...
[INFO 2024-07-13 16:55:05,554 MainProcess ThreadPoolExecutor-0_0] boa: Rscript run_model.R
[INFO 2024-07-13 16:55:05,559 MainProcess ThreadPoolExecutor-0_0] boa: {'config_path': PosixPath('[/path/to/your/dir/]/config_local_test.yaml'), 'config_dir': PosixPath('[/path/to/your/dir/]'), 'config_dir_name': 'swat', 'config_file_name': 'config_local_test.yaml', 'cn3_swf.hru': 0.8839095700532198, 'esco.hru': 0.6621499573811889, 'epco.hru': 0.9161975039169192, 'perco.hru': 0.3118354044854641, 'snofall_tmp.hru': -0.6253641005605459, 'snomelt_tmp.hru': 4.472801284864545, 'snomelt_max.hru': 9.241793220862746, 'snomelt_min.hru': 2.187449336051941, 'start_date': '2017-01-01', 'end_date': '2018-01-01', 'years_skip': 0, 'trial_dir': PosixPath('[/path/to/your/dir/]/swat_plus_local_20240713T165505/000000')}
[INFO 2024-07-13 16:55:05,560 MainProcess ThreadPoolExecutor-0_0] boa: Rscript run_model.R
[INFO 07-13 16:55:06] Scheduler: Running trials [1]...
[INFO 2024-07-13 16:55:06,645 MainProcess ThreadPoolExecutor-1_0] boa: Rscript run_model.R
[INFO 2024-07-13 16:55:06,648 MainProcess ThreadPoolExecutor-1_0] boa: {'config_path': PosixPath('[/path/to/your/dir/]/config_local_test.yaml'), 'config_dir': PosixPath('[/path/to/your/dir/]'), 'config_dir_name': 'swat', 'config_file_name': 'config_local_test.yaml', 'cn3_swf.hru': 0.07214706670492887, 'esco.hru': 0.29483017046004534, 'epco.hru': 0.26016903202980757, 'perco.hru': 0.2255386272445321, 'snofall_tmp.hru': -0.7177833281457424, 'snomelt_tmp.hru': 4.651660332456231, 'snomelt_max.hru': 6.627619517967105, 'snomelt_min.hru': 6.119475960731506, 'start_date': '2017-01-01', 'end_date': '2018-01-01', 'years_skip': 0, 'trial_dir': PosixPath('[/path/to/your/dir/]/swat_plus_local_20240713T165505/000001')}
[INFO 2024-07-13 16:55:06,649 MainProcess ThreadPoolExecutor-1_0] boa: Rscript run_model.R
[INFO 07-13 16:55:07] Scheduler: Running trials [2]...
[INFO 2024-07-13 16:55:07,697 MainProcess ThreadPoolExecutor-2_0] boa: Rscript run_model.R
[INFO 2024-07-13 16:55:07,698 MainProcess ThreadPoolExecutor-2_0] boa: {'config_path': PosixPath('[/path/to/your/dir/]/config_local_test.yaml'), 'config_dir': PosixPath('[/path/to/your/dir/]'), 'config_dir_name': 'swat', 'config_file_name': 'config_local_test.yaml', 'cn3_swf.hru': 0.9464534698054194, 'esco.hru': 0.21924071200191975, 'epco.hru': 0.8974708365276456, 'perco.hru': 0.033059642650187016, 'snofall_tmp.hru': -3.6592967621982098, 'snomelt_tmp.hru': -3.167379004880786, 'snomelt_max.hru': 7.359961709007621, 'snomelt_min.hru': 2.613484291359782, 'start_date': '2017-01-01', 'end_date': '2018-01-01', 'years_skip': 0, 'trial_dir': PosixPath('[/path/to/your/dir/]/swat_plus_local_20240713T165505/000002')}
[INFO 2024-07-13 16:55:07,700 MainProcess ThreadPoolExecutor-2_0] boa: Rscript run_model.R
[INFO 07-13 16:55:08] Scheduler: Running trials [3]...
[INFO 2024-07-13 16:55:08,742 MainProcess ThreadPoolExecutor-3_0] boa: Rscript run_model.R
[INFO 2024-07-13 16:55:08,748 MainProcess ThreadPoolExecutor-3_0] boa: {'config_path': PosixPath('[/path/to/your/dir/]/config_local_test.yaml'), 'config_dir': PosixPath('[/path/to/your/dir/]'), 'config_dir_name': 'swat', 'config_file_name': 'config_local_test.yaml', 'cn3_swf.hru': 0.8424002844840288, 'esco.hru': 0.6477350499480963, 'epco.hru': 0.7859902530908585, 'perco.hru': 0.7055127015337348, 'snofall_tmp.hru': -4.533747723326087, 'snomelt_tmp.hru': 4.049692759290338, 'snomelt_max.hru': 5.02367228269577, 'snomelt_min.hru': 3.752985270693898, 'start_date': '2017-01-01', 'end_date': '2018-01-01', 'years_skip': 0, 'trial_dir': PosixPath('[/path/to/your/dir/]/swat_plus_local_20240713T165505/000003')}
[INFO 2024-07-13 16:55:08,754 MainProcess ThreadPoolExecutor-3_0] boa: Rscript run_model.R
[INFO 07-13 16:55:09] Scheduler: Running trials [4]...
[INFO 2024-07-13 16:55:09,801 MainProcess ThreadPoolExecutor-4_0] boa: Rscript run_model.R
[INFO 2024-07-13 16:55:09,802 MainProcess ThreadPoolExecutor-4_0] boa: {'config_path': PosixPath('[/path/to/your/dir/]/config_local_test.yaml'), 'config_dir': PosixPath('[/path/to/your/dir/]'), 'config_dir_name': 'swat', 'config_file_name': 'config_local_test.yaml', 'cn3_swf.hru': 0.09015282243490219, 'esco.hru': 0.8759944401681423, 'epco.hru': 0.6658059284090996, 'perco.hru': 0.9821027759462595, 'snofall_tmp.hru': -3.4664035495370626, 'snomelt_tmp.hru': 0.7504366803914309, 'snomelt_max.hru': 3.7476333044469357, 'snomelt_min.hru': 2.5997505988925695, 'start_date': '2017-01-01', 'end_date': '2018-01-01', 'years_skip': 0, 'trial_dir': PosixPath('[/path/to/your/dir/]/swat_plus_local_20240713T165505/000004')}
[INFO 2024-07-13 16:55:09,804 MainProcess ThreadPoolExecutor-4_0] boa: Rscript run_model.R
[INFO 07-13 16:55:10] Scheduler: Waiting for completed trials (for 1 sec, currently running trials: 5).
[INFO 2024-07-13 16:55:11,651 MainProcess Thread-1 (subprocess_output)] boa: Building 1 thread in '[/path/to/your/dir/]/swat_plus_local_20240713T165505/000000/.model_run':
[INFO 07-13 16:55:11] Scheduler: Waiting for completed trials (for 1.5 sec, currently running trials: 5).
[INFO 2024-07-13 16:55:11,946 MainProcess Thread-1 (subprocess_output)] boa: 
[INFO 2024-07-13 16:55:11,947 MainProcess Thread-1 (subprocess_output)] boa: Thread 1 of 1   Time elapsed: 0S   Time remaining: 0S
[INFO 2024-07-13 16:55:11,948 MainProcess Thread-1 (subprocess_output)] boa: 
[INFO 2024-07-13 16:55:11,949 MainProcess Thread-1 (subprocess_output)] boa: Completed 1 thread in 0S
[INFO 2024-07-13 16:55:12,133 MainProcess Thread-2 (subprocess_output)] boa: Building 1 thread in '[/path/to/your/dir/]/swat_plus_local_20240713T165505/000001/.model_run':
[INFO 2024-07-13 16:55:12,512 MainProcess Thread-2 (subprocess_output)] boa: 
[INFO 2024-07-13 16:55:12,513 MainProcess Thread-2 (subprocess_output)] boa: Thread 1 of 1   Time elapsed: 0S   Time remaining: 0S
[INFO 2024-07-13 16:55:12,514 MainProcess Thread-2 (subprocess_output)] boa: 
[INFO 2024-07-13 16:55:12,515 MainProcess Thread-2 (subprocess_output)] boa: Completed 1 thread in 0S
[INFO 2024-07-13 16:55:13,265 MainProcess Thread-3 (subprocess_output)] boa: Building 1 thread in '[/path/to/your/dir/]/swat_plus_local_20240713T165505/000002/.model_run':
[INFO 07-13 16:55:13] Scheduler: Waiting for completed trials (for 2 sec, currently running trials: 5).
[INFO 2024-07-13 16:55:13,596 MainProcess Thread-3 (subprocess_output)] boa: 
[INFO 2024-07-13 16:55:13,597 MainProcess Thread-3 (subprocess_output)] boa: Thread 1 of 1   Time elapsed: 0S   Time remaining: 0S
[INFO 2024-07-13 16:55:13,598 MainProcess Thread-3 (subprocess_output)] boa: 
[INFO 2024-07-13 16:55:13,598 MainProcess Thread-3 (subprocess_output)] boa: Completed 1 thread in 0S
[INFO 2024-07-13 16:55:14,249 MainProcess Thread-4 (subprocess_output)] boa: Building 1 thread in '[/path/to/your/dir/]/swat_plus_local_20240713T165505/000003/.model_run':
[INFO 2024-07-13 16:55:14,392 MainProcess Thread-1 (subprocess_output)] boa: Performing 1 simulation on 1 core:
[INFO 2024-07-13 16:55:14,561 MainProcess Thread-4 (subprocess_output)] boa: 
[INFO 2024-07-13 16:55:14,562 MainProcess Thread-4 (subprocess_output)] boa: Thread 1 of 1   Time elapsed: 0S   Time remaining: 0S
[INFO 2024-07-13 16:55:14,564 MainProcess Thread-4 (subprocess_output)] boa: 
[INFO 2024-07-13 16:55:14,565 MainProcess Thread-4 (subprocess_output)] boa: Completed 1 thread in 0S
[INFO 2024-07-13 16:55:15,030 MainProcess Thread-2 (subprocess_output)] boa: Performing 1 simulation on 1 core:
[INFO 2024-07-13 16:55:15,145 MainProcess Thread-5 (subprocess_output)] boa: Building 1 thread in '[/path/to/your/dir/]/swat_plus_local_20240713T165505/000004/.model_run':
[INFO 2024-07-13 16:55:15,518 MainProcess Thread-5 (subprocess_output)] boa: 
[INFO 2024-07-13 16:55:15,520 MainProcess Thread-5 (subprocess_output)] boa: Thread 1 of 1   Time elapsed: 0S   Time remaining: 0S
[INFO 2024-07-13 16:55:15,521 MainProcess Thread-5 (subprocess_output)] boa: 
[INFO 2024-07-13 16:55:15,522 MainProcess Thread-5 (subprocess_output)] boa: Completed 1 thread in 0S
[INFO 07-13 16:55:15] Scheduler: Waiting for completed trials (for 3 sec, currently running trials: 5).
[INFO 2024-07-13 16:55:16,171 MainProcess Thread-3 (subprocess_output)] boa: Performing 1 simulation on 1 core:
[INFO 2024-07-13 16:55:17,225 MainProcess Thread-4 (subprocess_output)] boa: Performing 1 simulation on 1 core:
[INFO 2024-07-13 16:55:18,373 MainProcess Thread-5 (subprocess_output)] boa: Performing 1 simulation on 1 core:
[INFO 07-13 16:55:19] Scheduler: Waiting for completed trials (for 5 sec, currently running trials: 5).
[INFO 07-13 16:55:24] Scheduler: Waiting for completed trials (for 7 sec, currently running trials: 5).
[INFO 07-13 16:55:31] Scheduler: Waiting for completed trials (for 11 sec, currently running trials: 5).
[INFO 07-13 16:55:43] Scheduler: Waiting for completed trials (for 17 sec, currently running trials: 5).
[INFO 07-13 16:56:00] Scheduler: Waiting for completed trials (for 25 sec, currently running trials: 5).
[INFO 07-13 16:56:25] Scheduler: Waiting for completed trials (for 38 sec, currently running trials: 5).
[INFO 07-13 16:57:04] Scheduler: Waiting for completed trials (for 57 sec, currently running trials: 5).
[INFO 07-13 16:58:02] Scheduler: Waiting for completed trials (for 86 sec, currently running trials: 5).
[INFO 2024-07-13 16:58:52,727 MainProcess Thread-2 (subprocess_output)] boa: 
[INFO 2024-07-13 16:58:52,729 MainProcess Thread-2 (subprocess_output)] boa: Simulation 1 of 1   Time elapsed: 3M 38S   Time remaining: 0S
[INFO 2024-07-13 16:58:52,732 MainProcess Thread-2 (subprocess_output)] boa: 
[INFO 2024-07-13 16:58:52,733 MainProcess Thread-2 (subprocess_output)] boa: Completed 1 simulation in 3M 38S
[WARNING 2024-07-13 16:58:53,075 MainProcess Thread-2 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:53,076 MainProcess Thread-2 (subprocess_output)] boa: Attaching package: ‘dplyr’
[WARNING 2024-07-13 16:58:53,077 MainProcess Thread-2 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:53,078 MainProcess Thread-2 (subprocess_output)] boa: The following objects are masked from ‘package:stats’:
[WARNING 2024-07-13 16:58:53,079 MainProcess Thread-2 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:53,080 MainProcess Thread-2 (subprocess_output)] boa: filter, lag
[WARNING 2024-07-13 16:58:53,081 MainProcess Thread-2 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:53,082 MainProcess Thread-2 (subprocess_output)] boa: The following objects are masked from ‘package:base’:
[WARNING 2024-07-13 16:58:53,083 MainProcess Thread-2 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:53,084 MainProcess Thread-2 (subprocess_output)] boa: intersect, setdiff, setequal, union
[WARNING 2024-07-13 16:58:53,084 MainProcess Thread-2 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:53,085 MainProcess Thread-2 (subprocess_output)] boa: here() starts at /users/PAS0409/madelinescyphers/BOA-paper
[WARNING 2024-07-13 16:58:53,086 MainProcess Thread-2 (subprocess_output)] boa: Loading required package: zoo
[WARNING 2024-07-13 16:58:53,087 MainProcess Thread-2 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:53,088 MainProcess Thread-2 (subprocess_output)] boa: Attaching package: ‘zoo’
[WARNING 2024-07-13 16:58:53,089 MainProcess Thread-2 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:53,090 MainProcess Thread-2 (subprocess_output)] boa: The following objects are masked from ‘package:base’:
[WARNING 2024-07-13 16:58:53,090 MainProcess Thread-2 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:53,091 MainProcess Thread-2 (subprocess_output)] boa: as.Date, as.Date.numeric
[WARNING 2024-07-13 16:58:53,092 MainProcess Thread-2 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:53,093 MainProcess Thread-2 (subprocess_output)] boa: Please note that 'maptools' will be retired during October 2023,
[WARNING 2024-07-13 16:58:53,094 MainProcess Thread-2 (subprocess_output)] boa: plan transition at your earliest convenience (see
[WARNING 2024-07-13 16:58:53,095 MainProcess Thread-2 (subprocess_output)] boa: https://r-spatial.org/r/2023/05/15/evolution4.html and earlier blogs
[WARNING 2024-07-13 16:58:53,096 MainProcess Thread-2 (subprocess_output)] boa: for guidance);some functionality will be moved to 'sp'.
[WARNING 2024-07-13 16:58:53,097 MainProcess Thread-2 (subprocess_output)] boa: Checking rgeos availability: FALSE
[WARNING 2024-07-13 16:58:53,097 MainProcess Thread-2 (subprocess_output)] boa: Rows: 30187 Columns: 3
[WARNING 2024-07-13 16:58:53,098 MainProcess Thread-2 (subprocess_output)] boa: ── Column specification ────────────────────────────────────────────────────────
[WARNING 2024-07-13 16:58:53,099 MainProcess Thread-2 (subprocess_output)] boa: Delimiter: ","
[WARNING 2024-07-13 16:58:53,100 MainProcess Thread-2 (subprocess_output)] boa: chr  (1): variable
[WARNING 2024-07-13 16:58:53,101 MainProcess Thread-2 (subprocess_output)] boa: dbl  (1): value
[WARNING 2024-07-13 16:58:53,102 MainProcess Thread-2 (subprocess_output)] boa: date (1): date
[WARNING 2024-07-13 16:58:53,102 MainProcess Thread-2 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:53,103 MainProcess Thread-2 (subprocess_output)] boa:  Use `spec()` to retrieve the full column specification for this data.
[WARNING 2024-07-13 16:58:53,104 MainProcess Thread-2 (subprocess_output)] boa:  Specify the column types or set `show_col_types = FALSE` to quiet this message.
[INFO 2024-07-13 16:58:54,631 MainProcess Thread-5 (subprocess_output)] boa: 
[INFO 2024-07-13 16:58:54,632 MainProcess Thread-5 (subprocess_output)] boa: Simulation 1 of 1   Time elapsed: 3M 36S   Time remaining: 0S
[INFO 2024-07-13 16:58:54,633 MainProcess Thread-5 (subprocess_output)] boa: 
[INFO 2024-07-13 16:58:54,635 MainProcess Thread-5 (subprocess_output)] boa: Completed 1 simulation in 3M 36S
[WARNING 2024-07-13 16:58:55,015 MainProcess Thread-5 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:55,016 MainProcess Thread-5 (subprocess_output)] boa: Attaching package: ‘dplyr’
[WARNING 2024-07-13 16:58:55,017 MainProcess Thread-5 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:55,018 MainProcess Thread-5 (subprocess_output)] boa: The following objects are masked from ‘package:stats’:
[WARNING 2024-07-13 16:58:55,019 MainProcess Thread-5 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:55,020 MainProcess Thread-5 (subprocess_output)] boa: filter, lag
[WARNING 2024-07-13 16:58:55,020 MainProcess Thread-5 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:55,021 MainProcess Thread-5 (subprocess_output)] boa: The following objects are masked from ‘package:base’:
[WARNING 2024-07-13 16:58:55,022 MainProcess Thread-5 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:55,023 MainProcess Thread-5 (subprocess_output)] boa: intersect, setdiff, setequal, union
[WARNING 2024-07-13 16:58:55,023 MainProcess Thread-5 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:55,024 MainProcess Thread-5 (subprocess_output)] boa: here() starts at /users/PAS0409/madelinescyphers/BOA-paper
[WARNING 2024-07-13 16:58:55,025 MainProcess Thread-5 (subprocess_output)] boa: Loading required package: zoo
[WARNING 2024-07-13 16:58:55,025 MainProcess Thread-5 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:55,026 MainProcess Thread-5 (subprocess_output)] boa: Attaching package: ‘zoo’
[WARNING 2024-07-13 16:58:55,027 MainProcess Thread-5 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:55,028 MainProcess Thread-5 (subprocess_output)] boa: The following objects are masked from ‘package:base’:
[WARNING 2024-07-13 16:58:55,028 MainProcess Thread-5 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:55,029 MainProcess Thread-5 (subprocess_output)] boa: as.Date, as.Date.numeric
[WARNING 2024-07-13 16:58:55,030 MainProcess Thread-5 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:55,030 MainProcess Thread-5 (subprocess_output)] boa: Please note that 'maptools' will be retired during October 2023,
[WARNING 2024-07-13 16:58:55,031 MainProcess Thread-5 (subprocess_output)] boa: plan transition at your earliest convenience (see
[WARNING 2024-07-13 16:58:55,032 MainProcess Thread-5 (subprocess_output)] boa: https://r-spatial.org/r/2023/05/15/evolution4.html and earlier blogs
[WARNING 2024-07-13 16:58:55,032 MainProcess Thread-5 (subprocess_output)] boa: for guidance);some functionality will be moved to 'sp'.
[WARNING 2024-07-13 16:58:55,033 MainProcess Thread-5 (subprocess_output)] boa: Checking rgeos availability: FALSE
[WARNING 2024-07-13 16:58:55,034 MainProcess Thread-5 (subprocess_output)] boa: Rows: 30187 Columns: 3
[WARNING 2024-07-13 16:58:55,034 MainProcess Thread-5 (subprocess_output)] boa: ── Column specification ────────────────────────────────────────────────────────
[WARNING 2024-07-13 16:58:55,035 MainProcess Thread-5 (subprocess_output)] boa: Delimiter: ","
[WARNING 2024-07-13 16:58:55,036 MainProcess Thread-5 (subprocess_output)] boa: chr  (1): variable
[WARNING 2024-07-13 16:58:55,037 MainProcess Thread-5 (subprocess_output)] boa: dbl  (1): value
[WARNING 2024-07-13 16:58:55,038 MainProcess Thread-5 (subprocess_output)] boa: date (1): date
[WARNING 2024-07-13 16:58:55,038 MainProcess Thread-5 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:55,039 MainProcess Thread-5 (subprocess_output)] boa:  Use `spec()` to retrieve the full column specification for this data.
[WARNING 2024-07-13 16:58:55,041 MainProcess Thread-5 (subprocess_output)] boa:  Specify the column types or set `show_col_types = FALSE` to quiet this message.
[INFO 2024-07-13 16:58:55,567 MainProcess Thread-4 (subprocess_output)] boa: 
[INFO 2024-07-13 16:58:55,569 MainProcess Thread-4 (subprocess_output)] boa: Simulation 1 of 1   Time elapsed: 3M 38S   Time remaining: 0S
[INFO 2024-07-13 16:58:55,571 MainProcess Thread-4 (subprocess_output)] boa: 
[INFO 2024-07-13 16:58:55,573 MainProcess Thread-4 (subprocess_output)] boa: Completed 1 simulation in 3M 38S
[WARNING 2024-07-13 16:58:55,886 MainProcess Thread-4 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:55,887 MainProcess Thread-4 (subprocess_output)] boa: Attaching package: ‘dplyr’
[WARNING 2024-07-13 16:58:55,888 MainProcess Thread-4 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:55,889 MainProcess Thread-4 (subprocess_output)] boa: The following objects are masked from ‘package:stats’:
[WARNING 2024-07-13 16:58:55,889 MainProcess Thread-4 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:55,890 MainProcess Thread-4 (subprocess_output)] boa: filter, lag
[WARNING 2024-07-13 16:58:55,891 MainProcess Thread-4 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:55,892 MainProcess Thread-4 (subprocess_output)] boa: The following objects are masked from ‘package:base’:
[WARNING 2024-07-13 16:58:55,893 MainProcess Thread-4 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:55,940 MainProcess Thread-4 (subprocess_output)] boa: intersect, setdiff, setequal, union
[WARNING 2024-07-13 16:58:55,941 MainProcess Thread-4 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:55,942 MainProcess Thread-4 (subprocess_output)] boa: here() starts at /users/PAS0409/madelinescyphers/BOA-paper
[WARNING 2024-07-13 16:58:55,943 MainProcess Thread-4 (subprocess_output)] boa: Loading required package: zoo
[WARNING 2024-07-13 16:58:55,944 MainProcess Thread-4 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:55,945 MainProcess Thread-4 (subprocess_output)] boa: Attaching package: ‘zoo’
[WARNING 2024-07-13 16:58:55,946 MainProcess Thread-4 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:55,947 MainProcess Thread-4 (subprocess_output)] boa: The following objects are masked from ‘package:base’:
[WARNING 2024-07-13 16:58:55,948 MainProcess Thread-4 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:55,948 MainProcess Thread-4 (subprocess_output)] boa: as.Date, as.Date.numeric
[WARNING 2024-07-13 16:58:55,949 MainProcess Thread-4 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:55,950 MainProcess Thread-4 (subprocess_output)] boa: Please note that 'maptools' will be retired during October 2023,
[WARNING 2024-07-13 16:58:55,950 MainProcess Thread-4 (subprocess_output)] boa: plan transition at your earliest convenience (see
[WARNING 2024-07-13 16:58:55,951 MainProcess Thread-4 (subprocess_output)] boa: https://r-spatial.org/r/2023/05/15/evolution4.html and earlier blogs
[WARNING 2024-07-13 16:58:55,952 MainProcess Thread-4 (subprocess_output)] boa: for guidance);some functionality will be moved to 'sp'.
[WARNING 2024-07-13 16:58:55,953 MainProcess Thread-4 (subprocess_output)] boa: Checking rgeos availability: FALSE
[WARNING 2024-07-13 16:58:55,953 MainProcess Thread-4 (subprocess_output)] boa: Rows: 30187 Columns: 3
[WARNING 2024-07-13 16:58:55,954 MainProcess Thread-4 (subprocess_output)] boa: ── Column specification ────────────────────────────────────────────────────────
[WARNING 2024-07-13 16:58:55,955 MainProcess Thread-4 (subprocess_output)] boa: Delimiter: ","
[WARNING 2024-07-13 16:58:55,955 MainProcess Thread-4 (subprocess_output)] boa: chr  (1): variable
[WARNING 2024-07-13 16:58:55,956 MainProcess Thread-4 (subprocess_output)] boa: dbl  (1): value
[WARNING 2024-07-13 16:58:55,957 MainProcess Thread-4 (subprocess_output)] boa: date (1): date
[WARNING 2024-07-13 16:58:55,958 MainProcess Thread-4 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:55,959 MainProcess Thread-4 (subprocess_output)] boa:  Use `spec()` to retrieve the full column specification for this data.
[WARNING 2024-07-13 16:58:55,960 MainProcess Thread-4 (subprocess_output)] boa:  Specify the column types or set `show_col_types = FALSE` to quiet this message.
[INFO 2024-07-13 16:58:56,208 MainProcess Thread-1 (subprocess_output)] boa: 
[INFO 2024-07-13 16:58:56,209 MainProcess Thread-1 (subprocess_output)] boa: Simulation 1 of 1   Time elapsed: 3M 42S   Time remaining: 0S
[INFO 2024-07-13 16:58:56,213 MainProcess Thread-1 (subprocess_output)] boa: 
[INFO 2024-07-13 16:58:56,215 MainProcess Thread-1 (subprocess_output)] boa: Completed 1 simulation in 3M 42S
[WARNING 2024-07-13 16:58:56,637 MainProcess Thread-1 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:56,638 MainProcess Thread-1 (subprocess_output)] boa: Attaching package: ‘dplyr’
[WARNING 2024-07-13 16:58:56,639 MainProcess Thread-1 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:56,640 MainProcess Thread-1 (subprocess_output)] boa: The following objects are masked from ‘package:stats’:
[WARNING 2024-07-13 16:58:56,641 MainProcess Thread-1 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:56,642 MainProcess Thread-1 (subprocess_output)] boa: filter, lag
[WARNING 2024-07-13 16:58:56,643 MainProcess Thread-1 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:56,644 MainProcess Thread-1 (subprocess_output)] boa: The following objects are masked from ‘package:base’:
[WARNING 2024-07-13 16:58:56,645 MainProcess Thread-1 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:56,646 MainProcess Thread-1 (subprocess_output)] boa: intersect, setdiff, setequal, union
[WARNING 2024-07-13 16:58:56,647 MainProcess Thread-1 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:56,647 MainProcess Thread-1 (subprocess_output)] boa: here() starts at /users/PAS0409/madelinescyphers/BOA-paper
[WARNING 2024-07-13 16:58:56,648 MainProcess Thread-1 (subprocess_output)] boa: Loading required package: zoo
[WARNING 2024-07-13 16:58:56,649 MainProcess Thread-1 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:56,650 MainProcess Thread-1 (subprocess_output)] boa: Attaching package: ‘zoo’
[WARNING 2024-07-13 16:58:56,651 MainProcess Thread-1 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:56,652 MainProcess Thread-1 (subprocess_output)] boa: The following objects are masked from ‘package:base’:
[WARNING 2024-07-13 16:58:56,652 MainProcess Thread-1 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:56,653 MainProcess Thread-1 (subprocess_output)] boa: as.Date, as.Date.numeric
[WARNING 2024-07-13 16:58:56,654 MainProcess Thread-1 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:56,655 MainProcess Thread-1 (subprocess_output)] boa: Please note that 'maptools' will be retired during October 2023,
[WARNING 2024-07-13 16:58:56,656 MainProcess Thread-1 (subprocess_output)] boa: plan transition at your earliest convenience (see
[WARNING 2024-07-13 16:58:56,657 MainProcess Thread-1 (subprocess_output)] boa: https://r-spatial.org/r/2023/05/15/evolution4.html and earlier blogs
[WARNING 2024-07-13 16:58:56,658 MainProcess Thread-1 (subprocess_output)] boa: for guidance);some functionality will be moved to 'sp'.
[WARNING 2024-07-13 16:58:56,659 MainProcess Thread-1 (subprocess_output)] boa: Checking rgeos availability: FALSE
[WARNING 2024-07-13 16:58:56,659 MainProcess Thread-1 (subprocess_output)] boa: Rows: 30187 Columns: 3
[WARNING 2024-07-13 16:58:56,660 MainProcess Thread-1 (subprocess_output)] boa: ── Column specification ────────────────────────────────────────────────────────
[WARNING 2024-07-13 16:58:56,661 MainProcess Thread-1 (subprocess_output)] boa: Delimiter: ","
[WARNING 2024-07-13 16:58:56,662 MainProcess Thread-1 (subprocess_output)] boa: chr  (1): variable
[WARNING 2024-07-13 16:58:56,663 MainProcess Thread-1 (subprocess_output)] boa: dbl  (1): value
[WARNING 2024-07-13 16:58:56,664 MainProcess Thread-1 (subprocess_output)] boa: date (1): date
[WARNING 2024-07-13 16:58:56,665 MainProcess Thread-1 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:58:56,666 MainProcess Thread-1 (subprocess_output)] boa:  Use `spec()` to retrieve the full column specification for this data.
[WARNING 2024-07-13 16:58:56,667 MainProcess Thread-1 (subprocess_output)] boa:  Specify the column types or set `show_col_types = FALSE` to quiet this message.
[INFO 2024-07-13 16:59:03,571 MainProcess Thread-3 (subprocess_output)] boa: 
[INFO 2024-07-13 16:59:03,573 MainProcess Thread-3 (subprocess_output)] boa: Simulation 1 of 1   Time elapsed: 3M 47S   Time remaining: 0S
[INFO 2024-07-13 16:59:03,575 MainProcess Thread-3 (subprocess_output)] boa: 
[INFO 2024-07-13 16:59:03,576 MainProcess Thread-3 (subprocess_output)] boa: Completed 1 simulation in 3M 47S
[WARNING 2024-07-13 16:59:03,933 MainProcess Thread-3 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:59:03,935 MainProcess Thread-3 (subprocess_output)] boa: Attaching package: ‘dplyr’
[WARNING 2024-07-13 16:59:03,936 MainProcess Thread-3 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:59:03,937 MainProcess Thread-3 (subprocess_output)] boa: The following objects are masked from ‘package:stats’:
[WARNING 2024-07-13 16:59:03,938 MainProcess Thread-3 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:59:03,939 MainProcess Thread-3 (subprocess_output)] boa: filter, lag
[WARNING 2024-07-13 16:59:03,940 MainProcess Thread-3 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:59:03,941 MainProcess Thread-3 (subprocess_output)] boa: The following objects are masked from ‘package:base’:
[WARNING 2024-07-13 16:59:03,942 MainProcess Thread-3 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:59:03,942 MainProcess Thread-3 (subprocess_output)] boa: intersect, setdiff, setequal, union
[WARNING 2024-07-13 16:59:03,943 MainProcess Thread-3 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:59:03,944 MainProcess Thread-3 (subprocess_output)] boa: here() starts at /users/PAS0409/madelinescyphers/BOA-paper
[WARNING 2024-07-13 16:59:03,945 MainProcess Thread-3 (subprocess_output)] boa: Loading required package: zoo
[WARNING 2024-07-13 16:59:03,946 MainProcess Thread-3 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:59:03,947 MainProcess Thread-3 (subprocess_output)] boa: Attaching package: ‘zoo’
[WARNING 2024-07-13 16:59:03,948 MainProcess Thread-3 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:59:03,949 MainProcess Thread-3 (subprocess_output)] boa: The following objects are masked from ‘package:base’:
[WARNING 2024-07-13 16:59:03,950 MainProcess Thread-3 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:59:03,951 MainProcess Thread-3 (subprocess_output)] boa: as.Date, as.Date.numeric
[WARNING 2024-07-13 16:59:03,951 MainProcess Thread-3 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:59:03,952 MainProcess Thread-3 (subprocess_output)] boa: Please note that 'maptools' will be retired during October 2023,
[WARNING 2024-07-13 16:59:03,953 MainProcess Thread-3 (subprocess_output)] boa: plan transition at your earliest convenience (see
[WARNING 2024-07-13 16:59:03,953 MainProcess Thread-3 (subprocess_output)] boa: https://r-spatial.org/r/2023/05/15/evolution4.html and earlier blogs
[WARNING 2024-07-13 16:59:03,954 MainProcess Thread-3 (subprocess_output)] boa: for guidance);some functionality will be moved to 'sp'.
[WARNING 2024-07-13 16:59:03,955 MainProcess Thread-3 (subprocess_output)] boa: Checking rgeos availability: FALSE
[WARNING 2024-07-13 16:59:03,956 MainProcess Thread-3 (subprocess_output)] boa: Rows: 30187 Columns: 3
[WARNING 2024-07-13 16:59:03,956 MainProcess Thread-3 (subprocess_output)] boa: ── Column specification ────────────────────────────────────────────────────────
[WARNING 2024-07-13 16:59:03,957 MainProcess Thread-3 (subprocess_output)] boa: Delimiter: ","
[WARNING 2024-07-13 16:59:03,958 MainProcess Thread-3 (subprocess_output)] boa: chr  (1): variable
[WARNING 2024-07-13 16:59:03,959 MainProcess Thread-3 (subprocess_output)] boa: dbl  (1): value
[WARNING 2024-07-13 16:59:03,960 MainProcess Thread-3 (subprocess_output)] boa: date (1): date
[WARNING 2024-07-13 16:59:03,961 MainProcess Thread-3 (subprocess_output)] boa: 
[WARNING 2024-07-13 16:59:03,962 MainProcess Thread-3 (subprocess_output)] boa:  Use `spec()` to retrieve the full column specification for this data.
[WARNING 2024-07-13 16:59:03,962 MainProcess Thread-3 (subprocess_output)] boa:  Specify the column types or set `show_col_types = FALSE` to quiet this message.
[INFO 07-13 16:59:28] Scheduler: Retrieved COMPLETED trials: 0 - 4.
[INFO 07-13 16:59:28] Scheduler: Fetching data for trials: 0 - 4.
[INFO 2024-07-13 16:59:28,850 MainProcess MainThread] boa: Saved optimization parametrization and objective to `[/path/to/your/dir/]/swat_plus_local_20240713T165505/optimization.csv`.
[INFO 2024-07-13 16:59:28,890 MainProcess MainThread] boa: Saved JSON-serialized state of optimization to `[/path/to/your/dir/]/swat_plus_local_20240713T165505/scheduler.json`.
Boa version: 0.10.2
[INFO 2024-07-13 16:59:28,906 MainProcess MainThread] boa: Trials so far: 5
Currently running trials: []
Will Produce next trials from generation step: Sobol
Best trial so far: {1: {'flo_out_NSE': 0.3135}}
[INFO 2024-07-13 16:59:28,927 MainProcess MainThread] boa: Saved optimization parametrization and objective to `[/path/to/your/dir/]/swat_plus_local_20240713T165505/optimization.csv`.
[INFO 2024-07-13 16:59:28,943 MainProcess MainThread] boa: Saved JSON-serialized state of optimization to `[/path/to/your/dir/]/swat_plus_local_20240713T165505/scheduler.json`.
Boa version: 0.10.2
[INFO 2024-07-13 16:59:28,958 MainProcess MainThread] boa: Trials so far: 5
Currently running trials: []
Will Produce next trials from generation step: Sobol
Best trial so far: {1: {'flo_out_NSE': 0.3135}}
[INFO 2024-07-13 16:59:28,994 MainProcess MainThread] boa: 

##############################################

Trials Completed!
BOA Experiment Run
Output Experiment Dir: [/path/to/your/dir/]/swat_plus_local_20240713T165505
Scheduler File Path: [/path/to/your/dir/]/swat_plus_local_20240713T165505/scheduler.json
Optimization CSV File Path: [/path/to/your/dir/]/swat_plus_local_20240713T165505/optimization.csv
Start Time: 20240713T165505
Version: 0.10.2
End Time: 20240713T165928
Total Run Time: 263.45512199401855

   trial_index arm_name trial_status  ...  start_date    end_date  years_skip
0            0      0_0    COMPLETED  ...  2017-01-01  2018-01-01           0
1            1      1_0    COMPLETED  ...  2017-01-01  2018-01-01           0
2            2      2_0    COMPLETED  ...  2017-01-01  2018-01-01           0
3            3      3_0    COMPLETED  ...  2017-01-01  2018-01-01           0
4            4      4_0    COMPLETED  ...  2017-01-01  2018-01-01           0

[5 rows x 16 columns]

##############################################