From §6.2 of the format-conformance review against
FILE_FORMAT.md.
The gap
§7.2/§12: the patient-frame origin is the magnet isocentre on single-modality
systems, but on ParaVision 360 multi-modality systems with an ATS it is the
labelled subject position in the animal cradle instead.
VisuCoreAtsCenterDistance records that offset.
grep -r VisuCoreAtsCenterDistance brukerapi/ returns nothing, while the
parameter is present in 90 corpus visu_pars. Every affine — including the
corrected one in #156 — therefore assumes an isocentre origin. The single
dataset checkable here is isocentre-consistent, so this is a gap rather than a
demonstrated defect, but it is silent when it is wrong.
Proposal
- Expose the parameter as
Dataset.ats_center_distance (None when absent).
- Offset the patient-frame origin by it when it is present and non-zero, and
say so in the compatibility notes — the transform stays in the Visu/DICOM
frame, only the origin moves.
- Until a dataset with a non-zero value and an independent reference is
available, warn once (RuntimeWarning) when the parameter is non-zero, so a
user of an ATS system is told the affine assumes isocentre rather than
discovering it downstream.
- Add a
origin= switch ("isocentre" / "cradle") if the two conventions
both turn out to be wanted.
What would settle it
A PV360 ATS dataset with a non-zero VisuCoreAtsCenterDistance and a vendor
DICOM export of the same series: the sign and axis of the offset can then be
read off the difference between the two origins. If anyone has such a dataset to
share, that is the missing piece.
From §6.2 of the format-conformance review against
FILE_FORMAT.md.The gap
§7.2/§12: the patient-frame origin is the magnet isocentre on single-modality
systems, but on ParaVision 360 multi-modality systems with an ATS it is the
labelled subject position in the animal cradle instead.
VisuCoreAtsCenterDistancerecords that offset.grep -r VisuCoreAtsCenterDistance brukerapi/returns nothing, while theparameter is present in 90 corpus
visu_pars. Every affine — including thecorrected one in #156 — therefore assumes an isocentre origin. The single
dataset checkable here is isocentre-consistent, so this is a gap rather than a
demonstrated defect, but it is silent when it is wrong.
Proposal
Dataset.ats_center_distance(None when absent).say so in the compatibility notes — the transform stays in the Visu/DICOM
frame, only the origin moves.
available, warn once (
RuntimeWarning) when the parameter is non-zero, so auser of an ATS system is told the affine assumes isocentre rather than
discovering it downstream.
origin=switch ("isocentre"/"cradle") if the two conventionsboth turn out to be wanted.
What would settle it
A PV360 ATS dataset with a non-zero
VisuCoreAtsCenterDistanceand a vendorDICOM export of the same series: the sign and axis of the offset can then be
read off the difference between the two origins. If anyone has such a dataset to
share, that is the missing piece.