Add NMToolPulse, a synthetic waveform generator tool that writes PG_ NMData arrays to a toolfolder.
A tool instance manages a container of NMPulse objects (analogous to NMStatWinContainer).
Each NMPulse defines one waveform component: shape (square, ramp+, ramp-, exp, alpha),
amplitude, onset, and epoch targeting. Multiple pulses targeting the same epoch are summed
into a single output array.
Key features:
- NMPulse: epoch targeting (specific index or "all"), stride (delta_epoch),
per-occurrence parameter variation (delta_onset, delta_amp, etc.) and noise (stdv_*)
- NMPulseContainer: ordered container with .new(), iteration, dict round-trip
- NMToolPulseConfig: waveform-level settings (n_points, xstart, xdelta)
- Output: PG_<epoch_name> arrays in a "Pulse_*" toolfolder (no shape name in folder)
- Pure math functions added to nm_math.py: pulse_square, pulse_ramp, pulse_exp, pulse_alpha
Intended for future DAC waveform acquisition; config is fully JSON/TOML-serializable.
Add NMToolPulse, a synthetic waveform generator tool that writes PG_ NMData arrays to a toolfolder.
A tool instance manages a container of NMPulse objects (analogous to NMStatWinContainer).
Each NMPulse defines one waveform component: shape (square, ramp+, ramp-, exp, alpha),
amplitude, onset, and epoch targeting. Multiple pulses targeting the same epoch are summed
into a single output array.
Key features:
per-occurrence parameter variation (delta_onset, delta_amp, etc.) and noise (stdv_*)
Intended for future DAC waveform acquisition; config is fully JSON/TOML-serializable.