From: Michael R. Crusoe <crusoe@debian.org>
Subject: tests: improved usage of temporary directories
Forwarded: https://github.com/dipy/dipy/pull/3415

So that the tests don't leave extra files around.


--- dipy.orig/dipy/io/tests/test_io_peaks.py
+++ dipy/dipy/io/tests/test_io_peaks.py
@@ -45,7 +45,7 @@
 @set_random_number_generator()
 def test_io_peaks(rng):
     with TemporaryDirectory() as tmpdir:
-        fname = "test.pam5"
+        fname = pjoin(tmpdir, "test.pam5")
 
         pam = generate_default_pam(rng)
         save_pam(fname, pam)
@@ -54,12 +54,12 @@
 
         pam2.affine = None
 
-        fname2 = "test2.pam5"
-        save_pam(pjoin(tmpdir, fname2), pam2, affine=np.eye(4))
-        pam2_res = load_pam(pjoin(tmpdir, fname2), verbose=True)
+        fname2 = pjoin(tmpdir, "test2.pam5")
+        save_pam(fname2, pam2, affine=np.eye(4))
+        pam2_res = load_pam(fname2, verbose=True)
         npt.assert_array_equal(pam.peak_dirs, pam2_res.peak_dirs)
 
-        pam3 = load_pam(pjoin(tmpdir, fname2), verbose=False)
+        pam3 = load_pam(fname2, verbose=False)
 
         for attr in [
             "peak_dirs",
@@ -77,43 +77,46 @@
         npt.assert_equal(pam3.ang_thr, pam.ang_thr)
         npt.assert_array_almost_equal(pam3.sphere.vertices, pam.sphere.vertices)
 
-        fname3 = "test3.pam5"
+        fname3 = pjoin(tmpdir, "test3.pam5")
         pam4 = PeaksAndMetrics()
         npt.assert_raises(
-            (ValueError, AttributeError), save_pam, pjoin(tmpdir, fname3), pam4
+            (ValueError, AttributeError), save_pam, fname3, pam4
         )
 
-        fname4 = "test4.pam5"
+        fname4 = pjoin(tmpdir, "test4.pam5")
         del pam.affine
-        save_pam(pjoin(tmpdir, fname4), pam, affine=None)
+        save_pam(fname4, pam, affine=None)
 
-        fname5 = "test5.pkm"
-        npt.assert_raises(IOError, save_pam, pjoin(tmpdir, fname5), pam)
+        fname5 = pjoin(tmpdir, "test5.pkm")
+        npt.assert_raises(IOError, save_pam, fname5, pam)
 
         pam.affine = np.eye(4)
-        fname6 = "test6.pam5"
-        save_pam(pjoin(tmpdir, fname6), pam, verbose=True)
+        fname6 = pjoin(tmpdir, "test6.pam5")
+        save_pam(fname6, pam, verbose=True)
 
         del pam.shm_coeff
         save_pam(pjoin(tmpdir, fname6), pam, verbose=False)
 
         pam.shm_coeff = np.zeros((10, 10, 10, 45))
         del pam.odf
-        save_pam(pjoin(tmpdir, fname6), pam)
-        pam_tmp = load_pam(pjoin(tmpdir, fname6), verbose=True)
+        save_pam(fname6, pam)
+        pam_tmp = load_pam(fname6, verbose=True)
         npt.assert_equal(pam_tmp.odf, None)
 
-        fname7 = "test7.paw"
-        npt.assert_raises(OSError, load_pam, pjoin(tmpdir, fname7))
+        fname7 = pjoin(tmpdir, "test7.paw")
+        npt.assert_raises(OSError, load_pam, fname7)
 
         del pam.shm_coeff
-        save_pam(pjoin(tmpdir, fname6), pam, verbose=True)
+        save_pam(fname6, pam, verbose=True)
 
-        fname_shm = "shm.nii.gz"
-        fname_dirs = "dirs.nii.gz"
-        fname_values = "values.nii.gz"
-        fname_indices = "indices.nii.gz"
-        fname_gfa = "gfa.nii.gz"
+        fname_shm = pjoin(tmpdir, "shm.nii.gz")
+        fname_dirs = pjoin(tmpdir, "peaks_dirs.nii.gz")
+        fname_values = pjoin(tmpdir, "peaks_values.nii.gz")
+        fname_indices = pjoin(tmpdir, "peaks_indices.nii.gz")
+        fname_gfa = pjoin(tmpdir, "gfa.nii.gz")
+        fname_sphere = pjoin(tmpdir, "sphere.txt")
+        fname_b = pjoin(tmpdir, "B.nii.gz")
+        fname_qa = pjoin(tmpdir, "qa.nii.gz")
 
         pam.shm_coeff = np.ones((10, 10, 10, 45))
         pam_to_niftis(
@@ -123,24 +126,12 @@
             fname_peaks_values=fname_values,
             fname_peaks_indices=fname_indices,
             fname_gfa=fname_gfa,
+            fname_sphere=fname_sphere,
+            fname_b=fname_b,
+            fname_qa=fname_qa,
             reshape_dirs=False,
         )
 
-        pam_to_niftis(pam, reshape_dirs=False)
-        # old version
-        with warnings.catch_warnings(record=True) as cw:
-            peaks_to_niftis(
-                pam,
-                fname_shm="ptn_shm.nii.gz",
-                fname_dirs="ptn_dirs.nii.gz",
-                fname_values="ptn_values.nii.gz",
-                fname_indices="ptn_indices.nii.gz",
-                fname_gfa="ptn_gfa.nii.gz",
-                reshape_dirs=False,
-            )
-            npt.assert_equal(len(cw), 1)
-            npt.assert_(issubclass(cw[-1].category, DeprecationWarning))
-
         for name in [
             "shm.nii.gz",
             "peaks_dirs.nii.gz",
@@ -148,13 +139,8 @@
             "gfa.nii.gz",
             "peaks_indices.nii.gz",
             "shm.nii.gz",
-            "ptn_dirs.nii.gz",
-            "ptn_values.nii.gz",
-            "ptn_indices.nii.gz",
-            "ptn_gfa.nii.gz",
-            "ptn_shm.nii.gz",
         ]:
-            npt.assert_(os.path.isfile(name), "{} file does not exist".format(name))
+            npt.assert_(os.path.isfile(pjoin(tmpdir, name)), "{} file does not exist".format(pjoin(tmpdir, name)))
 
 
 @set_random_number_generator()
@@ -184,24 +170,25 @@
 
 
 def test_io_niftis_to_pam():
-    pam = niftis_to_pam(
-        affine=np.eye(4),
-        peak_dirs=np.random.rand(10, 10, 10, 5, 3),
-        peak_values=np.zeros((10, 10, 10, 5)),
-        peak_indices=np.zeros((10, 10, 10, 5)),
-        shm_coeff=np.zeros((10, 10, 10, 45)),
-        sphere=default_sphere,
-        gfa=np.zeros((10, 10, 10)),
-        B=np.zeros((45, default_sphere.vertices.shape[0])),
-        qa=np.zeros((10, 10, 10, 5)),
-        odf=np.zeros((10, 10, 10, default_sphere.vertices.shape[0])),
-        total_weight=0.5,
-        ang_thr=60,
-        pam_file="test15.pam5",
-    )
+    with TemporaryDirectory() as tmpdir:
+        pam = niftis_to_pam(
+            affine=np.eye(4),
+            peak_dirs=np.random.rand(10, 10, 10, 5, 3),
+            peak_values=np.zeros((10, 10, 10, 5)),
+            peak_indices=np.zeros((10, 10, 10, 5)),
+            shm_coeff=np.zeros((10, 10, 10, 45)),
+            sphere=default_sphere,
+            gfa=np.zeros((10, 10, 10)),
+            B=np.zeros((45, default_sphere.vertices.shape[0])),
+            qa=np.zeros((10, 10, 10, 5)),
+            odf=np.zeros((10, 10, 10, default_sphere.vertices.shape[0])),
+            total_weight=0.5,
+            ang_thr=60,
+            pam_file=pjoin(tmpdir, "test15.pam5"),
+        )
 
-    npt.assert_equal(pam.peak_dirs.shape, (10, 10, 10, 5, 3))
-    npt.assert_(os.path.isfile("test15.pam5"))
+        npt.assert_equal(pam.peak_dirs.shape, (10, 10, 10, 5, 3))
+        npt.assert_(os.path.isfile(pjoin(tmpdir, "test15.pam5")))
 
 
 def test_tensor_to_pam():
@@ -236,13 +223,14 @@
 
 @set_random_number_generator()
 def test_io_peaks_deprecated(rng):
-    with warnings.catch_warnings(record=True) as cw:
-        warnings.simplefilter("always", DeprecationWarning)
-        fname = "test_tt.pam5"
-        pam = generate_default_pam(rng)
-        save_peaks(fname, pam)
-        pam2 = load_peaks(fname, verbose=True)
-        npt.assert_array_equal(pam.peak_dirs, pam2.peak_dirs)
-        npt.assert_equal(len(cw), 2)
-        npt.assert_(issubclass(cw[0].category, DeprecationWarning))
-        npt.assert_(issubclass(cw[1].category, DeprecationWarning))
+    with TemporaryDirectory() as tmpdir:
+        with warnings.catch_warnings(record=True) as cw:
+            warnings.simplefilter("always", DeprecationWarning)
+            fname = pjoin(tmpdir, "test_tt.pam5")
+            pam = generate_default_pam(rng)
+            save_peaks(fname, pam)
+            pam2 = load_peaks(fname, verbose=True)
+            npt.assert_array_equal(pam.peak_dirs, pam2.peak_dirs)
+            npt.assert_equal(len(cw), 2)
+            npt.assert_(issubclass(cw[0].category, DeprecationWarning))
+            npt.assert_(issubclass(cw[1].category, DeprecationWarning))
--- dipy.orig/dipy/workflows/align.py
+++ dipy/dipy/workflows/align.py
@@ -842,7 +842,7 @@
             logging.info(f"Saving warped {owarped_file}")
             save_nifti(owarped_file, warped_moving, static_grid2world)
             logging.info(f"Saving inverse transformes static {out_inv_static}")
-            save_nifti(out_inv_static, inv_static, static_grid2world)
+            save_nifti(pjoin(out_dir, out_inv_static), inv_static, static_grid2world)
             logging.info(f"Saving Diffeomorphic map {omap_file}")
             save_nifti(omap_file, mapping_data, mapping.codomain_world2grid)
 
--- dipy.orig/dipy/workflows/tests/test_align.py
+++ dipy/dipy/workflows/tests/test_align.py
@@ -68,7 +68,7 @@
         save_tractogram(sft, f2_path, bbox_valid_check=False)
 
         slr_flow = SlrWithQbxFlow(force=True)
-        slr_flow.run(f1_path, f2_path)
+        slr_flow.run(f1_path, f2_path, out_dir=out_dir)
 
         out_path = slr_flow.last_generated_outputs["out_moved"]
 
--- dipy.orig/dipy/workflows/reconst.py
+++ dipy/dipy/workflows/reconst.py
@@ -1,6 +1,7 @@
 from ast import literal_eval
 import logging
 import os.path
+from os.path import join as pjoin
 from warnings import warn
 
 import nibabel as nib
@@ -562,6 +563,7 @@
                     fname_peaks_dir=opeaks_dir,
                     fname_peaks_values=opeaks_values,
                     fname_peaks_indices=opeaks_indices,
+                    fname_sphere=pjoin(out_dir, "sphere.txt"),
                     reshape_dirs=True,
                 )
 
