From 820ff0b33d12021e69492c9f61582f57e4b5dfed Mon Sep 17 00:00:00 2001 From: Michiel Cottaar <michiel.cottaar@ndcn.ox.ac.uk> Date: Fri, 26 Jan 2024 14:30:09 +0000 Subject: [PATCH] Update to_concrete_block interface --- src/gradients/pulsed_gradients.jl | 4 ++-- src/pulses/constant_pulses.jl | 4 ++-- src/pulses/sinc_pulses.jl | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/gradients/pulsed_gradients.jl b/src/gradients/pulsed_gradients.jl index c73712c..08f7f81 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 e0e947c..1468e45 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 3f2062a..dcdce06 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), ) -- GitLab