From 955ccb5f59b8fa90c76f9a160d4a50458f1885a0 Mon Sep 17 00:00:00 2001
From: Michiel Cottaar <michiel.cottaar@ndcn.ox.ac.uk>
Date: Mon, 25 Mar 2024 17:14:11 +0000
Subject: [PATCH] Convert InstantGradient1D to InstantGradient3D

---
 src/components/components.jl | 2 +-
 src/containers/linearise.jl  | 7 +++++--
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/components/components.jl b/src/components/components.jl
index 37cbba6..8b4d16f 100644
--- a/src/components/components.jl
+++ b/src/components/components.jl
@@ -7,7 +7,7 @@ include("readouts/readouts.jl")
 
 import .AbstractTypes: BaseComponent, GradientWaveform, EventComponent, RFPulseComponent, ReadoutComponent, split_timestep
 import .GradientWaveforms: ConstantGradient, ChangingGradient, NoGradient, split_gradient
-import .InstantGradients: InstantGradient, InstantGradient3D
+import .InstantGradients: InstantGradient, InstantGradient3D, InstantGradient1D
 import .Pulses: GenericPulse, InstantPulse, SincPulse, ConstantPulse
 import .Readouts: ADC, SingleReadout
 
diff --git a/src/containers/linearise.jl b/src/containers/linearise.jl
index 5af0151..0d2e229 100644
--- a/src/containers/linearise.jl
+++ b/src/containers/linearise.jl
@@ -1,7 +1,7 @@
 module Linearise
 import StaticArrays: SVector
-import ...Components: GradientWaveform, split_timestep, InstantPulse, InstantGradient3D
-import ...Variables: amplitude, phase, gradient_strength3, duration
+import ...Components: GradientWaveform, split_timestep, InstantPulse, InstantGradient3D, InstantGradient1D
+import ...Variables: amplitude, phase, gradient_strength3, duration, qval
 import ..Abstract: edge_times, start_time, end_time, ContainerBlock, iter_instant_gradients, iter_instant_pulses
 import ..BaseSequences: BaseSequence, Sequence
 import ..BuildingBlocks: BaseBuildingBlock
@@ -181,6 +181,9 @@ function LinearSequence(container::BaseSequence, times::AbstractVector{<:Number}
                 if !(tstart <= real_time < tfinal)
                     continue
                 end
+                if pulse isa InstantGradient1D
+                    pulse = InstantGradient3D(qval(pulse) .* pulse.orientation, pulse.group)
+                end
                 index = findmin(t -> abs(t - real_time), times)[2] 
                 to_store[index] = pulse
             end
-- 
GitLab