class_docstr: Callable interface to nipype.interface objects
  
  Use this to wrap nipype.interface object and call them
  specifying their input with keyword arguments::
  
      fsl_merge = PipeFunc(fsl.Merge, base_dir='.')
      out = fsl_merge(in_files=files, dimension='t')
class_docstr_tok: ["Callable","interface","to","nipype.interface","objects","Use","this","to","wrap","nipype.interface","object","and","call","them","specifying","their","input","with","keyword","arguments",":",":","fsl_merge","=","PipeFunc","(","fsl.Merge",",","base_dir=","'",".","'",")","out","=","fsl_merge","(","in_files=files",",","dimension='t","'",")"]
docstr: Parameters
  ===========
  interface: a nipype interface class
      The interface class to wrap
  base_dir: a string
      The directory in which the computation will be
      stored
  callback: a callable
      An optional callable called each time after the function
      is called.
docstr_tok: ["Parameters","===========","interface",":","a","nipype","interface","class","The","interface","class","to","wrap","base_dir",":","a","string","The","directory","in","which","the","computation","will","be","stored","callback",":","a","callable","An","optional","callable","called","each","time","after","the","function","is","called","."]
code: def __init__(self, interface, base_dir, callback=None):
      """
  
      Parameters
      ===========
      interface: a nipype interface class
          The interface class to wrap
      base_dir: a string
          The directory in which the computation will be
          stored
      callback: a callable
          An optional callable called each time after the function
          is called.
      """
      if not (
          isinstance(interface, type)
          and issubclass(interface, BaseInterface)
      ):
          raise ValueError(
              "the interface argument should be a nipype "
              "interface class, but %s (type %s) was passed."
              % (interface, type(interface))
          )
      self.interface = interface
      base_dir = os.path.abspath(base_dir)
      if not os.path.exists(base_dir) and os.path.isdir(base_dir):
          raise ValueError("base_dir should be an existing directory")
      self.base_dir = base_dir
      doc = f"{self.interface.__doc__}\n{self.interface.help(returnhelp=True)}"
      self.__doc__ = doc
      self.callback = callback
  
imports: import os
  import hashlib
  import pickle
  import time
  import shutil
  import glob
  from ..interfaces.base import BaseInterface
  from ..pipeline.engine import Node
  from ..pipeline.engine.utils import modify_paths
label_desc: Use image node_id 1 to create a new PipeFunc object  with example: obj = PipeFunc(interface, base_dir, callback)