From fc17e89cc3872e0643c261e9c2497c52a4d247e7 Mon Sep 17 00:00:00 2001 From: Tom Close Date: Tue, 26 Jul 2016 15:56:51 +1000 Subject: [PATCH 1/4] added 'tax' switch to ResponseSD interface _cmd to match latest specification of dwi2response --- nipype/interfaces/mrtrix3/preprocess.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nipype/interfaces/mrtrix3/preprocess.py b/nipype/interfaces/mrtrix3/preprocess.py index e52c84071d..78efa182fa 100644 --- a/nipype/interfaces/mrtrix3/preprocess.py +++ b/nipype/interfaces/mrtrix3/preprocess.py @@ -101,7 +101,7 @@ class ResponseSD(MRTrix3Base): >>> resp.run() # doctest: +SKIP """ - _cmd = 'dwi2response' + _cmd = 'dwi2response tax' input_spec = ResponseSDInputSpec output_spec = ResponseSDOutputSpec From 8dcc0f4a7b8bf8441b483170e5cad4ac37136758 Mon Sep 17 00:00:00 2001 From: Tom Close Date: Tue, 26 Jul 2016 16:27:23 +1000 Subject: [PATCH 2/4] edited ResponseSD command line to reflex 'tax' switch --- nipype/interfaces/mrtrix3/preprocess.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nipype/interfaces/mrtrix3/preprocess.py b/nipype/interfaces/mrtrix3/preprocess.py index 78efa182fa..acc9336d0d 100644 --- a/nipype/interfaces/mrtrix3/preprocess.py +++ b/nipype/interfaces/mrtrix3/preprocess.py @@ -97,7 +97,7 @@ class ResponseSD(MRTrix3Base): >>> resp.inputs.in_mask = 'mask.nii.gz' >>> resp.inputs.grad_fsl = ('bvecs', 'bvals') >>> resp.cmdline # doctest: +ELLIPSIS - 'dwi2response -fslgrad bvecs bvals -mask mask.nii.gz dwi.mif response.txt' + 'dwi2response tax -fslgrad bvecs bvals -mask mask.nii.gz dwi.mif response.txt' >>> resp.run() # doctest: +SKIP """ From 22df5bd2567106fb9ba3f13efd40fbf2b53a1096 Mon Sep 17 00:00:00 2001 From: Tom Close Date: Wed, 21 Sep 2016 14:04:45 +1000 Subject: [PATCH 3/4] wrapped error messages within str calls to avoid unicode errors --- nipype/interfaces/base.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/nipype/interfaces/base.py b/nipype/interfaces/base.py index 00482e9e6b..fb5e97c089 100644 --- a/nipype/interfaces/base.py +++ b/nipype/interfaces/base.py @@ -1443,7 +1443,7 @@ def _process(drain=0): time.sleep(interval) stdout, stderr = proc.communicate() stdout = stdout.decode(default_encoding) - stderr = stderr.decode(default_encoding) + stderr = str(stderr.decode(default_encoding)) result['stdout'] = stdout.split('\n') result['stderr'] = stderr.split('\n') result['merged'] = '' @@ -1612,8 +1612,8 @@ def cmdline(self): def raise_exception(self, runtime): message = "Command:\n" + runtime.cmdline + "\n" - message += "Standard output:\n" + runtime.stdout + "\n" - message += "Standard error:\n" + runtime.stderr + "\n" + message += "Standard output:\n" + str(runtime.stdout) + "\n" + message += "Standard error:\n" + str(runtime.stderr) + "\n" message += "Return code: " + str(runtime.returncode) raise RuntimeError(message) From d3053accadd06fb30a698c124b34035c02fdf401 Mon Sep 17 00:00:00 2001 From: Tom Close Date: Wed, 21 Sep 2016 14:25:14 +1000 Subject: [PATCH 4/4] ignore errors on unicode decoding --- nipype/interfaces/base.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/nipype/interfaces/base.py b/nipype/interfaces/base.py index 29050acff7..be0bad3a6f 100644 --- a/nipype/interfaces/base.py +++ b/nipype/interfaces/base.py @@ -1243,7 +1243,7 @@ def read(self, drain=0): def _read(self, drain): "Read from the file descriptor" fd = self.fileno() - buf = os.read(fd, 4096).decode(self.default_encoding) + buf = os.read(fd, 4096).decode(self.default_encoding, errors='backslashreplace') if not buf and not self._buf: return None if '\n' not in buf: @@ -1507,8 +1507,8 @@ def _process(drain=0): proc.poll() time.sleep(interval) stdout, stderr = proc.communicate() - stdout = stdout.decode(default_encoding) - stderr = str(stderr.decode(default_encoding)) + stdout = stdout.decode(default_encoding, errors='backslashreplace') + stderr = stderr.decode(default_encoding, errors='backslashreplace') result['stdout'] = stdout.split('\n') result['stderr'] = stderr.split('\n') result['merged'] = '' @@ -1522,8 +1522,8 @@ def _process(drain=0): ret_code = proc.wait() stderr.flush() stdout.flush() - result['stdout'] = [line.decode(default_encoding).strip() for line in open(outfile, 'rb').readlines()] - result['stderr'] = [line.decode(default_encoding).strip() for line in open(errfile, 'rb').readlines()] + result['stdout'] = [line.decode(default_encoding, errors='backslashreplace').strip() for line in open(outfile, 'rb').readlines()] + result['stderr'] = [line.decode(default_encoding, errors='backslashreplace').strip() for line in open(errfile, 'rb').readlines()] result['merged'] = '' if output == 'none': if runtime_profile: