aqnwb 0.1.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
123 std::shared_ptr<RecordingObjects> recording_objects,
124 const AQNWB::Types::SizeType& containerInd,
125 const AQNWB::Types::SizeType& numSamples,
126 const AQNWB::Types::SizeType& numChannels,
127 const void* data,
128 const void* timestamps,
129 const void* controlInput = nullptr)
130{
131 auto registeredObject = recording_objects->getRecordingObject(containerInd);
132 auto ses =
133 std::dynamic_pointer_cast<AQNWB::NWB::SpikeEventSeries>(registeredObject);
134
135 if (ses == nullptr)
136 return AQNWB::Types::Status::Failure;
137
138 return ses->writeSpike(
139 numSamples, numChannels, data, timestamps, controlInput);
140}
141
154 std::shared_ptr<RecordingObjects> recording_objects,
155 const AQNWB::Types::SizeType& containerInd,
156 const AQNWB::Types::SizeType& numSamples,
157 const std::vector<std::string> data,
158 const void* timestamps,
159 const void* controlInput = nullptr)
160{
161 auto registeredObject = recording_objects->getRecordingObject(containerInd);
162 auto as =
163 std::dynamic_pointer_cast<AQNWB::NWB::AnnotationSeries>(registeredObject);
164
165 if (as == nullptr)
166 return AQNWB::Types::Status::Failure;
167
168 return as->writeAnnotation(numSamples, data, timestamps, controlInput);
169}
170
171} // 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:23
size_t SizeType
Alias for the size type used in the project.
Definition Types.hpp:77
The namespace for IO components of AqNWB.
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:153
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 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:122
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