@@ -748,6 +750,9 @@
                     fname_peaks_values=opeaks_values,
                     fname_peaks_indices=opeaks_indices,
                     fname_gfa=ogfa,
+                    fname_sphere=pjoin(out_dir, "sphere.txt"),
+                    fname_b=pjoin(out_dir, "B.nii.gz"),
+                    fname_qa=pjoin(out_dir, "qa.nii.gz"),
                     reshape_dirs=True,
                 )
 
@@ -969,6 +974,9 @@
                     fname_peaks_values=opeaks_values,
                     fname_peaks_indices=opeaks_indices,
                     fname_gfa=ogfa,
+                    fname_sphere=pjoin(out_dir, "sphere.txt"),
+                    fname_b=pjoin(out_dir, "B.nii.gz"),
+                    fname_qa=pjoin(out_dir, "qa.nii.gz"),
                     reshape_dirs=True,
                 )
 
@@ -1140,6 +1148,9 @@
                     fname_peaks_values=opeaks_values,
                     fname_peaks_indices=opeaks_indices,
                     fname_gfa=ogfa,
+                    fname_sphere=pjoin(out_dir, "sphere.txt"),
+                    fname_b=pjoin(out_dir, "B.nii.gz"),
+                    fname_qa=pjoin(out_dir, "qa.nii.gz"),
                     reshape_dirs=True,
                 )
 
