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

如何制作python有机化学逆合成发生器?,python,functional-programming,chemistry,Python,Functional Programming,Chemistry,我试图通过制作一个简单的程序来学习python,该程序生成一个典型的实践问题,这是有机化学学生在考试中经常遇到的问题:逆向合成问题 对于不熟悉这类问题的学生:向学生提供一系列化学反应的初始和最终种类,然后要求学生确定对初始反应物进行了哪些试剂/反应以获得最终产物 有时,你只得到最终产品,并要求列出合成所需的反应,给出一些参数(仅从含5个碳或更少的化合物开始,仅使用酒精等) 到目前为止,我已经做了一些研究,我认为RDkit w/Python是一个很好的起点。我的计划是使用SMILE格式读取分子(因

我试图通过制作一个简单的程序来学习python,该程序生成一个典型的实践问题,这是有机化学学生在考试中经常遇到的问题:逆向合成问题

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

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

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

但一旦我开始实际编写函数,我遇到了一些问题,首先为每个反应编写一个函数是非常乏味的,其次,微笑可以处理几乎所有的分子复杂性(立体化学、几何学等)某些分子有多种形式,我很难保持反应的特异性。第三,我正在使用“替换”方法来操纵微笑字符串,当我有区域特异性反应时,这会给我带来麻烦,我想让这些反应成为普遍现象

例如:Sn2反应与一级卤代烷反应良好,但并非所有反应都与三级卤代烷反应良好(空间位阻),我如何为该反应创建函数

另一个问题是,我希望反应用它们各自的试剂进行标记,因此我开始用使用的试剂来命名函数。但是,当存在可以采取多种不同形式的试剂(例如Gringard试剂)时,这就成了问题


我觉得有一种更好的、不那么重复和乏味的方法来解决这个问题。寻找一个正确的方向,这是一个非常雄心勃勃的任务,你不是第一个承担这项任务的人。突出的例子是

  • ,最初由哈佛大学E.J.Corey团队开发

  • ,由埃尔兰根大学的J.加斯泰格团队开发

  • >P>,在蒙特利尔大学S.hansSeaS中发展的


    这些项目经历了几十年的发展,但我没有任何关于其当前状态的可靠信息。

    如果您愿意寻找一个免费的或可能的商业软件(用python编写),它可以解决相同或相近的问题,了解其功能,解决问题的方法,如果可能,获取其源代码。我发现这在很多方面都有帮助。

    这是一个非常有趣的项目,但你的问题相当广泛。我不确定是否有人能给你很多帮助,除非你有一个特定的编程问题(除了——这是一个乏味且难以实现的问题)。你遇到困难的地方的例子可以是问题本身。“我认为这项工作可能比你预期的要困难一些。”ShihabDider礼貌的做法是,对那些给出答案的人投赞成票,即使他们的答案并不完全正确。你的工作确实很有趣。您是否已经使用Python构建了一些东西来开始工作?而且,我发现克劳斯的回答很有用,我没有问这个问题我向你和克劳斯致以最诚挚的歉意,这是我第一个关于SO的问题,我有点忘记了。哈哈。我已经投票了,并选择了他的答案作为最佳答案(我真的认为这是最好的)。在我更加熟悉编程和python并掌握构建此项目所需的技能的同时,此项目被搁置。