From cf1b038ab1e62524d25bd4612a649b0bb446237c Mon Sep 17 00:00:00 2001
From: Evan Edmond <evan.edmond@ndcn.ox.ac.uk>
Date: Tue, 30 Mar 2021 21:54:37 +0100
Subject: [PATCH] ENH: accept pathlib objects for Image

---
 fsl/data/image.py | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/fsl/data/image.py b/fsl/data/image.py
index 0dbd331a..1d3d9120 100644
--- a/fsl/data/image.py
+++ b/fsl/data/image.py
@@ -46,6 +46,8 @@ import numpy             as np
 import nibabel           as nib
 import nibabel.fileslice as fileslice
 
+from pathlib import Path
+
 import fsl.utils.meta        as meta
 import fsl.transform.affine  as affine
 import fsl.utils.notifier    as notifier
@@ -1088,6 +1090,11 @@ class Image(Nifti):
             nibImage   = nib.load(image, **kwargs)
             dataSource = image
             saved      = True
+        # The image parameter may be the name of an image file
+        if isinstance(image, Path):
+            nibImage   = nib.load(image, **kwargs)
+            dataSource = str(image)
+            saved      = True
 
         # Or a numpy array - we wrap it in a nibabel image,
         # with an identity transformation (each voxel maps
@@ -1140,6 +1147,8 @@ class Image(Nifti):
             # from disk, use the file name.
             if isinstance(image, six.string_types):
                 name = removeExt(op.basename(image))
+            if isinstance(image, Path):
+                name = image.name
 
             # Or the image was created from a numpy array
             elif isinstance(image, np.ndarray):
-- 
GitLab