void testMols(std::vector<ROMol *> &mols, FragFPGenerator &fpGen, FragCatalog &fcat) { std::vector<ROMol *>::iterator mi; int nDone = 0; for (mi = mols.begin(); mi != mols.end(); mi++) { ExplicitBitVect *fp = fpGen.getFPForMol(*(*mi), fcat); switch (nDone) { case 0: TEST_ASSERT(fp->getNumOnBits() == 3); TEST_ASSERT((*fp)[0]); TEST_ASSERT((*fp)[1]); TEST_ASSERT((*fp)[2]); break; case 1: TEST_ASSERT(fp->getNumOnBits() == 2); TEST_ASSERT((*fp)[1]); TEST_ASSERT((*fp)[3]); break; case 2: TEST_ASSERT(fp->getNumOnBits() == 3); TEST_ASSERT((*fp)[1]); TEST_ASSERT((*fp)[4]); TEST_ASSERT((*fp)[5]); break; case 3: TEST_ASSERT(fp->getNumOnBits() == 3); TEST_ASSERT((*fp)[1]); TEST_ASSERT((*fp)[6]); TEST_ASSERT((*fp)[7]); break; case 4: TEST_ASSERT(fp->getNumOnBits() == 2); TEST_ASSERT((*fp)[0]); TEST_ASSERT((*fp)[8]); break; case 5: TEST_ASSERT(fp->getNumOnBits() == 3); TEST_ASSERT((*fp)[0]); TEST_ASSERT((*fp)[6]); TEST_ASSERT((*fp)[9]); break; case 6: TEST_ASSERT(fp->getNumOnBits() == 5); TEST_ASSERT((*fp)[0]); TEST_ASSERT((*fp)[1]); TEST_ASSERT((*fp)[2]); TEST_ASSERT((*fp)[3]); TEST_ASSERT((*fp)[10]); break; } nDone += 1; } }
void testMols(std::vector<std::unique_ptr<ROMol>> &mols, FragFPGenerator &fpGen, FragCatalog &fcat) { int nDone = 0; for (auto &&mi : mols) { ExplicitBitVect *fp = fpGen.getFPForMol(*mi, fcat); switch (nDone) { case 0: TEST_ASSERT(fp->getNumOnBits() == 3); TEST_ASSERT((*fp)[0]); TEST_ASSERT((*fp)[1]); TEST_ASSERT((*fp)[2]); break; case 1: TEST_ASSERT(fp->getNumOnBits() == 2); TEST_ASSERT((*fp)[1]); TEST_ASSERT((*fp)[3]); break; case 2: TEST_ASSERT(fp->getNumOnBits() == 3); TEST_ASSERT((*fp)[1]); TEST_ASSERT((*fp)[4]); TEST_ASSERT((*fp)[5]); break; case 3: TEST_ASSERT(fp->getNumOnBits() == 3); TEST_ASSERT((*fp)[1]); TEST_ASSERT((*fp)[6]); TEST_ASSERT((*fp)[7]); break; case 4: TEST_ASSERT(fp->getNumOnBits() == 2); TEST_ASSERT((*fp)[0]); TEST_ASSERT((*fp)[8]); break; case 5: TEST_ASSERT(fp->getNumOnBits() == 3); TEST_ASSERT((*fp)[0]); TEST_ASSERT((*fp)[6]); TEST_ASSERT((*fp)[9]); break; case 6: TEST_ASSERT(fp->getNumOnBits() == 5); TEST_ASSERT((*fp)[0]); TEST_ASSERT((*fp)[1]); TEST_ASSERT((*fp)[2]); TEST_ASSERT((*fp)[3]); TEST_ASSERT((*fp)[10]); break; } delete fp; nDone += 1; } }
void testIssue294() { BOOST_LOG(rdInfoLog) << "---- Test Issue294\n Watch memory usage." << std::endl; std::string rdbase = getenv("RDBASE"); std::string fname = rdbase + "/Code/GraphMol/FragCatalog/test_data/mols.smi"; std::string fgrpFile = rdbase + "/Code/GraphMol/FragCatalog/test_data/funcGroups.txt"; SmilesMolSupplier suppl(fname, " ", 0, 1, false); auto *fparams = new FragCatParams(1, 6, fgrpFile, 1.0e-8); FragCatalog fcat(fparams); FragCatGenerator catGen; std::vector<ROMol *> mols; ROMol *m = suppl.next(); while (m) { mols.push_back(m); catGen.addFragsFromMol(*m, &fcat); try { m = suppl.next(); } catch (FileParseException &) { m = nullptr; } } int nents = fcat.getNumEntries(); TEST_ASSERT(nents == 21); FragFPGenerator fpGen; m = mols[0]; for (unsigned int i = 0; i < 200; i++) { for (std::vector<ROMol *>::const_iterator mi = mols.begin(); mi != mols.end(); mi++) { ExplicitBitVect *fp = fpGen.getFPForMol(*(*mi), fcat); delete fp; } } BOOST_LOG(rdInfoLog) << "---- Done" << std::endl; }