CFG Settings and Reports

Follow me on GitHub

CFG Settings and Reports

This guide covers the cfg settings and the reports created.

Logging

This section controls the logger

default

Default: info

Logging Level (in lower case) to be used.

instantiate

Default: True

Determines if logging is done or not

Machine

This section controls getting a spinnaker machine

auto_detect_bmp

Default: False

Only needed for physical board(s) with both am Ethernet and BMP cable connected. If True the assumption is the BMP ip addresss is one less than the Ethernet

bmp_names

Default: None

Only needed for physical board(s) with both am Ethernet and BMP cable connected.

format is:

  • bmp_names = [/(|board_id[,board_id]*)
  • = -

where:

  • is the hostname or IP address of the BMP
  • is a range of boards that the BMP can speak to
  • is the ID of a single board in a frame

Note this no longer supports multiple host nor cabinet or frame

clear_routing_tables

Default: False

Clears the routing tables when end is called. Normally not needed.

clear_tags

Default: False

Clears the routing tables when end is called. Normally not needed.

disable_advanced_monitor_usage_for_data_in

Default: False

Truns off the usgae of the extra monitors for data in. This is now mainly a testing option aa the code will automatically disable the extra monitors for small simulations where it is not recommnded.

down_chips

Default: None

Testng Option to remove some chips from the Machine. See Syntax

down_cores

Default: None

Testng Option to remove some cores from the Machine.

Syntax for specifying a Chip, Core or Link in cfg values

format is:
down_cores = <down_core_id>[:<down_core_id]*
<down_core_id> = <chip_x>,<chip_y>,(<core_id>|<core_range>)[,<ip>]
<core_range> = <core_id>-<core_id>]*
down_chips = <down_chip_id>[:<down_chip_id]*
<down_chip_id> = <chip_x>,<chip_y>[,<ip>]
down_links = <down_link_id>:[:<down_link_id>]*
<down_link_id> = <chip_x>,<chip_y>,<link_id>[,<ip>]

where:
<chip_x> is the x-coordinate of a down chip
<chip_x> is the y-coordinate of a down chip
<core_id> is the virtual core ID of a core if > 0 or the physical core if <= 0
<link_id> is the link ID of a link between 0 and 5
<ip> is an OPTIONAL ip address in the 127.0.0.0 format.
If provided the <chip_x> <chip_y> will be considered local to the board with this ip address

Default: None

Testng Option to remove some links from the Machine. See Syntax

enable_advanced_monitor_support

Default: True

Enables the use of advance monitors. This delegate the transfer of data in and out of the machine to specific ocre. Highly recommnded unless using a physical board and needing all cores for your simulation to fit.

enable_reinjection

Default: True

Allows for the reinjection of packets if the first send fails. Highly recommnded unless testing the transceiver.

height

Default: None

Deprecated use version. Width for a virtual machine. If used requires width and virtual_board

ignore_bad_ethernets

Default: True

When True if any non ethernet chip claims it has a IP address this is logged and ignored When False the whole chip is removed

json_path

Default: None

A testing option. Creates a virtual board by reading a machine json file. If set other virtual_board options are ignored.

machine_name

Default: None

URL to physical board(s). Requires version

machine_spec_file

Default: None

This points to a second cfg file to read the machine details from This allows for easily switching your configs between different baords and spalloc. While designed for Machine settings can include any cfg setting. Technically each of the cfg except one pointed to by a machine_spec_file can have this option. It is read in directly after the pointer file. We recommend (and support) only using machine_spec_file in the cfg file in your home directory.

max_machine_core

Default: None

Testing Option. Decreases claimed per Chip if not None

max_sdram_allowed_per_chip

Default: None

Test option! Decreases claimed sdram if not None

post_simulation_overrun_before_error

Default: 5

Time in seconds that the simulation will wait for each board to be in the expected state. It is highly likely the core has errored after the default time has passed.

remote_spinnaker_url

Default: None

Used by HPAllocator. Will be a url

repair_machine

Default: False

Allows for temporary repair/hiding of hardware faults. This setting should always be False unless an error has been reported on spinnakerusers@googlegroups.com

report_waiting_logs

Default: False

Debugging option. If True adds logging while the host waits on cores to be in a particular state.

reset_machine_on_startup

Default: False

Will power cycle the boards at startup. Not needed normally.

simulation_time_step

Default: 1000

The time step of the simulations in microseconds. Ignored if setup is called with a timestep.

spalloc_avoid_boards

