User a18e201107
		01-10-2013 18:33:01
	 
	
	
	Hello
I am working on trying to import an SD file and iterate through the molecules/contents contained.  As I iterate I would like to convert each molecule to smiles so I can check against a database for duplicates.  I have the following code so far:
 
      while (recordCount > -1){
            File file = new File(sdfFilePath);
            FileInputStream inputStream = new FileInputStream(file)
            MolImporter moleculeImporter = new MolImporter(inputStream, "sdf:MULTISET,Usg")
            moleculeImporter.seekRecord(recordCount, null)
            Molecule molecule = moleculeImporter.read()
	   String mySMILES
            try {
               mySMILES = MolExporter.exportToFormat(molecule, "smiles");
                } catch (IOException e){
                println(e)
                }
            println(mySMILES)
             recordCount--
        }
 
However I am getting a ClassNotFoundException (Message: chemaxon.util.concurrent.ConcurrentProcessor) at the following line
  	mySMILES = MolExporter.exportToFormat(molecule, "smiles");
Which I do not understand as I have imported the MolExporter class, does the code above look ok otherwise?  Are there multiple MolExporter classes in the Chemaxon libs?  I was going off of this API doc 
Thank you for any help
Dennis
	
	 
 
	
		User a18e201107
		01-10-2013 21:02:40
	 
	
	
	Ok I figured out what was going on, I did not have the MarvinBeans-formats-smiles.jar or MarvinBeans-smarts.jar in my lib folder. 
At this point I changed the code a bit and I am a bit stuck on how I can then get access to the smiles string?
 
 	MolImporter importer = new MolImporter(inputStream);
        Molecule mol;
        while ((mol = importer.read()) != null) {
            MolHandler molHandler = new MolHandler(mol)
            molHandler.clean(true, null)
            molHandler.toFormat("smiles")
            Molecule smiles = molHandler.getMolecule()
            ....
	}
Thank you for any help you can provide,
Dennis
	
	 
 
	
		User a18e201107
		01-10-2013 21:25:24
	 
	
	
	Got everything working with the following (probably no need to have the molHandler function).
 	MolImporter importer = new MolImporter(inputStream);
        Molecule mol;
        while ((mol = importer.read()) != null) {
            // do something with the molecule
            println(mol)
            MolHandler molHandler = new MolHandler(mol)
            molHandler.clean(true, null)
            molHandler.toFormat("smiles")
            Molecule smiles = molHandler.getMolecule()
            println(MolExporter.exportToFormat(mol, "smiles"));
        }
 
Here is my question....what libraries do I need for this?  It seems a bit overkill to add ALL Marvin libraries to a project (which is what I did to resolve the issue).
Thanks
 
dennis
	
	 
 
	
		ChemAxon 712bc8fcf4
		02-10-2013 08:04:49
	 
	
	
	Hello Dennis,
You are right,  the MolHandler is not needed in this case.
Necessary libraries: 
com.chemaxon-io.jar
com.chemaxon-core.jar
com.chemaxon-license.jar
com.chemaxon-common.jar
com.chemaxon-concurrent.jar
com.chemaxon-io-mdl.jar
com.chemaxon-io-smiles.jar
Regards,
Mate 
	
	 
 
	
		User a18e201107
		02-10-2013 13:21:23
	 
	
	
	Thank you for the reply. Concurrent.jar!  That is what was throwing me, I thought that was a regular java issue! 
Dennis