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_rangeis'full', the full circle/sphere is included in the range. Ifangle_rangeis'half', only a semicircle/hemisphere is included.tiny_number –
An int. The tiny golden angle number. Only used if
orderingis'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_cutoffand 1.0, k-space will be sampled at a ratevd_outer_densitytimes 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_cutoffandvd_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
Tensorof typefloat32and shape[views, samples, 2]ifphasesis None, or of shape[phases, views, samples, 2]ifphasesis not None.samplesis 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