@@ -1413,6 +1424,7 @@
                     fname_peaks_dir=opeaks_dir,
                     fname_peaks_values=opeaks_values,
                     fname_peaks_indices=opeaks_indices,
+                    fname_sphere=pjoin(out_dir, "sphere.txt"),
                     reshape_dirs=True,
                 )
 
@@ -1817,6 +1829,9 @@
                     fname_peaks_values=opeaks_values,
                     fname_peaks_indices=opeaks_indices,
                     fname_gfa=ogfa,
+                    fname_sphere=pjoin(out_dir, "sphere.txt"),
+                    fname_b=pjoin(out_dir, "B.nii.gz"),
+                    fname_qa=pjoin(out_dir, "qa.nii.gz"),
                     reshape_dirs=True,
                 )
 
--- dipy.orig/dipy/workflows/tests/test_io.py
+++ dipy/dipy/workflows/tests/test_io.py
@@ -2,6 +2,7 @@
 from inspect import getmembers, isfunction
 import logging
 import os
+from os.path import join as pjoin
 import sys
 from tempfile import TemporaryDirectory, mkstemp
 import pytest
@@ -274,7 +275,7 @@
 def test_niftis_to_pam_flow():
     pam = generate_random_pam()
     with TemporaryDirectory() as out_dir:
