bool fragmentMol(const ROMol& mol, std::vector<std::pair<ROMOL_SPTR, ROMOL_SPTR> >& res, const std::vector<unsigned int>& bondsToCut, unsigned int minCuts, unsigned int maxCuts) { std::vector<BondVector_t> matching_bonds; // List of matched query's bonds BOOST_FOREACH(unsigned int i, bondsToCut) { const Bond *bond = mol.getBondWithIdx(i); BondVector_t bonds; unsigned int a1 = bond->getBeginAtomIdx(); unsigned int a2 = bond->getEndAtomIdx(); bonds.push_back( std::make_pair(a1, a2) ); matching_bonds.push_back(bonds); } // loop to generate every cut in the molecule BondVector_t bonds_selected; processCuts(0, minCuts, maxCuts, bonds_selected, matching_bonds, mol, res); return true; }
//===================================================================== static inline void appendBonds(BondVector_t& bonds, const BondVector_t& matching_bonds) { for (BondVector_t::const_iterator b = matching_bonds.begin(); b != matching_bonds.end(); ++b) bonds.push_back(*b); }