class_docstr: Create output filenames that work nicely with multiple input files from
  multiple directories (processing multiple subjects with one command)
  
  Use information from input files, out_dir and out_fnames to generate
  correct outputs which can come from long lists of multiple or single
  inputs.
code: def __iter__(self):
      ins = np.array(self.inputs).T
      out = np.array(self.outputs)
      IO = np.concatenate([ins, out], axis=1)
      for i_o in IO:
          if len(i_o) == 1:
              yield str(*i_o)
          else:
              yield i_o
  
imports: import inspect
  import itertools
  import numpy
  import os
  from glob import glob
  from dipy.workflows.base import get_args_default
label_desc: Use image node_id 8 for calling the IOIterator obj's underlying member method code with example usage: obj.__iter__() without return types