User e4cc152412
14-12-2005 19:33:20
Hi all,
Are there any examples for defining intramolecular reactions?
I mean, I think I could define them easily enough from atom mapping, but are there any specific things/examples I should be llooking at to prevent me from mass producing conformationally implausible beasts?
ChemAxon d76e6e95eb
14-12-2005 19:46:19
Show a problematic example, please.
User e4cc152412
14-12-2005 22:29:55
Hi Gyuri,
Thanks for the response. I haven't actually run into the problem, but I am worried that I will. I will let you know once I do, for some reason I don't want to believe that it is as easy as I think it is.
Thanks again for such great software.
User e4cc152412
02-01-2006 00:12:29
Ok so here is where I am running into a "problem". By problem, I mean my understanding of SMILES and SMIRKS...
Take the synthesis shown bleow, see the "symmetry breaking" step of the intramolecular transesterfication? I can't figure out a good way to encode this as a SMIRKS type reaction in a general way (i.e. so it can take conformation into account so that it can be applied in an unsupervised fashion).
I.e. if I simply define intra molecular transesterfication in a simple way (even though react will only do one application at a time), it will eventually transesterify both groups over iterations. Is there any way I can tell react that the reaction should proceed selectively through the intuitive conformation (given the context).
Or is the solution to generate like mad, then post filter conformationally implausible things?
BTW, it seems as if "clean in 3d" removes chiralily info, maybe it is my mistake somewhere.
ChemAxon d76e6e95eb
02-01-2006 14:25:52
You have graphs with stereo configuration, but without conformation info. How would your post filter work with the generated compounds?
ChemAxon d76e6e95eb
02-01-2006 17:23:49
Function for calculating the energies of the various conformers is not yet available in the current list of Chemical Terms functions. I am afraid, that post-filtering is the only choice in this case.
ChemAxon a3d59b832c
03-01-2006 09:17:23
ChemAxon d76e6e95eb
03-01-2006 10:35:23
The main product(s) can be specified in the SELECTIVITY and TOLERANCE fields. Your code looks something like this:
SELECTIVITY: MinimalConformerEnergy(product(0))
TOLERANCE: 4
The MinimalConformerEnergy() function should calculate the energies of the most stable conformers for each regioisomer. Then the regioisomers with the lowest energies will be stored as products of the reaction (withing a 4.0 tolerance range from the lowest energy found)
Please note, that no MinimalConformerEnergy() function exists currently, but you can use your own favourite calculation if you embed it in a custom plugin.
Since we already have a 3D geometry optimization modul in Marvin able to calculate stable conformers and their energies we can probably create a plugin like that. I will discuss it with my collegues.
(Calculating 3D conformers will certainly slow down the usually high speed of the enumeration process.)
ChemAxon d76e6e95eb
05-01-2006 11:36:30
I rechecked the problem again and seems, that this is not a SELECTIVITY problem, rather a REACTIVITY problem. The second ring closure is sterically prohibited, so the new function should be placed in the REACTIVITY field.
The plugin is under development, I will inform you about the results when it's ready.
ChemAxon fb166edcbd
19-06-2006 20:03:46
Here I add a simple exhaustive synthesis example that we were speaking about at the UGM. The example will only work with the next major JChem release since the function
hasValidConformer(Molecule) is under development.
Synthesizer is a tool that processes multiple reactions in a sequence according to a given synthesis algorithm. Here I use the ExhaustiveAlgorithm to process all possible reaction routes.This algorithm currently requires single-reactant reactions (possibly more functional groups reacting in an intra-molecular fashion). We have a not-too-detailed documentation here:
http://www.chemaxon.com/jchem/doc/user/Synthesizer.html
You can run synthesizer in memory, file and database modes.
Here is an example for each with two simple reactions and without the rule:
memory mode:
Code: |
synthesize m -s S1 input.smiles -c exhaustive1.xml
|
file mode:
Code: |
synthesize f -n syn -s S1 input.smiles -c exhaustive1.xml
|
db mode:
Code: |
synthesize c -n syn1 -c exhaustive1.xml
synthesize i -n syn1 -s S1 input.smiles
synthesize r -n syn1
synthesize e -n syn1
|
All will produce the following molecules:
Code: |
CCNC(=O)CCCCO
CCNC(=O)c1ccc(O)cc1
Oc1ccc2ccc3c(cc4cccc5cc1c2c3c45)C(=O)NCCCl
OCCCCC(O)=O
OC(=O)c1ccc(O)cc1
OC(=O)c1cc2cccc3cc4c(O)ccc5ccc1c(c23)c45
O=C1CCCCO1
O=C1Oc2ccc1cc2
O=C1Oc2ccc3ccc4c1cc5cccc6cc2c3c4c56
|
Now add the hasValidConformer(product(0)) rule to the second reaction (r2.mrv: intra-molecular esther generation) in exhaustive2.xml:
memory mode:
Code: |
synthesize m -s S1 input.smiles -c exhaustive2.xml
|
file mode:
Code: |
synthesize f -n syn -s S1 input.smiles -c exhaustive2.xml
|
db mode:
Code: |
synthesize c -n syn2 -c exhaustive2.xml
synthesize i -n syn2 -s S1 input.smiles
synthesize r -n syn2
synthesize e -n syn2
|
This rule will filter out the last two products:
Code: |
CCNC(=O)CCCCO
CCNC(=O)c1ccc(O)cc1
Oc1ccc2ccc3c(cc4cccc5cc1c2c3c45)C(=O)NCCCl
OCCCCC(O)=O
OC(=O)c1ccc(O)cc1
OC(=O)c1cc2cccc3cc4c(O)ccc5ccc1c(c23)c45
O=C1CCCCO1
|
In database mode you can browse the molecules together with their synthesis routes with the help of our synthesisbrowser tool:
http://www.chemaxon.com/jchem/doc/user/SynthesisBrowser.html
Just run the
synthesisbrowser
script and select syn1 or syn2 (the synthesis name).
I attach the example files here together with Linux scripts for the database mode examples. Is this kind of solution suitable for you? Contact us if you have any questions / suggestions.
User e4cc152412
20-06-2006 17:27:00
Thanks Nora, this helps me a lot. Will let you guys know when the library is finished.