Open bendichter opened 6 years ago
I believe spaces work with open Sets (basically, any Group structure that can have 0 or more items in it) as they are Map-backed. The only other place that could include spaces would be at the YAML level (core schema and extensions) which will definitely require some work.
Is there a bug where this doesn't work, or are you experiencing a use case that breaks this?
Yes, the problem I was having with specifically with the names in an extension YAML, but I think the best solution would be to enforce no spaces on the pynwb
side
So I see two thing needing work to get extensions with spaces working:
This will "allow" spaces for class properties and makes compound data types readable if they have spaces.
I'll look into this.
@bendichter Is this still relevant?
If yes, can you clarify what is meant here:
Since names are used as field names of objects Does the schema allow for spaces in object property names?
Could you also point me to an example scenario which illustrates this problem?
@ehennestad Yes, this issue is still relevant. Let me explain with a concrete example:
When creating a trials table in MatNWB, you use dot notation like this:
nwbfile.trials = DynamicTable(...)
This syntax pattern appears whenever you're working with Datasets or Containers in the schema that have set names. While this works fine for the core schema (which doesn't have this issue), we run into a potential problem when set names contain spaces.
The issue doesn't occur in the core schema, but it's not currently enforced as a rule, meaning it could appear in extensions. If an extension defines a Container or Dataset that has a sub-Container or Dataset with a space in its set name, we hit a compatibility problem.
There are two potential solutions we could consider:
While I can't recall the specific instance where we encountered this, it remains a potential issue that we should address.
Since names are used as field names of objects, matnwb does not allow them to have spaces. pynwb does allow spaces. Maybe a compromise would be to automatically replace all spaces with underscores in matnwb.