From e3d647d6f0c61ba0019581644159fea0af2e3e36 Mon Sep 17 00:00:00 2001
From: Michiel Cottaar <MichielCottaar@protonmail.com>
Date: Fri, 2 Aug 2024 10:29:48 +0100
Subject: [PATCH] Minimise readout duration by default

---
 src/parts/epi_readouts.jl | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/parts/epi_readouts.jl b/src/parts/epi_readouts.jl
index ed89c70..0757d2e 100644
--- a/src/parts/epi_readouts.jl
+++ b/src/parts/epi_readouts.jl
@@ -2,7 +2,7 @@ module EPIReadouts
 import ...Containers: BaseSequence, get_index_single_TR
 import ..Trapezoids: Trapezoid, opposite_kspace_lines, LineReadout
 import ...Components: ADC
-import ...Variables: get_free_variable, VariableType, set_simple_constraints!, get_readout, apply_simple_constraint!, variables, @defvar
+import ...Variables: get_free_variable, VariableType, set_simple_constraints!, get_readout, apply_simple_constraint!, variables, @defvar, add_cost_function!
 import ...Pathways: PathwayWalker, update_walker_till_time!, walk_pathway!
 
 """
@@ -58,6 +58,12 @@ function EPIReadout(; resolution::AbstractVector{<:Integer}, recenter=false, gro
         res.blips[shift] = Trapezoid(qvec=[0., shift * res.ky_step, 0.], group=group)
     end
     set_simple_constraints!(res, vars)
+    add_cost_function!(sum(variables.duration.([
+        res.start_gradient,
+        res.positive_line,
+        res.negative_line,
+        values(res.blips)...,
+    ])))
     return res
 end
 
-- 
GitLab