synapse-app-sdk
C++ SDK for Synapse Apps
Loading...
Searching...
No Matches
base_spike_detector.hpp
1#pragma once
2
3#include <cstdint>
4#include <vector>
5
6namespace synapse {
7
11struct SpikeEvent {
12 uint64_t timestamp; // Timestamp when the spike occurred
13 uint32_t channel_id; // Channel ID where the spike was detected
14 std::vector<float> waveform; // Waveform samples around the spike
15};
16
23public:
24 virtual ~BaseSpikeDetector() = default;
25
34 virtual SpikeEvent *detect(const float sample, const uint64_t frame_timestamp,
35 const uint32_t channel_id) = 0;
36
40 virtual void reset() = 0;
41};
42
46template <typename DetectorType>
47class SpikeDetectorWrapper : public BaseSpikeDetector {
48public:
49 explicit SpikeDetectorWrapper(DetectorType detector)
50 : detector_instance_(std::move(detector)) {}
51
52 template <typename... Args> void setup(Args &&...args) {
53 detector_instance_.setup(std::forward<Args>(args)...);
54 }
55
56 SpikeEvent *detect(const float sample, const uint64_t frame_timestamp,
57 const uint32_t channel_id) override {
58 return detector_instance_.detect(sample, frame_timestamp, channel_id);
59 }
60
61 void reset() override { detector_instance_.reset(); }
62
63private:
64 DetectorType detector_instance_;
65};
66
67} // namespace synapse
Base class for spike detectors.
Definition base_spike_detector.hpp:22
virtual void reset()=0
Reset the detector state.
virtual SpikeEvent * detect(const float sample, const uint64_t frame_timestamp, const uint32_t channel_id)=0
Process a new sample and detect spikes.
SpikeEvent * detect(const float sample, const uint64_t frame_timestamp, const uint32_t channel_id) override
Process a new sample and detect spikes.
Definition base_spike_detector.hpp:56
void reset() override
Reset the detector state.
Definition base_spike_detector.hpp:61
Represents a detected spike.
Definition base_spike_detector.hpp:11