Review of
"Neurodesk: an accessible, flexible and portable data analysis environment for reproducible neuroimaging"

Review of "Neurodesk: an accessible, flexible and portable data analysis environment for reproducible neuroimaging"

Submitted by mynguyen  

June 30, 2024, 2:14 p.m.

Lead reviewer

FriederikeKo

Review team members

mynguyen Ewilson

Review Body

Reproducibility

Did you manage to reproduce it?
Not Reproducible
Reproducibility rating
How much of the paper did you manage to reproduce?
1 / 10
Briefly describe the procedure followed/tools used to reproduce it

We attempted to access Neurodesk Play through the Jupyter Notebook. The instructions could be clearer and more detailed (e.g. open Neurodesk via the url, select location (Europe etc.), open terminal). Sometimes when trying to access (https://play.neurodesk.org/) the server times out: Spawn failed: Server at http://10.42.0.23:8888/user/798689a5-6d74-48fe-8a44-8eca1d8a95b8/ didn't respond in 30 seconds

BUILDING THE PAPER WITH NEURODESK:

PART 1: DOWNLOAD THE DATA We were able to download the data but this was not easily findable. The link to data in the OSF guide (https://ida.loni.usc.edu/) leads to a webpage that doesn’t seem to contain the data. The data availability section in the PDF version of the paper (linked to on ReproHack) only links to the lab group website, not the data. The online version of the paper (which is behind a paywall) contains a link to the data (NII files) in the paper supplement. Unfortunately, this link to the correct data does not appear in the PDF version nor on ReproHack / OSF. Ideally, the data should be stored in a permanent repository rather than a journal supplement.

PART 2: OPEN NEURODESK We had multiple problems running the terminal code provided in the OSF guide. We believe this had to do with connection issues possibly caused by firewall / proxy settings. As we use an institutional computer we were not able to change these settings.

The following code gave connection errors:

  • git clone https://github.com/iishiishii/neurodesk_paper.git This code gave an error, likely related to firewall / proxy of university managed computers? Cloning into 'neurodesk_paper'... fatal: unable to access 'https://github.com/iishiishii/neurodesk_paper.git/': Failed to connect to github.com port 443 after 6 ms: Connection refused

  • The following code also gives error: (base) jovyan@neurodesktop-:~$ git clone git@github.com:iishiishii/neurodesk_paper.git´Cloning into 'neurodesk_paper'... git@github.com: Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.`

  • osf -p e6pw3 clone /home/jovyan/neurodesk_paper/data gives the following error: `Traceback (most recent call last): File "/opt/conda/lib/python3.11/site-packages/urllib3/connection.py", line 203, in _new_conn sock = connection.create_connection( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/conda/lib/python3.11/site-packages/urllib3/util/connection.py", line 60, in create_connection for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/conda/lib/python3.11/socket.py", line 962, in getaddrinfo for res in _socket.getaddrinfo(host, port, family, type, proto, flags): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ socket.gaierror: [Errno -3] Temporary failure in name resolution

The above exception was the direct cause of the following exception:

Traceback (most recent call last): File "/opt/conda/lib/python3.11/site-packages/urllib3/connectionpool.py", line 791, in urlopen response = self._make_request( ^^^^^^^^^^^^^^^^^^^ File "/opt/conda/lib/python3.11/site-packages/urllib3/connectionpool.py", line 492, in _make_request raise new_e File "/opt/conda/lib/python3.11/site-packages/urllib3/connectionpool.py", line 468, in _make_request self._validate_conn(conn) File "/opt/conda/lib/python3.11/site-packages/urllib3/connectionpool.py", line 1097, in _validate_conn conn.connect() File "/opt/conda/lib/python3.11/site-packages/urllib3/connection.py", line 611, in connect self.sock = sock = self._new_conn() ^^^^^^^^^^^^^^^^ File "/opt/conda/lib/python3.11/site-packages/urllib3/connection.py", line 210, in _new_conn raise NameResolutionError(self.host, self, e) from e urllib3.exceptions.NameResolutionError: : Failed to resolve 'api.osf.io' ([Errno -3] Temporary failure in name resolution)

The above exception was the direct cause of the following exception:

Traceback (most recent call last): File "/opt/conda/lib/python3.11/site-packages/requests/adapters.py", line 486, in send resp = conn.urlopen( ^^^^^^^^^^^^^ File "/opt/conda/lib/python3.11/site-packages/urllib3/connectionpool.py", line 845, in urlopen retries = retries.increment( ^^^^^^^^^^^^^^^^^^ File "/opt/conda/lib/python3.11/site-packages/urllib3/util/retry.py", line 515, in increment raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='api.osf.io', port=443): Max retries exceeded with url: /v2//guids/e6pw3/ (Caused by NameResolutionError(": Failed to resolve 'api.osf.io' ([Errno -3] Temporary failure in name resolution)"))

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/opt/conda/bin/osf", line 8, in sys.exit(main()) ^^^^^^ File "/opt/conda/lib/python3.11/site-packages/osfclient/main.py", line 120, in main exit_code = args.func(args) ^^^^^^^^^^^^^^^ File "/opt/conda/lib/python3.11/site-packages/osfclient/cli.py", line 98, in wrapper return_value = f(cli_args) ^^^^^^^^^^^ File "/opt/conda/lib/python3.11/site-packages/osfclient/cli.py", line 158, in clone project = osf.project(args.project) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/conda/lib/python3.11/site-packages/osfclient/api.py", line 33, in project type_ = self.guid(project_id) ^^^^^^^^^^^^^^^^^^^^^ File "/opt/conda/lib/python3.11/site-packages/osfclient/api.py", line 41, in guid return self._json(self._get(self._build_url('guids', guid)), 200)['data']['type'] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/conda/lib/python3.11/site-packages/osfclient/models/core.py", line 23, in _get return self.session.get(url, args, kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/conda/lib/python3.11/site-packages/osfclient/models/session.py", line 25, in wrapper return func(self, url, args, kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/conda/lib/python3.11/site-packages/osfclient/models/session.py", line 75, in get response = super(OSFSession, self).get(url, *args, kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/conda/lib/python3.11/site-packages/requests/sessions.py", line 602, in get return self.request("GET", url, kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/conda/lib/python3.11/site-packages/requests/sessions.py", line 589, in request resp = self.send(prep, send_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/conda/lib/python3.11/site-packages/requests/sessions.py", line 703, in send r = adapter.send(request, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/conda/lib/python3.11/site-packages/requests/adapters.py", line 519, in send raise ConnectionError(e, request=request) requests.exceptions.ConnectionError: HTTPSConnectionPool(host='api.osf.io', port=443): Max retries exceeded with url: /v2//guids/e6pw3/ (Caused by NameResolutionError(": Failed to resolve 'api.osf.io' ([Errno -3] Temporary failure in name resolution)"))`

The following code also gave an error: mkdir /home/jovyan/neurodesk_paper/data gives the following error: (base) jovyan@neurodesktop-:~$ mkdir /home/jovyan/neurodesk_paper/data mkdir: cannot create directory ‘/home/jovyan/neurodesk_paper/data’: No such file or directory -- using mkdir -p home/jovyan/neurodesk_paper/data works

Briefly describe your familiarity with the procedure/tools used by the paper.

Members of the reviewing team have used Jupyter Notebooks before. We understand Jupyter Notebooks are usually helpful to avoid dependancies and issues related to downloading materials on different computer systems, however in our case we were still unable to completely install and use the software. We are unfamiliar with NeuroDesk.

Which type of operating system were you working in?
Windows Operating System
What additional software did you need to install?

None

What software did you use

Web browser (Bing)

What were the main challenges you ran into (if any)?

Findability of the data could be improved; experienced connection issues when trying to run terminal code (see first review comment).

What were the positive features of this approach?

We think the option to run Neurodesk through a web browser is a good idea, and potentially would be easier than installing software locally. The OSF page is nice and more details on installation and error handling would be useful.

Any other comments/suggestions on the reproducibility approach?

Documentation

Documentation rating
How well was the material documented?
4 / 10
How could the documentation be improved?

Checking links go to correct place would be useful. Overall, more detail would be helpful. It would be great if the OSF page has a direct link to the data, to improve findability.

What do you like about the documentation?

It offered direction, albeit without a lot of detail, on different ways of installing the software.

After attempting to reproduce, how familiar do you feel with the code and methods used in the paper?
0 / 10
Any suggestions on how the analysis could be made more transparent?

Due to problems with installation, we could not access the software itself to assess the code and methods.


Reusability

Reusability rating
Rate the project on reusability of the material
5 / 10
Permissive Data license included:  
Permissive Code license included:  

Any suggestions on how the project could be more reusable?

Code is licensed via MIT license (shown in the paper and GitHub repo), but we cannot find a license for the data.



Any final comments

We like the idea behind this project and the authors' attempt to make this as open and accessible as possible. Unfortunately we had issues early in the process of trying to reproduce the code..