Currently edited online in https://hackmd.io/z6GJrRSdRySMo1LAppabJw
Session Chair: Yaroslav Halchenko (Dartmouth College) and Thomas Braun (byte physics e.K.)
Needs, requirements and expectations for validation and introspection of NWB files
In principle, any stored by PyNWB/MatNWB file should pass this stage of validation
Validate toward “best practices”. nwb-inspector ATM is the implementation for some of such:
Some of those could be addressed by more restricted data types, e.g. ISO datetime duration for “age” or any other “duration”.
Catch obviously (to human curator) eye incorrectly entered/encoded data (e.g. incorrect unit, e.g. V vs mV). ATM not possible to encode range within NWB schema, to e.g. encode the range.
Question of the units: SI with multipliers. Satra mentioned https://people.csail.mit.edu/jaffer/MIXF/MIXF-10 which is character string encoding for numerical values and units, incorporates SI, etc.
Participants should add topics of possible interest for discussion here
(Ben) Ontologies could not be introduced for a field without breaking compatibility (i.e. forcing more than free form string) by adding a supplementary “Ontologies” table with fields
pynwb provides validation of .nwb files to follow specific schema. Could also be invoked from command line via python -m pynwb.validate [FILES]
but at best should be invoked per each file separately since the whole process would fail as soon as the current file fails validation.
dandi validate
(and also during upload
) provide a way to validate files (delegates actual validation to pynwb) from command line:
$> dandi validate v2.0.1/test_*
...
v2.0.1/test_CurrentClampStimulusSeries.nwb: ok
v2.0.1/test_DecompositionSeries.nwb: 1 error(s)
DynamicTable/colnames (processing/test_mod/LFPSpectralAnalysis/bands.colnames): incorrect type - expected 'text', got 'ascii'
v2.0.1/test_Device.nwb: ok
v2.0.1/test_DynamicTable.nwb: 1 error(s)
Units/colnames (units.colnames): incorrect type - expected 'text', got 'ascii'
v2.0.1/test_ElectricalSeries.nwb: 1 error(s)
DynamicTable/colnames (general/extracellular_ephys/electrodes.colnames): incorrect type - expected 'text', got 'ascii'
v2.0.1/test_ElectrodeGroup.nwb: ok
...
Summary: Validation errors in 14 out of 31 files
dandi ls
provides easy way to see basic information about any .nwb file. For pre-v2 nwb files it would at least provide NWB version information. E.g.:
$> dandi ls v2.0.1/test_Cluster*
PATH SIZE IDENTIFIER SESSION_DESCRIPTION SESSION_START_TIME NWB ND_TYPES
v2.0.1/test_Clustering.nwb 17.8 kB TEST_Clustering a file to test writing and reading a Clustering 1971-01-01/12:00:00 2.0b Clustering
v2.0.1/test_ClusterWaveforms.nwb 20.0 kB TEST_ClusterWaveforms a file to test writing and reading a ClusterWaveforms 1971-01-01/12:00:00 2.0b ClusterWaveforms, Clustering (2)
Summary: 37.7 kB 1971-01-01/12:00:00>
1971-01-01/12:00:00<