Default: None

An (optional) comma seperated list of ip addresses to avoid. This is a mainly for temporarily disabling boards that need to be blacklisted/ repaired.

spalloc_group

Default: None

The group to allocate the spalloc usage too. Ignored if the environment variable NMPI_JOB_ID (and optionaly) NMPI_USER are set. Also ignored if the current director points to a collab.

spalloc_machine

Default: None

Name of the Spalloc Machine to be used. Optional unless the URL points to multiple spalloc manchines.

spalloc_port

Default: 22244

The port for the spalloc server if used.

spalloc_server

Default: None

Url of the spalloc server.

spalloc_use_proxy

Default: True

Indicates that the spalloc proxy server is needed. Needed to access spalloc from a different network. Jupiter notebook users should leave this as set by the server admin.

spalloc_user

Default: None

The user for the spalloc server if used. Used if not part of the URL. If neither provided the environment variable SPALLOC_USERS will be tried. The matching password can only come from the URL or the environment variable SPALLOC_PASSWORD.

time_scale_factor

Default: None

Multiplicative factor to the machine time step (does not affect the neuron models accuracy) Ignored if setup is called with a time_scale_factor

turn_off_machine

Default: False

Adds an optional step to the end of the simulation to turn of physically connected boards.

version

Default: None

The hardware version of the spinnaker board being used

  • version:
    • 3: For a 4 chp board
    • 5: For 1 or more 48 chip boards (including spalloc)
    • 201: For a single chip spinnaker 2 board
    • 248: Fot a 48 chip spinnaker 2 board
  • This replaces deprecated “width” and “height” options
  • “versions” option is for testing only and picks a version based on python version

versions

Default: None

Testing Option. Picks a valid version based on python version. Requires virtual_board

virtual_board

Default: False

If True a virtual board will be used. Requires version

width

Default: None

Deprecated use version. Width for a virtual machine. If used requires height and virtual_board

Database

This section covers the settings for the various databases used.

create_database

Default: None

Testing Option. Overrides auto detection if an Input output database is needed.

create_routing_info_to_neuron_id_mapping

Default: True

Adds data abuout the routing to the Input output database Recommended to keep on unless you are absoltely sure it is not needed.

listen_port

Default: None

Port spinnaker uses to listen to database notifactions

notify_hostname

Default: localhost

IP adderess to which spiinaker will send database notifications

notify_port

Default: 19999

Port spinnaker uses to send database notifications

wait_on_confirmation

Default: True

Testing Option. Forces the NotificationProtocol to wait for confirmation when it send messages

wait_on_confirmation_timeout

Default: 10

Time in seconds for the NotificationProtocol to wait.

Mapping

Mapping options particularly which algorithms to run and how.

compressor

Default: PairOnChipRouterCompression

Which algorithm to use to generate the routing tables.</br> Supported values are:

  • PairOnChipRouterCompression: Recommended! Looks for pairs with the same destination and tries to merge them. Make use of the order so late later merges may overlap with earlier ones.
  • PairCompressor: On host/ virtual version
  • PairUnorderedCompressor: Testing Option which does not make use of the order.
  • OrderedCoveringOnChipRouterCompression: Older compressor which attempts to merge all routes with the ame desination at the same time Rarely more efficient that the Pair compressor. This is currently tested but not supported
  • OrderedCoveringCompressor: On host version/ virtual version

Compression may not be needed.

delay_support_adder

Default: DelaySupportAdder

Algorthm for adding Delay verteices.</br> Currently supported options:

  • DelaySupportAdder: Adds the standard Delays Vertcies if needed
  • None: will skip the adder (Not Recommended) </br></br>

external_binaries

Default: None

Absolutele path to where user created and combined binaries are located.

info_allocator

Default: ZonedRoutingInfoAllocator

Which Key and mask allocator to use.</br> Supported values are:

  • GlobalZonedRoutingInfoAllocator: Recommenned for most cases as produces the best results for compression.
  • ZonedRoutingInfoAllocator: Less optimized so only use if the global one fails.</br></br>

placer

Default: ApplicationPlacer

Currently only ApplicationPlacer supported.

precompressor

Default: None

Testing option to add a second compressor before the name one. Only supported options are None and Ranged. No known case where compression only works with precompression.

router

Default: ApplicationRouter

Currently only ApplicationRouter supported

router_table_compress_as_far_as_possible

Default: False

Testing option. Will request the compressor to run/continue even if the tables are already small enough.

routing_table_generator

