def __init__(self,
              band=None, #[Hz]
              ref=None,  #(dBm)
              bw=None,   #(Hz)
              shape=None,#(?)
              noise=None,#[dBm/Hz,Hz]
              gain=None, #[dB,Hz]
              gpib=20):  #GPIB address
     VI.__init__(self, ** _vi)
     self._visa = ('GPIB0::%d::INSTR' % gpib, 0)
     self._error = (False, 0, "")
     self (band, ref, bw, shape, noise, gain) # configure the instrument
 def __call__(self, * values, ** options):
     """
     band=, ref=, bw=, shape=, noise=, gain= -> signal, noise, peaks, margins, bw
     Remembers previous values of all inputs.
     """
     values = list (values) + [self[i] for i in self._inputs[len (values):]]
     for i, option in enumerate (['band', 'ref', 'bw', 'shape', 'noise', 'gain']):
         if options.has_key (option): values[i] = options.pop (option)
     ((f0, df, signal), (F0, dF, noise)), peaks, margins, bw, self._visa, self._error = VI.__call__(self,
         * (values + [self._visa, self._error]), ** options)
     return (
         (f0, df, list (signal)),
         (F0, dF, list (noise)),
         list (peaks),
         list (margins),
         bw)