Skip to content
Snippets Groups Projects
test_sequences.jl 2.36 KiB
@testset "test_sequences.jl" begin
    
    @testset "DW-SE" begin
        @testset "Instant pulse & readout" begin
            @testset "Minimise TE" begin
                seq = DiffusionSpinEcho(TE=:min, bval=1.)
                @test length(seq) == 9
                grad_duration = TE(seq) / 2
                @test all(isapprox.(duration.(seq), [0., 0., grad_duration, 0., 0., 0., grad_duration, 0., 0.], atol=1e-6))
                @test length([iter_instant_pulses(seq)...]) == 2
                @test length([iter_instant_gradients(seq)...]) == 0.
                @test bval(seq) ≈ 1.
                @test 40. < TE(seq) < 50.
                @test TR(seq) ≈ TE(seq)
            end
            @testset "Maximise b-value" begin
                seq = DiffusionSpinEcho(TE=80., bval=:max)
                @test length(seq) == 9
                @test all(isapprox.(duration.(seq), [0., 0., 40., 0., 0., 0., 40., 0., 0.], atol=1e-4, rtol=1e-4))
                @test length([iter_instant_pulses(seq)...]) == 2
                @test length([iter_instant_gradients(seq)...]) == 0.
                @test TE(seq) ≈ 80.
                @test TR(seq) ≈ 80.
                @test 4.8 < bval(seq) < 4.9

                # can also maximise q-value
                seq2 = DiffusionSpinEcho(TE=80., qval=:max)
                @test all(isapprox.(duration.(seq), duration.(seq2), atol=1e-4, rtol=1e-4))
                @test TE(seq) ≈ TE(seq2) atol=1e-4 rtol=1e-4
                @test bval(seq) ≈ bval(seq2) atol=1e-4 rtol=1e-4
            end
            @testset "Set diffusion time Δ" begin
                seq = DiffusionSpinEcho(TE=80., Δ=70., qval=:max)
                @test all(isapprox.(duration.(seq), [0., 0., 10., 30., 0., 30., 10., 0., 0.], atol=1e-4, rtol=1e-4))
                @test Δ(seq) ≈ 70.
                @test TE(seq) ≈ 80.
                @test TR(seq) ≈ 80.
                @test 0.72 < bval(seq) < 0.73
            end
            @testset "Set gradient duration" begin
                seq = DiffusionSpinEcho(TE=80., gradient=(duration=10., ), bval=:max)
                @test all(isapprox.(duration.(seq), [0., 0., 10., 30., 0., 30., 10., 0., 0.], atol=1e-4, rtol=1e-4))
                @test Δ(seq) ≈ 70.
                @test TE(seq) ≈ 80.
                @test TR(seq) ≈ 80.
                @test 0.72 < bval(seq) < 0.73
            end
        end

    end
end