Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
{
"param_baseline": "0, None" 
}

To convert it into a tuple, in the Python file we added:

Code Block
if isinstance(config['param_baseline'], str):
    param_baseline = list(map(str, config['param_baseline'].split(', ')))
    param_baseline = [None if i=='None' else i for i in param_baseline]
    param_baseline = [float(i) if isinstance(i, str) else i for i in param_baseline]
    config['param_baseline'] = tuple(param_baseline)
Info

This parameter is entered the same way as a numpy.nd.array and a slice. So far it is not an issue because no parameter is either a numpy.nd.array, a slice or a tuple.

Case of a list of integers/floats

...

Code Block
{
param_picks_by_channel_types_or_names: = "[0, 2, 1]"
}

and a list of str:

Code Block
{
list_of_strings: "[a, b, c]" 
}
Note

Don’t surround the elements in the list by quotes.

...

When the App is run locally, this configuration is not an issue, but on Brainlife when you define the parameter, it must be either a STRING or NUMBER. So , a NUMBER, a BOOLEAN, or an ENUM.

Case when a parameter is either a str or a float/int

When a parameter can be both a str or a float/ int, we registered it as a STRING on BL, and then we convert it as into a float or int.

But we must be careful: we only want to convert a str into float/int when the App runs on BL. For instance the parameter param_filter_length can be “auto”, a str with the duration in s, or ms, or a int. So to be sure that the conversion into float happens only on Brainlife and only when the user does want to use a float:

Code Block
if config['param_filter_length'] != "auto" and config['param_filter_length'].find("s") == -1:
    config['param_filter_length'] = int(config['param_filter_length'])

Case when a parameter is either a str or a bool

When a parameter can be both a str or a bool, we registered it as a STRING or ENUM on BL (either way, it is considered as a str), and then we convert it into a bool.

For instance the parameter param_proj can be “delayed”, or a bool. So, we registered it as an ENUM parameter and convert "True” and “False“ into a bool:

Code Block
if config['param_proj'] == "True":
    config['param_proj'] = True
elif config['param_proj'] == "False":
    config['param_proj'] = False