nii2dcm icon indicating copy to clipboard operation
nii2dcm copied to clipboard

dunamai RuntimeError and UnboundLocalError: local variable 'nZ' referenced before assignment

Open astewartau opened this issue 5 months ago • 9 comments

Thanks for your work on nii2dcm! I'm considering integrating this as part of my QSM processing toolbox, QSMxT.

However, I'm having problems using it in my miniconda setup:

(qsmxt) ~/.../data/qsmtest/qsm: nii2dcm sub-1_ses-20231020_part-phase_T2Starw_romeo-unwrapped_normalized_pdf_rts_twopass_ref.nii dicom-output-directory/ --dicom-type MR
Traceback (most recent call last):
  File "/home/ashley/neurodesktop-storage/miniconda3/envs/qsmxt/bin/nii2dcm", line 5, in <module>
    from nii2dcm.__main__ import cli
  File "/home/ashley/neurodesktop-storage/miniconda3/envs/qsmxt/lib/python3.8/site-packages/nii2dcm/__main__.py", line 9, in <module>
    from nii2dcm._version import __version__
  File "/home/ashley/neurodesktop-storage/miniconda3/envs/qsmxt/lib/python3.8/site-packages/nii2dcm/_version.py", line 2, in <module>
    __version__ = Version.from_git().serialize(metadata=False, style=Style.SemVer)
  File "/home/ashley/neurodesktop-storage/miniconda3/envs/qsmxt/lib/python3.8/site-packages/dunamai/__init__.py", line 1058, in from_git
    _detect_vcs(vcs)
  File "/home/ashley/neurodesktop-storage/miniconda3/envs/qsmxt/lib/python3.8/site-packages/dunamai/__init__.py", line 355, in _detect_vcs
    raise RuntimeError(
RuntimeError: This does not appear to be a Git project

It is related somehow to the dunamai package. Any idea what could be causing this?

I tried initialising a git repository in the local directory to see if that could be a workaround, but then I have a new problem:

(qsmxt) ~/.../data/qsmtest/qsm: nii2dcm -d MR sub-1_ses-20231020_part-phase_T2Starw_romeo-unwrapped_normalized_pdf_rts_twopass_ref.nii dicom-output-directory/
Traceback (most recent call last):
  File "/home/ashley/neurodesktop-storage/miniconda3/envs/qsmxt/bin/nii2dcm", line 8, in <module>
    sys.exit(cli())
  File "/home/ashley/neurodesktop-storage/miniconda3/envs/qsmxt/lib/python3.8/site-packages/nii2dcm/__main__.py", line 55, in cli
    run_nii2dcm(
  File "/home/ashley/neurodesktop-storage/miniconda3/envs/qsmxt/lib/python3.8/site-packages/nii2dcm/run.py", line 38, in run_nii2dcm
    nii2dcm_parameters = nii2dcm.nii.Nifti.get_nii2dcm_parameters(nii)
  File "/home/ashley/neurodesktop-storage/miniconda3/envs/qsmxt/lib/python3.8/site-packages/nii2dcm/nii.py", line 38, in get_nii2dcm_parameters
    nInstances = nZ*nF
UnboundLocalError: local variable 'nZ' referenced before assignment

Looking at your code in nii.py, I can see that this is happening because of the dimensions of my file:

>>> nii.header['dim']
array([  3, 164, 205, 205,   0,   0,   0,   0], dtype=int16)

Which will not be handled correctly by the initialization code:

https://github.com/tomaroberts/nii2dcm/blob/09d20e02f61da2aa5e7a2e57bd420828021f0d92/nii2dcm/nii.py#L29C1-L35C58

My file is a 3D volume with 205 slices, each with dimensions 164x205. It is a quantitative susceptibility map with floating-point values in the range of about -4 to +3, with most values around zero.

astewartau avatar Jan 15 '24 04:01 astewartau