Default: MergedRoutingTableGenerator

Which algorithm to use to generate the routing tables</br> Supported values are:

  • MergedRoutingTableGenerator: Recommenned as usually produces the best results.
  • BasicRoutingTableGenerator: Less optimized so only use if the merged one fails.</br></br>

run_compression_checker

  • key: run_compression_checker
  • key: path_compression_checker
    • value: routing_compression_checker_report.rpt

Runs a check that the compressors worked and repors the results. Mainly used for testing changes to the algorithms or bugs.

validate_json

Default: Debug

Runs schema validation on json files created. Mainly used for testing changes to the algorithms or bugs.

validate_routes_uncompressed

Default: False

Runs a check that the routing tables are correct before compresssion. Mainly used for testing changes to the algorithms or bugs.

virtual_compressor

Default: PairCompressor

Which compressor to use when using a virtual_board As the “OnChip” version will fail! See compressor for legal values. If None the compressor option is used.

Reports

This section controls the reports being run and written.

clear_iobuf_during_run

Default: True

At the end of each run the Chip iobuf can be cleared. Run after any extraction or if there is no extraction.

default_report_file_path

Default: DEFAULT

Directory into which the reports will be placed Should either an absolute path or “DEFAULT” to use the current directory In both cases a “reports” sub directory will be added

display_algorithm_timings

Default: True

Logs the time each algorithm took. Timings are always saved in the global provenance database They may also be written to file.

draw_placements

  • key: draw_placements
    • value: False
  • key: path_placements
    • value: placements.png

Developer debug option. Requires spinner to be manually installed otherwise is ignored. Not recently tested.

draw_placements_on_error

  • key: draw_placements_on_error
    • value: False
  • key: path_placements_on_error
    • value: placements_error.png

Developer debug option. Requires spinner to be manually installed otherwise is ignored. Not recently tested.

extract_iobuf

  • key: extract_iobuf
  • key: path_iobuf_app
    • value: provenance_data\app_provenance_data
  • key: path_iobuf_system
    • value: provenance_data\system_provenance_data

Reads the iobuf from the cores and saves them dividied by app and system cores.

extract_iobuf_from_binary_types

Default: None

Comma seperate list of binary names for cores to extract

extract_iobuf_from_cores

Default: ALL

Effects what iobuff is extrracted.

legal Values are:

  • All: All cores . Ignores [extract_iobuf_from_binary_types)(extract_iobuf_from_binary_types)
  • None: Use only cores specified by [extract_iobuf_from_binary_types)(extract_iobuf_from_binary_types)
  • Some Syntax for some chips

keep_data_database

  • key: keep_data_database
  • key: path_data_database
    • value: data(reset_str).sqlite3

Database file to hold data read back from the machine including Provenance. Always created as used during the run so this setting determines if it kept at the end.

keep_dataspec_database

  • key: keep_dataspec_database
  • key: path_dataspec_database
    • value: ds(reset_str).sqlite3

Database used to hold the data spec (to be) written to the cores. Always created as used during the run so this setting determines if it kept at the end.

keep_input_output_database

  • key: keep_input_output_database
  • key: path_input_output_database
    • value: input_output_database.sqlite3

live event connection database. Includes metadata. Always created as used during the run so this setting determines if it kept at the end.

keep_java_log

  • key: keep_java_log
  • key: path_java_log
    • value: jspin.log

Log file always created when useing Java This determines if it is kept at the end.

keep_json_files

Default: Debug

If set False this will delete any json files written at the end of the run.

keep_stack_trace

  • key: keep_stack_trace
  • key: tpath_stack_trace
    • value: stack_trace

If there is an error this is where the stack trace will be recorded. This determines if it is kept at the end.

max_reports_kept

Default: 10

The code will attempt to remove old directories in the Reports Folder if they have finished and/or possibly errored. This controls how many are kept.

n_profile_samples

Default: 0

Set to > 0 to allow profiler to gather samples (assuming enabled in the compiled aplx)

network_graph_format

Default: None

Format to use to draw a large graph Unless specified draw is disabled for large graphs For small graph the default format is used

path_drift_report

  • key: path_drift_report
    • value: clock_drift.csv
  • key: write_drift_report_start
  • key: write_drift_report_end
  • key: drift_report_ethernet_only
    • value: True

Reports the clock drift at the start and/or end of the run. Either all Chips or justthe ethernet ones.

path_ignores_report

Default: Ignores_report.rpt

