Skip to content

Dose calculation fails on volumes with orientation other than LPS #7

@cpinter

Description

@cpinter

Using pyRadPlan via 3D Slicer 5.9+ / SlicerRT.

If I have a CT that has an orientation anything other than LPS, in which case the IJK to RAS Direction Matrix is

-1  0  0
 0 -1  0
 0  0  1

dose calculation fails (at least photon does). Sometimes it crashes, sometimes it gives an error

like this
Details Traceback (most recent call last): File "D:\W\sR\Slicer-build\lib\Slicer-5.9\qt-scripted-modules\DoseEngines\pyRadPlanEngine.py", line 87, in calculateDoseUsingEngine dij = calc_dose_influence(ct, cst, stf, pln) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\W\sR\python-install\Lib\site-packages\pyRadPlan\dose\_calc_dose.py", line 45, in calc_dose_influence dij = engine.calc_dose_influence(ct, cst, stf) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\W\sR\python-install\Lib\site-packages\pyRadPlan\dose\engines\_base.py", line 274, in calc_dose_influence dij = self._calc_dose(ct, cst, stf) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\W\sR\python-install\Lib\site-packages\pyRadPlan\dose\engines\_base_pencilbeam.py", line 173, in _calc_dose curr_beam = self._init_beam(dij, ct, cst, scen_stf, i) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\W\sR\python-install\Lib\site-packages\pyRadPlan\dose\engines\_svdpb.py", line 140, in _init_beam beam_info = super()._init_beam(beam_info, ct, cst, stf, i) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\W\sR\python-install\Lib\site-packages\pyRadPlan\dose\engines\_base_pencilbeam.py", line 434, in _init_beam self._compute_ssd(beam_info, ct, density_threshold=self.ssd_density_threshold) File "D:\W\sR\python-install\Lib\site-packages\pyRadPlan\dose\engines\_base_pencilbeam.py", line 524, in _compute_ssd ix_ssd[~ix_nan] = np.argmax(rho[0][~ix_nan] > density_threshold, axis=1) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\W\sR\python-install\Lib\site-packages\numpy\_core\fromnumeric.py", line 1298, in argmax return _wrapfunc(a, 'argmax', axis=axis, out=out, **kwds) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\W\sR\python-install\Lib\site-packages\numpy\_core\fromnumeric.py", line 57, in _wrapfunc return bound(*args, **kwds) ^^^^^^^^^^^^^^^^^^^^ ValueError: attempt to get argmax of an empty sequence

Happy to provide more information if someone starts working on this but needs data, script etc.

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingenhancementFunctionality in need of improvementfeature requestRequests for new features

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions