From ba604748592574da8a40d90ff134ca76866589b8 Mon Sep 17 00:00:00 2001 From: Jeffrey Baumes Date: Mon, 21 Aug 2023 12:24:54 -0400 Subject: [PATCH 1/2] Add default values for some DICOM fields --- rt_utils/ds_helper.py | 2 +- rt_utils/image_helper.py | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/rt_utils/ds_helper.py b/rt_utils/ds_helper.py index 36c4db7..4129a61 100644 --- a/rt_utils/ds_helper.py +++ b/rt_utils/ds_helper.py @@ -81,7 +81,7 @@ def add_study_and_series_information(ds: FileDataset, series_data): ds.SeriesDescription = getattr(reference_ds, "SeriesDescription", "") ds.StudyInstanceUID = reference_ds.StudyInstanceUID ds.SeriesInstanceUID = generate_uid() # TODO: find out if random generation is ok - ds.StudyID = reference_ds.StudyID + ds.StudyID = getattr(reference_ds, "StudyID", "") ds.SeriesNumber = "1" # TODO: find out if we can just use 1 (Should be fine since its a new series) diff --git a/rt_utils/image_helper.py b/rt_utils/image_helper.py index b030987..31e57c3 100644 --- a/rt_utils/image_helper.py +++ b/rt_utils/image_helper.py @@ -155,7 +155,7 @@ def get_pixel_to_patient_transformation_matrix(series_data): first_slice = series_data[0] - offset = np.array(first_slice.ImagePositionPatient) + offset = np.array(getattr(first_slice, "ImagePositionPatient", [0, 0, 0])) row_spacing, column_spacing = first_slice.PixelSpacing slice_spacing = get_spacing_between_slices(series_data) row_direction, column_direction, slice_direction = get_slice_directions(first_slice) @@ -172,7 +172,7 @@ def get_pixel_to_patient_transformation_matrix(series_data): def get_patient_to_pixel_transformation_matrix(series_data): first_slice = series_data[0] - offset = np.array(first_slice.ImagePositionPatient) + offset = np.array(getattr(first_slice, "ImagePositionPatient", [0, 0, 0])) row_spacing, column_spacing = first_slice.PixelSpacing slice_spacing = get_spacing_between_slices(series_data) row_direction, column_direction, slice_direction = get_slice_directions(first_slice) @@ -209,11 +209,11 @@ def apply_transformation_to_3d_points( def get_slice_position(series_slice: Dataset): _, _, slice_direction = get_slice_directions(series_slice) - return np.dot(slice_direction, series_slice.ImagePositionPatient) + return np.dot(slice_direction, getattr(series_slice, "ImagePositionPatient", [0, 0, 0])) def get_slice_directions(series_slice: Dataset): - orientation = series_slice.ImageOrientationPatient + orientation = getattr(series_slice, "ImageOrientationPatient", [1, 0, 0, 0, 1, 0]) row_direction = np.array(orientation[:3]) column_direction = np.array(orientation[3:]) slice_direction = np.cross(row_direction, column_direction) @@ -265,8 +265,8 @@ def get_slice_contour_data(series_slice: Dataset, contour_sequence: Sequence): def get_slice_mask_from_slice_contour_data( series_slice: Dataset, slice_contour_data, transformation_matrix: np.ndarray ): - # Go through all contours in a slice, create polygons in correct space and with a correct format - # and append to polygons array (appropriate for fillPoly) + # Go through all contours in a slice, create polygons in correct space and with a correct format + # and append to polygons array (appropriate for fillPoly) polygons = [] for contour_coords in slice_contour_data: reshaped_contour_data = np.reshape(contour_coords, [len(contour_coords) // 3, 3]) From a923d001884790036d5c4452cc036b1f1dd5f36e Mon Sep 17 00:00:00 2001 From: Jeffrey Baumes Date: Mon, 21 Aug 2023 12:25:13 -0400 Subject: [PATCH 2/2] Fix setup.py to work for local install --- setup.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 5d525ed..edf6d37 100644 --- a/setup.py +++ b/setup.py @@ -15,8 +15,7 @@ long_description=long_description, long_description_content_type="text/markdown", url="https://github.com/qurit/rtutils", - package_dir={'':"rt_utils"}, - packages=setuptools.find_packages("rt_utils", exclude="tests"), + packages=setuptools.find_packages(exclude=["tests"]), keywords=["RTStruct", "Dicom", "Pydicom"], classifiers=[ "Operating System :: OS Independent",