tfmri.sampling.spiral_trajectory
tfmri.sampling.spiral_trajectory¶
- spiral_trajectory(base_resolution, spiral_arms, field_of_view, max_grad_ampl, min_rise_time, dwell_time, views=1, phases=None, ordering='linear', angle_range='full', tiny_number=7, readout_os=2.0, gradient_delay=0.0, larmor_const=42.577478518, vd_inner_cutoff=1.0, vd_outer_cutoff=1.0, vd_outer_density=1.0, vd_type='linear', flatten_encoding_dims=False)[source]¶
Calculate a spiral trajectory.
- Parameters
base_resolution – An int. The base resolution, or number of pixels in the readout dimension.
spiral_arms –
An int. The number of spiral arms that a fully sampled k-space should be divided into.
field_of_view – A float. The field of view, in mm.
max_grad_ampl –
A float. The maximum allowed gradient amplitude, in mT/m.
min_rise_time –
A float. The minimum allowed rise time, in us/(mT/m).
dwell_time –
A float. The digitiser’s real dwell time, in us. This does not include oversampling. The effective dwell time (with oversampling) is equal to
dwell_time * readout_os
.views –
An int. The number of radial views per phase.
phases –
An int. The number of phases for cine acquisitions. If None, this is assumed to be a non-cine acquisition with no time dimension.
ordering – A str. The ordering type. Must be one of:
{'linear', 'golden', 'tiny', 'sorted'}
.angle_range –
A str. The range of the rotation angle. Must be one of:
{'full', 'half'}
. Ifangle_range
is'full'
, the full circle/sphere is included in the range. Ifangle_range
is'half'
, only a semicircle/hemisphere is included.tiny_number –
An int. The tiny golden angle number. Only used if
ordering
is'tiny'
or'tiny_half'
. Must be >= 2. Defaults to 7.readout_os –
A float. The readout oversampling factor. Defaults to 2.0.
gradient_delay –
A float. The system’s gradient delay relative to the ADC, in us. Defaults to 0.0.
larmor_const –
A float. The Larmor constant of the imaging nucleus, in MHz/T. Defaults to 42.577478518 (the Larmor constant of the 1H nucleus).
vd_inner_cutoff – Defines the inner, high-density portion of k-space. Must be between 0.0 and 1.0, where 0.0 is the center of k-space and 1.0 is the edge. Between 0.0 and
vd_inner_cutoff
, k-space will be sampled at the Nyquist rate.vd_outer_cutoff – Defines the outer, low-density portion of k-space. Must be between 0.0 and 1.0, where 0.0 is the center of k-space and 1.0 is the edge. Between
vd_outer_cutoff
and 1.0, k-space will be sampled at a ratevd_outer_density
times the Nyquist rate.vd_outer_density – Defines the sampling density in the outer portion of k-space. Must be > 0.0. Higher means more densely sampled. Multiplies the Nyquist rate: 1.0 means sampling at the Nyquist rate, < 1.0 means undersampled and > 1.0 means oversampled.
vd_type – Defines the rate of variation of the sampling density the variable-density portion of k-space, i.e., between
vd_inner_cutoff
andvd_outer_cutoff
. Must be one of'linear'
,'quadratic'
or'hanning'
.flatten_encoding_dims – A boolean. If True, the encoding dimensions are flattened to a single dimension. Defaults to False.
- Returns
A
Tensor
of typefloat32
and shape[views, samples, 2]
ifphases
is None, or of shape[phases, views, samples, 2]
ifphases
is not None.samples
is equal tobase_resolution * readout_os
. The units are radians/voxel, ie, values are in the range[-pi, pi]
.
References
- 1
Pipe, J.G. and Zwart, N.R. (2014), Spiral trajectory design: A flexible numerical algorithm and base analytical equations. Magn. Reson. Med, 71: 278-285. https://doi.org/10.1002/mrm.24675