Post Acquisition Processing

Introduced in version 3.8.0

Every signal (transient) axis stores a time trace acquired during the pulse sequence. Before that trace is stored or displayed, SpecMan4EPR can run it through a chain of optional processing stages – baseline correction, Fourier transform, digital down-conversion, filtering, phase rotation, magnitude calculation and boxcar integration. The Post Acquisition Processing dialog collects the settings for all of these stages in one place; the chain itself is executed by the Acquisition Engine.

To open the dialog, double-click (or press the edit button on) the signal row of a transient axis in the Experiment Editor. The settings are stored together with the experiment and are applied, top to bottom, in the order shown below: Swap I/Q → Baseline → FFT → Filter → Notch → Mixer → Phase → Absolute → Integration.

Post Acquisition Processing dialog

Stage

Description

Independent
channels

Introduced in version 3.8.9

By default the signal channels are read as quadrature pairs – the first two together, then the next two, and so on – because most of the chain works on a complex signal. Tick this box to process every channel on its own instead.

Use it when a channel has no quadrature partner, for example a monitor or reference trace that you only want filtered. Without it such a channel is skipped by every stage that expects a pair, Filter included, and nothing says so.

With this set, Baseline, Filter, Notch and Integration apply to every channel, while the stages that need two quadratures – Swap I/Q, FFT, Mixer, Phase and Absolute – are skipped. A channel bound to Stub@Postprocessing has nothing to pair with in this mode, so it stays empty and a warning says so.

Swap I/Q

Introduced in version 3.8.9

Exchanges the two channels of every quadrature pair before anything else runs, correcting an inverted quadrature assignment – crossed receiver cables, or a mixer whose outputs are the other way round. Because it is the first stage, every later stage sees the corrected assignment. It applies to integrated (single-point) acquisitions as well as to time traces, and the Scope window in raw position still shows the untouched channels.

This replaces the per-driver SwapIQ configuration key that some digitizer drivers used to provide. The setting now belongs to the experiment rather than to the hardware, so it is stored with the experiment and applies to every digitizer.

Baseline

Subtracts a baseline that is estimated from one or two signal-free reference regions of the trace. Algorithm selects how the baseline is modelled: Zero order removes a constant offset (the mean of the reference region), First order removes a linear drift (a straight line fitted through the reference regions). Regions [pts] defines up to two reference windows (rows 1 and 2), each given by its first point and its width in points. Using two regions, one near each end of the trace, anchors a first-order baseline at both sides.

FFT

Applies a Fourier transform, converting the time-domain transient into a frequency spectrum. Zerofill is the zero-filling factor (1–4): the trace is padded with zeros before the transform to interpolate the resulting spectrum. First pnt is the index of the first point fed into the transform, used to skip the receiver dead time at the start of the trace. Window is the apodization window: it is the fraction (0–1) of the remaining trace that is actually transformed, the rest of the transform input being left at zero. Cutting the decayed, noise-dominated tail of the trace this way suppresses truncation artefacts in the spectrum. The default value 1 transforms the whole trace. The setting has the same meaning as the window width of the Scope window FFT, so both spectra can be compared directly.

Filter

Applies a digital frequency filter to the trace. Low pass [Hz] sets the low-pass cut-off (removes high-frequency noise above the cut-off), and High pass [Hz] sets the high-pass cut-off (removes slow drift and the DC component below the cut-off). A cut-off of 0 leaves that side unfiltered. The cut-offs refer to the recorded signal, since the stage runs before the Mixer.

Notch Filter

Suppresses a single narrow frequency band, typically an interference line picked up by the receiver. Frequency is the centre frequency of the notch and Q factor its quality factor, which sets how narrow the rejected band is: the larger the Q, the narrower the notch. The frequency is that of the line in the recorded signal, before any down-conversion. The stage is skipped unless both values are larger than zero.

Introduced in version 3.8.10

A single acquired channel is notched as well.

Mixer

Performs digital down-conversion (demodulation) of the trace. Frequency [Hz] is the demodulation frequency that is mixed with the signal, shifting the chosen frequency component to DC. Bandwidth [Hz] sets the bandwidth of the low-pass filter applied after mixing, which determines how much of the spectrum around the demodulation frequency is retained.

Introduced in version 3.8.9

The Mixer also produces a quadrature pair from a single acquired channel. Declare both channels in the signal statement as usual, but bind the second one to Stub@Postprocessing instead of a digitizer input (double-click it on the transient axis and pick Postprocessing). The digitizer is then asked for one channel only, and this stage synthesizes the quadrature partner from it.

Because the pair carries no quadrature until this stage has run, the FFT ahead of it is skipped for such a pair, while Filter and Notch run on the real trace. With the Mixer switched off the derived channel stays empty, so Phase and Absolute are skipped too, and a warning says so at the start of the experiment.

Introduced in version 3.8.10

Use channel 2 as reference mixes the first channel of a pair with the recorded second channel instead of an internal reference, and the Frequency is then not used. The second channel carries the reference rather than the other quadrature – a pick-off of the source, or an LO tone recorded on its own input – so the mixing follows whatever the source actually did, drift included. The reference is made analytic with a Hilbert transform and normalized to unit amplitude, the way a saturated LO port ignores the level of what drives it, so the result carries the amplitude of the first channel and the phase between the two and none of the amplitude profile of the reference path; where the reference falls below a tenth of its peak it counts as absent and the output is zero. The product of two real traces leaves an image at the sum of their frequencies, which the Bandwidth low-pass has to sit below. Both channels must be acquired: a pair whose second channel is derived has nothing recorded to mix with and keeps the internal reference, with a warning at the start of the experiment. The choice is stored beside the baseline algorithm and is .e.ppars.mixer.ref on the console.

Phase

Rotates the complex data by a constant (zero-order) phase. Phase [deg] is the rotation angle in degrees and is used to move the signal into the real (in-phase) channel. It is added to the phase cycling rotation that the Acquisition Engine applies to every trace anyway.

Absolute

Replaces the in-phase channel with the magnitude (absolute value) of the complex data, producing a phase-independent result; the quadrature channel then keeps the original real part. There are no further parameters for this stage.

Integration

Reduces the trace to a single value per trigger. Region [pts] defines the window by its first point and its width in points, and which value is taken from it is one choice among three: Use Integration sums the points inside the window,

Introduced in version 3.8.10

Peak-to-peak takes the difference between the largest and the smallest of them, and RMS their root mean square. Checking one clears the other two. This is the only stage that changes the length of the data, and it is what makes the signal axis the integrated kind: the axis type follows this choice, and its icon shows which of the three is on. The window can also be set graphically in the Scope window.

Note: the Scope window can switch between displaying the original (raw) stream and the processed stream, so the effect of these stages can be checked against the unprocessed transient.

Introduced in version 3.8.7

Every setting of this dialog is also reachable from the console as .e.ppars.<stage>.<parameter> – one node per stage of the table below, each with its own .use switch, e.g. .e.ppars.mixer.use = 1 and .e.ppars.mixer.frequency = 50e6. .e.ppars.list enumerates the stages, .e.ppars.<stage>.list the parameters of one stage, and .e.ppars.json returns the whole chain in one reply. This makes the processing chain scriptable from MATLAB, Python or a third-party client.

The processing chain configured here decides the type of the signal axis: integrated while one of the three reductions of the last stage is on, transient otherwise. The dialog is the place to change it; the axis follows. See the Experiment Axis Types page for the signal axis types and their icons.