This cannot work since the atom from mol is a different instance from the atom in mol2store, so that mol2store.removeAtomAndConnectedElectronContainers(a) will never remove any atoms.
In fact, given the substructure you must perform a substructure search to get the mapping of the target atoms to the substructure atoms and use that mapping to remove the target atoms. See http://rguha.net/code/java/#umcss for an example - most likely it won't work with the latest CDK as it was written a long time ago, but should point you in the direction On Oct 26, 2010, at 4:59 AM, Tobias Girschick wrote: > sorry, I sent the message before it was ready....here the complete > version > > Hi, > > I would like to substract a substructure from a structure and keep > the remaining parts. There was a similar post in the mailing list > history: > > http://sourceforge.net/mailarchive/message.php?msg_id=200702050602.05302.e.willighagen%40science.ru.nl > > The difference (is it a difference?) is, that I don't calculate the > substructure with CDK code but get it from somewhere else. My code > looks like this (but doesn't work): > > while (sdfreader.hasNext()) { > /* > Substructure: O=Cc1ccccc1 > A: OC(=O)c1cccc(c1)Cl > B: CC(=O)c1cccc(F)c1 > C: Nc1cccc(c1)C(O)=O > */ > > // read the molecules A, B, C > IMolecule mol2store = (IMolecule)sdfreader.next(); > > AtomContainerManipulator > .percieveAtomTypesAndConfigureAtoms(mol2store); > > CDKHueckelAromaticityDetector.detectAromaticity(mol2store); > > // read the substructure > FileInputStream fes = new FileInputStream(f_bb); > IteratingMDLReader sdreader = new > IteratingMDLReader(fes, DefaultChemObjectBuilder.getInstance()); > IMolecule mol = null; > while (sdreader.hasNext()) { > mol = (IMolecule) sdreader.next(); > } > sdreader.close(); > fes.close(); > > String smiles = sg.createSMILES(mol); > System.out.println("S: " + smiles); > smiles = sg.createSMILES(mol2store); > System.out.println("A: " + smiles); > > Iterable<IAtom> i = mol.atoms(); > Iterator<IAtom> atoms = i.iterator(); > while(atoms.hasNext()){ > IAtom a = atoms.next(); > mol2store.removeAtomAndConnectedElectronContainers(a); > } > smiles = sg.createSMILES(mol2store); > System.out.println("B: " + smiles); > smiles = sg.createSMILES(mol); > System.out.println("S: " + smiles); > System.out.println("-------------"); > } > > Considering the SMILES output, the atoms haven't been substracted > from the molecules ABC. Any thoughts? > > On Tue, Oct 26, 2010 at 10:56 AM, Tobias Girschick > <[email protected] > > wrote: > Hi, > > I would like to substract a substructure from a structure and keep > the remaining parts. There was a similar post in the mailing list > history: > > http://sourceforge.net/mailarchive/message.php?msg_id=200702050602.05302.e.willighagen%40science.ru.nl > > The difference (is it a difference?) is, that I don't calculate the > substructure with CDK code but get it from somewhere else. My code > looks like this (but doesn't work): > > while (sdfreader.hasNext()) { > /* > Substructure: O=Cc1ccccc1 > A: OC(=O)c1cccc(c1)Cl > B: CC(=O)c1cccc(F)c1 > C: Nc1cccc(c1)C(O)=O > */ > > IMolecule mol2store = (IMolecule)sdfreader.next(); > > AtomContainerManipulator > .percieveAtomTypesAndConfigureAtoms(mol2store); > > CDKHueckelAromaticityDetector.detectAromaticity(mol2store); > > FileInputStream fes = new FileInputStream(f_bb); > IteratingMDLReader sdreader = new > IteratingMDLReader(fes, DefaultChemObjectBuilder.getInstance()); > IMolecule mol = null; > while (sdreader.hasNext()) { > mol = (IMolecule) sdreader.next(); > } > sdreader.close(); > fes.close(); > > String smiles = sg.createSMILES(mol); > System.out.println("S: " + smiles); > smiles = sg.createSMILES(mol2store); > System.out.println("A: " + smiles); > > Iterable<IAtom> i = mol.atoms(); > Iterator<IAtom> atoms = i.iterator(); > while(atoms.hasNext()){ > IAtom a = atoms.next(); > mol2store.removeAtomAndConnectedElectronContainers(a); > } > smiles = sg.createSMILES(mol2store); > System.out.println("B: " + smiles); > smiles = sg.createSMILES(mol); > System.out.println("S: " + smiles); > System.out.println("-------------"); > } > > -- > Tobias Girschick > mailto: [email protected] > > > > -- > Tobias Girschick > mailto: [email protected] > ------------------------------------------------------------------------------ > Nokia and AT&T present the 2010 Calling All Innovators-North America > contest > Create new apps & games for the Nokia N8 for consumers in U.S. and > Canada > $10 million total in prizes - $4M cash, 500 devices, nearly $6M in > marketing > Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi > Store > http://p.sf.net/sfu/nokia-dev2dev_______________________________________________ > Cdk-user mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/cdk-user ---------------------------------------------------- Rajarshi Guha | NIH Chemical Genomics Center http://www.rguha.net | http://ncgc.nih.gov ---------------------------------------------------- A committee is a group that keeps the minutes and loses hours. -- Milton Berle ------------------------------------------------------------------------------ Nokia and AT&T present the 2010 Calling All Innovators-North America contest Create new apps & games for the Nokia N8 for consumers in U.S. and Canada $10 million total in prizes - $4M cash, 500 devices, nearly $6M in marketing Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store http://p.sf.net/sfu/nokia-dev2dev _______________________________________________ Cdk-user mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/cdk-user

