Yep, I was supposing something like that. Thanks for shedding some light on
this. Would have been way to easy and efficient...
best regards,
Tobias
On Tue, Oct 26, 2010 at 1:42 PM, Rajarshi Guha <[email protected]>wrote:
> 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
>
>
>
--
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