mrpro.operators.models.EPG.EPGSequence

class mrpro.operators.models.EPG.EPGSequence[source]

Bases: ModuleList, EPGBlock

Sequene of EPG blocks.

A sequence as multiple blocks, such as preparation pulses, acquisition blocks and delays.

Classic MRF with a single inversion-pulse at the beginning followed by a train of RF pulses with different flip angles as described in [MA2013] can be simulated by the following sequence:

  • InversionBlock

  • FispBlock with varying flip_angles

    You can also nest EPGSequence, i.e., use it as a block in another EPGSequence. This allows to describe complex MR acquisitions with multiple repetitions of the same blocks.

References

[MA2013]

Ma, D et al.(2013) Magnetic resonance fingerprinting. Nature 495 http://dx.doi.org/10.1038/nature11971

__init__(blocks: Sequence[EPGBlock] = ()) None[source]

Initialize an EPG Sequence.

Parameters:

blocks (Sequence[EPGBlock], default: ()) – blocks such as RF, delays, acquisitions etc.

property duration: Tensor[source]

Duration of the block.

__call__(parameters: Parameters, states: Tensor | int = 20) tuple[Tensor, tuple[Tensor, ...]][source]

Apply the block.

Parameters:
  • parameters (Parameters) – Tissue parameters

  • states (Tensor | int, default: 20) – EPG configuration states. If an integer value, the equilibrium state (0, 0, 1) will be initialized with the given number of EPG configuration states. The number should be large enough to capture the signal dynamics. More states increase the accuracy of the simulation but also the computational cost.

forward(parameters: Parameters, states: Tensor) tuple[Tensor, tuple[Tensor, ...]][source]

Apply the sequence of blocks to the EPG states.

Parameters:
  • parameters (Parameters) – Tissue parameters

  • states (Tensor) – EPG configuration states.

Returns:

EPG configuration states after the sequence of blocks and the acquired signals

append(module: Module) ModuleList

Append a given module to the end of the list.

Parameters:

module (nn.Module) – module to append

extend(modules: Iterable[Module]) Self

Append modules from a Python iterable to the end of the list.

Parameters:

modules (iterable) – iterable of modules to append

insert(index: int, module: Module) None

Insert a given module before a given index in the list.

Parameters:
  • index (int) – index to insert.

  • module (nn.Module) – module to insert