Hi John,
Thanks for the quick response. My concern is that I would like to
preprocess the structures correctly so that no matter how the molecule was
originally stored and what tools was used (OpenBabel, CDK, JChem/MarVin), I
return one unique representation. Afterwards the molecule is subjected to
another tool that uses CDK for transformations.
BTW, I add the explicit hydrogens because most of the smarts string and
smirks strings I use later on contain them, and I noticed that I have to do
so in order for pattern matching or transformations to work.
Also, if I understood correctly, I have many lines that I should remove?
Which ones?
Thanks,
On Wed, Jun 7, 2017 at 2:12 PM, John Mayfield <john.wilkinson...@gmail.com>
wrote:
> SmilesParser smipar = new SmilesParser(SilentChemObjectBuilder.getInstance
>> ());
>> System.out.println(SmartsPattern.create("c1ccccc1")
>> .matches(smipar.parseSmiles("C1=CC=CC=C1")));
>
>
> Too many carbons in the SMILES...
>
> On 7 June 2017 at 21:11, John Mayfield <john.wilkinson...@gmail.com>
> wrote:
>
>> You don't need to do any of this.
>>
>> - From your wording, it sounds like you store aromatic bonds in molfiles,
>> do not do this. ChemAxon know this is bad, they should warn on write (like
>> everyone else). Yes I know people use it but two wrongs don't make a right.
>>
>> - SINGLE_OR_DOUBLE is defunct do not use it... will get round to
>> deprecating that at some point. If you must...do it:
>> *if (bond.isAromatic() && bond.getOrder() == IBond.Order.UNSET)*
>>
>> - High level SMARTS matching automatically sets the aromaticity to be
>> correct (Daylight's - which incidentally you're not using here anyways :-D):
>>
>> SmilesParser smipar = new
>> SmilesParser(SilentChemObjectBuilder.getInstance());
>> System.out.println(SmartsPattern.create("c1ccccc1")
>>
>> .matches(smipar.parseSmiles("C1=CC=CC=CC1")));
>>
>>
>>
>> John
>>
>> On 7 June 2017 at 20:58, Yannick .Djoumbou <y.djoum...@gmail.com> wrote:
>>
>>> Thanks John,
>>>
>>> Because of the variety of sources from molecules, including the ones
>>> generated by JChem (which handles aromatic bonds differently from most), I
>>> decided to add a function that preprocesses molecules. here is the code.
>>> Please let me know if this is OK.
>>>
>>> I basically percieve the atoms, ckeck the bonds, and make sure that the
>>> aromatic bonds (which are represented in ChemAxon with 4 - query bonds) are
>>> set appropriately. I then aromatize the structure (as I want to run them
>>> against SMIRKS/SMARTS patterns that might include various representations
>>> of rings). Subsequently, I convert implicit hydrogens to explicit
>>> hydrogens and generate coordinates for the new atoms.
>>>
>>> AtomContainerManipulator.percieveAtomTypesAndConfigureAtoms(molecule);
>>> Aromaticity aromaticity = new Aromaticity( ElectronDonation.cdk(),
>>> Cycles.cdkAromaticSet());
>>> for (IBond bond : molecule.bonds()) {
>>> if (bond.getFlag(CDKConstants.SINGLE_OR_DOUBLE)) {
>>> bond.setFlag(CDKConstants.ISAROMATIC, true);
>>> bond.getAtom(0).setFlag(CDKConstants.ISAROMATIC, true);
>>> bond.getAtom(1).setFlag(CDKConstants.ISAROMATIC, true);
>>> }
>>> }
>>> aromaticity.apply(molecule);
>>> AtomContainerManipulator.convertImplicitToExplicitHydrogens(molecule);
>>> StructureDiagramGenerator sdg = new StructureDiagramGenerator();
>>> sdg.setMolecule(molecule);
>>> sdg.generateCoordinates();
>>> IAtomContainer layedOutMol = sdg.getMolecule();
>>> return layedOutMol
>>>
>>> Thanks,
>>> Yannick
>>>
>>>
>>>
>>>
>>>
>>> On Wed, Jun 7, 2017 at 1:43 PM, John Mayfield <
>>> john.wilkinson...@gmail.com> wrote:
>>>
>>>> I tried MarvinSketch before I posted that and all the same there too..
>>>> let me know if you still think there is a problem.
>>>>
>>>> On 7 June 2017 at 18:13, Yannick .Djoumbou <y.djoum...@gmail.com>
>>>> wrote:
>>>>
>>>>> Hi John,
>>>>>
>>>>> Thank you the fast response. I am using another viewer, which could
>>>>> have brought the confusion. This just means the issue in my code might
>>>>> come
>>>>> from somewhere else.
>>>>>
>>>>> Thanks,
>>>>> Yannick
>>>>>
>>>>> On Tue, Jun 6, 2017 at 3:25 AM, John Mayfield <
>>>>> john.wilkinson...@gmail.com> wrote:
>>>>>
>>>>>> Hi Yannick,
>>>>>>
>>>>>> Please, please, please don't "add hydrogens" like this! The hydrogens
>>>>>> are already there and don't need to be added - this is just wasted effort
>>>>>> and worst of all the atom typing *might* change your structures
>>>>>> valence!! If for some reason you want to make hydrogens explicit just
>>>>>> call
>>>>>> this method directly:
>>>>>>
>>>>>> AtomContainerManipulator.convertImplicitToExplicitHydrogens(molecule
>>>>>>> );
>>>>>>
>>>>>>
>>>>>> Anyways why do you think the stereochemistry is different? All your
>>>>>> SMILES are the same and the stereochemistry is preserved correctly -
>>>>>> paste
>>>>>> them in here to see: https://cdkdepict-openche
>>>>>> m.rhcloud.com/depict.html
>>>>>>
>>>>>>
>>>>>> [image: Inline images 1]
>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>
>
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Cdk-user mailing list
Cdk-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/cdk-user