diff --git a/ext/MakieMRIBuilder/MakieMRIBuilder.jl b/ext/MakieMRIBuilder/MakieMRIBuilder.jl index 9805ed5f8fb5810b450e668ffe8583bbd172dff9..3122c94406fc2dad59731cc45b885f33efde1bb5 100644 --- a/ext/MakieMRIBuilder/MakieMRIBuilder.jl +++ b/ext/MakieMRIBuilder/MakieMRIBuilder.jl @@ -2,7 +2,7 @@ module MakieMRIBuilder using Makie import MakieCore import MakieCore: @recipe, theme, generic_plot_attributes!, Attributes, automatic -import MRIBuilder.Plot: SequenceDiagram, range_line, normalise, plot_sequence +import MRIBuilder.Plot: SequenceDiagram, range_full, normalise, plot_sequence import MRIBuilder: BaseSequence, BaseBuildingBlock, duration @recipe(Plot_Sequence, sequence) do scene @@ -42,7 +42,7 @@ function Makie.plot!(scene:: Plot_Sequence) current_y = 0. for label in (:ADC, :Gz, :Gy, :Gx, :G, :RFy, :RFx) line = getproperty(sequence_diagram, label) - (lower, upper) = range_line(line) + (lower, upper) = range_full(line) if !(lower ≈ upper) shift = current_y - lower Makie.text!(scene, string(label) * " "; position=(0., shift), align=(:right, :center), text_kwargs..., kwargs...) diff --git a/src/plot.jl b/src/plot.jl index cf29f61dab9cbdb70d303e2f943750cfd1d94f5a..7dd311ce2153cfe44d4ce44c8fadfb908f2751f2 100644 --- a/src/plot.jl +++ b/src/plot.jl @@ -70,6 +70,15 @@ range_event(spl::SinglePlotLine) = ( maximum(spl.event_amplitudes; init=0.), ) +function range_full(spl::SinglePlotLine) + (l1, u1) = range_line(spl) + (l2, u2) = range_event(spl) + return ( + min(l1, l2), + max(u1, u2), + ) +end + normalise(spl::SinglePlotLine, line_value, event_value) = SinglePlotLine( spl.times, iszero(line_value) ? spl.amplitudes : (spl.amplitudes ./ line_value), spl.event_times, iszero(event_value) ? spl.event_amplitudes : (spl.event_amplitudes ./ event_value) diff --git a/test/plots/finite_rf.png b/test/plots/finite_rf.png new file mode 100644 index 0000000000000000000000000000000000000000..aa7a806a7c313dcf54e34555bb816065762fa536 Binary files /dev/null and b/test/plots/finite_rf.png differ diff --git a/test/plots/grad_dwi.png b/test/plots/grad_dwi.png new file mode 100644 index 0000000000000000000000000000000000000000..06f280ee7cae266c06a2db3dfd9c6f1dc746657e Binary files /dev/null and b/test/plots/grad_dwi.png differ diff --git a/test/plots/perfect_dwi.png b/test/plots/perfect_dwi.png new file mode 100644 index 0000000000000000000000000000000000000000..001e8a5c9c13b1b56461c5c4148e6c5720a5c34e Binary files /dev/null and b/test/plots/perfect_dwi.png differ diff --git a/test/test_plot.jl b/test/test_plot.jl index 4b15d647d982dbbff94292f9050b6b452e912e25..09ff3edcc20b541d5e52c6b036afe4ddd9a2c938 100644 --- a/test/test_plot.jl +++ b/test/test_plot.jl @@ -39,9 +39,7 @@ using Gtk InstantPulse(flip_angle=120., phase=0.), ) end - f = Figure() - Axis(f[1, 1]) - plot_sequence(sequence) + f = plot_sequence(sequence) CairoMakie.save(fname, f) end @@ -50,15 +48,12 @@ using Gtk @testset "Finite gradients" begin function plot_finite_dwi(fname, single_gradient=false) - sequence = DWI(bval=2., TE=80, TR=100, orientation=[0, -1, 1], scanner=Siemens_Prisma) - f = Figure() - Axis(f[1, 1]) - plot!(sequence; single_gradient=single_gradient) + sequence = DWI(bval=2., TE=:min, TR=100, slice_thickness=2., scanner=Siemens_Prisma) + f = plot_sequence(sequence) CairoMakie.save(fname, f) end - @visualtest fn->plot_finite_dwi(fn, true) "$dir/single_grad_dwi.png" !isCI - @visualtest fn->plot_finite_dwi(fn, false) "$dir/multi_grad_dwi.png" !isCI + @visualtest fn->plot_finite_dwi(fn, true) "$dir/plots/grad_dwi.png" !isCI end