Skip to content

validate on datalad dataset without data fetched -- floods the screen #1606

@yarikoptic

Description

@yarikoptic
with exception tracebacks for every file
❯ datalad clone https://github.com/dandisets/000029
[INFO   ] Remote origin not usable by git-annex; setting annex-ignore                                                                                                               
[INFO   ] https://github.com/dandisets/000029/config download failed: Not Found                                                                                                     
[INFO   ] access to 2 dataset siblings dandi-dandisets-dropbox, dandiapi not auto-enabled, enable with:
| 		datalad siblings -d "/tmp/000029" enable -s SIBLING 
install(ok): /tmp/000029 (dataset)
❯ dandi validate 000029
[pynwb.GENERIC] /tmp/000029/sub-monk-g/sub-monk-g.nwb — [Errno 2] Unable to synchronously open file (unable to open file: name = '/tmp/000029/sub-monk-g/sub-monk-g.nwb', errno = 2, error message = 'No such file or directory', flags = 0, o_flags = 0)
[NWBI.During io.read() - <class 'ValueError'>: Unable to automatically determine method. Path /tmp/000029/sub-monk-g/sub-monk-g.nwb does not appear to be a URL and is not a file on the local filesystem.] /tmp/000029/sub-monk-g/sub-monk-g.nwb — Traceback (most recent call last):
  File "/home/yoh/proj/dandi/dandi-cli-master/venv/dev3/lib/python3.13/site-packages/nwbinspector/_nwb_inspection.py", line 277, in inspect_nwbfile
    in_memory_nwbfile = read_nwbfile(nwbfile_path=nwbfile_path)
  File "/home/yoh/proj/dandi/dandi-cli-master/venv/dev3/lib/python3.13/site-packages/nwbinspector/tools/_read_nwbfile.py", line 95, in read_nwbfile
    nwbfile, _ = _read_nwbfile_helper(nwbfile_path=nwbfile_path, method=method, backend=backend)
                 ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/yoh/proj/dandi/dandi-cli-master/venv/dev3/lib/python3.13/site-packages/nwbinspector/tools/_read_nwbfile.py", line 143, in _read_nwbfile_helper
    method = method or _get_method(nwbfile_path)
                       ~~~~~~~~~~~^^^^^^^^^^^^^^
  File "/home/yoh/proj/dandi/dandi-cli-master/venv/dev3/lib/python3.13/site-packages/nwbinspector/tools/_read_nwbfile.py", line 28, in _get_method
    raise ValueError(message)
ValueError: Unable to automatically determine method. Path /tmp/000029/sub-monk-g/sub-monk-g.nwb does not appear to be a URL and is not a file on the local filesystem.

[pynwb.GENERIC] /tmp/000029/sub-anm369964/sub-anm369964_behavior+ecephys.nwb — [Errno 2] Unable to synchronously open file (unable to open file: name = '/tmp/000029/sub-anm369964/sub-anm369964_behavior+ecephys.nwb', errno = 2, error message = 'No such file or directory', flags = 0, o_flags = 0)
[NWBI.During io.read() - <class 'ValueError'>: Unable to automatically determine method. Path /tmp/000029/sub-anm369964/sub-anm369964_behavior+ecephys.nwb does not appear to be a URL and is not a file on the local filesystem.] /tmp/000029/sub-anm369964/sub-anm369964_behavior+ecephys.nwb — Traceback (most recent call last):
  File "/home/yoh/proj/dandi/dandi-cli-master/venv/dev3/lib/python3.13/site-packages/nwbinspector/_nwb_inspection.py", line 277, in inspect_nwbfile
    in_memory_nwbfile = read_nwbfile(nwbfile_path=nwbfile_path)
  File "/home/yoh/proj/dandi/dandi-cli-master/venv/dev3/lib/python3.13/site-packages/nwbinspector/tools/_read_nwbfile.py", line 95, in read_nwbfile
    nwbfile, _ = _read_nwbfile_helper(nwbfile_path=nwbfile_path, method=method, backend=backend)
                 ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/yoh/proj/dandi/dandi-cli-master/venv/dev3/lib/python3.13/site-packages/nwbinspector/tools/_read_nwbfile.py", line 143, in _read_nwbfile_helper
    method = method or _get_method(nwbfile_path)
                       ~~~~~~~~~~~^^^^^^^^^^^^^^
  File "/home/yoh/proj/dandi/dandi-cli-master/venv/dev3/lib/python3.13/site-packages/nwbinspector/tools/_read_nwbfile.py", line 28, in _get_method
    raise ValueError(message)
