3D Discrete EPG Model#

class sycomore.epg.Discrete3D#

Discrete EPG in which the gradients may be specified in three dimensions.

__init__(*args, **kwargs)#

Overloaded function.

  1. __init__(self: sycomore._sycomore.epg.Discrete3D, species: sycomore._sycomore.Species, initial_magnetization: numpy.ndarray[numpy.float64] = array([0., 0., 1.]), bin_width: sycomore._sycomore.Quantity = 1 [ L^-1 ]) -> None

  2. __init__(self: sycomore._sycomore.epg.Discrete3D, species_a: sycomore._sycomore.Species, species_b: sycomore._sycomore.Species, M0_a: numpy.ndarray[numpy.float64], M0_b: numpy.ndarray[numpy.float64], k_a: sycomore._sycomore.Quantity, delta_b: sycomore._sycomore.Quantity = 0 [ T^-1 ], bin_width: sycomore._sycomore.Quantity = 1 [ L^-1 ]) -> None

  3. __init__(self: sycomore._sycomore.epg.Discrete3D, species_a: sycomore._sycomore.Species, R1_b_or_T1_b: sycomore._sycomore.Quantity, M0_a: numpy.ndarray[numpy.float64], M0_b: numpy.ndarray[numpy.float64], k_a: sycomore._sycomore.Quantity, bin_width: sycomore._sycomore.Quantity = 1 [ L^-1 ]) -> None

apply_time_interval(*args, **kwargs)#

Overloaded function.

  1. apply_time_interval(self: sycomore._sycomore.epg.Discrete3D, duration: sycomore._sycomore.Quantity, gradient: numpy.ndarray[sycomore._sycomore.Quantity] = array([0 [ L^-1 M T^-2 I^-1 ], 0 [ L^-1 M T^-2 I^-1 ],

    0 [ L^-1 M T^-2 I^-1 ]], dtype=object)) -> None

Apply a time interval, i.e. relaxation, diffusion, gradient, and off-resonance effects. States with a population lower than threshold will be removed.

  1. apply_time_interval(self: sycomore._sycomore.epg.Discrete3D, interval: sycomore._sycomore.TimeInterval) -> None

Apply a time interval, i.e. relaxation, diffusion, gradient, and off-resonance effects. States with a population lower than threshold will be removed.

property bin_width#
diffusion(self: sycomore._sycomore.epg.Discrete3D, duration: sycomore._sycomore.Quantity, gradient: numpy.ndarray[sycomore._sycomore.Quantity]) None#

Simulate diffusion during given duration with given gradient amplitude.

property elapsed#
property orders#

Orders of the model.

shift(self: sycomore._sycomore.epg.Discrete3D, duration: sycomore._sycomore.Quantity, gradient: numpy.ndarray[sycomore._sycomore.Quantity]) None#

Apply a gradient; in discrete EPG, this shifts all orders by specified value.

state(*args, **kwargs)#

Overloaded function.

  1. state(self: sycomore._sycomore.epg.Discrete3D, bin: int) -> numpy.ndarray[numpy.complex128]

Magnetization at a given state, expressed by its index

  1. state(self: sycomore._sycomore.epg.Discrete3D, order: numpy.ndarray[sycomore._sycomore.Quantity]) -> numpy.ndarray[numpy.complex128]

Access a given state of the model