-        fname = "test.pam5"
+        fname = pjoin(out_dir, "test.pam5")
         save_pam(fname, pam)
 
         args = [fname, out_dir]
@@ -308,7 +309,7 @@
     df.evals[0, 0, 0] = np.array([0, 0, 0])
 
     with TemporaryDirectory() as out_dir:
-        f_mevals, f_mevecs = "evals.nii.gz", "evecs.nii.gz"
+        f_mevals, f_mevecs = pjoin(out_dir, "evals.nii.gz"), pjoin(out_dir, "evecs.nii.gz")
         save_nifti(f_mevals, df.evals, affine)
         save_nifti(f_mevecs, df.evecs, affine)
 
@@ -327,12 +328,13 @@
 def test_pam_to_niftis_flow():
     pam = generate_random_pam()
 
-    with TemporaryDirectory():
-        fname = "test.pam5"
+    with TemporaryDirectory() as out_dir:
+        fname = pjoin(out_dir, "test.pam5")
         save_pam(fname, pam)
 
         args = [
             fname,
+            out_dir
         ]
         flow = PamToNiftisFlow()
         flow.run(*args)
--- dipy.orig/dipy/workflows/tests/test_segment.py
+++ dipy/dipy/workflows/tests/test_segment.py
@@ -106,7 +106,7 @@
         npt.assert_equal(len(rec_bundle) == len(f2), True)
 
         label_flow = LabelsBundlesFlow(force=True)
-        label_flow.run(f1_path, labels)
+        label_flow.run(f1_path, labels, out_dir=out_dir)
 
         recog_bundle = label_flow.last_generated_outputs["out_bundle"]
         rec_bundle_org = load_tractogram(
--- dipy.orig/dipy/workflows/io.py
+++ dipy/dipy/workflows/io.py
@@ -2,6 +2,7 @@
 from inspect import getmembers, isfunction
 import logging
 import os
+from os.path import join as pjoin
 import sys
 import warnings
 
@@ -763,5 +764,7 @@
                 fname_peaks_indices=opeaks_indices,
                 fname_sphere=osphere,
                 fname_gfa=ogfa,
+                fname_b=pjoin(out_dir, "B.nii.gz"),
+                fname_qa=pjoin(out_dir, "qa.nii.gz"),
             )
             logging.info(msg)
--- dipy.orig/dipy/workflows/tests/test_tracking.py
+++ dipy/dipy/workflows/tests/test_tracking.py
@@ -128,7 +128,7 @@
                 message=descoteaux07_legacy_msg,
                 category=PendingDeprecationWarning,
             )
