def complex_databoxes(ds, script='<STR_LIT>', escript=None, **kwargs):
datas  = []<EOL>labels = []<EOL>if escript is None: errors = None<EOL>else:             errors = []<EOL>for d in ds:<EOL><INDENT>datas.append(d(script))<EOL>labels.append(_os.path.split(d.path)[-<NUM_LIT:1>])<EOL>if not escript is None: errors.append(d(escript))<EOL><DEDENT>complex_data(datas, errors, label=labels, **kwargs)<EOL>if "<STR_LIT>" in kwargs and not kwargs["<STR_LIT>"]: return<EOL>_pylab.ion()<EOL>_pylab.draw()<EOL>_pylab.show()<EOL>return ds<EOL>
Uses databoxes and specified script to generate data and send to 
spinmob.plot.complex_data()


Parameters
----------
ds            
    List of databoxes
script='d[1]+1j*d[2]' 
    Complex-valued script for data array.
escript=None      
    Complex-valued script for error bars

See spinmob.plot.complex.data() for additional optional keyword arguments.
See spinmob.data.databox.execute_script() for more information about scripts.