Status | ||||
---|---|---|---|---|
|
Although an App runs smoothly locally, when you try to run it on BL errors can occur. Here are the errors I came across and the way I solved them.
Null value of an optional parameter
When an optional parameter is not given (the input field stays empty), it is not written as null
in the config.json
file generated by Brainlife but it is written as ““
. So it is considered as a string by the Python code and an error occurs.
Case of a NUMBER parameter
For instance, the app-maxfilter takes the parameter st_duration
as optional. This parameter is either a float
or None
. Locally, in the config.json.example
, when this parameter is not given it is written as:
Code Block |
---|
"param_st_duration": null |
And the maxfilter.py
parses the config.json.example
the value of this parameter is None
.
When this App was registered on BL, the st_duration
parameter was entered as follows:
...
So, to circumvent this issue, I add to my Python file the following lines to maxfilter.py
:
Code Block |
---|
if config['param_st_duration'] == "": param_st_duration = None else: param_st_duration = config['param_st_duration'] |
When it is possible, instead of registering an optional parameter as optional in BL, define it as an ENUM parameter and Case of a STRING parameter
app-maxfilter takes another optional parameter (param_regularize
), and this time it is either a string
or None
. In this case, you can also add in the Python file:
Code Block |
---|
if config['param_regularize'] == "":
param_regularize = None
else:
param_regularize = config['param_regularize'] |
and enter the parameter as follows in BL:
...
Case of an ENUM parameter
When it is possible, meaning when your parameter is optional and the App user can choose between fixed values of the parameter, set this parameter to ENUM optional when registering your App on BL parameter:
...
Then, let the user choose between the fixed values of the parameter or an empty field, don’t propose None
or null
because in the config.json
it will be written as:
Code Block |
---|
"param_regularize": "None"/"null" |
instead of simply null
.
Then, when you want this parameter to be None
, just select the option don’t specify
.
If you choose to enter your parameter as an ENUM parameter, no need to modify your Python file the way it is presented for a STRING parameter and a NUMBER parameter.