[C++-sig] exporting a boost::python::dict containing a boost::python::list
Ronny Herzog
herzog at mpi-cbg.de
Fri Jul 20 16:55:34 CEST 2012
Dear all,
I want to export a boost::python::dict containing a boost::python::list.
However, when I print this list in Python, I get an unlimited output of
some strange numbers:
namespace bp = boost::python;
class readraw
{
....
bp::list mk_pyPeak_list()
{
bp::list py_peak_list;
for (int i = 0; i < peak_number; i++)
{
py_peak_list.append(bp::make_tuple(peak_list[0][i].mz,
peak_list[0][i].intensity));
}
return py_peak_list;
}
bp::dict peak_list_info()
{
bp::dict info;
//bp::object pn = peak_number;
//info["peakNumber"] = peak_number;
//std::cout << bp::extract<int>(mk_pyPeak_list().attr("__len__")();
bp::list l(mk_pyPeak_list());
info["peakList"] = l;
return info;
}
};
BOOST_PYTHON_MODULE(readraw)
{
bp::class_<readraw>("readraw", bp::init<int>())
.def("add_peak", &readraw::add_peak)
.def("peak_list_info", &readraw::peak_list_info)
.def("average_scans", &readraw::average_scans)
;
In Python:
>>> print rawfilereader.peak_list_info()
Results in smth. like:
...
(-431602080.0, -6.2774385622041925e+66), (-431602080.0,
-6.2774385622041925e+66
), (-431602080.0, -6.2774385622041925e+66), (-431602080.0,
-6.2774385622041925e+
66), (-431602080.0, -6.2774385622041925e+66), (-431602080.0,
-6.2774385622041925
e+66), (-431602080.0, -6.2774385622041925e+66), (-431602080.0,
-6.27743856220419
25e+66), (-431602080.0, -6.2774385622041925e+66), (-431602080.0,
-6.277438562204
1925e+66), (-431602080.0, -6.2774385622041925e+66), (-431602080.0,
-6.2774385622
041925e+66), (-431602080.0, -6.2774385622041925e+66), (-431602080.0,
-6.27743856
...
What am I doing wrong?
Thanks for the help,
Ronny
More information about the Cplusplus-sig
mailing list