Skip to content

Commit a9aa79d

Browse files
committed
refactor(dicom.pixels.clean): remove image_type
This could be a breaking change if it `image_type='original'` was ever valid. I don't think it is (more below). `image_type` can/should likely be removed from all other save_* functions too. Ostensibly, the option existed to look into the original pixel_array. But `clean_pixel_data` is the only place I see with that variable and it is run as an isolated function w/ no access to the DicomCleaner object. DicomCleaner has no `original` attribute. ``` (Pdb) self.__dir__() ['font', 'cmap', 'output_folder', 'recipe', 'results', 'force', 'dicom_file', 'cleaned', '__module__', '__doc__', '__init__', 'default_font', 'detect', 'clean', 'get_figure', '_get_clean_name', 'save_png', 'save_animation', 'save_dicom', '__dict__', '__weakref__', '__new__', '__repr__', '__hash__', '__str__', '__getattribute__', '__setattr__', '__delattr__', '__lt__', '__le__', '__eq__', '__ne__', '__gt__', '__ge__', '__reduce_ex__', '__reduce__', '__getstate__', '__subclasshook__', '__init_subclass__', '__format__', '__sizeof__', '__dir__', '__class__'] (Pdb) self.original *** AttributeError: 'DicomCleaner' object has no attribute 'original' ````
1 parent 3a737c1 commit a9aa79d

File tree

1 file changed

+23
-20
lines changed

1 file changed

+23
-20
lines changed

deid/dicom/pixels/clean.py

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -246,21 +246,20 @@ def animate(i):
246246
bot.warning("use detect() --> clean() before saving is possible.")
247247

248248
def save_dicom(
249-
self, output_folder=None, image_type="cleaned", prefix="clean-", extension="dcm"
249+
self, output_folder=None, prefix="clean-", extension="dcm"
250250
) -> str | None:
251251
"""
252252
Save a cleaned dicom to disk.
253+
DicomCleaner object must have already been run through detect() and clean()
253254
254-
We expose an option to save an original (change image_type to "original"
255-
to be consistent, although this is not incredibly useful given it would
256-
duplicate the original data.
257255
258256
Parameters
259257
==========
260258
output_folder: where to save clean dicoms. Will use self.output_folder if None
261-
image_type: ["cleaned","original"]. default "cleaned" checks that detect has been run.
262-
prefix: passed onto py:meth:`DicomCleaner._get_clean_name`. Default adds 'clean-' to basename
263-
extension: paseed onto py:meth:`DicomCleaner._get_clean_name`. Default appends .dcm after removing .dcm or .dicom.
259+
prefix: passed onto py:meth:`DicomCleaner._get_clean_name`.
260+
Default adds 'clean-' to basename
261+
extension: paseed onto py:meth:`DicomCleaner._get_clean_name`.
262+
Default appends .dcm after removing .dcm or .dicom.
264263
use empty string to disable, reuses whole basename
265264
266265
@@ -269,20 +268,24 @@ def save_dicom(
269268
dicom_name: the file that was written
270269
271270
"""
272-
# Having clean also means has dicom image
273-
if hasattr(self, image_type):
274-
dicom_name = self._get_clean_name(
275-
output_folder, prefix=prefix, extension=extension
271+
if not hasattr(self, "cleaned"):
272+
bot.warning(
273+
"No cleaned data for '%s'. use detect() --> clean() before saving is possible."
274+
% (self.dicom_file)
276275
)
277-
dicom = utils.dcmread(self.dicom_file, force=True)
278-
# If going from compressed, change TransferSyntax
279-
if dicom.file_meta.TransferSyntaxUID.is_compressed is True:
280-
dicom.decompress()
281-
dicom.PixelData = self.cleaned.tobytes()
282-
dicom.save_as(dicom_name)
283-
return dicom_name
284-
else:
285-
bot.warning("use detect() --> clean() before saving is possible.")
276+
return
277+
278+
dicom_name = self._get_clean_name(
279+
output_folder, prefix=prefix, extension=extension
280+
)
281+
dicom = utils.dcmread(self.dicom_file, force=True)
282+
283+
# If going from compressed, change TransferSyntax
284+
if dicom.file_meta.TransferSyntaxUID.is_compressed is True:
285+
dicom.decompress()
286+
dicom.PixelData = self.cleaned.tobytes()
287+
dicom.save_as(dicom_name)
288+
return dicom_name
286289

287290

288291
def clean_pixel_data(

0 commit comments

Comments
 (0)