如何制作python有机化学复合合成发生器?

Did*_*der 3 python functional-programming chemistry

我正在尝试通过制作一个简单的程序来学习python,这个程序产生一种典型的练习问题,有机化学学生通常会在考试中面对:复古综合问题.

对于那些不熟悉这类问题的人:给予学生一系列化学反应的初始和最终种类,然后要求确定对初始反应物进行了哪些试剂/反应以获得最终产物.

有时您只获得最终产品并要求列出合成所需的反应给定一些参数(仅从含有5个碳或更少碳的化合物开始,仅使用酒精等)

到目前为止,我已经做了一些研究,我认为RDkit与Python是一个很好的起点.我的计划是使用SMILE格式读取分子(因为我可以像对待字符串一样操作它),然后定义每个反应的函数,最后我需要一个化学物种数据库,程序可以从中随机选择物种(对于问题中的初始和最终物种).程序然后从数据库中选择一个随机物种,对它应用一系列反应(3-5,由用户指定)然后显示最终产品.然后用户自己解决问题,然后程序显示它所采用的路径(使用中间体的图像并打印用于获得它们的试剂).简单.原则上.

但是一旦我开始实际编写函数我遇到了一些问题,首先为每一个反应编写一个函数是非常繁琐的,其次SMILE可以处理几乎所有的分子复杂性(立体化学,几何,它对某些分子有多种形式,我无法保持特定的反应.第三,我正在使用"替换"方法来操纵SMILE字符串,这让我遇到了麻烦,因为我想要通用的区域特异性反应

例如:Sn2反应与伯烷基卤反应良好,但不是全部与叔烷基反应(空间位阻),我如何为这种反应创造一个函数?

另一个问题是,我希望反应被各自的试剂标记,因此我采用所用试剂命名功能.但是,当存在可以采用许多不同形式的试剂时(例如Gringard试剂),这成为问题.

我觉得有一种更好,更少重复和乏味的方法来解决这个问题.寻找正确方向的推动

Kla*_*cha 5

这是一项非常雄心勃勃的任务,你并不是第一个承担这项任务的人.突出的例子是/

  1. LHASA最初是在哈佛大学的EJ Corey小组中开发的

  2. WODCA,由埃尔兰根大学的J. Gasteiger小组开发

  3. CHIRON,由蒙特利尔大学的S. Hanessian小组开发

这些项目已经看到一些人几十年的发展,但我没有关于他们当前状态的任何可靠信息.