-            pf_track_pam.run(pam_path, wm_path, gm_path, csf_path, seeds_path)
+            pf_track_pam.run(pam_path, wm_path, gm_path, csf_path, seeds_path, out_dir=out_dir)
         tractogram_path = pf_track_pam.last_generated_outputs["out_tractogram"]
         assert_false(is_tractogram_empty(tractogram_path))
 
@@ -142,7 +142,7 @@
                 category=PendingDeprecationWarning,
             )
             pf_track_pam.run(
-                pam_path, wm_path, gm_path, csf_path, seeds_path, save_seeds=True
+                pam_path, wm_path, gm_path, csf_path, seeds_path, save_seeds=True, out_dir=out_dir
             )
         tractogram_path = pf_track_pam.last_generated_outputs["out_tractogram"]
         assert_true(tractogram_has_seeds(tractogram_path))
@@ -189,14 +189,14 @@
         lf_track_pam = LocalFiberTrackingPAMFlow()
         lf_track_pam._force_overwrite = True
         assert_equal(lf_track_pam.get_short_name(), "track_local")
-        lf_track_pam.run(pam_path, gfa_path, seeds_path)
+        lf_track_pam.run(pam_path, gfa_path, seeds_path, out_dir=out_dir)
         tractogram_path = lf_track_pam.last_generated_outputs["out_tractogram"]
         assert_false(is_tractogram_empty(tractogram_path))
 
         # Test tracking with binary stopping criterion
         lf_track_pam = LocalFiberTrackingPAMFlow()
         lf_track_pam._force_overwrite = True
-        lf_track_pam.run(pam_path, mask_path, seeds_path, use_binary_mask=True)
+        lf_track_pam.run(pam_path, mask_path, seeds_path, use_binary_mask=True, out_dir=out_dir)
 
         tractogram_path = lf_track_pam.last_generated_outputs["out_tractogram"]
         assert_false(is_tractogram_empty(tractogram_path))
@@ -204,7 +204,7 @@
         # Test tracking with pam with sh
         lf_track_pam = LocalFiberTrackingPAMFlow()
         lf_track_pam._force_overwrite = True
-        lf_track_pam.run(pam_path, gfa_path, seeds_path, tracking_method="eudx")
+        lf_track_pam.run(pam_path, gfa_path, seeds_path, tracking_method="eudx", out_dir=out_dir)
         tractogram_path = lf_track_pam.last_generated_outputs["out_tractogram"]
         assert_false(is_tractogram_empty(tractogram_path))
 
@@ -218,7 +218,7 @@
                 category=PendingDeprecationWarning,
             )
             lf_track_pam.run(
-                pam_path, gfa_path, seeds_path, tracking_method="deterministic"
+                pam_path, gfa_path, seeds_path, tracking_method="deterministic", out_dir=out_dir
             )
         tractogram_path = lf_track_pam.last_generated_outputs["out_tractogram"]
         assert_false(is_tractogram_empty(tractogram_path))
@@ -233,7 +233,7 @@
                 category=PendingDeprecationWarning,
             )
             lf_track_pam.run(
-                pam_path, gfa_path, seeds_path, tracking_method="probabilistic"
+                pam_path, gfa_path, seeds_path, tracking_method="probabilistic", out_dir=out_dir
             )
         tractogram_path = lf_track_pam.last_generated_outputs["out_tractogram"]
         assert_false(is_tractogram_empty(tractogram_path))
@@ -248,7 +248,7 @@
                 category=PendingDeprecationWarning,
             )
             lf_track_pam.run(
-                pam_path, gfa_path, seeds_path, tracking_method="closestpeaks"
+                pam_path, gfa_path, seeds_path, tracking_method="closestpeaks", out_dir=out_dir
             )
         tractogram_path = lf_track_pam.last_generated_outputs["out_tractogram"]
         assert_false(is_tractogram_empty(tractogram_path))
@@ -268,6 +268,7 @@
                 seeds_path,
                 tracking_method="deterministic",
                 save_seeds=True,
+                out_dir=out_dir,
             )
         tractogram_path = lf_track_pam.last_generated_outputs["out_tractogram"]
         assert_true(tractogram_has_seeds(tractogram_path))
