Skip to content

Commit abca7bf

Browse files
committedDec 5, 2024
ENH: Add normalized BValue and use it as sorting guess
1 parent d6ea7c1 commit abca7bf

File tree

3 files changed

+21
-3
lines changed

3 files changed

+21
-3
lines changed
 

‎src/dcmstack/dcmstack.py

+1
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,7 @@ class DicomStack(object):
311311
'''
312312

313313
SORT_GUESSES = (
314+
'SND.DiffusionBValue',
314315
'SND.EchoTime',
315316
'SND.InversionTime',
316317
'SND.RepetitionTime',

‎src/dcmstack/extract.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -386,7 +386,7 @@ def _get_priv_name(self, tag: BaseTag, pblocks: List[PrivateBlock]):
386386
elem = priv_info[2]
387387
break
388388
if elem == "Unknown":
389-
elem = tag_to_str(tag)
389+
elem = "%#X" % (tag.elem & 0xFF)
390390
else:
391391
elem = ''.join([t[0].upper() + t[1:] for t in elem.split()])
392392
return f"{creator.upper().replace(' ', '_')}.{elem}"

‎src/dcmstack/snd.py

+19-2
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,27 @@ def get_source(self, meta: DcmMetaExtension):
3333

3434
# Define some common source attributes
3535
SRCS = {
36-
"AcquisitionDateTime" : SrcAttr(("FrameReferenceDateTime", "FrameAcquisitionDateTime", "AcquisitionDateTime")),
37-
"MosaicRefAcqTimes" : SrcAttr(("CsaImage.MosaicRefAcqTimes", "SIEMENS_MR_HEADER.MosaicRefAcqTimes")),
36+
"AcquisitionDateTime" : SrcAttr(
37+
("FrameReferenceDateTime", "FrameAcquisitionDateTime", "AcquisitionDateTime")
38+
),
39+
"MosaicRefAcqTimes" : SrcAttr(
40+
("CsaImage.MosaicRefAcqTimes", "SIEMENS_MR_HEADER.MosaicRefAcqTimes")
41+
),
3842
"FlipAngle" : SrcAttr("FlipAngle", ureg.degrees),
3943
"RepetitionTime" : SrcAttr("RepetitionTime", ureg.milliseconds),
4044
"EchoTime" : SrcAttr(("EffectiveEchoTime", "EchoTime"), ureg.milliseconds),
4145
"InversionTime" : SrcAttr(("InversionTime", "InversionTimes"), ureg.milliseconds),
46+
"DiffusionBValue" : SrcAttr(
47+
(
48+
"DiffusionBValue",
49+
"SIEMENS_MR_HEADER.0XC",
50+
"SIEMENS_MR_HEADER.B_value",
51+
"CsaImage.B_value",
52+
"GEMS_PARM_01.0X39",
53+
"PHILIPS_IMAGING_DD_001.0X3",
54+
),
55+
ureg.seconds / ureg.mm ** 2,
56+
),
4257
}
4358

4459

@@ -69,6 +84,7 @@ def convert_single_source(self, src: SrcAttr, val):
6984
SndAttr("RepetitionTime", ureg.seconds, "TR"),
7085
SndAttr("EchoTime", ureg.seconds, "TE"),
7186
SndAttr("InversionTime", ureg.seconds, "TI"),
87+
SndAttr("DiffusionBValue", ureg.seconds / ureg.mm ** 2, "b-value"),
7288
]
7389
SND_ATTR_MAP = {x.name: x for x in SND_ATTRS}
7490

@@ -243,6 +259,7 @@ def get_acq_ts(meta: DcmMetaExtension):
243259
"RepetitionTime",
244260
"EchoTime",
245261
"InversionTime",
262+
"DiffusionBValue",
246263
],
247264
lambda meta: meta.get_values("Modality") == "MR"
248265
)

0 commit comments

Comments
 (0)
Please sign in to comment.