From: Takayuki K. <t-k...@ni...> - 2006-08-16 23:45:35
|
Hi Egon, Thank you for early reply. When i use cdk-20050826, following code worked well, but cdk-20060714 gave some troubles. Of cource import path etc are corrected well. This is a sample code which i have trouble: --- from here --- import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import org.openscience.cdk.Molecule; import org.openscience.cdk.interfaces.IAtomContainer; import org.openscience.cdk.exception.CDKException; import org.openscience.cdk.io.iterator.IteratingSMILESReader; import org.openscience.cdk.qsar.DescriptorValue; import org.openscience.cdk.tools.HydrogenAdder; import org.openscience.cdk.qsar.descriptors.molecular.XLogPDescriptor; import org.openscience.cdk.qsar.result.DoubleResult; class ChemProp{ public static void main(String args[]){ if (args.length != 1){ System.out.println("Usage: ChemProp in.smi"); System.exit(1); } FileReader fr = null; try { fr = new FileReader(new File(args[0])); } catch (FileNotFoundException e) { System.out.println(e.toString()); System.exit(1); } XLogPDescriptor calcxlogp = new XLogPDescriptor(); Boolean param[] = new Boolean[2]; param[0] = Boolean.TRUE; param[1] = Boolean.TRUE; try { calcxlogp.setParameters(param); } catch (CDKException e1) { System.out.println(e1.toString()); } DescriptorValue dvxlogp = null; double dtemp=0.0; int nid = 0; IteratingSMILESReader itr = new IteratingSMILESReader(fr); HydrogenAdder adder = new HydrogenAdder(); while(itr.hasNext()){ Molecule mol = (Molecule)itr.next(); try { adder.addExplicitHydrogensToSatisfyValency(mol); dvxlogp = calcxlogp.calculate(mol); nid++; System.out.println(nid + ": " +mol.getProperty("SMIdbNAME")); dtemp=((DoubleResult)dvxlogp.getValue()).doubleValue(); System.out.println("xlogp: " + dtemp); } catch (Exception e) { System.out.println(e.toString()); } } } } --- end --- Compile works well, but the following error is shown. Exception in thread "main" java.lang.NoSuchMethodError: org.openscience.cdk.tools.HydrogenAdder.addExplicitHydrogensToSatisfyValency (Lorg/openscience/cdk/interfaces/IMolecule;)Lorg/openscience/cdk/interfaces/ IAtomContainer; at ChemProp.main(ChemProp.java:50) Exception in thread "main" java.lang.NoSuchMethodError: org.openscience.cdk.ringsearch.AllRingsFinder.findAllRings(Lorg/openscience/ cdk/interfaces/IAtomContainer;)Lorg/openscience/cdk/interfaces/IRingSet; at org.openscience.cdk.qsar.descriptors.molecular.XLogPDescriptor.calculate(XLo gPDescriptor.java:198) at ChemProp.main(ChemProp.java:51) Changing dvxlogp = calcxlogp.calculate(mol); to dvxlogp = calcxlogp.calculate((IAtomContainer)mol); gave same results. In addition i want to use IAtom[] atoms= mol.getAtoms(); but it also does not work. Do you have any idea to solve problems? Thanks in advance. Takayuki KOTANI -----Original Message----- From: Egon Willighagen [mailto:ewi...@un...] Sent: Thursday, August 10, 2006 6:46 PM To: cdk...@li... Cc: Takayuki KOTANI Subject: Re: [Cdk-devel] IteratingSMILESReader (moved this thread to cdk...@li...) Hi Takayuki, On Thursday 10 August 2006 10:53, Takayuki KOTANI wrote: > To calculate such as XLogPDescriptor, cdk-20060714 uses IAtomContainer > class though cdk-20050826 uses AtomContainer. > On the other hands, IteratingSMILESReader returns Molecule. > > I am not familiar with JAVA and CDK, I really appreciate if some one > teach me a method for convert Molecule to IMolecule or IAtomContainer. Java, like several other programming languages, has a concept for interfaces. These interfaces define the programming interface for certain types of objects, which actually provide some implementation. Molecule is an implementation of the IMolecule interface, and hence *is* a IMolecule. So, there is no need to convert a Molecule into an IMolecule. Java also is a object-oriented programming language, and therefore provide a concept for 'extending' objects. In the CDK, the Molecule class extends the AtomContainer class (and the IMolecule interface extends the IAtomContainer interface). So, there is neither the need to convert a Molecule into an AtomContainer as it already *is* an AtomContainer (by extending it). > Thanks in advance. I hope this helps. Egon -- CUBIC blog: http://chem-bla-ics.blogspot.com/ |