From e3fa72f09b909ee7501e18afc4dae049cf2a4b6a Mon Sep 17 00:00:00 2001 From: Kris Thielemans Date: Fri, 12 Jan 2024 21:05:14 +0000 Subject: [PATCH 1/3] fix Interfile parsing of isotope_name --- src/IO/InterfileHeader.cxx | 4 ++-- src/IO/InterfileHeaderSiemens.cxx | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/IO/InterfileHeader.cxx b/src/IO/InterfileHeader.cxx index 2e64f6aab..c13375b38 100644 --- a/src/IO/InterfileHeader.cxx +++ b/src/IO/InterfileHeader.cxx @@ -179,7 +179,7 @@ InterfileHeader::InterfileHeader() ignore_key("GENERAL IMAGE DATA"); add_key("calibration factor", &calibration_factor); - // deprecated + // deprecated, but used by Siemens add_key("isotope name", &isotope_name); ignore_key("number of radionuclides"); // just always use 1. TODO should check really add_vectorised_key("radionuclide name", &radionuclide_name); @@ -283,7 +283,7 @@ bool InterfileHeader::post_processing() // radionuclide { RadionuclideDB radionuclide_db; - const std::string rn_name = !this->radionuclide_name.empty()? + const std::string rn_name = !this->radionuclide_name[0].empty()? this->radionuclide_name[0] : this->isotope_name; auto radionuclide = radionuclide_db.get_radionuclide(exam_info_sptr->imaging_modality, rn_name); if (radionuclide.get_half_life(false) < 0) diff --git a/src/IO/InterfileHeaderSiemens.cxx b/src/IO/InterfileHeaderSiemens.cxx index 696be0d08..0cc02718f 100644 --- a/src/IO/InterfileHeaderSiemens.cxx +++ b/src/IO/InterfileHeaderSiemens.cxx @@ -158,7 +158,7 @@ void InterfileHeaderSiemens::set_type_of_data() } else { - warning("Interfile parsing of Siemens listmode: unexpected 'type of data:=" + type_of_data + "' (expected PET). Continuing"); + warning("Interfile parsing of Siemens header: unexpected 'type of data:=" + type_of_data + "' (expected PET). Continuing"); } } From b33c838c02ff5a56762344107b88468983f1cb21 Mon Sep 17 00:00:00 2001 From: Kris Thielemans Date: Fri, 12 Jan 2024 22:43:46 +0000 Subject: [PATCH 2/3] fix Interfile parsing of radionuclide if unknown - default for half_life was set out of the allocated vector - make sure that returned radionuclide is "unknown" --- src/IO/InterfileHeader.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/IO/InterfileHeader.cxx b/src/IO/InterfileHeader.cxx index c13375b38..0e7e9e1c8 100644 --- a/src/IO/InterfileHeader.cxx +++ b/src/IO/InterfileHeader.cxx @@ -169,7 +169,7 @@ InterfileHeader::InterfileHeader() radionuclide_name.resize(1); radionuclide_half_life.resize(1); - radionuclide_half_life[1] = -1.F; + radionuclide_half_life[0] = -1.F; radionuclide_branching_ratio.resize(1); radionuclide_branching_ratio[0] = -1.F; @@ -287,7 +287,7 @@ bool InterfileHeader::post_processing() this->radionuclide_name[0] : this->isotope_name; auto radionuclide = radionuclide_db.get_radionuclide(exam_info_sptr->imaging_modality, rn_name); if (radionuclide.get_half_life(false) < 0) - radionuclide = Radionuclide(rn_name, + radionuclide = Radionuclide(rn_name.empty() ? "Unknown" : rn_name, is_spect ? -1.F : 511.F, // TODO handle energy for SPECT radionuclide_branching_ratio[0], radionuclide_half_life[0], this->exam_info_sptr->imaging_modality); this->exam_info_sptr->set_radionuclide(radionuclide); From 850bb18c72643e11123b2f8e36450a609ac3950e Mon Sep 17 00:00:00 2001 From: Kris Thielemans Date: Sat, 13 Jan 2024 08:11:49 +0000 Subject: [PATCH 3/3] read %TOF mashing factor in Siemens list files --- src/IO/InterfileHeaderSiemens.cxx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/IO/InterfileHeaderSiemens.cxx b/src/IO/InterfileHeaderSiemens.cxx index 0cc02718f..673d22bdf 100644 --- a/src/IO/InterfileHeaderSiemens.cxx +++ b/src/IO/InterfileHeaderSiemens.cxx @@ -544,7 +544,6 @@ InterfileListmodeHeaderSiemens::InterfileListmodeHeaderSiemens() ignore_key("gantry crystal radius (cm)"); ignore_key("bin size (cm)"); ignore_key("septa state"); - ignore_key("%tof mashing factor"); ignore_key("%preset type"); ignore_key("%preset value"); ignore_key("%preset unit");