Sequences

A Sequence is an abstract description of magnetic fields being applied during an experiment, as well as the used acquisition parameters. It is the data acquisition (DAQ) Device responsibility to produce and acquire the necessary signals described in a Sequence.

MPIMeasurements.jl contains an implementation of a DAQ based on the RedPitayaDAQServer project. This, together with the MPI data format (MDF), motivated the structure of a Sequence. However, any DAQ capable of producing the following signals could be used instead. A DAQ device needs to map the channel and components mentioned in a Sequence, into its own representation.

A Sequence contains a general description of itself, acquisition parameters and a list of magnetic fields. Sequences are constructed from a Scanners configuration directory as follows:

julia> sequence = Sequence(scanner, "<sequence X name>")

General Settings

The general section contains a description string for the sequence, as well as the target scanner name and lastly the base frequency from which the other magnetic field are derived.

[General]
description = "<Sequence Description>"
targetScanner = "<ScannerName>"
baseFrequency = "125MHz"

Acquisition Settings

The acquisition settings list which receive channels of a Scanner should be acquired during a measurement and with which sampling rate. Furthermore, it contains a description of the length of a measurement or rather how much samples should be acquired and if they should be averaged. This section is related to the acquisition parameters in an MDF file.

[Acquisition]
channels = ["rx1", "rx2"]
bandwidth = "<XX>Hz"
numPeriodsPerFrame = 1
numFrames = 1
numAverages = 1

Magnetic Fields

The last section of a Sequence is the description of the desired magnetic fields. A Sequence can contain any number of magnetic fields, while each magnetic field in turn can contain any number of transmit channel (TxChannel).

TxChannel can be grouped into electrical or mechanical channel. The former can be further divided into periodic and into acyclic electrical channel, while the latter can be divided into mechanical translation and mechanical rotation channel.

Next to these TxChannel, a magnetic field also contains parameters if its channel should be controlled, decoupled or should feature ramping of its signals.

[Fields.df] # Drive Field 
control = true

Periodic Electrical Channel

A periodic electrical channel is a TxChannel, that contains any number of electrical periodic functions or components. Each component is described by a divider referencing the base frequency, as well as an amplitude, phase and waveform. These components are modeled after the drive field parameters of the MDF.

[Fields.df.dfx] # X Channel
type = "PeriodicElectricalChannel"
offset = "0.0mT"

[Fields.df.dfx.c1] # Sine Wave
type = "PeriodicElectricalComponent"
divider = 4864
amplitude = ["0.0025T"]
phase = ["0.0rad"]
waveform = "sine"

By default periodic electrical channel are interpreted as drive fields and in particular count towards the length of a drive field cycle.

Acyclic Electrical Channel

An acyclic electrical channel describes changing non-periodic electrical signals. These can be used to describe multi-patch sequences as they can provide descriptions for changing gradient and offset signals during a frame.

[Fields.ff] # Focus Field
control = false

[Fields.ff.patches]
type = "ContinuousElectricalChannel"
dividerSteps = 364800
divider = 31008000
amplitude = "3.8A"
offset = "10.0A"
phase = "3.14rad"
waveform = "triangle"

The above example shows an acylic electrical channel with a 4-Hz triangular waveform sampled uniformly at 85 points.

Instead of sampling pre-defined analytical functions, it is also possible to directly state a series of values.