==================
Sequence Optimizer
==================
The menu selection :menuselection:`Pulse Sequence --> Sequence
Optimizer...` opens the Optimization window. This window presents
optimization tools that can modify the currently loaded sequence to
perform a particular state transformation from the selected `Initial
State` to a `Final State`, which can be defined by the user in this
window. The current implementation is very simplistic, and simply
performs a fixex-step gradient descent type of optimization.
.. drops:: I1z
:width: 99%
:sequence: Standard/PulDel100msec
:class: border
:window: OptimWindow
:caption: The sequence Optimization window.
:link:
Buttons
=======
The pulse optimization tool runs in real-time so you can watch the
progress of iterative optimization while it is being calculated.
Because the algorithms are (so far) iterative, the current state is
displayed each iteration. The :guilabel:`Step` button performs a
single iteration, while the :guilabel:`Run` button lets the
optimization iterate repeatedly until it has achieved its convergence
(or its "give up") criteria. If the optimization is running, clicking
:guilabel:`Run` again stops the running optimization.
The :guilabel:`Reset` button resets the sequence or pulse to the
un-optimized initial sequence parameters. The optimization algorithm
is designed to only optimize elements of the pulse sequence which it
determines to be 'pulses', and to ignore delay periods.
Finally, the optimization result can be exported from SpinDrops by
using the :guilabel:`Dump` button. The exported file contains a
number of matrices in a format which can be copy/pasted into `Octave
`_ or Matlab.
The dump file `optim.txt` file contains the following matrices:
- x
This is the calculated optimal pulse sequence matrix. Each column
is a time-step, and each row is a different control parameter. The
first rows are pairs of {x,y} RF channels corresponding to the RF
operators in the experiment. After the RF channels come any
user-defined :ref:`Hamiltonian channels `, and finally the last row is always the time-duration
(in seconds) of the column.
- dx
This is the partial derivatives of the cost fuction with respect to
the controls `x`. When the optimized value of x is truly optimal,
these should be very very close to zero. In case of reaching the
undesired `local minimum` (as opposed to global minimum), these
values could also be very close to zero.
- xmin
This matrix contains the constraints on the lower values of x.
- xmax
This matrix contains the constraints on the upper values of x.
- xon
This is a boolean matrix indicating which values of x should be
considered in the optimization. This is currently calculated by
determining which controls in x are pulse elements.
- acqN
If the pulse sequence has an acquisition element (either a
table-sequence :ref:`Table Acq `, or
:ref:`go `, each of the acquisitions (not traces) will
also be included in the dump.