Hi Greg,

Thanks for your prompt response.

I'm pretty sure that my setup/libraries and importing is fine - my other boost::python-related finagling is working.

I think I want to do the opposite of extract(). After a bit more reading, it might be to do with the return value policy and/or a boost::python::converter.

I'll continue reading.


On 16/07/2017 16:58, Greg Landrum wrote:
It's been a while since I've seen one of these, but could it be that you either haven't imported rdkit.Chem (in Python) before calling the function that returns the RDKit molecule or that your extension module is linked against a different rdkit library than the rdkit extension module that you're using?


On Sun, Jul 16, 2017 at 4:40 PM, Paul Emsley <pems...@mrc-lmb.cam.ac.uk <mailto:pems...@mrc-lmb.cam.ac.uk>> wrote:


    I'd like to bring to python a function that returns a list (or vector?) of 
    molecules. But I am lost in boost::python.

    BOOST_PYTHON_MODULE(pyrogen) {

    coot::extract_ligands_from_coords_file(const std::string &file_name) {

        boost::python::list rdkit_mols_list;
        std::vector<RDKit::ROMol *> mols_vec = my_get_mols(file_name);
        for(unsigned int i=0; i<mols_vec.size(); i++) {
        return rdkit_mols_list;

    When I try to use it:

     >>> m = pyrogen.extract_ligands_from_coords_mol('test.pdb')
    TypeError: No to_python (by-value) converter found for C++ type: 

    I am not sure what I should do (instead). At a guess, maybe I need to 
convert/wrap the
    mols_vec[i] before using it in append()? Please advise.

Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
Rdkit-devel mailing list

Reply via email to