| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- from types import SimpleNamespace
- from seqgen.pypulseq.opts import Opts
- def make_adc(
- num_samples: int,
- delay: float = 0,
- duration: float = 0,
- dwell: float = 0,
- freq_offset: float = 0,
- phase_offset: float = 0,
- system: Opts = Opts(),
- ) -> SimpleNamespace:
- """
- Create an ADC readout event.
- Parameters
- ----------
- num_samples: int
- Number of readout samples.
- system : Opts, default=Opts()
- System limits. Default is a system limits object initialised to default values.
- dwell : float, default=0
- ADC dead time in seconds (s) after sampling.
- duration : float, default=0
- Duration in seconds (s) of ADC readout event with `num_samples` number of samples.
- delay : float, default=0
- Delay in seconds (s) of ADC readout event.
- freq_offset : float, default=0
- Frequency offset of ADC readout event.
- phase_offset : float, default=0
- Phase offset of ADC readout event.
- Returns
- -------
- adc : SimpleNamespace
- ADC readout event.
- Raises
- ------
- ValueError
- If neither `dwell` nor `duration` are defined.
- """
- adc = SimpleNamespace()
- adc.type = "adc"
- adc.num_samples = num_samples
- adc.dwell = dwell
- adc.delay = delay
- adc.freq_offset = freq_offset
- adc.phase_offset = phase_offset
- adc.dead_time = system.adc_dead_time
- if (dwell == 0 and duration == 0) or (dwell > 0 and duration > 0):
- raise ValueError("Either dwell or duration must be defined")
- if duration > 0:
- adc.dwell = duration / num_samples
- if dwell > 0:
- adc.duration = dwell * num_samples
- if adc.dead_time > adc.delay:
- adc.delay = adc.dead_time
- return adc
|