Source code for pypulseq.make_trigger
# inserted for trigger support by mveldmann
from types import SimpleNamespace
from typing import Union
from pypulseq.opts import Opts
[docs]
def make_trigger(
channel: str,
delay: float = 0.0,
duration: float = 0.0,
system: Union[Opts, None] = None,
) -> SimpleNamespace:
"""
Create a trigger halt event for a synchronization with an external signal from a given channel with an optional
given delay prio to the sync and duration after the sync. Possible channel values: 'physio1','physio2'
(Siemens specific).
See also `pypulseq.Sequence.sequence.Sequence.add_block()`.
Parameters
----------
channel : str
Must be one of 'physio1' or 'physio2'.
delay : float, default=0
Delay in seconds
duration: float, default=0
Duration in seconds.
system : Opts, default=Opts()
System limits.
Returns
-------
trigger : SimpleNamespace
Trigger event.
Raises
------
ValueError
If invalid `channel` is passed. Must be one of 'physio1' or 'physio2'.
"""
if system is None:
system = Opts.default
if channel not in ['physio1', 'physio2']:
raise ValueError(f"Channel {channel} is invalid. Must be one of 'physio1' or 'physio2'.")
trigger = SimpleNamespace()
trigger.type = 'trigger'
trigger.channel = channel
trigger.delay = delay
trigger.duration = duration
if trigger.duration <= system.grad_raster_time:
trigger.duration = system.grad_raster_time
return trigger