// $Id$ // // Copyright (C) 2004-2006 Rational Discovery LLC // // @@ All Rights Reserved @@ // #include #include #include #include #include #include #include #include #include #include using namespace RDKit; using namespace RDKit::Descriptors; void test1(){ BOOST_LOG(rdErrorLog) << "-------------------------------------" << std::endl; BOOST_LOG(rdErrorLog) << " Test Crippen parameter acquisition." << std::endl; CrippenParamCollection *params=CrippenParamCollection::getParams(); TEST_ASSERT(params); CrippenParams p=*(params->begin()); TEST_ASSERT(p.label=="C1"); TEST_ASSERT(p.smarts=="[CH4]"); BOOST_LOG(rdErrorLog) << " done" << std::endl; } void test2(){ BOOST_LOG(rdErrorLog) << "-------------------------------------" << std::endl; BOOST_LOG(rdErrorLog) << " Test Crippen calculation." << std::endl; ROMol *mol; double logp,mr; mol = SmilesToMol("C"); TEST_ASSERT(mol); CalcCrippenDescriptors(*mol,logp,mr); TEST_ASSERT(feq(logp,0.6331)); TEST_ASSERT(feq(mr,6.7310)); // check that things work when we don't add Hs: CalcCrippenDescriptors(*mol,logp,mr,false); TEST_ASSERT(feq(logp,0.1411)); TEST_ASSERT(feq(mr,2.503)); delete mol; mol = SmilesToMol("C=C"); TEST_ASSERT(mol); CalcCrippenDescriptors(*mol,logp,mr,true); TEST_ASSERT(feq(logp,0.8022)); TEST_ASSERT(feq(mr,11.2540)); delete mol; mol = SmilesToMol("C#C"); TEST_ASSERT(mol); CalcCrippenDescriptors(*mol,logp,mr); TEST_ASSERT(feq(logp,0.2494)); TEST_ASSERT(feq(mr,9.8900)); delete mol; mol = SmilesToMol("CO"); TEST_ASSERT(mol); CalcCrippenDescriptors(*mol,logp,mr); TEST_ASSERT(feq(logp,-0.3915)); TEST_ASSERT(feq(mr,8.1428)); delete mol; mol = SmilesToMol("C=O"); TEST_ASSERT(mol); CalcCrippenDescriptors(*mol,logp,mr); TEST_ASSERT(feq(logp,-0.1849)); TEST_ASSERT(feq(mr,7.121)); delete mol; mol = SmilesToMol("C#[O+]"); TEST_ASSERT(mol); CalcCrippenDescriptors(*mol,logp,mr); TEST_ASSERT(feq(logp,0.0059)); TEST_ASSERT(feq(mr,5.6315)); delete mol; mol = SmilesToMol("C(C)(C)C"); TEST_ASSERT(mol); CalcCrippenDescriptors(*mol,logp,mr); TEST_ASSERT(feq(logp,1.6533)); TEST_ASSERT(feq(mr,20.512)); delete mol; mol = SmilesToMol("C(C)(C)(C)O"); TEST_ASSERT(mol); CalcCrippenDescriptors(*mol,logp,mr); TEST_ASSERT(feq(logp,0.7682)); TEST_ASSERT(feq(mr,21.9718)); delete mol; BOOST_LOG(rdErrorLog) << " done" << std::endl; } void testIssue262(){ BOOST_LOG(rdErrorLog) << "-------------------------------------" << std::endl; BOOST_LOG(rdErrorLog) << " Test Issue262: problems with Crippen calculation from pickles." << std::endl; ROMol *mol,*mol2; RWMol *mol3; std::string pkl; double rlogp,rmr,logp,mr; mol = SmilesToMol("c1ncccc1"); TEST_ASSERT(mol); CalcCrippenDescriptors(*mol,rlogp,rmr); MolPickler::pickleMol(*mol,pkl); mol2=new ROMol(pkl); TEST_ASSERT(mol2); CalcCrippenDescriptors(*mol2,logp,mr); TEST_ASSERT(feq(logp,rlogp)); TEST_ASSERT(feq(mr,rmr)); mol3=new RWMol(); TEST_ASSERT(mol3); MolPickler::molFromPickle(pkl,mol3); CalcCrippenDescriptors(*mol3,logp,mr); TEST_ASSERT(feq(logp,rlogp)); TEST_ASSERT(feq(mr,rmr)); delete mol; delete mol2; delete mol3; BOOST_LOG(rdErrorLog) << " done" << std::endl; } void test3(){ BOOST_LOG(rdErrorLog) << "-------------------------------------" << std::endl; BOOST_LOG(rdErrorLog) << " Test AMW calculation." << std::endl; ROMol *mol,*mol2; double amw; mol = SmilesToMol("C"); TEST_ASSERT(mol); amw = CalcAMW(*mol); TEST_ASSERT(feq(amw,16.043,.001)); amw = CalcAMW(*mol,true); TEST_ASSERT(feq(amw,12.011,.001)); mol2 = MolOps::addHs(*mol); amw = CalcAMW(*mol2); TEST_ASSERT(feq(amw,16.043,.001)); amw = CalcAMW(*mol2,true); TEST_ASSERT(feq(amw,12.011,.001)); delete mol; delete mol2; BOOST_LOG(rdErrorLog) << " done" << std::endl; } //-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* // //-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* int main(){ RDLog::InitLogs(); #if 1 test1(); test2(); #endif testIssue262(); test3(); }