diff --git a/src/gradients/pulsed_gradients.jl b/src/gradients/pulsed_gradients.jl index c73712c76016acefebf9f1e0b11f044543ae51ca..08f7f8114af396a29c6b64a9996226d29beccc52 100644 --- a/src/gradients/pulsed_gradients.jl +++ b/src/gradients/pulsed_gradients.jl @@ -116,7 +116,7 @@ end properties(::Type{<:PulsedGradient}) = [qval, δ, gradient_strength, duration, rise_time, flat_time, slew_rate] -function to_concrete_block(builder::SequenceBuilder, block::PulsedGradient) +function to_concrete_block(block::PulsedGradient) if block.orientation == :bvec rotate = true qvec = [value(qval(block)), 0., 0.] @@ -132,7 +132,7 @@ function to_concrete_block(builder::SequenceBuilder, block::PulsedGradient) t_start = value(start_time(block)) t_rise = value(rise_time(block)) t_d = value(δ(block)) - return ConcreteBlock(builder, t_start + t_d + t_rise, gradients=[ + return ConcreteBlock(t_start + t_d + t_rise, gradients=[ (t_start, zeros(3)), (t_start + t_rise, qvec), (t_start + t_d, qvec), diff --git a/src/pulses/constant_pulses.jl b/src/pulses/constant_pulses.jl index e0e947cb334987eb8a71bbd27514f381f24d2de0..1468e45f5d008740f8b50a94cd166f19a6020a35 100644 --- a/src/pulses/constant_pulses.jl +++ b/src/pulses/constant_pulses.jl @@ -49,10 +49,10 @@ bandwidth(pulse::ConstantPulse) = 3.79098854 / duration(pulse) properties(::Type{<:ConstantPulse}) = [amplitude, duration, phase, frequency, flip_angle, bandwidth] -function to_concrete_block(builder::SequenceBuilder, block::ConstantPulse) +function to_concrete_block(block::ConstantPulse) d = value(duration(block)) final_phase = value(phase(block)) + d * value(frequency(block)) * 360 - return ConcreteBlock(builder, value(duration(block)), pulse=[ + return ConcreteBlock(value(duration(block)), pulse=[ ([0., d]), value.([amplitude(block), amplitude(block)]), value.([phase(block), final_phase]) diff --git a/src/pulses/sinc_pulses.jl b/src/pulses/sinc_pulses.jl index 3f2062ad0987a42238223f28422c2792a5d5e474..dcdce060641a358135f0b5e5dee31c3de940535d 100644 --- a/src/pulses/sinc_pulses.jl +++ b/src/pulses/sinc_pulses.jl @@ -100,13 +100,13 @@ lobe_duration(pulse::SincPulse) = pulse.lobe_duration bandwidth(pulse::SincPulse) = 1 / lobe_duration(pulse) properties(::Type{<:SincPulse}) = [amplitude, N_left, N_right, duration, phase, frequency, flip_angle, lobe_duration, bandwidth] -function to_concrete_block(builder::SequenceBuilder, block::SincPulse) +function to_concrete_block(block::SincPulse) normed_times = -value(N_left(block)):0.1:value(N_right(block)) + 1e-5 times = ((normed_times .+ value(N_left(block))) .* value(lobe_duration(block))) amplitudes = value(amplitude(block)) .* (normalised_function.(normed_times; apodise=block.apodise)) phases = (value(frequency(block)) .* value(lobe_duration(block))) .* normed_times * 360 return ConcreteBlock( - builder, value(duration(block)); + value(duration(block)); pulse_amplitude=Shape(times, amplitudes), pulse_phase=Shape(times, phases), )