...
Code Block |
---|
if isinstance(config['param_notch_widths'], str): config['param_notch_widths'] = list(map(float, config['param_notch_widths'].split(', '))) config['param_notch_widths'] = np.array(config['param_notch_widths']) |
Case of a slice
It is also impossible to enter directly a slice
on BL. So we enter the parameter as a STRING
. In the config.json
, such parameter is written as follows:
Code Block |
---|
{
config['param_picks_by_channel_indices']: "0, 10, 2"
} |
Info |
---|
This parameter is entered the same way as a |
In the Python file, we added:
Code Block |
---|
if isinstance(picks, str) and picks.find(",") != -1 and picks.find("[") == -1 and picks is not None:
picks = list(map(int, picks.split(', ')))
if len(picks) == 2:
config['param_picks_by_channel_indices'] = slice(picks[0], picks[1])
elif len(picks) == 3:
config['param_picks_by_channel_indices'] = slice(picks[0], picks[1], picks[2])
else:
value_error_message = f"If you want to select channels using a slice, you must give two or three elements."
raise ValueError(value_error_message) |
Case of a tuple
A tuple
can not be entered on BL. So we registered the parameter as a STRING
. In the config.json
, such parameter is run as follows:
Code Block |
---|
Case of a list of integers/floats
On Brainlife, when we enter a list, we have to use the type STRING
and so the elements of the list are considered as strings
, so they need to be converted.
Indeed, a list of floats
or integers
are written as follows in the config.json
:
Code Block |
---|
Cases when a parameter can be two types
When the App is run locally, this configuration is not an issue, but on Brainlife when you define the parameter, it must be either STRING
or NUMBER
. So 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 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']) |