tk-rt-viewer 2.2.0__tar.gz → 2.2.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/CHANGELOG.md +4 -0
  2. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/PKG-INFO +1 -1
  3. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/__init__.py +2 -2
  4. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/io.py +8 -4
  5. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/.gitattributes +0 -0
  6. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/.github/workflows/ci.yml +0 -0
  7. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/.gitignore +0 -0
  8. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/LICENSE +0 -0
  9. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/README.md +0 -0
  10. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/pyproject.toml +0 -0
  11. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/event_controllers/__init__.py +0 -0
  12. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/event_controllers/bbox3d_handler.py +0 -0
  13. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/event_controllers/bbox_handler.py +0 -0
  14. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/event_controllers/brush_handler.py +0 -0
  15. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/event_controllers/crosshair_handler.py +0 -0
  16. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/event_controllers/rect_drag.py +0 -0
  17. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/event_controllers/viewer_events.py +0 -0
  18. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/events.py +0 -0
  19. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/geometry.py +0 -0
  20. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/isodose_levels.py +0 -0
  21. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/protocols.py +0 -0
  22. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/py.typed +0 -0
  23. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/reg_io.py +0 -0
  24. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/registration/__init__.py +0 -0
  25. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/registration/deformable.py +0 -0
  26. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/registration/errors.py +0 -0
  27. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/registration/params.py +0 -0
  28. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/registration/rigid.py +0 -0
  29. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/registration/session.py +0 -0
  30. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/registration/template.py +0 -0
  31. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/rendering/__init__.py +0 -0
  32. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/rendering/blit_compositor.py +0 -0
  33. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/rendering/contour_overlay.py +0 -0
  34. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/rendering/drawing_manager.py +0 -0
  35. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/rendering/dvh.py +0 -0
  36. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/rendering/image_layer.py +0 -0
  37. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/rendering/isodose.py +0 -0
  38. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/rendering/layout.py +0 -0
  39. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/rendering/render.py +0 -0
  40. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/roi_operations.py +0 -0
  41. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/rtstruct_io.py +0 -0
  42. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/state/__init__.py +0 -0
  43. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/state/dose_manager.py +0 -0
  44. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/state/phase_manager.py +0 -0
  45. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/state/roi_editor.py +0 -0
  46. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/state/roi_manager.py +0 -0
  47. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/state/secondary_manager.py +0 -0
  48. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/state/structure_set.py +0 -0
  49. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/state/viewer_cache.py +0 -0
  50. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/state/viewer_state.py +0 -0
  51. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/viewer.py +0 -0
  52. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/src/tk_rt_viewer/window_level.py +0 -0
  53. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/tests/test_bbox3d.py +0 -0
  54. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/tests/test_bbox3d_handler.py +0 -0
  55. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/tests/test_brush_handler.py +0 -0
  56. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/tests/test_event_controllers.py +0 -0
  57. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/tests/test_geometry.py +0 -0
  58. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/tests/test_io.py +0 -0
  59. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/tests/test_isodose_levels.py +0 -0
  60. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/tests/test_performance_opt.py +0 -0
  61. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/tests/test_reg_io.py +0 -0
  62. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/tests/test_registration.py +0 -0
  63. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/tests/test_render.py +0 -0
  64. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/tests/test_rendering.py +0 -0
  65. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/tests/test_roi_operations.py +0 -0
  66. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/tests/test_rtstruct_io.py +0 -0
  67. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/tests/test_state_extensions.py +0 -0
  68. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/tests/test_state_managers.py +0 -0
  69. {tk_rt_viewer-2.2.0 → tk_rt_viewer-2.2.1}/tests/test_viewer_state.py +0 -0
@@ -30,6 +30,10 @@ Loading a series picked from a scan now reads only that series' files.
30
30
  directory holding a listed series also holds another image series.
31
31
  Non-image objects and the phases of one 4DCT may share a directory. Off by
32
32
  default; `MultiplePatientError` is still checked first.
33
+ - **`NON_IMAGE_MODALITIES`** (formerly the private `_NON_IMAGE_MODALITIES`):
34
+ the modalities never treated as an image series, so a host that sorts
35
+ files into per-series folders agrees with the scan on what an image
36
+ series is.
33
37
 