ValueError: Unable to automatically determine method. Path /tmp/000029/sub-anm369964/sub-anm369964_behavior+ecephys.nwb does not appear to be a URL and is not a file on the local filesystem.

[pynwb.GENERIC] /tmp/000029/sub-anm369963/sub-anm369963_behavior+ecephys.nwb — [Errno 2] Unable to synchronously open file (unable to open file: name = '/tmp/000029/sub-anm369963/sub-anm369963_behavior+ecephys.nwb', errno = 2, error message = 'No such file or directory', flags = 0, o_flags = 0)
[NWBI.During io.read() - <class 'ValueError'>: Unable to automatically determine method. Path /tmp/000029/sub-anm369963/sub-anm369963_behavior+ecephys.nwb does not appear to be a URL and is not a file on the local filesystem.] /tmp/000029/sub-anm369963/sub-anm369963_behavior+ecephys.nwb — Traceback (most recent call last):
  File "/home/yoh/proj/dandi/dandi-cli-master/venv/dev3/lib/python3.13/site-packages/nwbinspector/_nwb_inspection.py", line 277, in inspect_nwbfile
    in_memory_nwbfile = read_nwbfile(nwbfile_path=nwbfile_path)
  File "/home/yoh/proj/dandi/dandi-cli-master/venv/dev3/lib/python3.13/site-packages/nwbinspector/tools/_read_nwbfile.py", line 95, in read_nwbfile
    nwbfile, _ = _read_nwbfile_helper(nwbfile_path=nwbfile_path, method=method, backend=backend)
                 ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/yoh/proj/dandi/dandi-cli-master/venv/dev3/lib/python3.13/site-packages/nwbinspector/tools/_read_nwbfile.py", line 143, in _read_nwbfile_helper
    method = method or _get_method(nwbfile_path)
                       ~~~~~~~~~~~^^^^^^^^^^^^^^
  File "/home/yoh/proj/dandi/dandi-cli-master/venv/dev3/lib/python3.13/site-packages/nwbinspector/tools/_read_nwbfile.py", line 28, in _get_method
    raise ValueError(message)
ValueError: Unable to automatically determine method. Path /tmp/000029/sub-anm369963/sub-anm369963_behavior+ecephys.nwb does not appear to be a URL and is not a file on the local filesystem.

[pynwb.GENERIC] /tmp/000029/sub-anm369962/sub-anm369962_behavior+ecephys.nwb — [Errno 2] Unable to synchronously open file (unable to open file: name = '/tmp/000029/sub-anm369962/sub-anm369962_behavior+ecephys.nwb', errno = 2, error message = 'No such file or directory', flags = 0, o_flags = 0)
[NWBI.During io.read() - <class 'ValueError'>: Unable to automatically determine method. Path /tmp/000029/sub-anm369962/sub-anm369962_behavior+ecephys.nwb does not appear to be a URL and is not a file on the local filesystem.] /tmp/000029/sub-anm369962/sub-anm369962_behavior+ecephys.nwb — Traceback (most recent call last):
  File "/home/yoh/proj/dandi/dandi-cli-master/venv/dev3/lib/python3.13/site-packages/nwbinspector/_nwb_inspection.py", line 277, in inspect_nwbfile
    in_memory_nwbfile = read_nwbfile(nwbfile_path=nwbfile_path)
  File "/home/yoh/proj/dandi/dandi-cli-master/venv/dev3/lib/python3.13/site-packages/nwbinspector/tools/_read_nwbfile.py", line 95, in read_nwbfile
    nwbfile, _ = _read_nwbfile_helper(nwbfile_path=nwbfile_path, method=method, backend=backend)
                 ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/yoh/proj/dandi/dandi-cli-master/venv/dev3/lib/python3.13/site-packages/nwbinspector/tools/_read_nwbfile.py", line 143, in _read_nwbfile_helper
    method = method or _get_method(nwbfile_path)
                       ~~~~~~~~~~~^^^^^^^^^^^^^^
  File "/home/yoh/proj/dandi/dandi-cli-master/venv/dev3/lib/python3.13/site-packages/nwbinspector/tools/_read_nwbfile.py", line 28, in _get_method
    raise ValueError(message)
