Hi Nick,

Okay could take some explaining :-). I'll include the mailing lists for this 
answer incase others are interested but otherwise we can chat off list. 

Firstly - I believe the only time one needs absolute specification is if you 
are naming a molecule (or making a molecule from a name) and I guess it is also 
intuitive for visualisation. Okay there are lots of valid reasons to use CIP. I 
thought CIP was the answer to a problem this time last year but soon learned it 
wasn't what I needed. I do intend to update the CDK CIP with the code I wrote 
(http://johnmay.github.io/centres/) but absolute configuration is generally, 
tricky to implement , slow and has some inherent well known flaws.

Okay so enough about CIP what you want is the parity/sign/winding of your atoms 
in a given order. One can either compute this for a given order or adjust an 
existing parity for a different order.

Computing for a given ordering

- Firstly, have a look at this determinant algorithm to calculate the sign of a 
space: http://www.mdpi.org/molecules/papers/61100915/61100915.htm
- Given the 2D coordinates and +1/0/-1 for elevations above/on/below the plane 
(bases on wedge/hatch) it will give you whether those atoms go clockwise/anti 
clockwise depending on the sign of the determinant. Will also give you '0' (or 
close to) if there isn't enough information. 
- The beauty of this is, it will also work in 3D.
- The approach is nice as it eliminates the 'fixed Z' issue
- This is used for the CDK hash code - 
https://github.com/johnmay/cdk/blob/master/src/main/org/openscience/cdk/hash/stereo/Tetrahedral2DParity.java
 (package private class)
- The test will probably explain better with examples what going on - 
https://github.com/johnmay/cdk/blob/master/src/test/org/openscience/cdk/hash/stereo/Tetrahedral2DParityTest.java#L61

You can simply pass your coordinates in the order of the atoms (e.g. 
"unshared", "shared", "shared", "shared"). 

Adjusting the parity for a new ordering

Alternatively if you already have the parity for a given order (i.e. from MOL 
file) then using the permutation parity (see below) can determine if you 
arrange the atoms in a specified way what will the sign/parity/winding for that 
order be? The permutation parity will be odd or even - if the party is odd then 
the sign (of the tetrahedral centre) is inverted.

- http://en.wikipedia.org/wiki/Parity_of_a_permutation
- 
https://github.com/johnmay/cdk/blob/master/src/main/org/openscience/cdk/hash/stereo/BasicPermutationParity.java
 (odd/even parity calculation in the CDK)
During the hash the the permutation parity is computed - if the values are 
variant (i.e. different ligands) then the geometry is computed and multiplied 
by the permutation parity 
- 
https://github.com/johnmay/cdk/blob/master/src/main/org/openscience/cdk/hash/stereo/GeometryEncoder.java#L108
 

There's also code in the hash package for using the same methods to do double 
bond configurations.

Hope this helps,
J

On 22 Aug 2013, at 15:41, "Nick Vandewiele" <[email protected]> wrote:

> Hi John,
>  
> Thanks for your comments. They are very refreshing to me, so much that they 
> need some more explanation. J
>  
> So, if I understand correctly, the 1st part of your answer (i.e. the edge 
> reduction procedure) is a graph theoretical method to find bridgehead atoms 
> in bridged systems. Let me neglect this part for now.
> The 2nd part is the actual trans-linked bridge identification procedure. 
> Conceptually I understand that the rotations round the 2 bridgehead atoms 
> should be reverse of each other to get the cis-linked bridge, when iterating 
> in the same order over the common ligands.
>  
> But, how do you translate the absolute configuration (R/S) of the bridgehead 
> centers into the “relative parity” of one center to the other relative to the 
> non-shared vertex? The norbornane example has two S absolute configurations, 
> meaning that the prioritized ligands turn both in counterclockwise sense. If 
> you add a hydroxyl group to one of the secondary carbons in the same 
> cis-linked structure, then suddenly the absolute configuration of one of the 
> bridgehead atoms changes from S to R.
>  
> Regards,
> Nick
>  
>  
> <image001.png><image004.png>
>  
>  
> From: John May [mailto:[email protected]] 
> Sent: Wednesday, August 21, 2013 6:09 PM
> To: Nick Vandewiele
> Cc: cdkuser
> Subject: Re: [Cdk-user] stereoisomer generation - identifying physically 
> impossible, strained stereoisomers
>  
> Sounds cool, Not aware of any open alternatives I'm afraid but might have an 
> idea.
>  
> One way I can think of is to iteratively collapse edges of the graph to find 
> two adjacent tetrahedral centres which share 3 vertices. You could restrict 
> this to only collapse cyclic parts - perhaps restricted to a given ring size 
> which is defined asrigid. When you find two centres which share three 
> vertices compute the relative parity of one (relative to the non-shared 
> vertex). Then the relative parity of the other (again relative to the 
> non-share vertex) but keep the ordering of the shared vertices the same. If 
> the configuration is valid the parties should be inverse of each other. 
>  
> The only tricky part there is the collapsing but might not be too bad. Not a 
> general method but reducing all cyclic edges where both vertices are not a 
> bridge-head tetrahedral centre might be starting point.
>  
> <image001.png><image002.png>
> Hope it helps,
> J
>  
> On 21 Aug 2013, at 22:00, "Nick Vandewiele" <[email protected]> wrote:
> 
> 
> Hi,
>  
> I am working on a tool (using CDK) that generates all possible stereoisomers, 
> based on a molecule with unspecified stereocenters. I don’t know of a 
> free/open tool that does this (besides ChemAxon’s Marvin, which doesn’t have 
> an API, I assume)
>  
> One of the problems is the following:
> How can one identify if the 2 bonds connecting the bridgehead atoms to the 
> bridge atom are at the same side of the plane? Think of norbornane with the 
> bond from the bridgehead atom pointing upwards to the bridge atom, the bond 
> from the other bridgehead pointing downwards. I can only use the absolute 
> configurations (or stereo parities if you will) of the bridgehead atoms as 
> the source of info to determine this.
>  
> One idea was the following: generating up/down bonds based on the order of 
> the ligands (retrieved from the absolute configuration). Then, check if the 
> bridge bonds are both up or both down. This is not enough: if you’re unlucky, 
> the other bonds of the bridgehead atoms will have the up/down stereo 
> specification, while the bridgehead bonds will be “flat”.
>  
> Any thoughts?
> Nick
>  
> <image004.png>
>  
>  
> <oledata.mso>------------------------------------------------------------------------------
> Introducing Performance Central, a new site from SourceForge and 
> AppDynamics. Performance Central is your source for news, insights, 
> analysis and resources for efficient Application Performance Management. 
> Visit us today!
> http://pubads.g.doubleclick.net/gampad/clk?id=48897511&iu=/4140/ostg.clktrk_______________________________________________
> Cdk-user mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/cdk-user
>  
> <oledata.mso>

------------------------------------------------------------------------------
Introducing Performance Central, a new site from SourceForge and 
AppDynamics. Performance Central is your source for news, insights, 
analysis and resources for efficient Application Performance Management. 
Visit us today!
http://pubads.g.doubleclick.net/gampad/clk?id=48897511&iu=/4140/ostg.clktrk
_______________________________________________
Cdk-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/cdk-user

Reply via email to