Always written if there is a down core, chip or link declared

path_placement_errors_report

Default: placements_error.txt

Written if and only if there is a placement error.

provenance_report_cutoff

Default: 20

If provenace is being written to the database this will liit the amount that will be Logged

read_graph_provenance_data

Default: Debug

Reads graph provenance and writes it into the database

read_placements_provenance_data

Default: Debug

Reads placements provenance and writes it into the database

read_profile_data

Default: Debug

Reads profile provenance and writes it into the database

read_provenance_data_on_end

Default: Debug

Reads provenace data at the end and writes it into the database

read_router_provenance_data

Default: Debug

Reads router provenance and writes it into the database

remove_errored_folders

Default: True

If True will also Remove the older error runs.

tpath_global_provenance

Default: global_provenance.sqlite3

The database where provenance is stored. There is just one database no matter how many runs or resets are done. This database will hold logging if instantiated. This will always hold algorthm timing even if not displayed or written.

write_algorithm_timings

  • key: write_algorithm_timings
  • key: tpath_algorithm_timings
    • value: algorithm_timings.rpt

Writes a report of the time all algorithms took. Note this is a global report which covers all runs even after resets). Timings are always saved in the global provenance database They may also be logged.

write_application_graph_placer_report

  • key: write_application_graph_placer_report
  • key: path_application_graph_placer_report_vertex
    • value: placement_by_vertex_using_graph.rpt
  • key: path_application_graph_placer_report_core
    • value: placement_by_core_using_graph.rpt

Writes both placement reports

write_bit_field_compressor_report

  • key: write_bit_field_compressor_report
  • key: path_bit_field_compressor_report
    • value: bit_field_compressed_summary.rpt

writes the bit rield compressor report. Run even without bitfield compression.

write_board_chip_report

  • key: write_board_chip_report
  • key: path_board_chip_report
    • value: board_chip_report.txt

Writes the reort of the board(s) in use

write_compressed

  • key: write_compressed
  • key: path_compressed
    • value: compressed_routing_tables_generated

Writes the compressed routing tables. Any report for compression may trigger reading these off the machine. Compression may only be as far as needed [See]router_table_compress_as_far_as_possible) not as far as possible.

write_compression_comparison

  • key: write_compression_comparison
  • key: path_compression_comparison
    • value: comparison_of_compressed_uncompressed_routing_tables.rpt

Compares the uncompressed and the compressed routing tables. See write_compressed

write_compression_summary

  • key: write_compression_summary
  • key: path_compression_summary
    • value: compressed_routing_summary.rpt

Write a summary of the compression done. See write_compressed

write_compressor_iobuf

Default: Debug

Reads and writes the commpressor iobuff. There will be no iobuf if a host compressor is used or there is no need to compress This will be written to path_iobuf_system

write_data_speed_up_reports

  • key: write_data_speed_up_reports
  • key: path_data_speed_up_reports_speeds
    • value: speeds_gained_in_speed_up_process.rpt
  • key: path_data_speed_up_reports_routers
    • value: routers_used_in_speed_up_process.rpt

Runs the reports relating to data speed up. In small runs advance monitors may not be used even if enabled in which case there will be no report.

write_energy_report

  • key: write_energy_report
    • value: False
  • key: path_energy_report
    • value: energy_report_(n_run).rpt

Runs the energy reports. This includes adding energy monitor cores which will change placements. Therefor the default value is not Info or Debug

write_expander_iobuf

Default: Debug

Reads and writes the iobuff from the onchip synapse expander. Will be written with System iobuff

write_fixed_routes_report

  • key: write_fixed_routes_report
  • key: path_fixed_routes_report
    • value: fixed_route_routers

Writes the report for fisxed yours if they are used. Unlikely to exist in enable_advanced_monitor_support is False

write_json_machine

  • key: write_json_machine
  • key: path_json_machine
    • value: json_files\machine.json

Write a description of the machine in json format. May be [Deleted at the end of the run].(keep_json_files)

write_json_placements

  • key: write_json_placements
  • key: path_json_placements
    • value: json_files\placements.json

Writes a description of the placements in json format May be [Deleted at the end of the run].(keep_json_files)

write_json_routing_tables

  • key: write_json_routing_tables
  • key: path_json_routing_tables
    • value: json_files\routing_tables.json

Writes a description of the routing tables in json format May be [Deleted at the end of the run].(keep_json_files)

