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

Reply via email to