On Wed, Apr 3, 2013 at 9:15 AM, James Davidson <[email protected]> wrote:
>
>> If you call the reaction with non-chiral starting material, you get
> non-chiral
>> ouput:
>>
>> In [20]: rxn3 = AllChem.ReactionFromSmarts("[C@@:1]>>[C@@:1]")
>>
>> In [21]: ps = rxn3.RunReactants((Chem.MolFromSmiles('FC(Cl)(Br)I'),))
>>
>> In [22]: Chem.MolToSmiles(ps[0][0],True)
>> Out[22]: 'FC(Cl)(Br)I'
>>
>> This is probably also ok; it certainly reflects what would happen in
> the lab (er,
>> at least I think it does).
>
> Just to be a pedant for a moment (but actually, this could be important
> later) - this is actually calling the reaction with *chiral* (albeit
> presumably racemic) starting material
Thanks, you're obviously right. Precision is important here and I was
being sloppy.
>> So far so good. We've got inversion of stereochemistry and retention
> of
>> stereochemistry. There are two cases left: resolution/creation and
>> scrambling.
>>
>> One obvious thing to do here would be:
>>
>> [C@:1]>>[C:1] scrambling
>> [C:1]>>[C@:1] resolution/induction
>>
>> This is where my extremely bogus example starts to make things more
>> difficult to understand, so here's a more real example of the
> induction case:
>> [#6:1]/[C:2]=[C:3](/[#6:4])>>[#6:1][C@H:2](Br)[C@H:3](Br)[#6:4]
>>
>> Seem right?
>
> <<Can of worms alert 1!!>> At first sight this seems perfectly ok(?) -
> as long as we accept that we know what we mean by the (R) flags on the
> carbons (by my reckoning we probably mean syn addition of Br2 across a
> double-bond?).
Yeah, it's syn addition (which is, I guess, also not particularly
realistic... but that's a different story).
> But - problems of symmetry and atom priorities aside(!)
> - what do I do if I want to employ the same transformation but with no
> absolute stereo-control (ie if I don't have the same wonder-catalyst)?
> At the moment I guess there is no way to represent relative
> stereochemistry in the absence of an enhanced stereochemistry model?
Correct, relative (or other forms of enhanced) stereochemistry is not
possible. It's worth talking about how to deal with this, but it's
going to be "more than a little bit" of work, I suspect.
>
> This brings me on to the main can of worms sensation - and I think it
> may revolve trying to service both real and 'virtual/fake' reactions in
> the same system, as well as some obvious concerns about enhanced
> stereochemistry. So some examples / questions:
>
> 1. I have a super-useful enzyme that will only hydrolyse (R)-esters (or
> more precisely I should say it won't hydrolyse (S)-esters). So:
>
> CC[C@H](C)C(=O)OC>>CC[C@H](C)C(=O)O ## R gets hydrolysed
> CC[C@@H](C)C(=O)OC>>CC[C@@H](C)C(=O)OC ## S doesn't
> CCC(C)C(=O)OC>> ## Oh dear, what do we want to happen here? I know what
> my enzyme will do - but we do have to assume that we are implying a
> racemic mix (it gets more worrying if we might mean a single, but
> unknown, enantiomer, or we might know nothing at all - we're back to
> enhanced stereochemistry again!)
> CCC(C)C(=O)OC>>CC[C@H](C)C(=O)O.CC[C@@H](C)C(=O)OC ## So this is
> what the enzyme would do - because we have treated the chiral centre as
> a racemic mix - essentially expanding out to:
> CC[C@H](C)C(=O)OC.CC[C@@H](C)C(=O)OC>>CC[C@H](C)C(=O)O.CC[C@@H](C)C(=O)O
> C
>
> The problem with this is that it doesn't fit with the existing rSMARTS
> nomenclature for retention and inversion, because the absolute
> stereochemistry of the starting material affects the outcome of the
> reaction! But I guess my enzyme reaction above would be represented as
> something like
>
> [C@:1][C:2](=[O:3])[O:4]C>>[C@:1][C:2](=[O:3])[O:4]H
>
> But we would have to (a) assume now that '@' in the starting material
> only matched (R), and (b) treat incoming racemates intrinsically as
> two-component mixtures of (R) and (S) to then apply the transformation
> to just the (R) and add the (S) starting material to the products...
The (R) or (S) parts are currently no doable (the stereochemistry in
SMILES/SMARTS is expressed in terms of the ordering of the neighbors,
not their CIP priorities. Setting that aside for the moment, there's
another problem: the current reaction code is not using the
stereochemistry information in the reactant templates when doing
substructure matches. That's possible, but in order for it to work,
you would definitely need to specify all four neighbors of an atom in
a way that the @ stereoisomer couldn't match the @@. This requires
being pretty specific about what the reactants are; probably not a
problem for enzymatic reactions or many other "explicit reactions"
(what you'd draw in an ELN: a specific instance of a class of
reactions applied to specific reactants), but it's unlikely to be
useful for reaction templates ("here's a general description of a
Suzuki coupling").
>
>
> 2. I am a database admin, and I want to transform some mis-assigned
> racemates to the (S) enantiomers
>
> Eg CCC(C)C(=O)OC>>CC[C@@H](C)C(=O)OC
>
> But extending the concept of treating racemates intrinsically as (R)/(S)
> mixtures, does this mean I should apply:
>
> [C@:1][C:2](=[O:3])[O:4]C>>[C@@:1][C:2](=[O:3])[O:4]C
>
> Which (if again we accept absolute stereo-matching in the rSMARTS) would
> convert any (R) stereocentres to (S) - including those in the racemates
> in our set of interest. So the desired behaviour, but is it intuitive?
>
>
> 3. I want to epimerise a chiral centre alpha to a carbonyl to the more
> stable 'anti' arrangement relative to an adjacent chiral centre
>
> C[C@H]1CCN(C)C(=O)[C@H]1C>>C[C@H]1CCN(C)C(=O)[C@@H]1C ## Inversion
> example when we start with the less stable 'syn'
> C[C@H]1CCN(C)C(=O)C1C>>C[C@H]1CCN(C)C(=O)[C@@H]1C ## Same output,
> but starting with a racemic centre
> C[C@H]1CCN(C)C(=O)[C@@H]1C>>C[C@H]1CCN(C)C(=O)[C@@H]1C ## No change if
> we start with the anti arrangement
>
> But in all cases I am only bothered about relative stereochemistry, not
> absolute... And I need to be able to make
>
> CC1CCN(C)C(=O)C1C>>C[C@H]1CCN(C)C(=O)[C@@H]1C
>
> mean "take the mix of 4 diastereomers and give the two trans ones" (not
> the one R,S one). Enhanced stereochemistry again?!
>
Here's what currently happens (as of this morning):
In [4]: rxn =
AllChem.ReactionFromSmarts("[C:1][C@H:2]1[C:3][C:4][N:5]([C:6])[C:7](=[O:8])[C@H:9]1[C:10]>>[C:1][C@H:2]1[C:3][C:4][N:5]([C:6])[C:7](=[O:8])[C@@H:9]1[C:10]")
What the code extracts from this is : "retain stereochemistry at C:2
(using the atom map numbers), invert stereochemistry at atom C:9".
So here's what happens:
In [5]: ps =
rxn.RunReactants((Chem.MolFromSmiles('C[C@H]1CCN(C)C(=O)[C@H]1C'),))
In [6]: Chem.MolToSmiles(ps[0][0],True)
Out[6]: 'C[C@H]1C(=O)N(C)CC[C@@H]1C'
That much looks ok (at least I think so). However, if I call the
reaction with other diastereomers it inverts them as well:
In [7]: ps =
rxn.RunReactants((Chem.MolFromSmiles('C[C@@H]1CCN(C)C(=O)[C@@H]1C'),))
In [8]: Chem.MolToSmiles(ps[0][0],True)
Out[8]: 'C[C@@H]1CCN(C)C(=O)[C@H]1C'
In [9]: ps =
rxn.RunReactants((Chem.MolFromSmiles('C[C@@H]1CCN(C)C(=O)[C@H]1C'),))
In [10]: Chem.MolToSmiles(ps[0][0],True)
Out[10]: 'C[C@@H]1CCN(C)C(=O)[C@@H]1C'
In [11]: ps =
rxn.RunReactants((Chem.MolFromSmiles('C[C@H]1CCN(C)C(=O)[C@@H]1C'),))
In [12]: Chem.MolToSmiles(ps[0][0],True)
Out[12]: 'C[C@H]1CCN(C)C(=O)[C@H]1C'
and if I call with the molecule with no chirality specified, it
applies, but doesn't do anything with the chirality:
In [13]: ps = rxn.RunReactants((Chem.MolFromSmiles('C[CH]1CCN(C)C(=O)[CH]1C'),))
In [14]: Chem.MolToSmiles(ps[0][0],True)
Out[14]: 'CC1CCN(C)C(=O)C1C'
> I'm sort of wondering whether the complexity and pain of enhanced
> stereochemistry introduction would actually make handling reaction
> stereochemistry simpler? Or am I just confusing things with 'edge'
> cases (I don't think so...)? But this does all feel like a mine field
> that others must have trodden already!
The conversation about representation of and handling of enhanced
stereochemistry, and what the actual use cases are, would be a good
one to have. I think it's probably going to be difficult via email
though. Maybe a topic for the UGM...
-greg
------------------------------------------------------------------------------
Minimize network downtime and maximize team effectiveness.
Reduce network management and security costs.Learn how to hire
the most talented Cisco Certified professionals. Visit the
Employer Resources Portal
http://www.cisco.com/web/learning/employer_resources/index.html
_______________________________________________
Rdkit-discuss mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss