Open cncastillo opened 3 years ago
The functions to be implemented should be: Pulseq aux functions
A basic prototype is being made in the submodule PulseDesigner
.
I think in particular I think it is very important to allow the use of
As a reminder of what we talked in an internal Koma meeting
The idea would be to have an equivalent of
seq.addBlock(rf,gx,gy,adc,delay)
but in a more Julian way
seq += [rf,gx,gy,adc,delay]
where rf::RF<:MRIEvent
, g::Matrix{Grad}<:MRIEvent
, adc::<:MRIEvent
, and delay::Delay<:MRIEvent
.
A simple example that could be helpful for this:
julia> struct MyType
a
end
julia> struct MyType2
a
end
julia> import Base.+
julia> x::MyType + ys::AbstractVector{MyType2} = MyType(x.a + sum([y.a for y in ys]))
julia> MyType(1) + [MyType2(1) for i = 1:3]
Inspired on Pulseq we need to add a submodule with common pulse sequence blocks.
General
PulseDesigner
:information_source: IMPORTANT
The main difference between these functions and the constructors is the use of the
Scanner
object. Examples: If $G_\max$ is too low it will make the block longer, Add a delay after the RF blocks to satisfy the ring-down time, etc.RF
Grad
ADC
The submodule could be the same as the one for gradient optimization.