write_memory_map_report

  • key: write_memory_map_report
  • key: path_memory_map_report_map
    • value: memory_map_from_processor_to_address_space
  • key: path_memory_map_reports
    • value: memory_map_reports

Writes all the memry map reports. the summary and one per Core..

write_network_graph

  • key: write_network_graph
  • key: path_network_graph
    • value: network_graph.gv

Draws a grpah of the network using graphviz (Which most be installed)

write_network_specification_report

  • key: write_network_specification_report
  • key: path_network_specification_report
    • value: network_specification.rpt

Write the details of the network.

write_partitioner_reports

  • key: write_partitioner_reports
  • key: path_partitioner_reports
    • value: partitioned_by_vertex.rpt

Reports how the Application Vertices/ Populations where partitioned into Machine Vertices/ Cores.

write_provenance

Default: Info

Reads other provenance and writes it into the database

write_redundant_packet_count_report

  • key: write_redundant_packet_count_report
  • key: path_redundant_packet_count_report
    • value: redundant_packet_count.rpt

Writes a report showing how many redundant packets where recorded.

write_router_info_report

  • key: write_router_info_report
  • key: path_router_info_report
    • value: virtual_key_space_information_report.rpt

Write reports showing the keys and masks

write_router_reports

  • key: write_router_reports
  • key: path_router_reports
    • value: edge_routing_info.rpt

Reports the routes used for each partition.

write_router_summary_report

  • key: write_router_summary_report
  • key: path_router_summary_report
    • value: routing_summary.rpt

Writes a summary of the routes used per Chip

write_sdram_usage_report_per_chip

  • key: write_sdram_usage_report_per_chip
  • key: path_sdram_usage_report_per_chip
    • value: chip_sdram_usage_by_core.rpt

Generates a report on the Sdram usage per Chip and how it was calculated.

write_tag_allocation_reports

  • key: write_tag_allocation_reports
  • key: path_tag_allocation_reports_host
    • value: tags.rpt
  • key: path_tag_allocation_reports_machine
    • value: tags_on_machine.txt

writes both tag reports.

write_text_specs

  • key: write_text_specs
  • key: path_text_specs
    • value: data_spec_text_files

Writes a text version of the dataspecs. Note: The database is what is actually used for loading the data specs.

write_uncompressed

  • key: write_uncompressed
  • key: path_uncompressed
    • value: routing_tables_generated

Writes the uncompressed routing tables.

Buffers

This section control if runs are divided into smaller runs and how.

minimum_auto_time_steps

Default: 1000

If using Auto pause loops This will guarantee a minimum time of each of the loops. This will cause the cause the partititioner to divide the vertex/Population over enough cores.

use_auto_pause_and_resume

Default: True

For very long runs (that would run out of memory) this will split the run into multiple shorted runs with data extraction between them. As no affect for runs that do not need this.

Mode

Semantic sugar for enabling lots of reports at once.

mode

Default: Production

Mode allow to globally turn on groups of reports.

  • Mode will never turn off a report set to True in the cfg file
  • Only the value from the last cfg file read is used.
    • Default file
    • Home directory
    • Script directory
  • Mode acts after all cfg files have been read
  • The values of mode supported are:
    • Production: Does not turn on any cfg options. All cfg values of “info” and “debug” will be replaced with False This is the recommended value for users not interested in reports.
    • Info: Turns on the the most import reports. All cfg values of “info” are replaced with True while “debug” will be replaced with False This is the recommended value or users interested in the main reports.
    • Debug: Turns on all reports except ones which change the Placements All cfg values of “info” and “debug” will be replaced with True This is the value used by some tests.
    • All: Testing option. Likely to be removed.
  • To change what is included in each mode change the values True, Info or Debug
  • Warning changing these values to False may break some tests.

violate_1ms_wall_clock_restriction

Default: False

Used if time_step * (timescale)[time_scale_factor] < 1000 as this may result in errors.

EnergyMonitor

Setting for the Energy Monitor

n_samples_per_recording_entry

Default: 100

The number of smaples taken in each recording of the Energy Monitor.

sampling_frequency

Default: 10

How often Energy Monitor will sample, in microseconds

Java

This section controls the seetting to active the use of Java

java_call

Default: java

Call to start a Java process. If there is no jdk../bin in your class path this must include the full path

java_jar_path

Default: None

Indirect method to find the jar file for Java to run. Should only be used if java_spinnaker_path and its default can not be used

java_properties

Default: None

Properties flag to be passed into every Java call. Unlikely to be needed unless Testing or debugging.

