From 3a3b96dae045a6a07a94368eb9a0dfbe47ef8a5d Mon Sep 17 00:00:00 2001
From: Michiel Cottaar <michiel.cottaar@ndcn.ox.ac.uk>
Date: Thu, 11 Apr 2024 16:58:25 +0100
Subject: [PATCH] Test edge_times calculation

---
 src/containers/base_sequences.jl | 4 ++--
 test/test_sequences.jl           | 2 ++
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/containers/base_sequences.jl b/src/containers/base_sequences.jl
index 41dcb7a..1622344 100644
--- a/src/containers/base_sequences.jl
+++ b/src/containers/base_sequences.jl
@@ -100,14 +100,14 @@ repetition_time(bs::BaseSequence) = duration(bs)
 duration(bs::BaseSequence{0}) = 0.
 duration(bs::BaseSequence) = sum(duration.(bs); init=0.)
 
-function edge_times(seq::BaseSequence)
+function edge_times(seq::BaseSequence; tol=1e-6)
     res = Float64[]
     for (index, block) in enumerate(seq)
         append!(res, edge_times(block) .+ start_time(seq, index))
     end
     unique_res = Float64[res[1]]
     for edge in res
-        if !isapprox(edge, unique_res[end], atol=1e-6)
+        if !isapprox(edge, unique_res[end], atol=tol)
             push!(unique_res, edge)
         end
     end
diff --git a/test/test_sequences.jl b/test/test_sequences.jl
index e0a8228..888f2bb 100644
--- a/test/test_sequences.jl
+++ b/test/test_sequences.jl
@@ -25,6 +25,7 @@
                 @test TR(seq) ≈ 80.
                 @test 4.8 < bval(seq) < 4.9
                 @test rise_time(seq[:gradient]) ≈ min_rise_time rtol=1e-4
+                @test all(isapprox.(edge_times(seq, tol=1e-3), [0., min_rise_time, 40. - min_rise_time, 40, 40 + min_rise_time, 80 - min_rise_time, 80.], atol=1e-4))
 
                 # can also maximise q-value
                 seq2 = DiffusionSpinEcho(TE=80., qval=:max)
@@ -41,6 +42,7 @@
                 @test 0.72 < bval(seq) < 0.73
                 @test readout_times(seq)[1] ≈ TE(seq)
                 @test rise_time(seq[:gradient]) ≈ min_rise_time rtol=1e-4
+                @test all(isapprox.(edge_times(seq), [0., min_rise_time, 10. - min_rise_time, 10., 40, 70, 70 + min_rise_time, 80 - min_rise_time, 80.], atol=1e-4))
             end
             @testset "Set gradient duration" begin
                 seq = DiffusionSpinEcho(TE=80., gradient=(duration=10., ), bval=:max)
-- 
GitLab