21 #ifndef CYPRESS_CORE_DATA_HPP 22 #define CYPRESS_CORE_DATA_HPP 43 template <
typename Iterator>
69 Iterator
begin() {
return m_begin; }
74 Iterator
end() {
return m_end; }
84 template <
typename Iterator>
110 using DataType = std::vector<std::shared_ptr<Matrix<Real>>>;
135 std::vector<ParameterType> m_parameters;
144 std::vector<RecordType> m_record;
149 std::vector<DataType> m_data;
156 size_t size = 1,
NeuronType const *type =
nullptr,
157 const std::string &name = std::string(),
158 const std::vector<ParameterType> ¶meters =
159 std::vector<ParameterType>(),
160 const std::vector<RecordType> &record = std::vector<RecordType>(),
161 const std::vector<DataType> &data = std::vector<DataType>())
165 m_parameters(parameters),
174 size_t size()
const {
return m_size; }
184 std::string &
name() {
return m_name; }
189 const std::string &
name()
const {
return m_name; }
205 std::vector<ParameterType> &
parameters() {
return m_parameters; }
212 const std::vector<RecordType> &
record()
const {
return m_record; }
218 std::vector<RecordType> &
record() {
return m_record; }
225 const std::vector<DataType> &
data()
const {
return m_data; }
231 std::vector<DataType> &
data() {
return m_data; }
388 std::shared_ptr<PopulationData> m_data;
403 bool m_own_parameters : 1;
408 bool m_own_record : 1;
422 template <
typename Seq>
425 using Impl =
typename Seq::value_type;
428 const size_t size = list.size();
429 std::vector<PopulationData::ParameterType> parameters(size);
430 std::vector<PopulationData::RecordType> record(size);
431 std::vector<PopulationData::DataType> data(size);
435 for (
const Impl &i : list) {
437 if (
id.parameters().size() == 1 && i.m_own_parameters) {
438 parameters[idx] =
id.parameters()[0];
440 if (
id.record().size() == 1 && i.m_own_record) {
441 record[idx] =
id.record()[0];
443 if (
id.data().size() == 1 && i.m_own_data) {
444 data[idx] =
id.data()[0];
448 return Impl(std::make_shared<PopulationData>(
449 size,
nullptr, std::string(), parameters, record, data),
471 return population_data().get_parameters_size(m_nid0, m_nid1);
482 return population_data().get_record_size(m_nid0, m_nid1);
493 return population_data().get_data_size(m_nid0, m_nid1);
505 return population_data().read_parameters(m_nid0, m_nid1);
518 return population_data().read_record(m_nid0, m_nid1);
530 return population_data().read_data(m_nid0, m_nid1);
545 return population_data().write_parameters(m_nid0, m_nid1, partial);
560 return population_data().write_record(m_nid0, m_nid1, partial);
576 return population_data().write_data(m_nid0, m_nid1, partial);
588 m_own_parameters(true),
624 bool own_record =
true,
bool own_data =
true)
628 m_own_parameters(own_parameters),
629 m_own_record(own_record),
Definition: neurons_base.hpp:54
IterableRange< Iterator > make_iterable_range(Iterator begin, Iterator end)
Definition: data.hpp:85
std::vector< std::shared_ptr< Matrix< Real >>> DataType
Definition: data.hpp:110
Iterator end()
Definition: data.hpp:74
std::vector< RecordType > & record()
Definition: data.hpp:218
bool homogeneous_record() const
Definition: data.hpp:370
bool homogeneous_parameters() const
Definition: data.hpp:364
PopulationData & population_data()
Definition: data.hpp:461
const std::vector< DataType > & data() const
Definition: data.hpp:225
int32_t NeuronIndex
Definition: types.hpp:74
const auto & read_parameters() const
Definition: data.hpp:503
NeuronType const * type() const
Definition: data.hpp:179
size_t get_parameters_size() const
Definition: data.hpp:469
std::vector< Real > ParameterType
Definition: data.hpp:99
Iterator begin()
Definition: data.hpp:69
PopulationData(size_t size=1, NeuronType const *type=nullptr, const std::string &name=std::string(), const std::vector< ParameterType > ¶meters=std::vector< ParameterType >(), const std::vector< RecordType > &record=std::vector< RecordType >(), const std::vector< DataType > &data=std::vector< DataType >())
Definition: data.hpp:155
static Seq::value_type from_sequence(Seq list)
Definition: data.hpp:423
const PopulationData & population_data() const
Definition: data.hpp:456
std::string & name()
Definition: data.hpp:184
auto write_record(bool partial=true)
Definition: data.hpp:558
const std::string & name() const
Definition: data.hpp:189
PopulationDataView()
Definition: data.hpp:584
const auto & read_data() const
Definition: data.hpp:528
size_t size() const
Definition: data.hpp:174
auto write_data(bool partial=true)
Definition: data.hpp:574
std::vector< ParameterType > & parameters()
Definition: data.hpp:205
Definition: brainscales_lib.hpp:39
size_t get_record_size() const
Definition: data.hpp:480
PopulationDataView(std::shared_ptr< PopulationData > data, NeuronIndex nid0, NeuronIndex nid1, bool own_parameters=true, bool own_record=true, bool own_data=true)
Definition: data.hpp:622
IterableRange(Iterator begin, Iterator end)
Definition: data.hpp:64
const auto & read_record() const
Definition: data.hpp:516
size_t get_data_size() const
Definition: data.hpp:491
const std::vector< RecordType > & record() const
Definition: data.hpp:212
auto write_parameters(bool partial=true)
Definition: data.hpp:543
const std::vector< ParameterType > & parameters() const
Definition: data.hpp:196
bool homogeneous_data() const
Definition: data.hpp:376
std::vector< DataType > & data()
Definition: data.hpp:231
std::vector< uint8_t > RecordType
Definition: data.hpp:104