Running using param. dict.

[This note-book is in oceantracker/tutorials_how_to/]

The earlier notebook showed how to set parameters and run using the helper class. Here we exploit the flexibility to run Oceantracker directly using a parameter dictionary built in code or read from a file. The dictionary can be built using {‘pulse_size’:10} or dict(pulse=10) approaches.

Build param. dict. with code

The below extends the minimal_example, shows two ways to build a parameter dictionary and different ways to run OceanTracker, from code or command line.

# build a more complex dictionary of parameters using code
params={
    'output_file_base' :'param_test1',      # name used as base for output files
    'root_output_dir':'output',             #  output is put in dir   'root_output_dir'/'output_file_base'
    'time_step' : 120,  #  2 min time step as seconds
    'reader': dict(input_dir='../demos/demo_hindcast/schsim3D',  # folder to search for hindcast files, sub-dirs will, by default, also be searched
                  file_mask= 'demo_hindcast_schisim3D*.nc',    # the file mask of the hindcast files
                    ),
    # add a list of release groups, the release locations from two points,
    #       particle_release_groups are a list of one or more release groups
    #               (ie locations where particles are released at the same times and locations)
    'release_groups': [ # class_name not uses as PointRelease is the default
                {'name': 'my_release_point', # optional name to refer to in code
                'points':[[1595000, 5482600],
                          [1599000, 5486200]],      # must be an N by 2 or 3 or list, convertible to a numpy array
                'release_interval': 3600,           # seconds between releasing particles
                'pulse_size': 10,                   # number of particles released each release_interval
                },
                {'class_name': 'PolygonRelease', # use a polygon release
                                    'points':[   [1597682.1237, 5489972.7479],
                                                    [1598604.1667, 5490275.5488],
                                                    [1598886.4247, 5489464.0424],
                                                    [1597917.3387, 5489000],
                                                    [1597300, 5489000], [1597682.1237, 5489972.7479]],
                                    'release_interval': 7200,           # seconds between releasing particles
                                    'pulse_size': 20,                   # number of particles released each release_interval
                                    },
                ],
    'resuspension' : dict(critical_friction_velocity= .005), # only re-suspend particles if friction vel. exceeds this value

    # list of velocity_modifiers are a set of velocities added to  water velocity give in  hydrodynamic model's
    'velocity_modifiers' : [   # here a fall velocity with given mean and variance is added to the computation
                {'name':'fall_velocity', #optional name
                 'class_name' : 'TerminalVelocity',
                 'value': -0.001,
                 'variance': 0.0002} # fall velocity has this variance around value
                        ],
        }

# write params to build on for later examples
from oceantracker.util import json_util, yaml_util
json_util.write_JSON('./example_param_files/param_test1.json', params)
yaml_util.write_YAML('./example_param_files/param_test1.yaml', params)

### Show parameters in yaml format

yaml format has no brackets/braces and relies on tab indenting to nest items

# show the params in yaml format
import yaml
p = yaml_util.read_YAML('./example_param_files/param_test1.yaml')
print( yaml.dump(p))
output_file_base: param_test1
reader:
  file_mask: demo_hindcast_schisim3D*.nc
  input_dir: ../demos/demo_hindcast/schsim3D
release_groups:
- name: my_release_point
  points:
  - - 1595000
    - 5482600
  - - 1599000
    - 5486200
  pulse_size: 10
  release_interval: 3600
- class_name: PolygonRelease
  points:
  - - 1597682.1237
    - 5489972.7479
  - - 1598604.1667
    - 5490275.5488
  - - 1598886.4247
    - 5489464.0424
  - - 1597917.3387
    - 5489000
  - - 1597300
    - 5489000
  - - 1597682.1237
    - 5489972.7479
  pulse_size: 20
  release_interval: 7200
resuspension:
  critical_friction_velocity: 0.005
root_output_dir: output
time_step: 120
velocity_modifiers:
- class_name: TerminalVelocity
  name: fall_velocity
  value: -0.001
  variance: 0.0002

Run OceanTracker from parameters