ValueError: Unable to automatically determine method. Path /tmp/000029/sub-anm369962/sub-anm369962_behavior+ecephys.nwb does not appear to be a URL and is not a file on the local filesystem.

[pynwb.GENERIC] /tmp/000029/sub-RAT123/sub-RAT123.nwb — [Errno 2] Unable to synchronously open file (unable to open file: name = '/tmp/000029/sub-RAT123/sub-RAT123.nwb', errno = 2, error message = 'No such file or directory', flags = 0, o_flags = 0)
[NWBI.During io.read() - <class 'ValueError'>: Unable to automatically determine method. Path /tmp/000029/sub-RAT123/sub-RAT123.nwb does not appear to be a URL and is not a file on the local filesystem.] /tmp/000029/sub-RAT123/sub-RAT123.nwb — Traceback (most recent call last):
  File "/home/yoh/proj/dandi/dandi-cli-master/venv/dev3/lib/python3.13/site-packages/nwbinspector/_nwb_inspection.py", line 277, in inspect_nwbfile
    in_memory_nwbfile = read_nwbfile(nwbfile_path=nwbfile_path)
  File "/home/yoh/proj/dandi/dandi-cli-master/venv/dev3/lib/python3.13/site-packages/nwbinspector/tools/_read_nwbfile.py", line 95, in read_nwbfile
    nwbfile, _ = _read_nwbfile_helper(nwbfile_path=nwbfile_path, method=method, backend=backend)
                 ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/yoh/proj/dandi/dandi-cli-master/venv/dev3/lib/python3.13/site-packages/nwbinspector/tools/_read_nwbfile.py", line 143, in _read_nwbfile_helper
    method = method or _get_method(nwbfile_path)
                       ~~~~~~~~~~~^^^^^^^^^^^^^^
  File "/home/yoh/proj/dandi/dandi-cli-master/venv/dev3/lib/python3.13/site-packages/nwbinspector/tools/_read_nwbfile.py", line 28, in _get_method
    raise ValueError(message)
ValueError: Unable to automatically determine method. Path /tmp/000029/sub-RAT123/sub-RAT123.nwb does not appear to be a URL and is not a file on the local filesystem.

2025-04-04 10:47:01,176 [    INFO] Logs saved in /home/yoh/.local/state/dandi-cli/log/2025.04.04-14.47.00Z-548118.log

I think we should embed knowledge that specific validators need content to get files validated. But some might be "mixed" and have no option to validate e.g. only filename without content (like bids-validator has --ignoreNiftiHeaders). So I think we need to

  • add --missing-file-content error,only-non-data,skip option so we would error (not as verbose) by default for validation of those, with only-non-data we would instruct validators (or skip if we know that it only cares about data, like nwb.validate) to check only non-data components, like paths (e.g. by providing --ignoreNiftiHeaders to bids-validator), skip -- skipping that file entirely if no content.
    • may be control should be configurable per validator... not sure though yet if worthwhile -- we could add some handling for comma-separated list later on
  • if any validation was skipped due to use of only-non-data,skip and encountering broken symlink -- we need to add into validation a WARNING record on that file that it was skipped for that reason (at the end summarization should just state that there were X warnings of those kinds)

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions