ADC timing and design
The symmetric ADC introduced in 5b39f491 seems to introduce some additional complexity in the design of ADC, specifically when interacting with gradients.
Using a single Cartesian GRE line as an example, in the current implementation (reflected in most sequences), the RO amplitude and duration is set based on the initial ADC duration. However, when the ADC is created, the function may decrease the "effective" ADC duration to comply with raster times. The resulting sequence will then have compressed sampling in the readout, effectively reducing the resolution and increasing the FOV without changing the gradients.
A fix for this would be to first calculate the adjusted ADC duration, and then create the rest of the sequence. However, it also seems, due to the addition of delays before and after the ADC (to ensure its duration matches the original requested), retrieving the actual ADC duration is not immediately accessible.
Furthermore, if one were to retrieve the actual ADC duration and design the gradient such that the first sample occurs after the ramp (optimally), the extra delays in the ADC object would mean its somehow outboard of the gradient, overlapping with the ramps (but not sampling), which does not make much intuitive sense.
A possible solution
- Remove the additional delays from the symmetricADC calculation, such that the duration matches that of the sampled duration. I can not think of a case where the extra delay of the ADC would be useful. In the case of legacy support for the existing readout implementation, while the ADC would line up, the FOV/resolution changes previously mentioned effectively make this useless, requiring a refactor either way.
- Refactor all instances of readout gradients to calculate the strength based on the dwell time + dk. This is a more elegant solution, however maybe is a bit more confusing from the perspective of a new user. Additionally, the gradient duration can simply be set to fully encompass the ADC, and the ADC center can be placed at the gradient TE.