Skip to content
Snippets Groups Projects
Commit 7ca57370 authored by Simon Oehrl's avatar Simon Oehrl
Browse files

Merge branch 'feature/#42_Update_pynesci_bindings' into 'master'

Feature/#42 update pynesci bindings

Closes #42

See merge request VR-Group/in-situ-pipeline/nesci!28
parents 59de735e 8772c48f
No related branches found
No related tags found
1 merge request!28Feature/#42 update pynesci bindings
Pipeline #165143 failed
Showing with 217 additions and 264 deletions
......@@ -21,7 +21,7 @@
#include <string>
#include "nesci/consumer/device.hpp"
#include "nesci/consumer/device_data_view.hpp"
#include "pyconsumer.hpp"
#include "pynesci/suppress_warnings.hpp"
......@@ -29,23 +29,26 @@ namespace pynesci {
namespace consumer {
SUPPRESS_WARNINGS_BEGIN
boost::python::list GetDeviceTimesteps(nesci::consumer::Device* device) {
boost::python::list ret_val;
for (const auto& timestep : device->GetTimesteps()) {
ret_val.append(timestep);
boost::python::object HasDeviceName(nesci::consumer::DeviceDataView* device) {
return static_cast<boost::python::object>(device->HasName());
}
return ret_val;
boost::python::str GetDeviceName(nesci::consumer::DeviceDataView* device) {
return static_cast<boost::python::str>(device->GetName()):
}
void SetDeviceNode(nesci::consumer::Device* device, const conduit::Node& node) {
device->SetNode(&const_cast<conduit::Node&>(node));
DataType GetDeviceType(nesci::consumer::DeviceDataView* device) {
return device->GetType();
}
template <>
void expose<nesci::consumer::Device>() {
class_<nesci::consumer::Device>("Device", init<const std::string&>())
.def("GetTimesteps", &GetDeviceTimesteps)
.def("SetNode", &SetDeviceNode);
void expose<nesci::consumer::DeviceDataView>() {
class_<nesci::consumer::DeviceDataView>("DeviceDataView",
init<const conduit::Node& node>())
.def("HasDeviceName", &HasName)
.def("GetDeviceName", &GetName)
.def("GetDeviceType", &GetType);
}
SUPPRESS_WARNINGS_END
......
//------------------------------------------------------------------------------
// nesci -- neuronal simulator conan interface
//
// Copyright (c) 2017-2018 RWTH Aachen University, Germany,
// Virtual Reality & Immersive Visualisation Group.
//------------------------------------------------------------------------------
// License
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//------------------------------------------------------------------------------
#include <string>
#include "nesci/consumer/multimeter.hpp"
#include "pyconsumer.hpp"
#include "pynesci/suppress_warnings.hpp"
namespace pynesci {
namespace consumer {
SUPPRESS_WARNINGS_BEGIN
boost::python::list GetMultimeterAttributes(
nesci::consumer::Multimeter* multimeter, const std::string& time) {
boost::python::list ret_val;
for (const auto& attribute : multimeter->GetAttributes(time)) {
ret_val.append(attribute);
}
return ret_val;
}
boost::python::list GetMultimeterNeuronIds(
nesci::consumer::Multimeter* multimeter, const std::string& time,
const std::string& attribute) {
boost::python::list ret_val;
for (const auto& neuron_id : multimeter->GetNeuronIds(time, attribute)) {
ret_val.append(neuron_id);
}
return ret_val;
}
template <>
void expose<nesci::consumer::Multimeter>() {
class_<nesci::consumer::Multimeter, bases<nesci::consumer::Device>>(
"Multimeter", init<const std::string&>())
.def("GetAttributes", &GetMultimeterAttributes)
.def("GetNeuronIds", &GetMultimeterNeuronIds);
}
SUPPRESS_WARNINGS_END
} // namespace consumer
} // namespace pynesci
......@@ -21,7 +21,7 @@
#include <string>
#include "nesci/consumer/arbor_multimeter.hpp"
#include "nesci/consumer/nest_multimeter_data_view.hpp"
#include "pyconsumer.hpp"
#include "pynesci/suppress_warnings.hpp"
......@@ -30,34 +30,77 @@ namespace consumer {
SUPPRESS_WARNINGS_BEGIN
boost::python::list GetArborMultimeterTimestepData(
nesci::consumer::ArborMultimeter* arbor_multimeter, const std::string& time,
boost::python::object IsNestMultimeterValid(
nesci::consumer::NestMultimeterDataView* multimeter) {
return static_cast<boost::python::object>(multimeter->IsValid());
}
boost::python::object GetNestMultimeterTimestep(
nesci::consumer::NestMultimeterDataView* multimeter) {
return static_cast<boost::python::object>(multimeter->GetTimestep());
}
boost::python::object GetNestMultimeterNeuronIds(
nesci::consumer::NestMultimeterDataView* multimeter) {
boost::python::list ret_val;
for (const auto& data : nest_multimeter->GetNeuronIds()) {
ret_val.append(data);
}
return ret_val;
}
boost::python::list GetNestMultimeterIntegerAttributeNames(
nesci::consumer::NestMultimeterDataView* multimeter) {
boost::python::list ret_val;
for (const auto& data : nest_multimeter->GetIntegerAttributeNames()) {
ret_val.append(data);
}
return ret_val;
}
boost::python::list GetNestMultimeterFloatingPointAttributeNames(
nesci::consumer::NestMultimeterDataView* multimeter) {
boost::python::list ret_val;
for (const auto& data : nest_multimeter->GetFloatingPointAttributeNames()) {
ret_val.append(data);
}
return ret_val;
}
boost::python::list GetNestMultimeterIntegerAttributeValues(
nesci::consumer::NestMultimeterDataView* multimeter,
nesci::consumer::NestMultimeterDataView* multimeter,
const std::string& attribute) {
boost::python::list ret_val;
for (const auto& data : arbor_multimeter->GetTimestepData(time, attribute)) {
for (const auto& data : nest_multimeter->GetIntegerAttributeValues(attribute)) {
ret_val.append(data);
}
return ret_val;
}
boost::python::list GetArborTimeSeriesData(
nesci::consumer::ArborMultimeter* arbor_multimeter,
const std::string& attribute, const std::string& neuron_id) {
boost::python::list GetNestMultimeterFloatingPointAttributeValues(
nesci::consumer::NestMultimeterDataView* multimeter,
const std::string& attribute) {
boost::python::list ret_val;
for (const auto& data :
arbor_multimeter->GetTimeSeriesData(attribute, neuron_id)) {
for (const auto& data : nest_multimeter->GetFloatingPointAttributeValues(attribute)) {
ret_val.append(data);
}
return ret_val;
}
template <>
void expose<nesci::consumer::ArborMultimeter>() {
class_<nesci::consumer::ArborMultimeter, bases<nesci::consumer::Multimeter>>(
"ArborMultimeter", init<const std::string&>())
.def("GetTimestepData", &GetArborMultimeterTimestepData)
.def("GetTimeSeriesData", &GetArborTimeSeriesData)
.def("GetDatum", &nesci::consumer::ArborMultimeter::GetDatum);
void expose<nesci::consumer::NestMultimeterDataView>() {
class_<nesci::consumer::NestMultimeterDataView>("NestMultimeterDataView",
init<const conduit::Node& node>())
.def("IsNestMultimeterValid", &IsValid)
.def("GetNestMultimeterTimestep", &GetTimestep)
.def("GetNestMultimeterNeuronIds", &GetNeuronIds)
.def("GetNestMultimeterIntegerAttributeNames", &GetIntegerAttributeNames)
.def("GetNestMultimeterFloatingPointAttributeNames",
&GetFloatingPointAttributeNames)
.def("GetNestMultimeterIntegerAttributeValues", &GetIntegerAttributeValues)
.def("GetNestMultimeterFloatingPointAttributeValues",
&GetFloatingPointAttributeValues);
}
SUPPRESS_WARNINGS_END
......
......@@ -21,11 +21,9 @@
#include "pyconsumer.hpp"
#include <string>
#include "nesci/consumer/arbor_multimeter.hpp"
#include "nesci/consumer/device.hpp"
#include "nesci/consumer/multimeter.hpp"
#include "nesci/consumer/nest_multimeter.hpp"
#include "nesci/consumer/spike_detector.hpp"
#include "nesci/consumer/device_data_view.hpp"
#include "nesci/consumer/nest_multimeter_data_view.hpp"
#include "nesci/consumer/spike_detector_data_view.hpp"
namespace pynesci {
namespace consumer {
......@@ -40,11 +38,9 @@ SUPPRESS_WARNINGS_BEGIN
BOOST_PYTHON_MODULE(_pyconsumer) {
def("Greet", &Greet);
class_<conduit::Node>("Node");
expose<nesci::consumer::Device>();
expose<nesci::consumer::Multimeter>();
expose<nesci::consumer::NestMultimeter>();
expose<nesci::consumer::SpikeDetector>();
expose<nesci::consumer::ArborMultimeter>();
expose<nesci::consumer::DeviceDataView>();
expose<nesci::consumer::NestMultimeterDataView>();
expose<nesci::consumer::SpikeDetectorDataView>();
}
SUPPRESS_WARNINGS_END
......
//------------------------------------------------------------------------------
// nesci -- neuronal simulator conan interface
//
// Copyright (c) 2017-2018 RWTH Aachen University, Germany,
// Virtual Reality & Immersive Visualisation Group.
//------------------------------------------------------------------------------
// License
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//------------------------------------------------------------------------------
#include <string>
#include "nesci/consumer/spike_detector.hpp"
#include "pyconsumer.hpp"
#include "pynesci/suppress_warnings.hpp"
namespace pynesci {
namespace consumer {
SUPPRESS_WARNINGS_BEGIN
boost::python::list GetSpikeDetectorNeuronIds(
nesci::consumer::SpikeDetector* nest_multimeter, const std::string& time) {
boost::python::list ret_val;
for (const auto& data : nest_multimeter->GetNeuronIds(time)) {
ret_val.append(data);
}
return ret_val;
}
template <>
void expose<nesci::consumer::SpikeDetector>() {
class_<nesci::consumer::SpikeDetector, bases<nesci::consumer::Device>>(
"SpikeDetector", init<const std::string&>())
.def("GetNeuronIds", &GetSpikeDetectorNeuronIds);
}
SUPPRESS_WARNINGS_END
} // namespace consumer
} // namespace pynesci
......@@ -21,7 +21,7 @@
#include <string>
#include "nesci/consumer/nest_multimeter.hpp"
#include "nesci/consumer/spike_detector_data_view.hpp"
#include "pyconsumer.hpp"
#include "pynesci/suppress_warnings.hpp"
......@@ -30,34 +30,36 @@ namespace consumer {
SUPPRESS_WARNINGS_BEGIN
boost::python::list GetNestMultimeterTimestepData(
nesci::consumer::NestMultimeter* nest_multimeter, const std::string& time,
const std::string& attribute) {
boost::python::object IsSpikeDetectorValid(
nesci::consumer::DeviceDataView* spike_detector) {
return static_cast<boost::python::object>(spike_detector->IsValid());
}
boost::python::list GetSpikeDetectorTimesteps(
nesci::consumer::DeviceDataView* spike_detector) {
boost::python::list ret_val;
for (const auto& data : nest_multimeter->GetTimestepData(time, attribute)) {
for (const auto& data : spike_detector->GetTimesteps()) {
ret_val.append(data);
}
return ret_val;
}
boost::python::list GetNestTimeSeriesData(
nesci::consumer::NestMultimeter* nest_multimeter,
const std::string& attribute, const std::string& neuron_id) {
boost::python::list GetSpikeDetectorNeuronIds(
nesci::consumer::DeviceDataView* spike_detector) {
boost::python::list ret_val;
for (const auto& data :
nest_multimeter->GetTimeSeriesData(attribute, neuron_id)) {
for (const auto& data : spike_detector->GetNeuronIds()) {
ret_val.append(data);
}
return ret_val;
}
template <>
void expose<nesci::consumer::NestMultimeter>() {
class_<nesci::consumer::NestMultimeter, bases<nesci::consumer::Multimeter>>(
"NestMultimeter", init<const std::string&>())
.def("GetTimestepData", &GetNestMultimeterTimestepData)
.def("GetTimeSeriesData", &GetNestTimeSeriesData)
.def("GetDatum", &nesci::consumer::NestMultimeter::GetDatum);
void expose<nesci::consumer::SpikeDetectorDataView>() {
class_<nesci::consumer::SpikeDetectorDataView>("SpikeDetectorDataView",
init<const conduit::Node& node>())
.def("IsSpikeDetectorValid", &IsValid)
.def("GetSpikeDetectorTimesteps", &GetTimesteps)
.def("GetSpikeDetectorNeuronIds", &GetNeuronIds);
}
SUPPRESS_WARNINGS_END
......
# -------------------------------------------------------------------------------
# nesci -- neuronal simulator conan interface
#
# Copyright (c) 2018 RWTH Aachen University, Germany,
# Virtual Reality & Immersive Visualization Group.
# -------------------------------------------------------------------------------
# License
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# -------------------------------------------------------------------------------
import pynesci
def test_pynesci_consumer_arbor_multimeter():
arbor_multimeter = pynesci.consumer.ArborMultimeter(
"SomeArborMultimeterName")
def test_pynesci_consumer_arbor_multimeter_get_timestep_data():
arbor_multimeter = pynesci.consumer.ArborMultimeter(
"SomeArborMultimeterName")
some_node = pynesci.Node()
arbor_multimeter.SetNode(some_node)
assert len(arbor_multimeter.GetTimestepData("0.0", "Attribute1")) == 0
def test_pynesci_consumer_arbor_multimeter_get_time_series_data():
arbor_multimeter = pynesci.consumer.ArborMultimeter(
"SomeArborMultimeterName")
some_node = pynesci.Node()
arbor_multimeter.SetNode(some_node)
assert len(arbor_multimeter.GetTimeSeriesData(
"0.0", "Attribute1")) == 0
def test_pynesci_consumer_arbor_multimeter_get_neuron_ids():
arbor_multimeter = pynesci.consumer.ArborMultimeter(
"SomeArborMultimeterName")
some_node = pynesci.Node()
arbor_multimeter.SetNode(some_node)
arbor_multimeter.GetDatum("0.0", "Attribute1", "aasdad")
......@@ -22,11 +22,10 @@
import pynesci
def test_pynesci_consumer_device():
device = pynesci.consumer.Device("SomeDeviceName")
def test_pynesci_consumer_device_data_view():
device = pynesci.consumer.DeviceDataView("SomeDeviceName")
def test_pynesci_consumer_device_set_node():
device = pynesci.consumer.Device("SomeDeviceName")
some_node = pynesci.Node()
device.SetNode(some_node)
def test_pynesci_consumer_device_data_view_get_device_name():
device = pynesci.consumer.DeviceDataView("SomeDeviceName")
assert device.GetDeviceName() == "SomeDeviceName"
# -------------------------------------------------------------------------------
# nesci -- neuronal simulator conan interface
#
# Copyright (c) 2018 RWTH Aachen University, Germany,
# Virtual Reality & Immersive Visualization Group.
# -------------------------------------------------------------------------------
# License
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# -------------------------------------------------------------------------------
import pynesci
def test_pynesci_consumer_nest_multimeter():
nest_multimeter = pynesci.consumer.NestMultimeter("SomeNestMultimeterName")
def test_pynesci_consumer_nest_multimeter_get_timestep_data():
nest_multimeter = pynesci.consumer.NestMultimeter("SomeNestMultimeterName")
some_node = pynesci.Node()
nest_multimeter.SetNode(some_node)
assert len(nest_multimeter.GetTimestepData("0.0", "Attribute1")) == 0
def test_pynesci_consumer_nest_multimeter_get_time_series_data():
nest_multimeter = pynesci.consumer.NestMultimeter("SomeNestMultimeterName")
some_node = pynesci.Node()
nest_multimeter.SetNode(some_node)
assert len(nest_multimeter.GetTimeSeriesData(
"0.0", "Attribute1")) == 0
def test_pynesci_consumer_nest_multimeter_get_neuron_ids():
nest_multimeter = pynesci.consumer.NestMultimeter("SomeNestMultimeterName")
some_node = pynesci.Node()
nest_multimeter.SetNode(some_node)
nest_multimeter.GetDatum("0.0", "Attribute1", "aasdad")
......@@ -22,19 +22,38 @@
import pynesci
def test_pynesci_consumer_multimeter():
multimeter = pynesci.consumer.Multimeter("SomeMultimeterName")
def test_pynesci_consumer_nest_multimeter_data_view():
multimeter = pynesci.consumer.NestMultimeterDataView("SomeNestMultimeterName")
def test_pynesci_consumer_multimeter_get_attributes():
multimeter = pynesci.consumer.Multimeter("SomeMultimeterName")
def test_pynesci_consumer_nest_multimeter_data_view_is_valid():
multimeter = pynesci.consumer.NestMultimeterDataView("SomeNestMultimeterName")
assert multimeter.IsNestMultimeterValid()
def test_pynesci_consumer_nest_multimeter_data_view_get_timestep_data():
multimeter = pynesci.consumer.NestMultimeterDataView("SomeNestMultimeterName")
some_node = pynesci.Node()
multimeter.SetNode(some_node)
assert len(multimeter.GetTimestepData("0.0", "Attribute1")) == 0
def test_pynesci_consumer_nest_multimeter_data_view_get_neuron_ids():
multimeter = pynesci.consumer.NestMultimeterDataView("SomeNestMultimeterName")
some_node = pynesci.Node()
multimeter.SetNode(some_node)
multimeter.GetNestMultimeterNeuronIds()
def test_pynesci_consumer_nest_multimeter_data_view_get_attributes():
multimeter = pynesci.consumer.NestMultimeterDataView("SomeNestMultimeterName")
some_node = pynesci.Node()
multimeter.SetNode(some_node)
assert len(multimeter.GetAttributes("0.0")) == 0
def test_pynesci_consumer_multimeter_get_neuron_ids():
multimeter = pynesci.consumer.Multimeter("SomeMultimeterName")
def test_pynesci_consumer_nest_multimeter_data_view_get_neuron_ids():
multimeter = pynesci.consumer.NestMultimeterDataView("SomeNestMultimeterName")
some_node = pynesci.Node()
multimeter.SetNode(some_node)
assert len(multimeter.GetNeuronIds("0.0", "Attribute1")) == 0
assert len(multimeter.GetNestMultimeterNeuronIds("0.0", "Attribute1")) == 0
......@@ -22,12 +22,12 @@
import pynesci
def test_pynesci_consumer_spike_detector():
spike_detector = pynesci.consumer.SpikeDetector("SomeSpikeDetectorName")
def test_pynesci_consumer_spike_detector_data_view():
spike_detector = pynesci.consumer.SpikeDetectorDataView("SomeSpikeDetectorName")
def test_pynesci_consumer_spike_detector_get_neuron_ids():
spike_detector = pynesci.consumer.SpikeDetector("SomeSpikeDetectorName")
def test_pynesci_consumer_spike_detector_data_view_get_neuron_ids():
spike_detector = pynesci.consumer.SpikeDetectorDataView("SomeSpikeDetectorName")
some_node = pynesci.Node()
spike_detector.SetNode(some_node)
assert len(spike_detector.GetNeuronIds("0.0")) == 0
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment