# inserted for trigger support by mveldmann from types import SimpleNamespace from seqgen.pypulseq.opts import Opts def make_trigger( channel: str, delay: float = 0, duration: float = 0, system: Opts = Opts() ) -> SimpleNamespace: """ Create a trigger halt event for a synchronisation 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 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