Source code for pypulseq.make_digital_output_pulse
from types import SimpleNamespace
from typing import Union
from pypulseq.opts import Opts
[docs]
def make_digital_output_pulse(
channel: str,
delay: float = 0.0,
duration: float = 4e-3,
system: Union[Opts, None] = None,
) -> SimpleNamespace:
"""
Create a digital output pulse event a.k.a. trigger. Creates an output trigger event on a given channel with optional
given delay and duration.
Parameters
----------
channel : str
Must be one of 'osc0','osc1', or 'ext1'.
delay : float, default=0
Delay in seconds (s).
duration : float, default=4e-3
Duration of trigger event in seconds (s).
system : Opts, default=Opts()
System limits.
Returns
-------
trig : SimpleNamespace
Trigger event.
Raises
------
ValueError
If `channel` is invalid. Must be one of 'osc0','osc1', or 'ext1'.
"""
if system is None:
system = Opts.default
if channel not in ['osc0', 'osc1', 'ext1']:
raise ValueError(f"Channel {channel} is invalid. Must be one of 'osc0','osc1', or 'ext1'.")
trig = SimpleNamespace()
trig.type = 'output'
trig.channel = channel
trig.delay = delay
trig.duration = duration
if trig.duration <= system.grad_raster_time:
trig.duration = system.grad_raster_time
return trig