diff --git a/src/pybind11_wrappers/CoreWrappers.cpp b/src/pybind11_wrappers/CoreWrappers.cpp index 2c9e256..84c7ceb 100644 --- a/src/pybind11_wrappers/CoreWrappers.cpp +++ b/src/pybind11_wrappers/CoreWrappers.cpp @@ -174,7 +174,7 @@ PYBIND11_MODULE(pysciqlopcore, m) ScalarTimeSerie::axis_t _values(t.size()); auto t_vew = t.unchecked<1>(); auto values_vew = values.unchecked<1>(); - for(int i = 0; i < t.size(); i++) + for(std::size_t i = 0; i < t.size(); i++) { _t[i] = t_vew[i]; _values[i] = values_vew[i]; @@ -197,6 +197,21 @@ PYBIND11_MODULE(pysciqlopcore, m) py::class_(m, "VectorTimeSerie") .def(py::init<>()) .def(py::init()) + .def(py::init([](py::array_t t, py::array_t values) { + assert(t.size() * 3 == values.size()); + VectorTimeSerie::axis_t _t(t.size()); + VectorTimeSerie::container_type + _values(t.size()); + auto t_vew = t.unchecked<1>(); + auto values_vew = values.unchecked<2>(); + for(std::size_t i = 0; i < t.size(); i++) + { + _t[i] = t_vew[i]; + _values[i] = VectorTimeSerie::raw_value_type{ + values_vew(0, i), values_vew(1, i), values_vew(2, i)}; + } + return VectorTimeSerie(_t, _values); + })) .def("__getitem__", [](VectorTimeSerie& ts, std::size_t key) -> VectorTimeSerie::raw_value_type& { return ts[key]; }, diff --git a/tests/TestVariables.py b/tests/TestVariables.py index 997b6d6..4ba87ff 100755 --- a/tests/TestVariables.py +++ b/tests/TestVariables.py @@ -37,5 +37,8 @@ class TimeSeriesData(unittest.TestCase): def test_build_ScalarTimeSerie_from_np_arrays(self): ts = pysciqlopcore.ScalarTimeSerie(np.arange(10),np.zeros(10)) + def test_build_VectorTimeSerie_from_np_arrays(self): + ts = pysciqlopcore.VectorTimeSerie(np.arange(10),np.zeros((3,10))) + if __name__ == '__main__': unittest.main()