Skip to content
Snippets Groups Projects
Verified Commit 02f8d2d4 authored by Michiel Cottaar's avatar Michiel Cottaar
Browse files

add make_generic on MRI sequence components

parent a984c36c
No related branches found
No related tags found
No related merge requests found
module InstantGradients module InstantGradients
import StaticArrays: SVector, SMatrix import StaticArrays: SVector, SMatrix
import ...Variables: VariableType, duration, qvec, bmat_gradient, get_free_variable, set_simple_constraints!, qval, effective_time import ...Variables: VariableType, duration, qvec, bmat_gradient, get_free_variable, set_simple_constraints!, qval, effective_time, make_generic
import ..AbstractTypes: EventComponent, GradientWaveform import ..AbstractTypes: EventComponent, GradientWaveform
""" """
...@@ -78,5 +78,6 @@ duration(::InstantGradient) = 0. ...@@ -78,5 +78,6 @@ duration(::InstantGradient) = 0.
effective_time(::InstantGradient) = 0. effective_time(::InstantGradient) = 0.
bmat_gradient(::InstantGradient, qstart=nothing) = zero(SMatrix{3, 3, Float64, 3}) bmat_gradient(::InstantGradient, qstart=nothing) = zero(SMatrix{3, 3, Float64, 3})
make_generic(ig::InstantGradient) = ig
end end
\ No newline at end of file
...@@ -2,7 +2,7 @@ module ConstantPulses ...@@ -2,7 +2,7 @@ module ConstantPulses
import JuMP: @constraint import JuMP: @constraint
import ...AbstractTypes: RFPulseComponent import ...AbstractTypes: RFPulseComponent
import ....BuildSequences: global_model import ....BuildSequences: global_model
import ....Variables: duration, amplitude, effective_time, flip_angle, phase, inverse_bandwidth, VariableType, set_simple_constraints!, frequency import ....Variables: duration, amplitude, effective_time, flip_angle, phase, inverse_bandwidth, VariableType, set_simple_constraints!, frequency, make_generic
import ..GenericPulses: GenericPulse import ..GenericPulses: GenericPulse
""" """
......
module GenericPulses module GenericPulses
import ...AbstractTypes: RFPulseComponent import ...AbstractTypes: RFPulseComponent
import ....Variables: duration, amplitude, effective_time, flip_angle import ....Variables: duration, amplitude, effective_time, flip_angle, make_generic
""" """
......
...@@ -2,7 +2,7 @@ module InstantPulses ...@@ -2,7 +2,7 @@ module InstantPulses
import JuMP: @constraint import JuMP: @constraint
import ...AbstractTypes: RFPulseComponent import ...AbstractTypes: RFPulseComponent
import ....BuildSequences: global_model import ....BuildSequences: global_model
import ....Variables: duration, amplitude, effective_time, flip_angle, phase, inverse_bandwidth, VariableType import ....Variables: duration, amplitude, effective_time, flip_angle, phase, inverse_bandwidth, VariableType, make_generic
""" """
InstantPulse(; flip_angle=nothing, phase=nothing, group=nothing) InstantPulse(; flip_angle=nothing, phase=nothing, group=nothing)
......
...@@ -2,7 +2,7 @@ module SincPulses ...@@ -2,7 +2,7 @@ module SincPulses
import JuMP: @constraint import JuMP: @constraint
import QuadGK: quadgk import QuadGK: quadgk
import ....BuildSequences: global_model import ....BuildSequences: global_model
import ....Variables: duration, amplitude, effective_time, flip_angle, phase, inverse_bandwidth, VariableType, set_simple_constraints!, frequency import ....Variables: duration, amplitude, effective_time, flip_angle, phase, inverse_bandwidth, VariableType, set_simple_constraints!, frequency, make_generic
import ...AbstractTypes: RFPulseComponent import ...AbstractTypes: RFPulseComponent
import ..GenericPulses: GenericPulse import ..GenericPulses: GenericPulse
......
module ADCs module ADCs
import JuMP: @constraint, value import JuMP: @constraint, value
import ...Variables: variables, dwell_time, duration, effective_time, get_free_variable, VariableType, nsamples, resolution, oversample import ...Variables: variables, dwell_time, duration, effective_time, get_free_variable, VariableType, nsamples, resolution, oversample, make_generic
import ...BuildingBlocks: BuildingBlock, apply_simple_constraint!, set_simple_constraints!, fixed, make_generic import ...BuildingBlocks: BuildingBlock, apply_simple_constraint!, set_simple_constraints!, fixed, make_generic
import ...BuildSequences: global_model import ...BuildSequences: global_model
......
module InstantReadouts module InstantReadouts
import ...AbstractTypes: ReadoutComponent import ...AbstractTypes: ReadoutComponent
import ...Variables: variables, duration, effective_time import ...Variables: variables, duration, effective_time, make_generic
import ..ADCs: ADC import ..ADCs: ADC
""" """
......
...@@ -252,4 +252,17 @@ apply_simple_constraint!(variable, value::VariableType) = @constraint global_mod ...@@ -252,4 +252,17 @@ apply_simple_constraint!(variable, value::VariableType) = @constraint global_mod
apply_simple_constraint!(variable::AbstractVector, value::AbstractVector) = [apply_simple_constraint!(v1, v2) for (v1, v2) in zip(variable, value)] apply_simple_constraint!(variable::AbstractVector, value::AbstractVector) = [apply_simple_constraint!(v1, v2) for (v1, v2) in zip(variable, value)]
apply_simple_constraint!(variable::Number, value::Number) = @assert variable value "Variable set to multiple incompatible values." apply_simple_constraint!(variable::Number, value::Number) = @assert variable value "Variable set to multiple incompatible values."
"""
make_generic(sequence/building_block/component)
Returns a generic version of the `BaseSequence`, `BaseBuildingBlock`, or `BaseComponent`
- Sequences are all flattened and returned as a single `Sequence` containing only `BuildingBlock` objects.
- Any `BaseBuildingBlock` is converted into a `BuildingBlock`.
- Pulses are replaced with `GenericPulse` (except for instant pulses).
- Instant readouts are replaced with `ADC`.
"""
function make_generic end
end end
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment