- Fix dependencies
- Use
traceback
module to print full exception from an output map that generates an exception. - Bug in
scripting.get_snippet_signature
function that produces code with a syntax error.
- Fix bug where preparation and processing run options were ignored on workflow load.
- Fix bug where archive options were ignored on workflow load.
- Fix bug introduced in 0.2.23, where default preparation/processing run options were ignored.
- Fix inability to override default (preparation/processing) run options with an empty dict
- Add support for multiple archives. Fix #72.
- Fix error message if an input mapper function has an unknown argument.
- Catch and print error message from output map function failure.
- Fix incorrect import key when importing from a non-trivial context that is not defined in the schema.
- Allow passing a subset of the task input parameters to the output mapper function. Resolve #102.
- Allow passing all iterations of an input parameter to a function mapper. Resolve #104.
- Allow running an on-demand archive to an existing/completed workflow:
matflow archive path/to/workflow/directory ARCHIVE_NAME
. Resolve #68. - Allow specifying
default_metadata
in theconfig.yml
file. Keys are merged withmetadata
specified in the workflow spec file. Resolve #98.
- Save element resource usage (e.g. run time). Fix #97.
- Fix bug when determining the "producing task" in an iteration pathway. Fix #105.
- Fix bug when a file input parameter is specified with a
$HOME
tilde:~/path/to/file
.
- Add
Task.cleanup
attribute that can be used to optionally specify a list of glob patterns, representing file names to remove at the end ofWorkflow.process_task_element
. Useful for removing very large simulation outputs that are not required after MatFlow has extracted the requested data. - Add methods to
Element
object:get_file_lines
andprint_file_lines
, which take a file name and a slice of lines to get or print.
- Change working directory to element directory for invoking input/output/function mapper functions. This is required in some cases where a tool or script does not accept a file path as an argument.
- Allow specifying the
task_idx
directly when importing parameters. This overrides any specifiedcontext
.
- Catch
ImportError
andSyntaxError
when trying to load extensions. - Import from the highest task index when importing a parameter that has been through a parameter-modifying task - fix #103. The can be overrode by specifying a
task_idx
directly.
- Fix type problem when input schema keys are specified "inline" in the task schema (e.g. as
CRC_file_path[file=True,save=False]
), in which the keys remain as typestr
, when they should bebool
. - Fix problem when an imported parameter is used in a task that is iterated.
- Fix misleading error message when a task parameter specified as a file path does not actually exist as a file.
- Fix bug where if all possible dependency pathways are circularly dependent, this is not caught by MatFlow. Fix #88.
- Fix issue with accessing parameter data with dot-notation via their "safe names". Fix #87.
- Add new parameter key
ignore_dependency_from
, which is a list of task names. This allows us to exclude tasks when considering the dependencies of this parameter. Fix #89. - Allow embedding file-path inputs (inputs that are text files) into the HDF5 file. Fix #86.
- Add
Task.unique_name
property which adds on the non-trivialTask.context
toTask.name
. - Tasks can be accessed from the task list via dot-notation. Fix #90.
- Add
Task.elements_idx
property to retrieve to correctelements_idx
dict for that task. - Add new exception type:
ParameterImportError
. - Add ability to import parameters from existing workflows. Fix #30
- Non-trivial task contexts are now part of the task directory name to help distinguish task directories where multiple contexts are used. Fix #50.
- Add
context
argument toWorkflow.get_input_tasks
andWorkflow.get_output_tasks
.
- Fix issue #82 where the default group is not defined in the
Workflow.element_idx
for tasks where no local inputs are defined.
- Add support for flexible positioning of parameter-modifying tasks (#81)
- Bump hpcflow to v0.1.13 to fix #80 and then to v0.1.14 to fix a database locking issue and a bug with choosing the correct working directories.
- Change an Exception to a warning in
Workflow.get_element_data
to allow manually deleting element data without corrupting.
- Add method
Task.get_elements_from_iteration(iteration_idx)
.
- Fix bug when populating
Workflow.elements_idx
for more than two iterations.
- Add
Workflow.figures
attribute for storing associated figure definitions. - Add
Workflow.metadata
attribute for storing arbitrary metadata (will later be used for Zenodo archiving). - Add various
Workflow
static methods to help with retrieving information in the viewer without loading the whole workflow viahickle
. - Add
get_task_schemas
to API to load the available task schemas without generating a workflow. - Add
refresh
bool parameter toConfig.set_config
, to force a reload of the configuration. - Support inputs as dependencies as well as outputs.
- Support "parameter modifying" tasks (a task which outputs a parameter that is also an input to that task).
- Add
iterate_run_options
to Workflow. - Add new methods for finding dependent and dependency tasks/parameters, upstream/downstream parameter values associated with a given element.
- Add input option:
include_all_iterations
. If True, inputs from all iterations are passed to input map functions.
- Only save input/output map files if they exist!
- Fix bug in propagating groups correctly
- Various code formatting issues
- Fix failure to raise on invalid schemas.
- Fix bug when the same file is to be saved from multiple output maps.
- Redo task sorting algorithm such that minimal ordering changes are made.
- Set
stats
bool to False by default. - Bump hpcflow version to v0.1.12.
- Resolve
~
in task schema and software file paths specified in the configuration file.
- Fix if a function mapper function does not return anything.
- Add scripting module for generating Python source scripts.
- Default run options can be specified in the MatFlow configuration file for task, preparation and processing jobs using both "sticky" and "non-sticky" keys:
default_run_options
,default_sticky_run_options
,default_preparation_run_options
,default_sticky_preparation_run_options
,default_processing_run_options
anddefault_sticky_processing_run_options
. The "sticky" defaults are always applied (but workflow-specified run options take precedence), whereas the "non-sticky" defaults are only applied if a task has no workflow-specified run options.
- Add
version_info
toSoftware.__repr__
method - Validate source maps after missing schema check
- Remove vestigial and buggy line in
construction.get_element_idx
which would lead to enormous memory usage for large sequences.
- Default values can be specified for output map options within the schema
- Default values can be specified for task input parameters within the schema
- Depending on the inputs defined, different commands can be run, via "command pathway" definitions in the schema implementations.
- Uses
hickle
version 4. - Group structure in workflow HDF5 file has changed (backwards-incompatible); element data is more conveniently organised for inspecting the HDF5 file manually.
- Fix problem when a task input key includes slashes.
- Add alternate scratch feature to allow a given task to be executed within a separate temporary directory.
- Fix bug if specifying
merge_priority
on the default group.
- Bump hpcflow to v0.1.10
- Fix copying of profile file to the workflow directory when the profile file path is not in the current working directory.
- Fix dependency
hickle
version for now, until we can assess requirements for jumping to version 4.
- Files generated by input maps are only saved into the workflow file if explicitly requested with
save: true
.
- Fix bug in
SourcesPreparation.get_formatted_commands
that appears if there are no commands.
- Improved Dropbox authorization flow.
- Bump hpcflow to v0.1.9
- Fix bug in reading
default_preparation_run_options
anddefault_processing_run_options
dicts from the config file.
- Add a
Workflow.history
attribute that tracks when the workflow was modified. It also stores pertinent software versions. - Add a CLI command
matflow validate
that runs through the task schema and extension validation. - Add a CLI command
matflow kill
, which kills all executing and pending tasks. - Added configuration option
prepare_process_scheduler_options
to specify scheduler options for the prepare and process tasks. - matflow profile is stored as a
dict
in addition to a string representation of the profile file (both in theWorkflow.profile
attribute).
- Module and function
jsonable.py
andto_jsonable
renamed tohicklable.py
andto_hicklable
. - Workflow and Task attributes in the workflow HDF5 file are now represented without leading underscores.
- Tasks with only a single element use the task directory directly instead of using an element sub-directory.
- Loading extensions and configuration files has been moved from the root
__init__
to separate modules. make_workflow
,submit_workflow
,load_workflow
,append_schema_source
,prepend_schema_source
andvalidate
can now be imported from the root level:from matflow import make_workflow
etc.- There are no longer unsightly global variables for
TASK_INPUT_MAP
etc. This functionality has been subsumed into the globalConfig
class. This is tidier and provides a better place for some validation. - Software key
sources
has been replaced byenvironment
. - hpcflow configuration directory is generated within the matflow configuration directory.
- Jobscript names refer to the task to which they prepare/execute/process
- hpcflow profile is passed as a
dict
to hpcflow. For information, the hpcflow profile is still dumped to a file.
- New release for Zenodo archive.
- Latest dev branch merged...
- Added missing dependency.
Initial release.