Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PulseDesigner submodule #4

Open
1 of 12 tasks
cncastillo opened this issue Jun 1, 2021 · 2 comments
Open
1 of 12 tasks

PulseDesigner submodule #4

cncastillo opened this issue Jun 1, 2021 · 2 comments
Assignees
Labels

Comments

@cncastillo
Copy link
Member

cncastillo commented Jun 1, 2021

Inspired on Pulseq we need to add a submodule with common pulse sequence blocks.

General

PulseDesigner

ℹ️ 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

  • makeBlockPulse (Hard pulse, partially implemented)
  • makeSincPulse
  • makeGaussPulse (for fat-sat)
  • makeSLRPulse
  • makeArbitraryRf

Grad

  • makeTrapezoid
  • makeArbitraryGrad
  • makeExtendedTrapezoid
  • makeSpiral?

ADC

  • makeAdc

The submodule could be the same as the one for gradient optimization.

@cncastillo cncastillo added core enhancement New feature or request labels Jun 1, 2021
@cncastillo
Copy link
Member Author

cncastillo commented Mar 29, 2022

The functions to be implemented should be: Pulseq aux functions

A basic prototype is being made in the submodule PulseDesigner.

@beorostica beorostica changed the title Pulseq submodule PulseDesigner submodule May 25, 2023
@cncastillo
Copy link
Member Author

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
image

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]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants