Example #1
0
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;

}
Example #3
0
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;
}