Kaspersky Neuromorphic Platform  1.0.0
API Reference
Loading...
Searching...
No Matches
sequence_converter.h
Go to the documentation of this file.
1
21#pragma once
22
25#include <knp/core/uid.h>
26
27#include <spdlog/spdlog.h>
28
29#include <functional>
30#include <memory>
31#include <sstream>
32#include <string>
33#include <type_traits>
34#include <utility>
35#include <vector>
36
37
42{
50template <class ValueType>
52{
53public:
61 std::unique_ptr<std::istream> &&stream, std::function<bool(ValueType)> interpret, size_t data_size)
62 : stream_(std::move(stream)), interpret_(std::move(interpret)), data_size_(data_size)
63 {
64 }
65
72 {
73 SPDLOG_TRACE("Getting message from a stream using sequence converter...");
74
75 core::messaging::SpikeData message_data;
76 for (size_t i = 0; i < data_size_; ++i)
77 {
78 ValueType value;
79 *stream_ >> value;
80 if (interpret_(value))
81 {
82 message_data.push_back(i);
83 }
84 }
85 SPDLOG_TRACE("Finished loading a message, it contains {} spikes.", message_data.size());
86 return message_data;
87 }
88
89public:
94 [[nodiscard]] std::istream &get_stream() { return *stream_; }
95
101 void set_size(size_t size) { data_size_ = size; }
102
103private:
107 std::unique_ptr<std::istream> stream_;
112 std::function<bool(ValueType)> interpret_;
113
117 size_t data_size_;
118};
119
120} // namespace knp::framework::io::input
The SequenceConverter class is a definition of a stream-like converter that converts a list of input ...
void set_size(size_t size)
Set input data size.
std::istream & get_stream()
Get input stream.
SequenceConverter(std::unique_ptr< std::istream > &&stream, std::function< bool(ValueType)> interpret, size_t data_size)
Sequence converter constructor.
core::messaging::SpikeData operator()(core::Step step=0)
Call a function that converts data from the input stream into spike messages with spiked neuron index...
Message endpoint interface.
std::vector< SpikeIndex > SpikeData
List of spike indexes.
uint64_t Step
Type used to store a step number in the form of a 64-bit unsigned integer.
Definition core.h:68
Input channel namespace.
Spike message class.
UID class and routines.