There are several ways to run OceanTracker

  1. By coding

    • build parameters in code and run

    • or coding to read parameter file and then run

  2. Without coding

    • run from command line with parameter file which is built by editing a json/yaml text file

Note:

There are many ways to run the code, eg. with IDE like Pycharm, Visual Studio Code. It can also, as here, be run in iPython notebooks. However the way notebooks are implemented can sometimes result in issues:

  • errors when running Oceantracker a second time or other unexpected behavior, due to shared memory space, fix by reloading the kernel

  • if using note books on Windows, it is not possible to run Oceantracker cases in parallel, without a work around given in a later “how to”.

Run with code built params.

Is line below!

# run oceantracker using param dict built in cells above
from oceantracker import main

case_info_file_name = main.run(params)
# case_info file is the name of a json file useful in plotting results
prelim:     Starting package set up
helper:      Python version: 3.11.9 | packaged by conda-forge | (main, Apr 19 2024, 18:27:10) [MSC v.1938 64 bit (AMD64)]
helper: >>> Warning: Oceantracker is compatible with Python 3.11, but > 3.11, however not all external imported packages have been updated to be compatible with 3.11
helper:     hint: Down grade to python 3.10 if unexplained issues in external packages
helper: ----------------------------------------------------------------------
helper: OceanTracker version 0.50.0030-2025-01-28  starting setup helper "main.py":
helper: Output is in dir "f:H_Local_driveParticleTrackingoceantrackertutorials_how_tooutputparam_test1"
helper:     hint: see for copies of screen output and user supplied parameters, plus all other output
helper:     >>> Note: to help with debugging, parameters as given by user  are in "user_given_params.json"
helper: ----------------------------------------------------------------------
helper: Numba setup: applied settings, max threads = 32, physical cores = 32
helper:     hint:  cache code = False, fastmath= False
helper: ----------------------------------------------------------------------
helper:       - Built OceanTracker package tree,      0.988 sec
helper:       - Built OceanTracker sort name map,     0.000 sec
helper:   - Done package set up to setup ClassImporter,       0.988 sec
setup: ----------------------------------------------------------------------
setup:  OceanTracker version 0.50.0030-2025-01-28
setup:     Starting user param. runner: "param_test1" at  2025-02-20T12:15:05.920385
setup: ----------------------------------------------------------------------
setup:   - Start  field group manager and readers setup
setup:   - Found input dir "../demos/demo_hindcast/schsim3D"
setup:   - Detected reader class_name = "oceantracker.reader.SCHISM_reader.SCHISMreader"
setup:     Hydro-model is "3D", type "SCHISMreader"
setup:         hint: Files found in dir and sub-dirs of "../demos/demo_hindcast/schsim3D"
setup:         Geographic coords = "False"
setup:         Hindcast start: 2017-01-01T00:30:00  end:  2017-01-01T23:30:00
setup:           time step = 0 days 1 hrs 0 min 0 sec, number of time steps= 24
setup:           grid bounding box = [1589789.000 5479437.000] to [1603398.000 5501640.000]
setup:       - Starting grid setup
setup:       - built node to triangles map,   1.334 sec
setup:       - built triangle adjacency matrix,       0.159 sec
setup:       - found boundary triangles,      0.000 sec
setup:       - built domain and island outlines,      0.977 sec
setup:       - calculated triangle areas,     0.000 sec
setup:       - Finished grid setup
setup:       - built barycentric-transform matrix,    0.343 sec
setup:   - Finished field group manager and readers setup,    4.133 sec
setup:   - Added release groups and found run start and end times,    0.443 sec
setup:   - Done initial setup of all classes,         1.007 sec
setup: ----------------------------------------------------------------------
setup:   - Starting param_test1,  duration: 0 days 23 hrs 0 min 0 sec
setup:       From 2017-01-01T00:30:00 to  2017-01-01T23:30:00
setup:   -  Reading 24 time steps,  for hindcast time steps 00:23 into ring buffer offsets 000:023
setup:       -  read  24 time steps in  1.7 sec, from ../demos/demo_hindcast/schsim3D
setup: ----------------------------------------------------------------------
setup:   - Starting time stepping: 2017-01-01T00:30:00 to 2017-01-01T23:30:00 , duration  0 days 23 hrs 0 min 0 sec
S:   - Opened tracks output and done written first time step in: "param_test1_tracks_compact.nc",     0.129 sec
S: 0000: 00%:H0000b00-01 Day +00 00:00 2017-01-01 00:30:00: Rel:40   : Active:40     Move:40     Bottom:   0 Strand:0      Dead:   0 Out:   0 Buffer: 5%  step time = 12667.2 ms
S: 0030: 04%:H0001b01-02 Day +00 01:00 2017-01-01 01:30:00: Rel:60   : Active:60     Move:58     Bottom:   2 Strand:0      Dead:   0 Out:   0 Buffer: 8%  step time =  6.7 ms
S: 0060: 09%:H0002b02-03 Day +00 02:00 2017-01-01 02:30:00: Rel:100  : Active:100    Move:95     Bottom:   5 Strand:0      Dead:   0 Out:   0 Buffer:13%  step time =  7.7 ms
S: 0090: 13%:H0003b03-04 Day +00 03:00 2017-01-01 03:30:00: Rel:120  : Active:120    Move:108    Bottom:   2 Strand:10     Dead:   0 Out:   0 Buffer:16%  step time =  6.2 ms
S: 0120: 17%:H0004b04-05 Day +00 04:00 2017-01-01 04:30:00: Rel:160  : Active:160    Move:143    Bottom:   7 Strand:10     Dead:   0 Out:   0 Buffer:22%  step time =  7.0 ms
S: 0150: 22%:H0005b05-06 Day +00 05:00 2017-01-01 05:30:00: Rel:180  : Active:180    Move:155    Bottom:  15 Strand:10     Dead:   0 Out:   0 Buffer:25%  step time =  6.0 ms
S: 0180: 26%:H0006b06-07 Day +00 06:00 2017-01-01 06:30:00: Rel:220  : Active:220    Move:198    Bottom:  12 Strand:10     Dead:   0 Out:   0 Buffer:30%  step time =  6.6 ms
S: 0210: 30%:H0007b07-08 Day +00 07:00 2017-01-01 07:30:00: Rel:240  : Active:240    Move:219    Bottom:  11 Strand:10     Dead:   0 Out:   0 Buffer:33%  step time =  6.1 ms
S: 0240: 35%:H0008b08-09 Day +00 08:00 2017-01-01 08:30:00: Rel:280  : Active:280    Move:260    Bottom:  10 Strand:10     Dead:   0 Out:   0 Buffer:38%  step time =  6.9 ms
S: 0270: 39%:H0009b09-10 Day +00 09:00 2017-01-01 09:30:00: Rel:300  : Active:300    Move:287    Bottom:  13 Strand:0      Dead:   0 Out:   0 Buffer:41%  step time =  6.9 ms
S: 0300: 43%:H0010b10-11 Day +00 10:00 2017-01-01 10:30:00: Rel:340  : Active:340    Move:318    Bottom:  22 Strand:0      Dead:   0 Out:   0 Buffer:47%  step time =  7.2 ms
S: 0330: 48%:H0011b11-12 Day +00 11:00 2017-01-01 11:30:00: Rel:360  : Active:360    Move:342    Bottom:  18 Strand:0      Dead:   0 Out:   0 Buffer:50%  step time =  6.3 ms
S: 0360: 52%:H0012b12-13 Day +00 12:00 2017-01-01 12:30:00: Rel:400  : Active:400    Move:386    Bottom:  14 Strand:0      Dead:   0 Out:   0 Buffer:55%  step time =  7.2 ms
S: 0390: 57%:H0012b12-13 Day +00 13:00 2017-01-01 13:30:00: Rel:420  : Active:420    Move:400    Bottom:   8 Strand:12     Dead:   0 Out:   0 Buffer:58%  step time =  6.6 ms
S: 0420: 61%:H0014b14-15 Day +00 14:00 2017-01-01 14:30:00: Rel:460  : Active:460    Move:442    Bottom:   6 Strand:12     Dead:   0 Out:   0 Buffer:63%  step time =  7.3 ms
S: 0450: 65%:H0015b15-16 Day +00 15:00 2017-01-01 15:30:00: Rel:480  : Active:480    Move:444    Bottom:   1 Strand:35     Dead:   0 Out:   0 Buffer:66%  step time =  6.5 ms
S: 0480: 70%:H0016b16-17 Day +00 16:00 2017-01-01 16:30:00: Rel:520  : Active:520    Move:477    Bottom:   3 Strand:40     Dead:   0 Out:   0 Buffer:72%  step time =  8.4 ms
S: 0510: 74%:H0017b17-18 Day +00 17:00 2017-01-01 17:30:00: Rel:540  : Active:540    Move:489    Bottom:   1 Strand:50     Dead:   0 Out:   0 Buffer:75%  step time =  6.6 ms
S: 0540: 78%:H0018b18-19 Day +00 18:00 2017-01-01 18:30:00: Rel:580  : Active:580    Move:530    Bottom:   0 Strand:50     Dead:   0 Out:   0 Buffer:80%  step time =  6.5 ms
S: 0570: 83%:H0019b19-20 Day +00 19:00 2017-01-01 19:30:00: Rel:600  : Active:600    Move:549    Bottom:   3 Strand:48     Dead:   0 Out:   0 Buffer:83%  step time =  6.2 ms
S: 0600: 87%:H0020b20-21 Day +00 20:00 2017-01-01 20:30:00: Rel:640  : Active:640    Move:593    Bottom:   4 Strand:43     Dead:   0 Out:   0 Buffer:88%  step time = 10.6 ms
S: 0630: 91%:H0021b21-22 Day +00 21:00 2017-01-01 21:30:00: Rel:660  : Active:660    Move:642    Bottom:   6 Strand:12     Dead:   0 Out:   0 Buffer:91%  step time =  9.2 ms
S: 0660: 96%:H0022b22-23 Day +00 22:00 2017-01-01 22:30:00: Rel:700  : Active:700    Move:681    Bottom:   7 Strand:12     Dead:   0 Out:   0 Buffer:97%  step time =  8.2 ms
S: 0690: 100%:H0023b23-00 Day +00 23:00 2017-01-01 23:30:00: Rel:700  : Active:700    Move:694    Bottom:   6 Strand:0      Dead:   0 Out:   0 Buffer:97%  step time =  9.6 ms
end: ----------------------------------------------------------------------
end: >>> Warning: Oceantracker is compatible with Python 3.11, but > 3.11, however not all external imported packages have been updated to be compatible with 3.11
end:     hint: Down grade to python 3.10 if unexplained issues in external packages
end:
end: ----------------------------------------------------------------------
end:       Error counts -   0 errors,   1 warnings,   1 notes, check above
end:
end:   - Finished "param_test1" started: 19597.8622025, ended: 2025-02-20 12:15:37.556692
end:       Computational time =0:00:32.787589
end:   Output in f:H_Local_driveParticleTrackingoceantrackertutorials_how_tooutputparam_test1
end:
end: --- Finished Oceantracker run ----------------------------------------
end:
# plot animation of results
from matplotlib import pyplot as plt
from plot_oceantracker.plot_tracks import animate_particles
from read_oceantracker.python import  load_output_files
from IPython.display import HTML # show animation in note book

