[C++-sig] exporting a boost::python::dict containing a boost::python::list

Ronny Herzog herzog at mpi-cbg.de
Sat Jul 21 11:36:38 CEST 2012


Thanks again, you were 100% right. I could spot the problem.

Ronny

Am 7/20/2012 5:19 PM, schrieb Ralf Grosse-Kunstleve:
> without having looked at your code ...
>
> most likely this is a memory issue. run with valgrind (valgrind.org
> <http://valgrind.org> or man valgrind) to pin-point the problem.
>
> On Fri, Jul 20, 2012 at 7:55 AM, Ronny Herzog <herzog at mpi-cbg.de
> <mailto:herzog at mpi-cbg.de>> wrote:
>
>
>     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 <tel:%28-431602080.0>, -6.2774385622041925e+66),
>     (-431602080.0 <tel:%28-431602080.0>, -6.2774385622041925e+66
>     ), (-431602080.0 <tel:%28-431602080.0>, -6.2774385622041925e+66),
>     (-431602080.0 <tel:%28-431602080.0>, -6.2774385622041925e+
>     66), (-431602080.0 <tel:%28-431602080.0>, -6.2774385622041925e+66),
>     (-431602080.0 <tel:%28-431602080.0>, -6.2774385622041925
>     e+66), (-431602080.0 <tel:%28-431602080.0>,
>     -6.2774385622041925e+66), (-431602080.0 <tel:%28-431602080.0>,
>     -6.27743856220419
>     25e+66), (-431602080.0 <tel:%28-431602080.0>,
>     -6.2774385622041925e+66), (-431602080.0 <tel:%28-431602080.0>,
>     -6.277438562204
>     1925e+66), (-431602080.0 <tel:%28-431602080.0>,
>     -6.2774385622041925e+66), (-431602080.0 <tel:%28-431602080.0>,
>     -6.2774385622
>     041925e+66), (-431602080.0 <tel:%28-431602080.0>,
>     -6.2774385622041925e+66), (-431602080.0 <tel:%28-431602080.0>,
>     -6.27743856
>     ...
>
>     What am I doing wrong?
>
>     Thanks for the help,
>     Ronny
>
>     _________________________________________________
>     Cplusplus-sig mailing list
>     Cplusplus-sig at python.org <mailto:Cplusplus-sig at python.org>
>     http://mail.python.org/__mailman/listinfo/cplusplus-sig
>     <http://mail.python.org/mailman/listinfo/cplusplus-sig>
>
>
>
>
> _______________________________________________
> Cplusplus-sig mailing list
> Cplusplus-sig at python.org
> http://mail.python.org/mailman/listinfo/cplusplus-sig
>




More information about the Cplusplus-sig mailing list