aqnwb 0.3.0
Loading...
Searching...
No Matches
nwbio_utils.hpp
Go to the documentation of this file.
1
8
9#pragma once
10
11#include <memory>
12#include <string>
13#include <vector>
14
15#include "Channel.hpp"
16#include "Types.hpp"
22
27namespace AQNWB::IO
28{
29
46 std::shared_ptr<RecordingObjects> recording_objects,
47 const AQNWB::Types::SizeType& containerInd,
48 const AQNWB::Channel& channel,
49 const std::vector<AQNWB::Types::SizeType>& dataShape,
50 const std::vector<AQNWB::Types::SizeType>& positionOffset,
51 const void* data,
52 const void* timestamps,
53 const void* controlInput = nullptr)
54{
55 auto registeredObject = recording_objects->getRecordingObject(containerInd);
56 // Cast to TimeSeries
57 // This assumes that the object at containerInd is a TimeSeries
58 auto ts = std::dynamic_pointer_cast<AQNWB::NWB::TimeSeries>(registeredObject);
59 if (ts == nullptr) {
60 return AQNWB::Types::Status::Failure;
61 }
62
63 // write data and timestamps to datasets
64 if (channel.getLocalIndex() == 0) {
65 // write with timestamps if it's the first channel
66 return ts->writeData(
67 dataShape, positionOffset, data, timestamps, controlInput);
68 } else {
69 // write without timestamps and controlInput if its another channel in the
70 // same timeseries
71 return ts->writeData(dataShape, positionOffset, data);
72 }
73}
74
91 std::shared_ptr<RecordingObjects> recording_objects,
92 const AQNWB::Types::SizeType& containerInd,
93 const AQNWB::Channel& channel,
94 const AQNWB::Types::SizeType& numSamples,
95 const void* data,
96 const void* timestamps,
97 const void* controlInput = nullptr)
98{
99 auto registeredObject = recording_objects->getRecordingObject(containerInd);
100 auto es =
101 std::dynamic_pointer_cast<AQNWB::NWB::ElectricalSeries>(registeredObject);
102
103 if (es == nullptr)
104 return AQNWB::Types::Status::Failure;
105
106 return es->writeChannel(
107 channel.getLocalIndex(), numSamples, data, timestamps, controlInput);
108}
109
133 std::shared_ptr<RecordingObjects> recording_objects,
134 const AQNWB::Types::SizeType& containerInd,
135 const AQNWB::Types::SizeType& numSamples,
136 const void* data,
137 const void* timestamps = nullptr,
138 const void* controlInput = nullptr)
139{
140 auto registeredObject = recording_objects->getRecordingObject(containerInd);
141 auto es =
142 std::dynamic_pointer_cast<AQNWB::NWB::ElectricalSeries>(registeredObject);
143
144 if (es == nullptr)
145 return AQNWB::Types::Status::Failure;
146
147 return es->writeAllChannels(numSamples, data, timestamps, controlInput);
148}
149
163 std::shared_ptr<RecordingObjects> recording_objects,
164 const AQNWB::Types::SizeType& containerInd,
165 const AQNWB::Types::SizeType& numSamples,
166 const AQNWB::Types::SizeType& numChannels,
167 const void* data,
168 const void* timestamps,
169 const void* controlInput = nullptr)
170{
171 auto registeredObject = recording_objects->getRecordingObject(containerInd);
172 auto ses =
173 std::dynamic_pointer_cast<AQNWB::NWB::SpikeEventSeries>(registeredObject);
174
175 if (ses == nullptr)
176 return AQNWB::Types::Status::Failure;
177
178 return ses->writeSpike(
179 numSamples, numChannels, data, timestamps, controlInput);
180}
181
194 std::shared_ptr<RecordingObjects> recording_objects,
195 const AQNWB::Types::SizeType& containerInd,
196 const AQNWB::Types::SizeType& numSamples,
197 const std::vector<std::string>& data,
198 const void* timestamps,
199 const void* controlInput = nullptr)
200{
201 auto registeredObject = recording_objects->getRecordingObject(containerInd);
202 auto as =
203 std::dynamic_pointer_cast<AQNWB::NWB::AnnotationSeries>(registeredObject);
204
205 if (as == nullptr)
206 return AQNWB::Types::Status::Failure;
207
208 return as->writeAnnotation(numSamples, data, timestamps, controlInput);
209}
210
211} // namespace AQNWB::IO
Class for storing acquisition system channel information.
Definition Channel.hpp:16
SizeType getLocalIndex() const
Get the index of the channel within the recording array.
Definition Channel.hpp:99
Status
Represents the status of an operation.
Definition Types.hpp:25
size_t SizeType
Alias for the size type used in the project.
Definition Types.hpp:100
The namespace for IO components of AqNWB.
static AQNWB::Types::Status writeElectricalSeriesData(std::shared_ptr< RecordingObjects > recording_objects, const AQNWB::Types::SizeType &containerInd, const AQNWB::Channel &channel, const AQNWB::Types::SizeType &numSamples, const void *data, const void *timestamps, const void *controlInput=nullptr)
Write ElectricalSeries data to a recordingContainer dataset.
Definition nwbio_utils.hpp:90
static AQNWB::Types::Status writeAnnotationSeriesData(std::shared_ptr< RecordingObjects > recording_objects, const AQNWB::Types::SizeType &containerInd, const AQNWB::Types::SizeType &numSamples, const std::vector< std::string > &data, const void *timestamps, const void *controlInput=nullptr)
Write AnnotationSeries data to a recordingContainer dataset.
Definition nwbio_utils.hpp:193
static AQNWB::Types::Status writeSpikeEventData(std::shared_ptr< RecordingObjects > recording_objects, const AQNWB::Types::SizeType &containerInd, const AQNWB::Types::SizeType &numSamples, const AQNWB::Types::SizeType &numChannels, const void *data, const void *timestamps, const void *controlInput=nullptr)
Write SpikeEventSeries data to a recordingContainer dataset.
Definition nwbio_utils.hpp:162
static AQNWB::Types::Status writeTimeseriesData(std::shared_ptr< RecordingObjects > recording_objects, const AQNWB::Types::SizeType &containerInd, const AQNWB::Channel &channel, const std::vector< AQNWB::Types::SizeType > &dataShape, const std::vector< AQNWB::Types::SizeType > &positionOffset, const void *data, const void *timestamps, const void *controlInput=nullptr)
Write timeseries data to a recordingContainer dataset.
Definition nwbio_utils.hpp:45