intramolecular reactions

User 870ab5b546

28-09-2006 00:59:20

Is there a way to write a reaction definition so that it applies to intermolecular and intramolecular examples?





For example, the following reaction describes addition of HX across an alkene, where HX can be an alcohol among others:





[O,Cl,Br,I:3][H:4].[C:1]=[C:2]>>[H:4][C:2][C:1][O,Cl,Br,I:3]





Now I try to apply this reaction to CC(C)=CCCCO, and I get an error message:





Example reaction structure count mismatch: C\C(C)=C/CCCO>>CC1(C)CCCCO1





Do I need to create a separate reaction file for every possible ring size of every intramolecular reaction? If so, I would like to make an enhancement request: that in the future, it not be necessary to do this. Such an enhancement may require the author to designate selectivity rules as applying solely to inter- or intramolecular reactions or to both.

ChemAxon d76e6e95eb

28-09-2006 07:40:08

Not, it isn't. An intermolecular reaction requires two reactants, an intramolucular reaction only one.





Though, it would be possible to modify reactor accepting and a single input for a multimolecular reaction, intramolecular ones require special care to avoid sterically impossible products. These "extra" calculations would slow down the non-intra molecular cases.

User 870ab5b546

28-09-2006 10:58:39

Gyuri wrote:
These "extra" calculations would slow down the non-intra molecular cases.
But you wouldn't need to do the calculations in intermolecular cases. You would do them only in the intramolecular cases. So I don't see why there would be a slowdown.





And besides, if someone were worried about speed, you could always provide an option to turn consideration of intramolecular cases off.





There are some general principles of intramolecular selectivity that would be very useful to have available to all reaction files, so they wouldn't need to be programmed separately for each and every one. For example,





intramolecular("ringsize", "thermodynamic")


intramolecular("ringsize", "kinetic")


intramolecular("ringsize", "Baldwin")


intramolecular("ringsize", "5>6>3>4>7")


intramolecular("ringfusion", "thermodynamic")


intramolecular("ringfusion", "stereoelectronic")





etc. I haven't thought it all through, but you get the idea.

ChemAxon d76e6e95eb

28-09-2006 14:21:43

Thanks for the ideas. I have to discuss them with my collegues after the current release.

User 870ab5b546

21-11-2006 14:44:21

Hi Gyuri,





I was wondering if you have made any more progress on this subject. We are really eager to start developing the part of ACE that will use Reactor, but we will find it very difficult to do so if we have to write separate reaction descriptions for every possible intramolecular version of every reaction.





-- Bob

ChemAxon e08c317633

21-11-2006 15:26:18

bobgr wrote:
Hi Gyuri,





I was wondering if you have made any more progress on this subject. We are really eager to start developing the part of ACE that will use Reactor, but we will find it very difficult to do so if we have to write separate reaction descriptions for every possible intramolecular version of every reaction.





-- Bob
Hi Bob,





Gyuri is not available now. We will discuss this subject and get back to you next week.





Regards,





Zsolt

User 870ab5b546

08-12-2006 14:09:53

Zsolt wrote:
We will discuss this subject and get back to you next week.
Hi Zsolt,





Have you had a chance to discuss this matter? I am hesitant to proceed to the next stage of development of ACE until Reactor can handle intramolecular reactions. Our program would be too inefficient if we had to check every possible intramolecular case individually as well as the intermolecular one.





-- Bob

ChemAxon d76e6e95eb

08-12-2006 15:45:25

We discussed your request, and I am sorry to say, but we will not support it, at least not in the near future. I am afraid, that you need to handle the intramolecular reactions in your application separately from the intermolecular ones.

User 870ab5b546

08-12-2006 17:19:56

We would have a very hard time handling intramolecular reactions without programming help from your end. The problem is that we need to take starting materials handed to us by an inexperienced student and predict the products that would be obtained. A knowledgeable chemist knows well enough that if he wants to induce a reaction between an alcohol and an alkyl halide to make an ether, the alkyl halide should not contain in itself an alcohol that can react as well. However, a student is likely to make such an error. Thus, when an alcohol and an alkyl halide react in Reactor, Reactor needs to be intelligent enough to realize that if the alkyl halide also contains an alcohol, products might be obtained other than the desired intermolecular one, either from an intramolecular reaction or from an intermolecular one between two equivalents of the haloalcohol.





Does Reactor at least allow a user to draw a substrate as R1-link-R2, where link can be any number (or a defined list of numbers) of intervening atoms? At least in that case, we would not need to write separate reaction schemes for linkers of two atoms, three atoms, etc.

ChemAxon d76e6e95eb

08-12-2006 19:23:59

