用户工具

站点工具

本页面的其他翻译:
  • zh

adf:reactmap

AMS软件:确定化学反应中反应物和产物之间的最佳原子映射

功能简介

ReacMap的原子映射功能,是将反应物中的每个原子与产物中的原子一一对应,即回答:反应物中的每个原子最终在产物中的位置如何?ReactMap中的“最佳原子映射”,是指所需键变化(反应物中的键断裂和产物中的键形成)数量最少的映射方案。

例如上图,水解反应的最佳原子映射:(请注意,甲基组被映射为一个单元以降低图形复杂性),红色键表示反应物中所需的键断裂,绿色键表示产物中所需的键形成。2 个键形成,2 个键断裂,因此此映射的“成本”为 4。

用法

  1. 脚本中包含所有功能,然后一次性运行脚本,得到输出:AMSjobs 进入Python脚本所在文件夹 → Help → Command-line → 输入sh回车 → amspython *.py,其中*表示Python脚本的名字。例:下载此脚本解压后,如所说方式去运行。
  2. 通过交互的方式运行:AMSjobs(因为没有脚本,所以无所谓在什么文件夹) → Help → Command-line → 输入sh回车 → 输入amsipython回车,进入交互模式,以[1]作为行首,Python语句可以一行一行的输入执行,例如:

这种方式每输入一个命令就回车一次,行首的编号就增大1。实际上就是把方式1中的内容,一行一行的运行。脚本的理解如下:

  • In [1]加载AMS中ReacMap相关的库函数,这个每次打开交互方式的时候,都需要,关闭前,都可以不用再输入这个了
  • In [2]是否使用“启发式”功能,“启发式”是一个子模块,用启发式技术生成映射问题的上界和下界,详细介绍参考链接
  • In [3]用SMILES定义反应物,多种反应物之间用.隔开
  • In [4]用SMILES定义产物,多种反应物之间用.隔开
  • In [5]定义反应,即告诉程序,反应物是哪个变量定义的,产物是哪个变量定义的,反应的名字叫什么(这个可以随意定义)?
  • In [6]个命令是对该反应进行分析,信息存储在内存中暂不输出。有点这种报错信息,可以忽略掉
  • In [7]则是在屏幕打印“Mapping cost:”,后面跟reaction.cost,即前面说的“成本”
  • In [8]这三行是一个整体,因此敲完第一行之后,Ctrl Enter键换行继续输入,输入完毕后Enter键运行。功能是:先打印“Atom map”,然后逐个打印所有原子对应关系
  • In [9]换了一种打印格式,打印信息如下图所示:

这时候大家可能有个疑问,反应物分子中,每个编号对应什么原子?产物分子中,每个编号对应什么原子?那么我们可以接下来执行命令:

  • In [9]reaction.output_image(“example”),运行完毕,命令行所处的文件夹内将生成两个svg文件:

可以用浏览器打开这两个文件,分别是反应物原子编号情况和产物原子编号情况。反应物:

产物:

更多灵活的使用、高级功能

1,一次性分析多个反应

import scm.reactmap as rm

# we'll keep a list of all reactions we want to map
# and then pass this list to rm.Map
reactions = []

reactant  = rm.Molecule(smiles="CCC[Br].[OH1-]")
product   = rm.Molecule(smiles="[Br-].CCCO")
reactions.append( rm.Reaction(reactant=reactant, product=product, name="SN2") )

reactant  = rm.Molecule(atoms=['H','O','O','H'], bonds=[(0,1),(1,2),(2,3)])
product   = rm.Molecule(atoms=['H','O','O','H'], bonds=[(0,1),(2,3)])
reactions.append( rm.Reaction(reactant = reactant, product = product, name = "homolytic cleavage") )

reactant  = rm.Molecule(smiles='C=C.[H][H]')
product   = rm.Molecule(smiles='CC')
reactions.append( rm.Reaction(reactant = reactant, product = product, name = "hydrogenation") )

rm.Map(reactions)
for r in reactions:
    print("Reaction {} had a cost of {}".format(r.name,r.cost))

这里定义了3个反应,然后分别打印三个反应的“成本”。

2,用户可以自定义哪些原子不参与反应

3,定义哪些键是活性的

4,各种变量的子变量

adf/reactmap.txt · 最后更改: 2024/06/18 17:04 由 liu.jun

© 2014-2022 费米科技(京ICP备14023855号