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

时间:2014-10-17 15:41:27

标签: python functional-programming chemistry

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

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

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

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

但是一旦我开始实际编写函数我遇到了一些问题,首先为每一个反应编写一个函数是非常繁琐的,其次SMILE可以处理几乎所有的分子复杂性(立体化学)对于某些分子,它有多种形式,而且我很难保持特定的反应。第三,我使用"替换"操纵SMILE字符串的方法,当我想要通用的区域特异性反应时,这会让我陷入困境

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

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

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

2 个答案:

答案 0 :(得分:5)

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

  1. LHASA,最初是在E.J.小组中开发的。哈佛大学的科里

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

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

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

答案 1 :(得分:1)

如果你想寻找一个免费的,或者如果可能的话,你可以寻找一个商业软件(用python编写)来解决相同的问题或接近它的问题,学习它的功能,解决问题的方法,如果可能的话,获得它源代码。我觉得这在很多方面都很有帮助。