Detector design is performed with the ‘detector_opt’ program, which creates user-designed detectors (with computer aided optimization). One begins by calling the program, with the ‘rates’ variable created by calc_rates.
detector_opt(rates);
Optionally, one may specify the 2D (and 3D) projections desired, by providing an additional argument, ‘par’, with the same format used for drawMultiSpace.
Once initialized, ‘detector_opt” creates the windows shown in Figure 1 and Figure 2 (if 3D projections are requested in the ‘par’ variable, then a third window appears). The spaces window (Figure 1) has a number of components. First are the 2D projections of the full space. These plots are interactive and are used for placing the detection vectors, r . By clicking in one of these plots, one adjusts the position of the current detection vector in the two dimensions corresponding to that plot (note a detection vector is not fully defined until a colored marker for that detection vector appears in every plot). Two buttons exist, ‘Add r’ and ‘Remove r’, which add a new detection vector, or remove the current detection vector. A drop-down menu allows one to select which detection vector is currently active. When the check box labeled ‘lock to tc’ is selected, a click on any of the plots moves the current detection vector to a position in the space corresponding to relaxation resulting from a mono-exponential correlation function (in other words, a point on the colored line- which allows one to define the detection vector’s position in all projections simultaneously) When the check box labeled ‘Separ. Trans. & Long.’ is selected, detection vectors will be forced to only have non-zero elements in either the transverse relaxation rate constants (R1ρ, R2), or the longitudinal rate constants (R1, NOE), effectively separating the fits of the transverse and longitudinal relaxation. A field, initially labeled ‘Input r’ can be used to load a matrix containing detection vectors into the ‘detector_opt’ program. The columns of the matrix are detection vectors. One may also input the output of the ‘detector_opt’ program, which is a structure, containing the detection vector matrix.
Figure 1. DIFRATE spaces window at initialization.
In the sensitivity window (Figure 2), two plots are shown. The top plot shows the normalized sensitivity of the experimental rate constants (normalized by cζ). Once detectors are defined, then it will also show the fit quality of each rate constant as scatter points. The bottom plot shows the sensitivity of the resulting detectors (ρn(z)). A button, ‘Optimize’, optimizes detector placement. Strictly speaking, this will run the MATLAB ‘lsqnonlin’ function to try to minimize two target functions: the first to minimize detector overlap, and the second to eliminate negative detector sensitivity (see pdf version of manual). It will not attempt to optimize fits of the experimental data, or narrowness of the space (detectors may be placed in such a way that they surround a large region outside the allowed space- in principle the former target function should target narrowness of space indirectly, but this is not always efficient). Also, note that ‘lsqnonlin’ finds local minima, so poor initial detector placement will likely not lead to well-optimized detectors. A drop-down menu allows the user to select the type of normalization used for the detectors. Options are normalizing all detectors to an integral of 1 (‘Norm. to Integral), and normalizing all detectors to the same maximum (see publication). A check box labeled ‘Include S2’ calculates an additional vector from a measured order parameter. A field, labeled ‘output’ can be used to output the detection vectors to the main workspace after optimization is complete (output is then used in the fit_data function).
Figure 2. DIFRATE sensitivity window at initialization.