Some ideas:





1. Exclude alkyl halide compunds having hydroxyl groups. Then Reactor will not produce ethers from those starting materials.





2. If you would like to generate all intra and intermolecular products, I think, that you might create the intramolecular versions of the reactions (you can even make them automatically using the API). Then call Reactor with the individual reagents and in all combinations of the reagents.

User 870ab5b546

08-12-2006 20:05:18

Gyuri wrote:
Some ideas:





1. Exclude alkyl halide compunds having hydorxyl groups. Then Reactor will not produce ethers from those starting materials.


But then we'll get an incorrect result, in that Reactor will tell us that no reaction occurs, when in fact a reaction does occur, just not the one we want.
Quote:
2. If you would like to generate all intra and intermolecular products, I think, that you might create the intramolecular versions of the reactions (you can even make them automatically using the API). Then call Reactor with the individual reagents and in all combinations of the reagents.
That's why I asked for the capability of having a -link- group in Marvin in which I can specify (or not) how many atoms are in -link-. I don't want to have to write a separate reaction for every single intramolecular case. Is it possible?

ChemAxon d76e6e95eb

08-12-2006 20:32:50

1. Reactor does not tell what reactions occur in a reaction mixture. It just generates products of a given reaction!!!





If the rules of the given reaction are well defined, only synthetically feasible products are generated. Unfeasible ones are not. So in your case ether formation will be predicted only if the alkyl halide did not contain hydroxy groups.





An application predicting what products will be formed in a reaction mixture should use an entire reaction library and should also take care of the reaction conditions. We have plans for that in the future (we are working on the reaction library) and the classification of reactions by the reaction conditions.





2. No link group at the moment, but there are link nodes. Additionally you can refer to the topological distances of atoms using the shortestPath function of the TopologyAnalyser plugin from the reactivity rule.

User 870ab5b546

09-12-2006 03:51:13

Gyuri wrote:
1. Reactor does not tell what reactions occur in a reaction mixture. It just generates products of a given reaction!!!





If the rules of the given reaction are well defined, only synthetically feasible products are generated. Unfeasible ones are not. So in your case ether formation will be predicted only if the alkyl halide did not contain hydroxy groups.
Seems to me that if the alkyl halide contains hydroxy groups, then an intramolecular reaction is synthetically feasible. But I understand that you are working with knowledgeable chemists who should know enough to protect their hydroxy groups.
Gyuri wrote:
An application predicting what products will be formed in a reaction mixture should use an entire reaction library and should also take care of the reaction conditions. We have plans for that in the future (we are working on the reaction library) and the classification of reactions by the reaction conditions.
I am glad to hear that. In fact, that is exactly what we were planning to do in ACE. We were going to create a series of reaction conditions from which the student could select. Each reaction condition would correspond to a set of reactions that we would run on the substrates provided by the student. Then we would compare our calculated results with the student's indicated results. So, if a student chose the reaction conditions "base" because he wanted to alkylate the alpha-carbon of an ester, and the ester also contained an alcohol, the calculations would indicate that an ether or a lactone would be a more likely product than an alpha-substituted ester. But again, this approach requires that Reactor be able to calculate "unexpected" intramolecular reactions as well as "expected" intermolecular ones.





Sounds like we are all thinking in the same direction. Let me know if I can do anything to facilitate your efforts in this area. I already contributed the SN2/SN1/E2/E1 reactions in a different post.





I will look into the link node business.

ChemAxon d76e6e95eb

11-12-2006 11:44:31

Not just intramolecular reaction can happen, but other side reactions can also be feasible, like ether formation from two of the same reagent (with hydroxyl and alkyl halide). And many others depending on the presence of other functional groups. So, I think, that just handling the intramolecular case would not be sufficient inside Reactor. The prediction should be handled outside by an application using Reactor and classified reaction libraries.





Thank you for your the proposal, we will warmly welcome your contribution (and you really helped us a lot in the past). At the moment we are not yet in that stage of the reaction library development.

User 870ab5b546

30-01-2007 22:08:15

Gyuri wrote:
Not just intramolecular reaction can happen, but other side reactions can also be feasible, like ether formation from two of the same reagent (with hydroxyl and alkyl halide). And many others depending on the presence of other functional groups. So, I think, that just handling the intramolecular case would not be sufficient inside Reactor. The prediction should be handled outside by an application using Reactor and classified reaction libraries.
Yes, again. We are going to write an application that will use the reaction conditions chosen by the student to decide which reactions in the library to apply to the student's reactants. Then we will compare our calculated products to the products shown by the student.





