diff --git a/monai/transforms/io/array.py b/monai/transforms/io/array.py index b05995a1a1..ef8ca31510 100644 --- a/monai/transforms/io/array.py +++ b/monai/transforms/io/array.py @@ -128,6 +128,7 @@ def __init__( simple_keys: bool = False, prune_meta_pattern: str | None = None, prune_meta_sep: str = ".", + expanduser: bool = True, *args, **kwargs, ) -> None: @@ -150,6 +151,7 @@ def __init__( prune_meta_sep: combined with `prune_meta_pattern`, used to match and prune keys in the metadata (nested dictionary). default is ".", see also :py:class:`monai.transforms.DeleteItemsd`. e.g. ``prune_meta_pattern=".*_code$", prune_meta_sep=" "`` removes meta keys that ends with ``"_code"``. + expanduser: if True cast filename to Path and call .expanduser on it, otherwise keep filename as is. args: additional parameters for reader if providing a reader name. kwargs: additional parameters for reader if providing a reader name. @@ -171,6 +173,7 @@ def __init__( self.simple_keys = simple_keys self.pattern = prune_meta_pattern self.sep = prune_meta_sep + self.expanduser = expanduser self.readers: list[ImageReader] = [] for r in SUPPORTED_READERS: # set predefined readers as default @@ -238,7 +241,9 @@ def __call__(self, filename: Sequence[PathLike] | PathLike, reader: ImageReader reader: runtime reader to load image file and metadata. """ - filename = tuple(f"{Path(s).expanduser()}" for s in ensure_tuple(filename)) # allow Path objects + filename = tuple( + f"{Path(s).expanduser()}" if self.expanduser else s for s in ensure_tuple(filename) # allow Path objects + ) img, err = None, [] if reader is not None: img = reader.read(filename) # runtime specified reader diff --git a/monai/transforms/io/dictionary.py b/monai/transforms/io/dictionary.py index b5f3429088..6d649c6a24 100644 --- a/monai/transforms/io/dictionary.py +++ b/monai/transforms/io/dictionary.py @@ -83,6 +83,7 @@ def __init__( prune_meta_pattern: str | None = None, prune_meta_sep: str = ".", allow_missing_keys: bool = False, + expanduser: bool = True, *args, **kwargs, ) -> None: @@ -118,6 +119,7 @@ def __init__( in the metadata (nested dictionary). default is ".", see also :py:class:`monai.transforms.DeleteItemsd`. e.g. ``prune_meta_pattern=".*_code$", prune_meta_sep=" "`` removes meta keys that ends with ``"_code"``. allow_missing_keys: don't raise exception if key is missing. + expanduser: if True cast filename to Path and call .expanduser on it, otherwise keep filename as is. args: additional parameters for reader if providing a reader name. kwargs: additional parameters for reader if providing a reader name. """ @@ -130,6 +132,7 @@ def __init__( simple_keys, prune_meta_pattern, prune_meta_sep, + expanduser, *args, **kwargs, )