# read particle track data into a dictionary using case_info_file_name
tracks = load_output_files.load_track_data(case_info_file_name)

ax= [1591000, 1601500, 5479500, 5491000]  # area to plot
# animate particles
anim = animate_particles(tracks, axis_lims=ax,title='Fall vel.,  test' ,
                         show_dry_cells=True, show_grid=True, show=False) # use ipython to show video, rather than matplotlib plt.show()

# this line only used in note books, in python scripts use show = True above and set movie file name
# this is slow to build!
HTML(anim.to_html5_video())# this is slow to build!
info/how_to/E_run_using_parameter_dictionaries_files%5CE_run_using_parameter_dictionaries_6_1.png

Run by reading param. file

Run from command line

Run without coding from command lin bu using a parameter file pre-built in a text editor.

From within an activated oceantracker conda environment, run command line below.

On Windows, do this within an anaconda/miniconda prompt window with an activated environment.

eg. run “run_oceantracker.py” script in the oceantracker/oceantracker directory with command

python  ../oceantracker/run_oceantracker.py ./example_param_files/param_test1.json

!python  ../oceantracker/run_ot_cmd_line.py ./example_param_files/param_test1.json
prelim:     Starting package set up
helper:      Python version: 3.11.9 | packaged by conda-forge | (main, Apr 19 2024, 18:27:10) [MSC v.1938 64 bit (AMD64)]
helper: >>> Warning: Oceantracker is compatible with Python 3.11, but > 3.11, however not all external imported packages have been updated to be compatible with 3.11
helper:     hint: Down grade to python 3.10 if unexplained issues in external packages
helper: ----------------------------------------------------------------------
helper: OceanTracker version 0.50.0030-2025-01-28  starting setup helper "main.py":
helper: >>> Warning: Deleted contents of existing output dir
helper: Output is in dir "f:H_Local_driveParticleTrackingoceantrackertutorials_how_tooutputparam_test1"
helper:     hint: see for copies of screen output and user supplied parameters, plus all other output
helper:     >>> Note: to help with debugging, parameters as given by user  are in "user_given_params.json"
helper: ----------------------------------------------------------------------
helper: Numba setup: applied settings, max threads = 32, physical cores = 32
helper:     hint:  cache code = False, fastmath= False
helper: ----------------------------------------------------------------------
helper:       - Built OceanTracker package tree,      0.872 sec
helper:       - Built OceanTracker sort name map,     0.000 sec
helper:   - Done package set up to setup ClassImporter,       0.872 sec
setup: ----------------------------------------------------------------------
setup:  OceanTracker version 0.50.0030-2025-01-28
setup:     Starting user param. runner: "param_test1" at  2025-02-20T12:16:18.074162
setup: ----------------------------------------------------------------------
setup:   - Start  field group manager and readers setup
setup:   - Found input dir "../demos/demo_hindcast/schsim3D"
setup:   - Detected reader class_name = "oceantracker.reader.SCHISM_reader.SCHISMreader"
setup:     Hydro-model is "3D", type "SCHISMreader"
setup:         hint: Files found in dir and sub-dirs of "../demos/demo_hindcast/schsim3D"
setup:         Geographic coords = "False"
setup:         Hindcast start: 2017-01-01T00:30:00  end:  2017-01-01T23:30:00
setup:           time step = 0 days 1 hrs 0 min 0 sec, number of time steps= 24
setup:           grid bounding box = [1589789.000 5479437.000] to [1603398.000 5501640.000]
setup:       - Starting grid setup
setup:       - built node to triangles map,   1.199 sec
setup:       - built triangle adjacency matrix,       0.156 sec
setup:       - found boundary triangles,      0.000 sec
setup:       - built domain and island outlines,      0.993 sec
setup:       - calculated triangle areas,     0.000 sec
setup:       - Finished grid setup
setup:       - built barycentric-transform matrix,    0.235 sec
setup:   - Finished field group manager and readers setup,    3.881 sec
setup:   - Added release groups and found run start and end times,    0.620 sec
setup:   - Done initial setup of all classes,         1.005 sec
setup: ----------------------------------------------------------------------
setup:   - Starting param_test1,  duration: 0 days 23 hrs 0 min 0 sec
setup:       From 2017-01-01T00:30:00 to  2017-01-01T23:30:00
setup:   -  Reading 24 time steps,  for hindcast time steps 00:23 into ring buffer offsets 000:023
setup:       -  read  24 time steps in  1.6 sec, from ../demos/demo_hindcast/schsim3D
setup: ----------------------------------------------------------------------
setup:   - Starting time stepping: 2017-01-01T00:30:00 to 2017-01-01T23:30:00 , duration  0 days 23 hrs 0 min 0 sec
S:   - Opened tracks output and done written first time step in: "param_test1_tracks_compact.nc",     0.103 sec
S: 0000: 00%:H0000b00-01 Day +00 00:00 2017-01-01 00:30:00: Rel:40   : Active:40     Move:40     Bottom:   0 Strand:0      Dead:   0 Out:   0 Buffer: 5%  step time = 12450.5 ms
S: 0030: 04%:H0001b01-02 Day +00 01:00 2017-01-01 01:30:00: Rel:60   : Active:60     Move:57     Bottom:   3 Strand:0      Dead:   0 Out:   0 Buffer: 8%  step time = 12.4 ms
S: 0060: 09%:H0002b02-03 Day +00 02:00 2017-01-01 02:30:00: Rel:100  : Active:100    Move:93     Bottom:   7 Strand:0      Dead:   0 Out:   0 Buffer:13%  step time =  7.9 ms
S: 0090: 13%:H0003b03-04 Day +00 03:00 2017-01-01 03:30:00: Rel:120  : Active:120    Move:108    Bottom:   2 Strand:10     Dead:   0 Out:   0 Buffer:16%  step time =  6.3 ms
S: 0120: 17%:H0004b04-05 Day +00 04:00 2017-01-01 04:30:00: Rel:160  : Active:160    Move:143    Bottom:   7 Strand:10     Dead:   0 Out:   0 Buffer:22%  step time =  9.2 ms
S: 0150: 22%:H0005b05-06 Day +00 05:00 2017-01-01 05:30:00: Rel:180  : Active:180    Move:154    Bottom:  16 Strand:10     Dead:   0 Out:   0 Buffer:25%  step time =  6.4 ms
S: 0180: 26%:H0006b06-07 Day +00 06:00 2017-01-01 06:30:00: Rel:220  : Active:220    Move:200    Bottom:  10 Strand:10     Dead:   0 Out:   0 Buffer:30%  step time =  7.2 ms
S: 0210: 30%:H0007b07-08 Day +00 07:00 2017-01-01 07:30:00: Rel:240  : Active:240    Move:219    Bottom:  11 Strand:10     Dead:   0 Out:   0 Buffer:33%  step time =  5.9 ms
S: 0240: 35%:H0008b08-09 Day +00 08:00 2017-01-01 08:30:00: Rel:280  : Active:280    Move:259    Bottom:  11 Strand:10     Dead:   0 Out:   0 Buffer:38%  step time =  7.2 ms
S: 0270: 39%:H0009b09-10 Day +00 09:00 2017-01-01 09:30:00: Rel:300  : Active:300    Move:284    Bottom:  16 Strand:0      Dead:   0 Out:   0 Buffer:41%  step time =  6.7 ms
S: 0300: 43%:H0010b10-11 Day +00 10:00 2017-01-01 10:30:00: Rel:340  : Active:340    Move:320    Bottom:  20 Strand:0      Dead:   0 Out:   0 Buffer:47%  step time =  9.1 ms
S: 0330: 48%:H0011b11-12 Day +00 11:00 2017-01-01 11:30:00: Rel:360  : Active:360    Move:353    Bottom:   7 Strand:0      Dead:   0 Out:   0 Buffer:50%  step time =  6.0 ms
S: 0360: 52%:H0012b12-13 Day +00 12:00 2017-01-01 12:30:00: Rel:400  : Active:400    Move:388    Bottom:  12 Strand:0      Dead:   0 Out:   0 Buffer:55%  step time =  7.2 ms
S: 0390: 57%:H0012b12-13 Day +00 13:00 2017-01-01 13:30:00: Rel:420  : Active:420    Move:400    Bottom:  10 Strand:10     Dead:   0 Out:   0 Buffer:58%  step time =  6.0 ms
S: 0420: 61%:H0014b14-15 Day +00 14:00 2017-01-01 14:30:00: Rel:460  : Active:460    Move:441    Bottom:   8 Strand:11     Dead:   0 Out:   0 Buffer:63%  step time =  7.1 ms
S: 0450: 65%:H0015b15-16 Day +00 15:00 2017-01-01 15:30:00: Rel:480  : Active:480    Move:439    Bottom:   2 Strand:39     Dead:   0 Out:   0 Buffer:66%  step time =  8.4 ms
S: 0480: 70%:H0016b16-17 Day +00 16:00 2017-01-01 16:30:00: Rel:520  : Active:520    Move:478    Bottom:   2 Strand:40     Dead:   0 Out:   0 Buffer:72%  step time =  7.8 ms
S: 0510: 74%:H0017b17-18 Day +00 17:00 2017-01-01 17:30:00: Rel:540  : Active:540    Move:489    Bottom:   0 Strand:51     Dead:   0 Out:   0 Buffer:75%  step time =  7.5 ms
S: 0540: 78%:H0018b18-19 Day +00 18:00 2017-01-01 18:30:00: Rel:580  : Active:580    Move:529    Bottom:   0 Strand:51     Dead:   0 Out:   0 Buffer:80%  step time =  7.3 ms
S: 0570: 83%:H0019b19-20 Day +00 19:00 2017-01-01 19:30:00: Rel:600  : Active:600    Move:551    Bottom:   1 Strand:48     Dead:   0 Out:   0 Buffer:83%  step time =  6.6 ms
S: 0600: 87%:H0020b20-21 Day +00 20:00 2017-01-01 20:30:00: Rel:640  : Active:640    Move:592    Bottom:   1 Strand:47     Dead:   0 Out:   0 Buffer:88%  step time =  7.5 ms
S: 0630: 91%:H0021b21-22 Day +00 21:00 2017-01-01 21:30:00: Rel:660  : Active:660    Move:642    Bottom:   7 Strand:11     Dead:   0 Out:   0 Buffer:91%  step time =  7.4 ms
S: 0660: 96%:H0022b22-23 Day +00 22:00 2017-01-01 22:30:00: Rel:700  : Active:700    Move:686    Bottom:   4 Strand:10     Dead:   0 Out:   0 Buffer:97%  step time =  8.1 ms
S: 0690: 100%:H0023b23-00 Day +00 23:00 2017-01-01 23:30:00: Rel:700  : Active:700    Move:691    Bottom:   9 Strand:0      Dead:   0 Out:   0 Buffer:97%  step time =  8.3 ms
end: ----------------------------------------------------------------------
end: >>> Warning: Oceantracker is compatible with Python 3.11, but > 3.11, however not all external imported packages have been updated to be compatible with 3.11
end:     hint: Down grade to python 3.10 if unexplained issues in external packages
end:
end: >>> Warning: Deleted contents of existing output dir
end:
end: ----------------------------------------------------------------------
end:       Error counts -   0 errors,   2 warnings,   1 notes, check above
end:
end:   - Finished "param_test1" started: 19670.1120937, ended: 2025-02-20 12:16:49.109816
end:       Computational time =0:00:32.085885
end:   Output in f:H_Local_driveParticleTrackingoceantrackertutorials_how_tooutputparam_test1
end:
end: --- Finished Oceantracker run ----------------------------------------
end:

Options when running at command line

These allow

  • redefining the input and output dirs given within parameter file, which may have been built for a different location

  • limiting the run duration or the number of parallel cases during testing

the full arguments are below

!python ../oceantracker/run_ot_cmd_line.py -h
prelim:     Starting package set up
usage: run_ot_cmd_line.py [-h] [--input_dir INPUT_DIR]
                          [--root_output_dir ROOT_OUTPUT_DIR]
                          [--processors PROCESSORS] [--duration DURATION]
                          [--cases CASES] [-debug]
                          param_file

positional arguments:
  param_file            json or yaml file of input parameters

options:
  -h, --help            show this help message and exit
  --input_dir INPUT_DIR
                        overrides dir for hindcast files given in param file
  --root_output_dir ROOT_OUTPUT_DIR
                        overrides root output dir given in param file
  --processors PROCESSORS
                        overrides number of processors in param file
  --duration DURATION   in seconds, overrides model duration in seconds of all
                        of cases, useful in testing
  --cases CASES         only runs first "cases" of the case_list, useful in
                        testing
  -debug                gives better error information, but runs slower, eg
                        checks Numba array bounds