We are also planning to write a series of reactions for Reactor. Most of the reactions already in your library are far too sophisticated for use in introductory organic chemistry. We will be happy to share our reactions with you, too, as I already did for SN2 and E2 reactions.





However, writing the reactions will be *far* too cumbersome if we have to write individual reactions for every intramolecular case of a reaction.





I don't think that it would be difficult for you to allow a reaction that requires two components to recognize both components in a single compound. Only a few new Chemical Terms would be needed to govern such a reaction: limiting the ring size, excluding certain linkers (e.g., those containing trans double bonds if the ring size is <9), perhaps a Baldwin's Rule or two.





So, if a student takes an alcohol and an alkyl halide and applies basic conditions, our program will apply the Reactor files that deprotonate the alcohol and allow it to react with the alkyl halide; and if the student has a free alcohol elsewhere in the alkyl halide, the intramolecular and self-condensation products will be calculated, as well. (Our external program can handle deciding which product is more likely.)





We can move forward on development pretty quickly if you can just make this one improvement for us. Please?

ChemAxon d76e6e95eb

01-02-2007 16:10:53

I will talk to the developers to reconsider our opinion in this issue. I will get back within few days.

ChemAxon d76e6e95eb

07-02-2007 10:17:35

Oh, I realized, that we misunderstood each other owing to an not too easy to access, and probably not well documented drawing feature of the sketcher. It is possible to draw an intramolecular reaction scheme without specifying the "linker chain" between the connecting functional groups (please see the attached Flash animation).





Draw the reaction as usual and then select the two reactants. If you press the "Reactants" button on the toolbar, they will be merged into one reaction component, meaning, that the two functional groups must be present on the same reactant. I hope, that this will make it possible, to specify your intramolecular reaction versions with not much efforts.





Please do not forget to add some functions to the Reactivity rule of the intramolecular version of your reactions to avoid generating geometrically strained or impossible products. Zsolt will enter an example solution for this soon.

User 870ab5b546

08-02-2007 15:11:40

Cool movie!





This feature solves the problem. Now we only need to write two reaction files, one intermolecular and one intramolecular, the latter being a simple modification of the former.





This feature will allow us to move forward on multistep synthesis questions. Thanks!

ChemAxon e08c317633

08-02-2007 18:16:02

Gyuri wrote:
Please do not forget to add some functions to the Reactivity rule of the intramolecular version of your reactions to avoid generating geometrically strained or impossible products. Zsolt will enter an example solution for this soon.
A very useful Chemical Terms function to avoid generating geometrically strained or impossible products is hasValidConformer(). You can add to reactivity rule
Code:
hasValidConformer(product(0))



to ensure that reaction is only performed if the first product has a valid conformation.





Example (intramolecular ester formation; reactivity rule only contains this: "hasValidConformer(product(0))"):





1. with active reactivity rule


Code:
$ react -r intramolecular_ester_formation.mrv reactants.mrv


O=C1CO1


O=C1CCO1


O=C1CCCO1


O=C1CCCCO1


O=C1CCCCCO1


O=C1CCCCCCO1








2. with ignored reactivity rule


Code:
$ react -n r -r intramolecular_ester_formation.mrv reactants.mrv


O=C1CO1


O=C1CCO1


O=C1CCCO1


O=C1CCCCO1


O=C1CCCCCO1


O=C1CCCCCCO1


O=C1OC2=CC=C1C=C2


O=C1OC2=CC3=C(C=C2)C=C1C=C3


O=C1OC2=CC3=C4C(=C2)C=C5C=C6C=C7C=CC8=CC1=CC9=C8C7=C%10C(C=C%11C=C(C=C3)C4=C5C%11=C6%10)=C9








When reactivity rule is ignored then three additional - invalid! - products are created.

User 870ab5b546

26-07-2007 00:45:02

Thanks for that suggestion. What parameter does hasValidConformer() actually calculate to determine whether a conformer is "valid"? I don't think that conformer validity can be described with a boolean; rather, it should be described with a parameter that reflects the strain energy.





I see in your example that three-membered lactones can form, but small cyclophanes cannot. What about trans-cycloheptenes? Or a cyclopropane fused to a cyclohexane with a trans ring fusion?

ChemAxon e08c317633

26-07-2007 09:47:40

bobgr wrote:
Thanks for that suggestion. What parameter does hasValidConformer() actually calculate to determine whether a conformer is "valid"? I don't think that conformer validity can be described with a boolean; rather, it should be described with a parameter that reflects the strain energy.
We have also a Chemical Terms function that returns Dreiding energy: dreidingEnergy(), you can use that. In fact hasValidConformer() function uses this parameter too to calculate the "validity" of a conformer.





Zsolt