int main(int argc, char **argv) { std::string file_root = getenv("RDBASE"); file_root += "/Docs/Book"; std::string mol_file = file_root + "/data/chiral.mol"; RDKit::ROMOL_SPTR mol(RDKit::MolFileToMol(mol_file)); std::cout << RDKit::MolToSmiles(*mol, true) << std::endl; // 2nd parameter doIsomericSmiles defaults to true std::cout << RDKit::MolToSmiles(*mol, false) << std::endl; RDKit::ROMOL_SPTR mol1(RDKit::SmilesToMol("C1=CC=CN=C1")); std::cout << RDKit::MolToSmiles(*mol1) << std::endl; RDKit::ROMOL_SPTR mol2(RDKit::SmilesToMol("c1cccnc1")); std::cout << RDKit::MolToSmiles(*mol2) << std::endl; RDKit::ROMOL_SPTR mol3(RDKit::SmilesToMol("n1ccccc1")); std::cout << RDKit::MolToSmiles(*mol3) << std::endl; RDKit::RWMOL_SPTR mol4(new RDKit::RWMol(*mol)); RDKit::MolOps::Kekulize(*mol4); std::cout << RDKit::MolToSmiles(*mol4) << std::endl; mol1.reset(RDKit::SmilesToMol("C1CCC1")); std::cout << RDKit::MolToMolBlock(*mol1) << std::endl; mol1->setProp("_Name", "cyclobutane"); std::cout << RDKit::MolToMolBlock(*mol1) << std::endl; }
void MspReaderTest::runTest(){ bool pass = true; double tol = 1e-5; MspReader msp = MspReader("tests/test_data/nist2011_cutdown.msp", "NIST2011_"); std::cout << std::setprecision(8); //Test first spectrum in msp config_t cfg; initDefaultConfig(cfg); MolData mol1( "NIST2011_1", "InChI=1S/H2/h1H", &cfg ); mol1.readInSpectraFromMSP( msp ); if( mol1.getNumSpectra() != 1 ){ std::cout << "Unexpected number of spectra for NIST2011_1: " << mol1.getNumSpectra() << std::endl; pass = false; } else{ const Spectrum *spec = mol1.getSpectrum(0); if( spec->size() != 2 ){ std::cout << "Unexpected number of peaks in spectrum: expecting 2 but found " << spec->size() << std::endl; pass = false; } else{ if( fabs(spec->getPeak(0)->mass - 1.0) > tol || fabs(spec->getPeak(0)->intensity - 2.056903) > tol || fabs(spec->getPeak(1)->mass - 2.0) > tol || fabs(spec->getPeak(1)->intensity - 97.9430962) > tol ){ std::cout << "Unexpected peaks in spectrum:" << std::endl; std::cout << "Expecting 1 20.98, 2 97.9431" << std::endl; std::cout << "Found " << spec->getPeak(0)->mass << " " << spec->getPeak(0)->intensity << ", " << spec->getPeak(1)->mass << " " << spec->getPeak(1)->intensity << std::endl; pass = false; } } } //Test mid spectrum in msp MolData mol2( "NIST2011_71459", "InChI=1S/H2/h1H", &cfg ); mol2.readInSpectraFromMSP( msp ); if( mol2.getNumSpectra() != 1 ){ std::cout << "Unexpected number of spectra for NIST2011_71459: " << mol2.getNumSpectra() << std::endl; pass = false; } else{ const Spectrum *spec = mol2.getSpectrum(0); if( spec->size() != 166 ){ std::cout << "Unexpected number of peaks in spectrum: expecting 166 but found " << spec->size() << std::endl; pass = false; } else{ if( fabs(spec->getPeak(0)->mass - 33.0) > tol || fabs(spec->getPeak(0)->intensity - 0.010019287) > tol || fabs(spec->getPeak(165)->mass - 469.0) > tol || fabs(spec->getPeak(165)->intensity - 0.0050096436) > tol ){ std::cout << "Unexpected peaks in spectrum:" << std::endl; std::cout << "Expecting 33 0.010019287, ...., 469 0.0050096436" << std::endl; std::cout << "Found " << spec->getPeak(0)->mass << " " << spec->getPeak(0)->intensity << ",...., " << spec->getPeak(165)->mass << " " << spec->getPeak(165)->intensity << std::endl; pass = false; } } } //Test last spectrum in msp MolData mol3( "NIST2011_212964", "InChI=1S/H2/h1H", &cfg ); mol3.readInSpectraFromMSP( msp ); if( mol3.getNumSpectra() != 1 ){ std::cout << "Unexpected number of spectra for NIST2011_212964: " << mol3.getNumSpectra() << std::endl; pass = false; } else{ const Spectrum *spec = mol3.getSpectrum(0); if( spec->size() != 30 ){ std::cout << "Unexpected number of peaks in spectrum: expecting 30 but found " << spec->size() << std::endl; pass = false; } else{ if( fabs(spec->getPeak(0)->mass - 192.0) > tol || fabs(spec->getPeak(0)->intensity - 0.87150087) > tol || fabs(spec->getPeak(29)->mass - 1168.0) > tol || fabs(spec->getPeak(29)->intensity - 18.15324) > tol ){ std::cout << "Unexpected peaks in spectrum:" << std::endl; std::cout << "Expecting 192 0.87150087, ...., 1168.0 18.15324" << std::endl; std::cout << "Found " << spec->getPeak(0)->mass << " " << spec->getPeak(0)->intensity << ",...., " << spec->getPeak(29)->mass << " " << spec->getPeak(29)->intensity << std::endl; pass = false; } } } passed = pass; }
int main( int argc , char **argv ) { RDKit::ROMOL_SPTR mol1( RDKit::SmilesToMol( "c1ccccc1O" ) ); RDKit::RWMOL_SPTR patt( RDKit::SmartsToMol( "ccO" ) ); RDKit::MatchVectType res; if( RDKit::SubstructMatch( *mol1 , *patt , res ) ) { std::cout << "Pattern matched molecule : " << std::endl; for( size_t i = 0 ; i < res.size() ; ++i ) { std::cout << "(" << res[i].first << "," << res[i].second << ")"; } std::cout << std::endl; } std::vector<RDKit::MatchVectType> hits_vect; if( RDKit::SubstructMatch( *mol1 , *patt , hits_vect ) ) { for( size_t i = 0 ; i < hits_vect.size() ; ++i ) { std::cout << "Match " << i + 1 << " : "; for( size_t j = 0 ; j < hits_vect[i].size() ; ++j ) { std::cout << "(" << hits_vect[i][j].first << "," << hits_vect[i][j].second << ")"; } std::cout << std::endl; } } std::string file_root = getenv( "RDBASE" ); file_root += "/Docs/Book"; std::string sdf_file = file_root + "/data/actives_5ht3.sdf"; RDKit::SDMolSupplier mol_supplier( sdf_file , true ); RDKit::RWMOL_SPTR patt1( RDKit::SmartsToMol( "c[NH1]" ) ); std::vector<RDKit::ROMOL_SPTR> matches; while( !mol_supplier.atEnd() ) { RDKit::ROMOL_SPTR mol3( mol_supplier.next() ); if( mol3 && RDKit::SubstructMatch( *mol3 , *patt1 , res ) ) { matches.push_back( mol3 ); } } std::cout << "There were " << matches.size() << " hits in the file." << std::endl; RDKit::ROMOL_SPTR mol4( RDKit::SmilesToMol( "C1=CC=CC=C1OC" ) ); RDKit::RWMOL_SPTR smi_mol1( RDKit::SmilesToMol( "CO" ) ); if( RDKit::SubstructMatch( *mol4 , *smi_mol1 , res ) ) { std::cout << "SMILES match" << std::endl; } else { std::cout << "Not SMILES match" << std::endl; } RDKit::RWMOL_SPTR smt_mol1( RDKit::SmartsToMol( "CO" ) ); if( RDKit::SubstructMatch( *mol4 , *smt_mol1 , res ) ) { std::cout << "SMARTS match" << std::endl; } else { std::cout << "Not SMARTS match" << std::endl; } RDKit::RWMOL_SPTR smi_mol2( RDKit::SmilesToMol( "COC" ) ); if( RDKit::SubstructMatch( *mol4 , *smi_mol2 , res ) ) { std::cout << "SMILES match" << std::endl; } else { std::cout << "Not SMILES match" << std::endl; } RDKit::RWMOL_SPTR smt_mol2( RDKit::SmartsToMol( "COC" ) ); if( RDKit::SubstructMatch( *mol4 , *smt_mol2 , res ) ) { std::cout << "SMARTS match" << std::endl; } else { std::cout << "Not SMARTS match" << std::endl; } // Needs aromatic C RDKit::RWMOL_SPTR smt_mol3( RDKit::SmartsToMol( "COc" ) ); if( RDKit::SubstructMatch( *mol4 , *smt_mol3 , res ) ) { std::cout << "SMARTS match" << std::endl; } else { std::cout << "Not SMARTS match" << std::endl; } }
void MspReaderMultipleEnergiesTest::runTest(){ bool pass = true; double tol = 1e-5; MspReader msp = MspReader("tests/test_data/three_energies.msp", ""); std::cout << std::setprecision(8); //Test first spectrum in msp config_t cfg; initDefaultConfig(cfg); MolData mol1( "Test3", "InChI=1S/H2/h1H", &cfg ); mol1.readInSpectraFromMSP( msp ); if( mol1.getNumSpectra() != 3 ){ std::cout << "Unexpected number of spectra for Test1: " << mol1.getNumSpectra() << std::endl; pass = false; } else{ const Spectrum *spec = mol1.getSpectrum(0); if( spec->size() != 2 ){ std::cout << "Unexpected number of peaks in spectrum: expecting 2 but found " << spec->size() << std::endl; pass = false; } else{ if( fabs(spec->getPeak(0)->mass - 54.07127368) > tol || fabs(spec->getPeak(0)->intensity - 10.0) > tol || fabs(spec->getPeak(1)->mass - 76.08692374) > tol || fabs(spec->getPeak(1)->intensity - 90.0) > tol ){ std::cout << "Unexpected peaks in spectrum:" << std::endl; pass = false; } } spec = mol1.getSpectrum(1); if( spec->size() != 2 ){ std::cout << "Unexpected number of peaks in spectrum: expecting 2 but found " << spec->size() << std::endl; pass = false; } else{ if( fabs(spec->getPeak(0)->mass - 15.02292652) > tol || fabs(spec->getPeak(0)->intensity - 40.0) > tol || fabs(spec->getPeak(1)->mass - 47.06037464) > tol || fabs(spec->getPeak(1)->intensity - 60.0) > tol ){ std::cout << "Unexpected peaks in spectrum:" << std::endl; pass = false; } } spec = mol1.getSpectrum(2); if( spec->size() != 2 ){ std::cout << "Unexpected number of peaks in spectrum: expecting 2 but found " << spec->size() << std::endl; pass = false; } else{ if( fabs(spec->getPeak(0)->mass - 15.02292652) > tol || fabs(spec->getPeak(0)->intensity - 20.0) > tol || fabs(spec->getPeak(1)->mass - 29.01342445) > tol || fabs(spec->getPeak(1)->intensity - 80.0) > tol ){ std::cout << "Unexpected peaks in spectrum:" << std::endl; pass = false; } } } //Test last spectrum in msp MolData mol3( "Test5", "InChI=1S/H2/h1H", &cfg ); mol3.readInSpectraFromMSP( msp ); if( mol3.getNumSpectra() != 3 ){ std::cout << "Unexpected number of spectra for Test5: " << mol3.getNumSpectra() << std::endl; pass = false; } else{ const Spectrum *spec = mol3.getSpectrum(0); if( spec->size() != 2 ){ std::cout << "Unexpected number of peaks in spectrum: expecting 2 but found " << spec->size() << std::endl; pass = false; } else{ if( fabs(spec->getPeak(0)->mass - 241.1798211) > tol || fabs(spec->getPeak(0)->intensity - 50.0) > tol || fabs(spec->getPeak(1)->mass - 315.2166005) > tol || fabs(spec->getPeak(1)->intensity - 50.0) > tol ){ std::cout << "Unexpected peaks in spectrum:" << std::endl; pass = false; } } spec = mol3.getSpectrum(1); if( spec->size() != 3 ){ std::cout << "Unexpected number of peaks in spectrum: expecting 3 but found " << spec->size() << std::endl; pass = false; } else{ if( fabs(spec->getPeak(0)->mass - 299.1853004) > tol || fabs(spec->getPeak(0)->intensity - 25.0) > tol || fabs(spec->getPeak(2)->mass - 315.2166005) > tol || fabs(spec->getPeak(2)->intensity - 25.0) > tol ){ std::cout << "Unexpected peaks in spectrum:" << std::endl; pass = false; } } spec = mol3.getSpectrum(2); if( spec->size() != 1 ){ std::cout << "Unexpected number of peaks in spectrum: expecting 1 but found " << spec->size() << std::endl; pass = false; } else{ if( fabs(spec->getPeak(0)->mass - 29.03857658) > tol || fabs(spec->getPeak(0)->intensity - 100.0) > tol){ std::cout << "Unexpected peaks in spectrum:" << std::endl; pass = false; } } } passed = pass; }