diff --git a/doc/interfaces.rst b/doc/interfaces.rst
index ff489df51a..32aabf7d0b 100644
--- a/doc/interfaces.rst
+++ b/doc/interfaces.rst
@@ -5,6 +5,11 @@
========================
Interfaces and Workflows
========================
+:Release: |version|
+:Date: |today|
+
+Previous versions: `1.3.0 `_ `1.2.3 `_
+
Workflows
---------
.. important::
diff --git a/examples/fmri_spm_auditory.py b/examples/fmri_spm_auditory.py
index 3431a2b96c..60572f0e97 100755
--- a/examples/fmri_spm_auditory.py
+++ b/examples/fmri_spm_auditory.py
@@ -316,7 +316,7 @@ def makelist(item):
Use the :class:`~nipype.pipeline.engine.workflows.Workflow` to create a
graph-based execution pipeline for first level analysis.
-Set the :py:attr:`~nipype.pipeline.engine.workflows.Workflow.base_dir`
+Set the :py:attr:`~nipype.pipeline.engine.workflows.base.EngineBase.base_dir`
option to instruct the pipeline engine to use ``spm_auditory_tutorial/workingdir``
as the filesystem location to use when running the processes and keeping their
outputs.
diff --git a/nipype/interfaces/afni/__init__.py b/nipype/interfaces/afni/__init__.py
index f795e347a3..d5f2bb4361 100644
--- a/nipype/interfaces/afni/__init__.py
+++ b/nipype/interfaces/afni/__init__.py
@@ -1,10 +1,11 @@
# -*- coding: utf-8 -*-
# emacs: -*- mode: python; py-indent-offset: 4; indent-tabs-mode: nil -*-
# vi: set ft=python sts=4 ts=4 sw=4 et:
-"""The afni module provides classes for interfacing with the `AFNI
-`_ command line tools.
+"""
+AFNI_ is a software suite for the analysis and display of anatomical and functional MRI data.
+
+.. include:: ../../../doc/links_names.txt
-Top-level namespace for afni.
"""
from .base import Info
diff --git a/nipype/interfaces/afni/base.py b/nipype/interfaces/afni/base.py
index c1b181b85d..a5285446e3 100644
--- a/nipype/interfaces/afni/base.py
+++ b/nipype/interfaces/afni/base.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
# emacs: -*- mode: python; py-indent-offset: 4; indent-tabs-mode: nil -*-
# vi: set ft=python sts=4 ts=4 sw=4 et:
-"""Provide interface to AFNI commands."""
+"""Provide a base interface to AFNI commands."""
import os
from sys import platform
from distutils import spawn
@@ -108,12 +108,17 @@ def standard_image(img_name):
class AFNICommandBase(CommandLine):
"""
- A base class to fix a linking problem in OSX and afni.
+ A base class to fix a linking problem in OSX and AFNI.
+
+ See Also
+ --------
+ `This thread
+ `__
+ about the particular environment variable that fixes this problem.
- See http://afni.nimh.nih.gov/afni/community/board/read.php?1,145346,145347#msg-145347
"""
- def _run_interface(self, runtime):
+ def _run_interface(self, runtime, correct_return_codes=(0,)):
if platform == "darwin":
runtime.environ["DYLD_FALLBACK_LIBRARY_PATH"] = "/usr/local/afni/"
return super(AFNICommandBase, self)._run_interface(runtime)
@@ -142,6 +147,7 @@ class AFNICommand(AFNICommandBase):
"""Shared options for several AFNI commands."""
input_spec = AFNICommandInputSpec
+ output_spec = AFNICommandOutputSpec
_outputtype = None
references_ = [
@@ -294,13 +300,6 @@ def _gen_fname(self, basename, cwd=None, suffix=None, change_ext=True, ext=None)
return fname
-def no_afni():
- """Check whether AFNI is not available."""
- if Info.version() is None:
- return True
- return False
-
-
class AFNIPythonCommandInputSpec(CommandLineInputSpec):
outputtype = traits.Enum(
"AFNI", list(Info.ftypes.keys()), desc="AFNI output filetype"
@@ -323,3 +322,10 @@ def cmd(self):
@property
def _cmd_prefix(self):
return "{} ".format(self.inputs.py27_path)
+
+
+def no_afni():
+ """Check whether AFNI is not available."""
+ if Info.version() is None:
+ return True
+ return False
diff --git a/nipype/pipeline/engine/base.py b/nipype/pipeline/engine/base.py
index 6735c19d49..a041fd12e0 100644
--- a/nipype/pipeline/engine/base.py
+++ b/nipype/pipeline/engine/base.py
@@ -1,11 +1,7 @@
-#!/usr/bin/env python
# -*- coding: utf-8 -*-
# emacs: -*- mode: python; py-indent-offset: 4; indent-tabs-mode: nil -*-
# vi: set ft=python sts=4 ts=4 sw=4 et:
-"""Defines functionality for pipelined execution of interfaces
-
-The `EngineBase` class implements the more general view of a task.
-"""
+"""Defines functionality for pipelined execution of interfaces."""
from copy import deepcopy
import re
import numpy as np
@@ -16,10 +12,15 @@
class EngineBase(object):
- """Defines common attributes and functions for workflows and nodes."""
+ """
+ Defines common attributes and functions for workflows and nodes.
+
+ Implements the more general view of a task.
+ """
def __init__(self, name=None, base_dir=None):
- """ Initialize base parameters of a workflow or node
+ """
+ Initialize base parameters of a workflow or node.
Parameters
----------
@@ -31,15 +32,19 @@ def __init__(self, name=None, base_dir=None):
default=None, which results in the use of mkdtemp
"""
+ self._name = None
self._hierarchy = None
self.name = name
self._id = self.name # for compatibility with node expansion using iterables
self.base_dir = base_dir
+ """Define the work directory for this instance of workflow element."""
+
self.config = deepcopy(config._sections)
@property
def name(self):
+ """Set the unique name of this workflow element."""
return self._name
@name.setter
@@ -50,6 +55,7 @@ def name(self, name):
@property
def fullname(self):
+ """Build the full name down the hierarchy."""
if self._hierarchy:
return "%s.%s" % (self._hierarchy, self.name)
return self.name
@@ -64,20 +70,22 @@ def outputs(self):
@property
def itername(self):
- """Name for expanded iterable"""
+ """Get the name of the expanded iterable."""
itername = self._id
if self._hierarchy:
itername = "%s.%s" % (self._hierarchy, self._id)
return itername
def clone(self, name):
- """Clone an EngineBase object
+ """
+ Clone an EngineBase object.
Parameters
----------
name : string (mandatory)
A clone of node or workflow must have a new name
+
"""
if name == self.name:
raise ValueError('Cloning requires a new name, "%s" is ' "in use." % name)
@@ -96,15 +104,20 @@ def _check_inputs(self, parameter):
return hasattr(self.inputs, parameter)
def __str__(self):
+ """Convert to string."""
return self.fullname
def __repr__(self):
+ """Get Python representation."""
return self.itername
def save(self, filename=None):
+ """Store this workflow element to a file."""
if filename is None:
filename = "temp.pklz"
savepkl(filename, self)
- def load(self, filename):
+ @staticmethod
+ def load(filename):
+ """Load this workflow element from a file."""
return loadpkl(filename)
diff --git a/nipype/sphinxext/apidoc/__init__.py b/nipype/sphinxext/apidoc/__init__.py
index cb46ff5b06..67cb00c59a 100644
--- a/nipype/sphinxext/apidoc/__init__.py
+++ b/nipype/sphinxext/apidoc/__init__.py
@@ -41,12 +41,6 @@ class Config(NapoleonConfig):
_config_values = {
"nipype_skip_classes": (
[
- "AFNI(Python)?Command",
- "ANTS",
- "FSLCommand",
- "FS(Command|Script)",
- "Info",
- "^SPM",
"Tester",
"InputSpec",
"OutputSpec",