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'}. If angle_range is 'full', the full circle/sphere is included in the range. If angle_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 rate vd_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 and vd_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 type float32 and shape [views, samples, 2] if phases is None, or of shape [phases, views, samples, 2] if phases is not None. samples is equal to base_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