You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
One main feature from pulseq that I personally use a lot at the scanner is the ability to install sequence files directly onto the host computer. In MATLAB pulseq this can be done with seq.install('siemens'), for example. I implemented a script to do this with pypulseq a while ago, but wasn't really happy with how Siemens-focused this code is. I made a llittle draft of how I thought we could be doing this in pypulseq in a bit more modular way: https://gist.github.com/FrankZijlstra/4049470aaaa7698d952c019e036796e7
The base ScannerDefinition class is the template for all seq.install() actions: We need to be able to check if the scanner is available (connected to the right network, etc.), and if so, be able to install a sequence file on it. Pypulseq would keep track of available scanner definitions (e.g. SiemensDefinition implements the Siemens-specific code that is available in MATLAB pulseq), but users would also be able to use pp.register_scanner to provide their own implementation (though ideally pypulseq would provide implementations for the cases where the seq.install workflow would be possible).
A scanner has a name, and optionally groups it belongs to, which can be used as the target for seq.install(target). E.g. all Siemens definitions will be in a 'siemens' group, so if I'm at a Siemens scanner, but don't know which one, seq.install('siemens') would figure it out (more or less the behaviour of MATLAB pulseq). One feature that I do think is missing here is the option to bypass detecting the scanner, when I know for certain that everything works and I don't need to ping the scanner every time, maybe seq.install('siemens_nx', fast=True)?.
Does this make sense? I'm also curious if someone else has experience with pulseq on vendors other than Siemens, whether a similar seq.install workflow is even possible and could be implemented within this framework?
The text was updated successfully, but these errors were encountered:
One main feature from pulseq that I personally use a lot at the scanner is the ability to install sequence files directly onto the host computer. In MATLAB pulseq this can be done with
seq.install('siemens')
, for example. I implemented a script to do this with pypulseq a while ago, but wasn't really happy with how Siemens-focused this code is. I made a llittle draft of how I thought we could be doing this in pypulseq in a bit more modular way: https://gist.github.com/FrankZijlstra/4049470aaaa7698d952c019e036796e7The base
ScannerDefinition
class is the template for allseq.install()
actions: We need to be able to check if the scanner is available (connected to the right network, etc.), and if so, be able to install a sequence file on it. Pypulseq would keep track of available scanner definitions (e.g.SiemensDefinition
implements the Siemens-specific code that is available in MATLAB pulseq), but users would also be able to usepp.register_scanner
to provide their own implementation (though ideally pypulseq would provide implementations for the cases where theseq.install
workflow would be possible).A scanner has a name, and optionally groups it belongs to, which can be used as the target for
seq.install(target)
. E.g. all Siemens definitions will be in a 'siemens' group, so if I'm at a Siemens scanner, but don't know which one,seq.install('siemens')
would figure it out (more or less the behaviour of MATLAB pulseq). One feature that I do think is missing here is the option to bypass detecting the scanner, when I know for certain that everything works and I don't need to ping the scanner every time, maybeseq.install('siemens_nx', fast=True)
?.Does this make sense? I'm also curious if someone else has experience with pulseq on vendors other than Siemens, whether a similar
seq.install
workflow is even possible and could be implemented within this framework?The text was updated successfully, but these errors were encountered: