Skip to content
Snippets Groups Projects
Unverified Commit 16a1c913 authored by Michiel Cottaar's avatar Michiel Cottaar
Browse files

Add edge points to RF pulse

parent 1fdc4f83
No related branches found
No related tags found
1 merge request!1Add writing to Pulseq files
Pipeline #24034 canceled
......@@ -23,24 +23,21 @@ function BuildingBlock(pulseq::PulseqBlock; version, BlockDurationRaster, Radiof
stated_duration = pulseq.duration * BlockDurationRaster * 1e3
events = []
min_duration = 0.
if !isnothing(pulseq.rf)
f(samples) = isnothing(pulseq.rf.time) ? [samples[1], samples..., samples[end]] : samples
if isnothing(pulseq.rf.time)
time = ((1:length(pulseq.rf.magnitude.samples)) .- 0.5) .* RadiofrequencyRasterTime .* 1e3
rf_dur = length(pulseq.rf.magnitude.samples) * RadiofrequencyRasterTime * 1e3
time = [0., ((1:length(pulseq.rf.magnitude.samples)) .- 0.5)..., length(pulseq.rf.magnitude.samples)] .* RadiofrequencyRasterTime .* 1e3
else
time = pulseq.rf.time.samples .* 1e3 * RadiofrequencyRasterTime
rf_dur = maximum(time)
end
push!(events, (
pulseq.rf.delay * 1e-3,
GenericPulse(
time,
pulseq.rf.magnitude.samples * pulseq.rf.amplitude * 1e-3,
rad2deg.(pulseq.rf.phase.samples .+ pulseq.rf.phase_offset .+ pulseq.rf.frequency .* time .* 2π)
f(pulseq.rf.magnitude.samples) * pulseq.rf.amplitude * 1e-3,
rad2deg.(f(pulseq.rf.phase.samples) .+ pulseq.rf.phase_offset .+ pulseq.rf.frequency .* time .* 2π)
)
))
min_duration = max(min_duration, events[end][1] + rf_dur)
end
if !isnothing(pulseq.adc)
dwell_time = pulseq.adc.dwell * 1e-6
......@@ -53,12 +50,11 @@ function BuildingBlock(pulseq::PulseqBlock; version, BlockDurationRaster, Radiof
1.
)
))
min_duration = max(min_duration, events[end][1] + duration(events[end][2]))
end
grads = [pulseq.gx, pulseq.gy, pulseq.gz]
min_duration = max(
min_duration,
maximum(e[1] + duration(e[2]) for e in events; init=0.),
maximum(vcat(_control_times.(grads, GradientRasterTime)...); init=0.)
)
......
......@@ -9,8 +9,8 @@
@test length(events(seq[1])) == 1
(index, pulse) = events(seq[1])[1]
@test start_time(seq, 1, index) 0.1
@test end_time(seq, 1, index) 0.2195
@test start_time(seq, 1, index) == 0.1
@test end_time(seq, 1, index) == 0.22
for (time, ampl, phase_check) in [
(0.09, 0., isnan),
......
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