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","'",")"]
code: def __call__(self, **kwargs):
      kwargs = modify_paths(kwargs, relative=False)
      interface = self.interface()
      # Set the inputs early to get some argument checking
      interface.inputs.trait_set(**kwargs)
      # Make a name for our node
      inputs = interface.inputs.get_hashval()
      hasher = hashlib.new("md5")
      hasher.update(pickle.dumps(inputs))
      dir_name = "{}-{}".format(
          interface.__class__.__module__.replace(".", "-"),
          interface.__class__.__name__,
      )
      job_name = hasher.hexdigest()
      node = Node(interface, name=job_name)
      node.base_dir = os.path.join(self.base_dir, dir_name)
  
      cwd = os.getcwd()
      try:
          out = node.run()
      finally:
          # node.run() changes to the node directory - if something goes
          # wrong before it cds back you would end up in strange places
          os.chdir(cwd)
      if self.callback is not None:
          self.callback(dir_name, job_name)
      return out
  
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 2 for calling the PipeFunc obj's underlying member method code with example usage: obj.__call__() and returns: out