Validating NWB files
Validating NWB files is handled by a command-line tool available in pynwb
.
The validator can be invoked like so:
python -m pynwb.validate test.nwb
If the file contains no NWB extensions, then this command will validate the file test.nwb
against the
core NWB specification. On success, the output will be:
Validating test.nwb against cached namespace information using namespace 'core'.
- no errors found.
and the program exit code is 0
. On error, the program exit code is 1
and the list of errors is outputted.
If the file contains NWB extensions, then the above validation command will validate the file test.nwb
against
all extensions in the file and the core NWB specification.
To validate against only one NWB extension that is cached within the file, use the -n
flag.
For example, the following command will validate against the “ndx-my-extension” namespace that is cached
within the test.nwb
file.
python -m pynwb.validate -n ndx-my-extension test.nwb
To validate against the version of the core NWB specification that is included with the installed version of
PyNWB, use the --no-cached-namespace
flag. This can be useful in validating files against newer or older versions
of the core NWB specification that are installed with newer or older versions of PyNWB.
python -m pynwb.validate --no-cached-namespace test.nwb
$python -m pynwb.validate --help
usage: validate.py [-h] [-n NS] [-lns] [--cached-namespace | --no-cached-namespace] paths [paths ...]
Validate an NWB file
positional arguments:
paths NWB file paths
optional arguments:
-h, --help show this help message and exit
-n NS, --ns NS the namespace to validate against
-lns, --list-namespaces
List the available namespaces and exit.
--cached-namespace Use the cached namespace (default).
--no-cached-namespace
Don't use the cached namespace.
If --ns is not specified, validate against all namespaces in the NWB file.
Validation against a namespace that is not cached within the schema is not currently possible but is a planned feature.