This is a collaborative space. In order to contribute, send an email to maximilien.chaumon@icm-institute.org
On any page, type the letter L on your keyboard to add a "Label" to the page, which will make search easier.

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

DRAFT

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.

For instance, the app-maxfilter takes the parameter st_duration as optional. Locally, in the config.json.example, when this parameter is not given it is written as :

"param_st_duration": null

When this App was registered on BL, the st_duration parameter was entered as follows:

But, when no value was entered when executing the App, the config.json writes it as follows:

"param_st_duration": "",

Then this value of this parameter is passed to the MNE function maxfilter, which reads it as a string instead of None and an error is raised because the function expects a float or None:

ValueError: could not convert string to float

So, to circumvent this issue, I add to my Python file the lines:

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 let the user choose between the fixed values of the parameter or an empty field, don’t propose None because in the config.json it will be written as:

"param_regularize": "None"

instead of null.

  • No labels