Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
This document contains the Spec2nii release history in reverse chronological order.

0.8.11 (Monday 20th April 2026)
----------------------------------
- Fix issues arising in coil names and 31P Siemens CSI with missing DICOM VOI fields.

0.8.10 (Monday 20th April 2026)
----------------------------------
- Backend only: moved from `versioneer` to `setuptools_scm`
Expand Down
10 changes: 8 additions & 2 deletions spec2nii/Siemens/dicomfunctions.py
Original file line number Diff line number Diff line change
Expand Up @@ -461,8 +461,14 @@ def _detect_and_fill_voi_enh(img, meta):

imageOrientationPatient = _get_enhanced_dcm_img_orientation_pat(img)

# VoiPosition - this does not have the FOV shift that imagePositionPatient has
vol_loc_seq = img.dcm_data.VolumeLocalizationSequence
try:
# VoiPosition - this does not have the FOV shift that imagePositionPatient has
vol_loc_seq = img.dcm_data.VolumeLocalizationSequence
except AttributeError:
# If VolumeLocalizationSequence doesn't exist return unmodifed meta
# It's possible we might be able to inspect
# img.dcm_data.VolumeLocalizationTechnique as a flag
return meta
imagePositionPatient = vol_loc_seq[0].MidSlabPosition

# This order needs validating!!
Expand Down
7 changes: 5 additions & 2 deletions spec2nii/Siemens/twixfunctions.py
Original file line number Diff line number Diff line change
Expand Up @@ -964,8 +964,11 @@ def extractTwixMetadata_xa(mapVBVDHdr, original_file):
# 'InstitutionAddress'
obj.set_standard_def('InstitutionAddress', mapVBVDHdr['Dicom'][('InstitutionAddress')])
# 'TxCoil'
tx_coil_tuple = ('sCoilSelectMeas', 'aTxCoilSelectData', '0', 'asList', '0', 'sCoilElementID', 'tCoilID')
obj.set_standard_def('TxCoil', mapVBVDHdr['MeasYaps'][tx_coil_tuple])
try:
tx_coil_tuple = ('sCoilSelectMeas', 'aTxCoilSelectData', '0', 'asList', '0', 'sCoilElementID', 'tCoilID')
obj.set_standard_def('TxCoil', mapVBVDHdr['MeasYaps'][tx_coil_tuple])
except KeyError:
pass
# 'RxCoil'
rx_coil_1 = ('sCoilSelectMeas', 'aRxCoilSelectData', '0', 'asList', '0', 'sCoilElementID', 'tCoilID')
rx_coil_2 = ('asCoilSelectMeas', '0', 'asList', '0', 'sCoilElementID', 'tCoilID')
Expand Down