34
38
  ### Changed
35
39
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: tk-rt-viewer
3
- Version: 2.2.0
3
+ Version: 2.2.1
4
4
  Summary: SimpleITK-based DICOM-RT MPR viewer widget for Tkinter (CT, RT-DOSE, RT-STRUCT, DVH)
5
5
  Project-URL: Homepage, https://github.com/oki1002/DICOM_RT_Viewer
6
6
  Project-URL: Repository, https://github.com/oki1002/DICOM_RT_Viewer
@@ -40,7 +40,7 @@ Submodule API (import from the submodule)
40
40
  validate_dicom_files, find_reg_matrices, scan_dicom_series,
41
41
  load_scanned_series, load_phase_series, select_phase_series,
42
42
  load_all_series, load_dcm_series, normalize_phase_label,
43
- MultiplePatientError, MixedSeriesDirectoryError
43
+ MultiplePatientError, MixedSeriesDirectoryError, NON_IMAGE_MODALITIES
44
44
 
45
45
  ``tk_rt_viewer.rtstruct_io``
46
46
  load_rt_struct, mask2rtstruct, save_structure_set,
@@ -104,7 +104,7 @@ __all__ = [
104
104
  "StructureSet",
105
105
  "to_gy_pairs",
106
106
  ]
107
- __version__ = "2.2.0"
107
+ __version__ = "2.2.1"
108
108
 
109
109
 
110
110
  def __getattr__(name: str) -> Any:
@@ -20,6 +20,9 @@ load_phase_series(phases, reg_files=(), max_workers=None)
20
20
  -> dict[str, SeriesInfo]
21
21
  Load the phases of a scanned 4DCT, reading only their own files.
22
22
 
23
+ NON_IMAGE_MODALITIES
24
+ Modalities never treated as an image series (RT objects, REG, SR, ...).
25
+
23
26
  select_phase_series(all_series, phases) -> dict[str, SeriesInfo]
24
27
  Pick the 4DCT phases named by a scan result out of a load_all_series map.
25
28
 
@@ -70,8 +73,9 @@ _PHASE_LABEL_PATTERN = re.compile(r"\d+%")
70
73
  #: Modalities never loaded as a displayable image series. Without this,
71
74
  #: GDCM enumerates RT objects alongside the images and they are read through
72
75
  #: the CT path (RT-DOSE without its DoseGridScaling). RT-DOSE has its own
73
- #: loader, :func:`load_rt_dose`.
74
- _NON_IMAGE_MODALITIES: frozenset[str] = frozenset(
76
+ #: loader, :func:`load_rt_dose`. Public so hosts that reorganise files agree
77
+ #: with :func:`scan_dicom_series` on what counts as an image series.
78
+ NON_IMAGE_MODALITIES: frozenset[str] = frozenset(
75
79
  {"RTSTRUCT", "RTPLAN", "RTRECORD", "RTDOSE", "REG", "SR", "PR", "KO", "SEG"}
76
80
  )
77
81
 
@@ -492,7 +496,7 @@ def scan_dicom_series(
492
496
  series_uid = str(ds.get("SeriesInstanceUID", ""))
493
497
  if not series_uid:
494
498
  continue
495
- if modality not in _NON_IMAGE_MODALITIES:
499
+ if modality not in NON_IMAGE_MODALITIES:
496
500
  image_series_by_dir.setdefault(file.parent, set()).add(series_uid)
497
501
  if modality not in modalities:
498
502
  continue
@@ -937,7 +941,7 @@ def _load_all_series_impl(
937
941
  for dcm_dir in sorted(scan.dirs_with_dicom):
938
942
  for sid in reader.GetGDCMSeriesIDs(str(dcm_dir)):
939
943
  modality = scan.modality_by_series.get(sid, "")
940
- if modality.upper() in _NON_IMAGE_MODALITIES:
944
+ if modality.upper() in NON_IMAGE_MODALITIES:
941
945
  logger.info(f"Skipping {modality} series '{sid}' (not an image).")
942
946
  continue
943
947
  raw_image, file_names = _read_series(reader, dcm_dir, sid)
File without changes
File without changes
File without changes