Default logging level is info so NO properties needed

Each Property must start with the -D flag To turn on debug level logging (lots) java_properties=-Dlogging.level=DEBUG

Multiple properties are supported. Properties must be separated with a space and without quotes. ex: java_properties=-Dspinnaker.compare.download -Dlogging.level=DEBUG

Supported properties are:

  • spinnaker.compare.download: enables comparisons of multiple download methods; slow
  • spinnaker.parallel_tasks: how many downloads to do in parallel; default: 4
  • logging.level: defaults to INFO; DEBUG is also useful
  • logging.udp enables low-level logging of UDP traffic; produces a lot of output
  • spinnaker.scp_timeout how long to wait for SCP replies from SpiNNaker, in milliseconds, which may need to be raised on very busy networks; default: 1000

java_spinnaker_path

Default: None

Inidrect method to find the jar file for Java to run. Absolute path to where the JavaSpiNNaker git repository is located. This must point to a local copy of https://github.com/SpiNNakerManchester/JavaSpiNNaker It must also have been built! If none it will be assumed to be in the same parent directory as SpiNNFrontEndCommon Note: Do not quote even if path has spaces as these added by subprocess.call

path_json_java_placements

Default: json_files\java_placements.json

Path to the json file with the placement information needed by Java.

use_java

Default: False

Contorls if the sending of the data in and out is delegated to Java. Requires additional setup but will be faster especially for jobs using more than one board.

Simulation

The section covers settings which control how the models behave.

drop_late_spikes

Default: False

performance limiter to throw away packets not processed in a given time step

error_on_non_spynnaker_pynn

Default: True

Whether to error or just warn on non-spynnaker-compatible PyNN

incoming_spike_buffer_size

Default: 256

The amount of space to reserve for incoming spikes

n_colour_bits

Default: 4

The number of “colour” bits to use by default. This is used to account for delays over the network that are bigger than 1 time step

ring_buffer_sigma

Default: 5

The number of standard deviations from the mean to account for in the ring buffer in terms of how much safety in precision vs overflowing the end user is willing to risk

spikes_per_second

Default: 30

Maximum spikes per second of any neuron (spike rate in Hertz) Used by all neurons that need this for planning, unless a different value is provided.

transfer_overhead_clocks

Default: 200

The overhead to add to the transfer clocks when using a split synapse neuron model

Recording

Section for the sending of live spikes.

live_spike_host

Default: 0.0.0.0

Host for the Live Packe tGather

live_spike_port

Default: 17895

Port for the Live Packe tGather

Report Files

# Notes for Developers This section is aimed at developers writing code that uses cfg settings or adding new ones

  • cfg rules
    • Section names are case-sensitive with the recommend format being a single Capitalized word.
    • Option names for users are not case or underscore sensitive.
    • In code all options names must be exact matches (case and underscores). The recommended format is all lower with words seperated by underscore.
    • Any cfg option used must be declared in the default files
    • All cfg options declared must be used
    • All cfg options must only be declared in one default file
    • All cfg options keys should be unique even between sections and not be section names.
      • Section “Mode” and option “mode” are a handled exception.
  • Special @ options
    • @: Adds documentation for this section
    • @(option): Adds documentation for this option
    • @group_(source_option) = target_option: The key and value of the source_option will be grouped with the target_option. This can be N - N, but transative is not supported.
  • Start of option keys with special meanings. (t)path ones will be removed and auto grouped with the matching one. If and only if the part after the first underscore is an exact match.
    • draw_: Flag to say file(s) should be created
    • keep_: Flag to say if files should be kept at the end of the run. These ffiles may still be created.
    • path_: Path to a file to be placed in the run folder
    • run_: Flag to say something should run which may create files
    • tpath_: Path to a file to be placed in the timestamp folder
    • write_: Flag to say file/report should be written
  • Notes on cfg documentation.
    • Should be designed for an md file.
    • Can be multline. Just indent from the key.
    • Indent is stripped out.
    • Newlines are kept but remember are often ignored in md files
    • Use </br> at the end of a line (or leave a blank line) if a new line is needed.
    • Use \t* to add a sub bullet. (Will replace \t(s) with spaces)
    • Use \t (without the *) for a real none bullet indent. (Will replace \t with \ \ )
    • Supports md links in the [Title](Link) format.
      • Link can be any cfg option key except those tagged with @group.
      • The # reguired by markdown will be added if needed.
      • Where keys are auto grouped any of these can be used.
      • Link can be an external url.