datamint 1.7.0__py3-none-any.whl → 1.7.2__py3-none-any.whl
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.
Potentially problematic release.
This version of datamint might be problematic. Click here for more details.
- datamint/apihandler/root_api_handler.py +41 -1
- {datamint-1.7.0.dist-info → datamint-1.7.2.dist-info}/METADATA +1 -1
- {datamint-1.7.0.dist-info → datamint-1.7.2.dist-info}/RECORD +5 -5
- {datamint-1.7.0.dist-info → datamint-1.7.2.dist-info}/WHEEL +0 -0
- {datamint-1.7.0.dist-info → datamint-1.7.2.dist-info}/entry_points.txt +0 -0
|
@@ -364,6 +364,34 @@ class RootAPIHandler(BaseAPIHandler):
|
|
|
364
364
|
|
|
365
365
|
return result[0]
|
|
366
366
|
|
|
367
|
+
@staticmethod
|
|
368
|
+
def _is_dicom_report(file_path: str | IO) -> bool:
|
|
369
|
+
"""
|
|
370
|
+
Check if a DICOM file is a report (e.g., Structured Report).
|
|
371
|
+
|
|
372
|
+
Args:
|
|
373
|
+
file_path: Path to the DICOM file or file-like object.
|
|
374
|
+
|
|
375
|
+
Returns:
|
|
376
|
+
bool: True if the DICOM file is a report, False otherwise.
|
|
377
|
+
"""
|
|
378
|
+
try:
|
|
379
|
+
if not is_dicom(file_path):
|
|
380
|
+
return False
|
|
381
|
+
|
|
382
|
+
ds = pydicom.dcmread(file_path, stop_before_pixels=True)
|
|
383
|
+
if hasattr(file_path, 'seek'):
|
|
384
|
+
file_path.seek(0)
|
|
385
|
+
modality = getattr(ds, 'Modality', None)
|
|
386
|
+
|
|
387
|
+
# Common report modalities
|
|
388
|
+
report_modalities = {'SR', 'DOC', 'KO', 'PR', 'ESR'} # SR=Structured Report, DOC=Document, KO=Key Object, PR=Presentation State
|
|
389
|
+
|
|
390
|
+
return modality in report_modalities
|
|
391
|
+
except Exception as e:
|
|
392
|
+
_LOGGER.warning(f"Error checking if DICOM is a report: {e}")
|
|
393
|
+
return False
|
|
394
|
+
|
|
367
395
|
def upload_resources(self,
|
|
368
396
|
files_path: str | IO | Sequence[str | IO] | pydicom.dataset.Dataset,
|
|
369
397
|
mimetype: Optional[str] = None,
|
|
@@ -379,7 +407,8 @@ class RootAPIHandler(BaseAPIHandler):
|
|
|
379
407
|
transpose_segmentation: bool = False,
|
|
380
408
|
modality: Optional[str] = None,
|
|
381
409
|
assemble_dicoms: bool = True,
|
|
382
|
-
metadata: list[str | dict | None] | dict | str | None = None
|
|
410
|
+
metadata: list[str | dict | None] | dict | str | None = None,
|
|
411
|
+
discard_dicom_reports: bool = True
|
|
383
412
|
) -> list[str | Exception] | str | Exception:
|
|
384
413
|
"""
|
|
385
414
|
Upload resources.
|
|
@@ -416,6 +445,17 @@ class RootAPIHandler(BaseAPIHandler):
|
|
|
416
445
|
list[str | Exception]: A list of resource IDs or errors.
|
|
417
446
|
"""
|
|
418
447
|
|
|
448
|
+
if discard_dicom_reports:
|
|
449
|
+
if isinstance(files_path, (str, Path)):
|
|
450
|
+
files_path = [files_path]
|
|
451
|
+
elif isinstance(files_path, pydicom.dataset.Dataset):
|
|
452
|
+
files_path = [files_path]
|
|
453
|
+
|
|
454
|
+
old_size = len(files_path)
|
|
455
|
+
files_path = [f for f in files_path if not RootAPIHandler._is_dicom_report(f)]
|
|
456
|
+
if old_size != len(files_path):
|
|
457
|
+
_LOGGER.info(f"Discarded {old_size - len(files_path)} DICOM report files from upload.")
|
|
458
|
+
|
|
419
459
|
if on_error not in ['raise', 'skip']:
|
|
420
460
|
raise ValueError("on_error must be either 'raise' or 'skip'")
|
|
421
461
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: datamint
|
|
3
|
-
Version: 1.7.
|
|
3
|
+
Version: 1.7.2
|
|
4
4
|
Summary: A library for interacting with the Datamint API, designed for efficient data management, processing and Deep Learning workflows.
|
|
5
5
|
Requires-Python: >=3.10
|
|
6
6
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -4,7 +4,7 @@ datamint/apihandler/api_handler.py,sha256=cdVSddrFCKlF_BJ81LO1aJ0OP49rssjpNEFzJ6
|
|
|
4
4
|
datamint/apihandler/base_api_handler.py,sha256=dWLiowyuP1XiGfNc-_D5oQSmJdfR0Quy0ToeJlkRA8s,11911
|
|
5
5
|
datamint/apihandler/dto/annotation_dto.py,sha256=qId1RK1VO7dXrvGJ7dqJ31jBQB7Z8yy5x0tLSiMxTB4,7105
|
|
6
6
|
datamint/apihandler/exp_api_handler.py,sha256=hFUgUgBc5rL7odK7gTW3MnrvMY1pVfJUpUdzRNobMQE,6226
|
|
7
|
-
datamint/apihandler/root_api_handler.py,sha256=
|
|
7
|
+
datamint/apihandler/root_api_handler.py,sha256=iwSTqBlgG0DMD052CwiPkfvLUXJIx8teGXPZzIYpNVQ,57063
|
|
8
8
|
datamint/client_cmd_tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
9
|
datamint/client_cmd_tools/datamint_config.py,sha256=md7dnWrbl10lPtXKbmD9yo6onLJsajeG8Vz0ZWH1v4M,8181
|
|
10
10
|
datamint/client_cmd_tools/datamint_upload.py,sha256=890USkrtaH23mNjTRYVHWce2q9jSmkUNHIP_e8fnJRM,29502
|
|
@@ -22,7 +22,7 @@ datamint/logging.yaml,sha256=a5dsATpul7QHeUHB2TjABFjWaPXBMbO--dgn8GlRqwk,483
|
|
|
22
22
|
datamint/utils/logging_utils.py,sha256=DvoA35ATYG3JTwfXEXYawDyKRfHeCrH0a9czfkmz8kM,1851
|
|
23
23
|
datamint/utils/torchmetrics.py,sha256=lwU0nOtsSWfebyp7dvjlAggaqXtj5ohSEUXOg3L0hJE,2837
|
|
24
24
|
datamint/utils/visualization.py,sha256=yaUVAOHar59VrGUjpAWv5eVvQSfztFG0eP9p5Vt3l-M,4470
|
|
25
|
-
datamint-1.7.
|
|
26
|
-
datamint-1.7.
|
|
27
|
-
datamint-1.7.
|
|
28
|
-
datamint-1.7.
|
|
25
|
+
datamint-1.7.2.dist-info/METADATA,sha256=XXJRyuBh70SbkAEX1p2ncW7zHQsgASp3b8OMVxlheLQ,4090
|
|
26
|
+
datamint-1.7.2.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
|
27
|
+
datamint-1.7.2.dist-info/entry_points.txt,sha256=mn5H6jPjO-rY0W0CAZ6Z_KKWhMLvyVaSpoqk77jlTI4,145
|
|
28
|
+
datamint-1.7.2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|