Skip to content
Snippets Groups Projects
Verified Commit 820ff0b3 authored by Michiel Cottaar's avatar Michiel Cottaar
Browse files

Update to_concrete_block interface

parent eae86e55
No related branches found
No related tags found
No related merge requests found
...@@ -116,7 +116,7 @@ end ...@@ -116,7 +116,7 @@ end
properties(::Type{<:PulsedGradient}) = [qval, δ, gradient_strength, duration, rise_time, flat_time, slew_rate] 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 if block.orientation == :bvec
rotate = true rotate = true
qvec = [value(qval(block)), 0., 0.] qvec = [value(qval(block)), 0., 0.]
...@@ -132,7 +132,7 @@ function to_concrete_block(builder::SequenceBuilder, block::PulsedGradient) ...@@ -132,7 +132,7 @@ function to_concrete_block(builder::SequenceBuilder, block::PulsedGradient)
t_start = value(start_time(block)) t_start = value(start_time(block))
t_rise = value(rise_time(block)) t_rise = value(rise_time(block))
t_d = value(δ(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, zeros(3)),
(t_start + t_rise, qvec), (t_start + t_rise, qvec),
(t_start + t_d, qvec), (t_start + t_d, qvec),
......
...@@ -49,10 +49,10 @@ bandwidth(pulse::ConstantPulse) = 3.79098854 / duration(pulse) ...@@ -49,10 +49,10 @@ bandwidth(pulse::ConstantPulse) = 3.79098854 / duration(pulse)
properties(::Type{<:ConstantPulse}) = [amplitude, duration, phase, frequency, flip_angle, bandwidth] 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)) d = value(duration(block))
final_phase = value(phase(block)) + d * value(frequency(block)) * 360 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]), ([0., d]),
value.([amplitude(block), amplitude(block)]), value.([amplitude(block), amplitude(block)]),
value.([phase(block), final_phase]) value.([phase(block), final_phase])
......
...@@ -100,13 +100,13 @@ lobe_duration(pulse::SincPulse) = pulse.lobe_duration ...@@ -100,13 +100,13 @@ lobe_duration(pulse::SincPulse) = pulse.lobe_duration
bandwidth(pulse::SincPulse) = 1 / lobe_duration(pulse) bandwidth(pulse::SincPulse) = 1 / lobe_duration(pulse)
properties(::Type{<:SincPulse}) = [amplitude, N_left, N_right, duration, phase, frequency, flip_angle, lobe_duration, bandwidth] 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 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))) times = ((normed_times .+ value(N_left(block))) .* value(lobe_duration(block)))
amplitudes = value(amplitude(block)) .* (normalised_function.(normed_times; apodise=block.apodise)) amplitudes = value(amplitude(block)) .* (normalised_function.(normed_times; apodise=block.apodise))
phases = (value(frequency(block)) .* value(lobe_duration(block))) .* normed_times * 360 phases = (value(frequency(block)) .* value(lobe_duration(block))) .* normed_times * 360
return ConcreteBlock( return ConcreteBlock(
builder, value(duration(block)); value(duration(block));
pulse_amplitude=Shape(times, amplitudes), pulse_amplitude=Shape(times, amplitudes),
pulse_phase=Shape(times, phases), pulse_phase=Shape(times, phases),
) )
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment