diff --git a/nipype/pipeline/engine/nodes.py b/nipype/pipeline/engine/nodes.py index 59fb2e6724..20fe360504 100644 --- a/nipype/pipeline/engine/nodes.py +++ b/nipype/pipeline/engine/nodes.py @@ -293,9 +293,12 @@ def output_dir(self): if self._hierarchy: outputdir = op.join(outputdir, *self._hierarchy.split(".")) if self.parameterization: - params_str = ["{}".format(p) for p in self.parameterization] - if not str2bool(self.config["execution"]["parameterize_dirs"]): - params_str = [_parameterization_dir(p) for p in params_str] + maxlen = ( + 252 if str2bool(self.config["execution"]["parameterize_dirs"]) else 32 + ) + params_str = [ + _parameterization_dir(str(p), maxlen) for p in self.parameterization + ] outputdir = op.join(outputdir, *params_str) self._output_dir = op.realpath(op.join(outputdir, self.name)) diff --git a/nipype/pipeline/engine/utils.py b/nipype/pipeline/engine/utils.py index a1666b855a..b744849c57 100644 --- a/nipype/pipeline/engine/utils.py +++ b/nipype/pipeline/engine/utils.py @@ -51,14 +51,14 @@ logger = logging.getLogger("nipype.workflow") -def _parameterization_dir(param): +def _parameterization_dir(param, maxlen): """ Returns the directory name for the given parameterization string as follows: - - If the parameterization is longer than 32 characters, then + - If the parameterization is longer than maxlen characters, then return the SHA-1 hex digest. - Otherwise, return the parameterization unchanged. """ - if len(param) > 32: + if len(param) > maxlen: return sha1(param.encode()).hexdigest() return param