Parameter matrix

It can be useful to compare many different combinations of multiple parameter values. XamFlow supports this via parameter matrix task types.

  • XF.Data.ParametricInt can be used when only one parametric integer number is required.

  • XF.Data.ParametricFloat can be used when only one parametric floating-point number is required.

  • XF.Data.ParametricNumbers can be used when a few parametric numbers are required.

The outputs can be renamed to change the parameter names.

Jobs of these task type are interactive with a user interface to construct parametric combinations for the output parameters. One run per combination is then created automatically.

The combinations can also be imported from CSV. This allows for maximum flexibility since advanced combinations can e.g. be created manually, programatically with a custom script, or using any other method as desired.

The combinations can also be exported to CSV e.g. for reusing in another workflow.

This also allows creating any kind of Parametric VOIs.

Custom Task Types

A new parameter matrix task type can be created easily in XF Desktop. The metadata.json contains "ui": "Core.Generic.ParameterMatrix" to enable this functionality.

Fore example in XF.Data.ParametricNumbers this looks as follows:

{
    "package_format": "XFP-TT1.0",
    "name": "XF.Data.ParametricNumbers",
    "version": "1.10.11.0",
    "display_name": "Parametric Numbers",
    "summary": "Parametric numeric parameter matrix analysis. Spawn a run for each combinatorial combination.",
    "behavior": "InteractiveFollower",
    "description_filename": "readme.txt",
    "citation_cff_filename": "CITATION.cff",
    "ui": "Core.Generic.ParameterMatrix"
}

The interface.json defines all the parameters as outputs:

{
    "inputs": [],
    "outputs": [
        {
            "key": "i1",
            "type": "Int",
            "minimum": 0,
            "maximum": 1
        },
        {
            "key": "i2",
            "type": "Int",
            "minimum": 0,
            "maximum": 0
        },
        {
            "key": "i3",
            "type": "Int",
            "minimum": 0,
            "maximum": 0
        },
        {
            "key": "i4",
            "type": "Int",
            "minimum": 0,
            "maximum": 0
        },
        {
            "key": "f1",
            "type": "Float",
            "minimum": 0,
            "maximum": 0
        },
        {
            "key": "f2",
            "type": "Float",
            "minimum": 0,
            "maximum": 0
        },
        {
            "key": "f3",
            "type": "Float",
            "minimum": 0,
            "maximum": 0
        },
        {
            "key": "f4",
            "type": "Float",
            "minimum": 0,
            "maximum": 0
        }
    ]
}