NeurodataWithoutBorders / pynwb

A Python API for working with Neurodata stored in the NWB Format
https://pynwb.readthedocs.io
Other
178 stars 84 forks source link

Don't allow creation of NWBGroups or NWBDatasets with spaces in the name #1421

Open bendichter opened 2 years ago

t-b commented 2 years ago

Why? There might be already files around with spaces in the name and so I would say this ship has sailed.

bendichter commented 2 years ago

There is a potential issue in MatNWB, but only if a name is defined in a schema or extension. For instance, if you want to access the start_time of the TimeIntervals trials table, the syntax is trials.start_time. In this case, having a space would present a problem. But for custom columns, the syntax would be e.g. trials.vectordata.get('correct'). There, having a space would not be a problem. Therefore, I think we should enforce that names set in an extension do not have spaces so that it does not create a problem for MATLAB (we could swap in underscores to solve this problem if we want to, but underscores are already used for traversing the relative path within a neurodata object). Setting flexible names to strings with spaces does not present a problem in either PyNWB or MatNWB, but I do think it’s a bit odd to have different requirements depending on if the name is set in the schema vs. not, so I would say it should be best practice to not set flexible names to a string that contains a space.

This would not break read for any created files, even if they do contain spaces. PyNWB and MatNWB will continue to read them fine (though MatNWB will have a problem if the name was declared in an extension, as it always has). This would be a constraint on the API for creating new extensions