ApplyReaction[rxn,mols]
将模式反应 rxn 应用于分子列表 mols,返回产物的单个列表.
ApplyReaction[rxn,mols,n]
返回产物的 n 个列表.
ApplyReaction[rxn,mols,{map1,…}]
返回一组产物,使用 mapi 将第 i 个分子中的原子映射到第 i 个反应物.
ApplyReaction[rxn]
表示 ApplyReaction 的运算符形式,可应用于分子列表.
ApplyReaction
ApplyReaction[rxn,mols]
将模式反应 rxn 应用于分子列表 mols,返回产物的单个列表.
ApplyReaction[rxn,mols,n]
返回产物的 n 个列表.
ApplyReaction[rxn,mols,{map1,…}]
返回一组产物,使用 mapi 将第 i 个分子中的原子映射到第 i 个反应物.
ApplyReaction[rxn]
表示 ApplyReaction 的运算符形式,可应用于分子列表.
更多信息和选项
- ApplyReaction 通过查找分子列表中 PatternReaction 中存在的反应物模式的出现并应用转换来工作.
- 模式匹配按顺序进行; 在第一个输入 Molecule 中搜索模式反应中的第一个 MoleculePattern.
- ApplyReaction 具有以下选项:
-
IncludeHydrogens Automatic 是否应在模式匹配中包含氢 - 如果被提供,mapi 应该是给定反应物模式和分子之间的原子指标的关联.
范例
打开所有单元 关闭所有单元基本范例 (3)
ApplyReaction[[image], {Molecule["water"], Molecule["water"]}]ApplyReaction[[image],
{Molecule["alanine"], Molecule["histidine"]}]将反应物反转,将组氨酸作为酸,丙氨酸作为碱,应用相同的反应:
ApplyReaction[[image],
{Molecule["histidine"], Molecule["alanine"]}]ApplyReaction[PatternReaction[{MoleculePattern[{"C", "C"}, {Bond[{1, 2}, "Double"]}], MoleculePattern[{"O"}, {}]} -> {MoleculePattern[{"C", "C", "O"}, {Bond[{1, 2}, "Single"], Bond[{2, 3}, "Single"]}]}, {{1, 1} -> {1, 1}, {1, 2} -> {1, 2}, {2, 1} -> {1, 3}}],
{Entity["Chemical", "Propylene"], Entity["Chemical", "Water"]}, All]查找产物匹配 "Chemical" 的实体:
% /. m_Molecule :> ToEntity[m]范围 (4)
从反应 SMARTS 字符串创建狄尔斯–阿尔德反应的模式反应:
dielsAlder = PatternReaction["[C:1]=[C:2][C:3]=[C:4].[C:5]=[C:6]>>[C:1]1[C:2]=[C:3][C:4][C:5][C:6]1"]reactantMols = Molecule /@ {"(EZ)-1,3-Pentadiene", "prop-1-ene"}ApplyReaction[%%, %, All]ApplyReaction 会删除重复的结果,但有时出于组合的目的,你可能需要反应物模式和输入分子之间所有可能的匹配。这可以通过首先使用 FindMoleculeSubstructure 和非默认选项 OverlapsTrue 来获得原子映射:
mappings = Tuples[MapThread[FindMoleculeSubstructure[#1, #2, All, Overlaps -> True]&, {reactantMols, dielsAlder["Reactants"]}]]使用这些映射作为 ApplyReaction 的第三个参数:
ApplyReaction[dielsAlder, reactantMols, #]& /@ mappingsDeleteDuplicates[Flatten[%], MoleculeEquivalentQ]用 ApplyReaction 的算符形式使氯自由基与甲烷发生反应:
ApplyReaction[[image]][
{Molecule["methane"], Molecule["[Cl]"]}]estInter = PatternReaction[{MoleculePattern[{Atom["C"], Atom["O"], Atom["O"]}, {Bond[{1, 2}, "Double"], Bond[{1, 3}, "Single"]}], MoleculePattern[{Atom["C"], Atom["O"]}, {Bond[{1, 2}, "Single"]}]} -> {MoleculePattern[{Atom["C"], Atom["O"], Atom["O"], Atom["C"]}, {Bond[{1, 2}, "Double"], Bond[{1, 3}, "Single"], Bond[{3, 4}, "Single"]}], MoleculePattern[{Atom["O"]}, {}]}, {{1, 1} -> {1, 1}, {1, 2} -> {1, 2}, {2, 1} -> {1, 4}, {2, 2} -> {1, 3}, {1, 3} -> {2, 1}}]ApplyReaction[estInter, Molecule /@ {"5-hydroxypentanoic acid", "ethanol"}]ApplyReaction[estInter, {Molecule[{"C", "C", "O", "O", "H", "H", "H", "H"}, {Bond[{1, 2}, "Single"], Bond[{2, 3}, "Double"],
Bond[{2, 4}, "Single"], Bond[{1, 5}, "Single"], Bond[{1, 6}, "Single"], Bond[{1, 7}, "Single"],
Bond[{4, 8}, "Single"]}, {}], Molecule[{"C", "C", Atom["O", "MassNumber" -> 18], "H", "H", "H", "H", "H", "H"},
{Bond[{1, 2}, "Single"], Bond[{2, 3}, "Single"], Bond[{1, 4}, "Single"], Bond[{1, 5}, "Single"],
Bond[{1, 6}, "Single"], Bond[{2, 7}, "Single"], Bond[{2, 8}, "Single"], Bond[{3, 9}, "Single"]},
{}]}]estIntra = PatternReaction[{MoleculePattern[{Atom["C"], Atom["O"], Atom["O"], Atom["C"], Atom["O"]}, {Bond[{1, 2}, "Double"], Bond[{1, 3}, "Single"], Bond[{4, 5}, "Single"]}]} -> {MoleculePattern[{Atom["C"], Atom["O"], Atom["O"], Atom["C"]}, {Bond[{1, 2}, "Double"], Bond[{1, 3}, "Single"], Bond[{3, 4}, "Single"]}], MoleculePattern[{Atom["O"]}, {}]}, {{1, 1} -> {1, 1}, {1, 2} -> {1, 2}, {1, 4} -> {1, 4}, {1, 5} -> {1, 3}, {1, 3} -> {2, 1}}]ApplyReaction[estIntra, Molecule /@ {"5-hydroxypentanoic acid"}]ApplyReaction[estIntra, Molecule /@ {"mevalonic acid"}, All]使用原子映射可将结果限制在具有六元环的产物(甲羟戊酸内酯)中:
ApplyReaction[estIntra, {Molecule[{"C", "C", "O", "C", "C", "O", "C", "C", "O", "O", "H", "H", "H", "H", "H", "H", "H", "H",
"H", "H", "H", "H"}, {Bond[{1, 2}, "Single"], Bond[{2, 3}, "Single"], Bond[{2, 4}, "Single"],
Bond[{4, 5}, "Single"], Bond[{5, 6}, "Single"], ... "Single"], Bond[{6, 19}, "Single"], Bond[{7, 20}, "Single"],
Bond[{7, 21}, "Single"], Bond[{10, 22}, "Single"]},
{StereochemistryElements -> {Association["StereoType" -> "Tetrahedral", "ChiralCenter" -> 2,
"Direction" -> "Clockwise"]}}]}, {<|1 -> 8, 2 -> 9, 3 -> 10, 4 -> 5, 5 -> 6|>}]选项 (1)
IncludeHydrogens (1)
默认情况下,仅当模式包含显式氢时,氢原子才会包含在模式匹配中:
ApplyReaction[PatternReaction[{MoleculePattern[{"C", _}, {Bond[{1, 2}, "Single"]}]} -> {MoleculePattern[{Atom["C", "FormalCharge" -> -1]}], MoleculePattern[{Atom[_, "FormalCharge" -> 1]}]}, {{1, 1} -> {1, 1}, {1, 2} -> {2, 1}}], Molecule["ethane"], All]使用 IncludeHydrogensAll 确保 Atom[_] 匹配氢原子:
ApplyReaction[PatternReaction[{MoleculePattern[{"C", _}, {Bond[{1, 2}, "Single"]}]} -> {MoleculePattern[{Atom["C", "FormalCharge" -> -1]}], MoleculePattern[{Atom[_, "FormalCharge" -> 1]}]}, {{1, 1} -> {1, 1}, {1, 2} -> {2, 1}}], Molecule["ethane"], All, IncludeHydrogens -> All]应用 (3)
acetylation = PatternReaction["[OX2H:1][$(cc),$([CX4]):2]>>[*:2][OX2:1][CX3](=[O])[CX4H3]"]ApplyReaction[acetylation, {Entity["Chemical", "SalicylicAcid"]}]NestWhile[ApplyReaction[acetylation, #]&, {Entity["Chemical", "Sucrose"]}, (# =!= {})&, 1, ∞, -1]Fold[ReverseApplied[ApplyReaction],
{Entity["Chemical", "PhthalicDicarboxaldehyde"]},
{(* Cannizzaro *)PatternReaction["([CX3H1:1]=[O:2].[CX3H1:3]=[O:4])>>([C:1](=[O:2])O.[C:3][O:4])"],
(* lactone *)PatternReaction["([CX3:1](=[O:2])O.[CX4:3][O:4])>>([C:1](=[O:2])[O:4][CX4:3])"]}]ToEntity /@ %makePeptide = PatternReaction["[CX3;$([CX3][CX4][NX3]):1](=[O:2])O.[NX3;!$(NC=O);$(NCC=O):3]>>[C:1](=[O:2])[N:3]"]aminoAcids = Molecule /@ Entity["BioSequenceType", "Peptide"][EntityProperty["BioSequenceType", "AlphabetRules"]];seq = "KGDEESLA";peptide = Fold[First[ApplyReaction[makePeptide, {#1, #2}]]&, Lookup[aminoAcids, Characters[seq]]]结果等同于从 BioSequence 获得的结果:
MoleculeMatchQ[peptide, Molecule[BioSequence["Peptide", "KGDEESLA"]]]属性和关系 (1)
ApplyReaction 的结果取决于提供反应物分子的顺序:
claisen = PatternReaction["[C:1](=[O:2])[O][C].[CX4:3]([H])[C:4](=[O:5])[O:6][C:7]>>[C:1](=[O:2])[CX4:3][C:4](=[O:5])[O:6][C:7]"]ApplyReaction[claisen, Molecule /@ {"ethyl acetate", "ethyl propionate"}]ApplyReaction[claisen, Molecule /@ {"ethyl propionate", "ethyl acetate"}]巧妙范例 (3)
PatternReaction["[cH:1][c:2][c:3][c:4]-[NX3:5][NX3:6]-[c:7][c:8][c:9][cH:10]>>[NX3:5][c:4][c:3][c:2][c:1]-[c:10][c:9][c:8][c:7]-[NX3:6]"]ApplyReaction[%, {Entity["Chemical", "Hydrazobenzene"]}]ToEntity[First[%]]PatternReaction["[NX3;H2,H1;!$(NC=O):1].[CX3:2](=O).[CX-:3]#[NX2+:4]>>[NX3:1][CX4:2][CX3+0:3](=O)[NX3H1+0:4]"]ApplyReaction[%, #]& /@ {{Molecule["diethylamine"], Molecule["formaldehyde"], Molecule[{"C", "C", "C", "C", "C", "C", "C", "C", Atom["N", "FormalCharge" -> 1],
Atom["C", "FormalCharge" -> -1]}, {Bond[{1, 2}, "Aromatic"], Bond[{2, 3}, "Aromatic"],
Bond[{3, 4}, "Aromatic"], Bond[{4, 5}, "Aromatic"], Bond[{5, 6}, "Aromati ... 499999999999995},
{-1.4722431864335461, 0.1500000000000006}, {-0.6062177826491074, 1.6500000000000004},
{1.1258330249197694, -1.3500000000000005}, {1.1258330249197717, 0.6499999999999998},
{1.9918584287042105, 1.1499999999999992}}}]}, {Molecule["propylamine"], Molecule["acetaldehyde"], Molecule[{"C", "C", "C", "C", "C", "C", "C", Atom["N", "FormalCharge" -> 1],
Atom["C", "FormalCharge" -> -1]}, {Bond[{1, 2}, "Aromatic"], Bond[{2, 3}, "Aromatic"],
Bond[{3, 4}, "Aromatic"], Bond[{4, 5}, "Aromatic"], Bond[{5, 6}, "Aromatic"], ... 177826491076, -1.35}, {-1.4722431864335463, -0.8499999999999995},
{-1.4722431864335461, 0.1500000000000006}, {1.1258330249197694, -1.3500000000000005},
{1.1258330249197717, 0.6499999999999998}, {1.9918584287042105, 1.1499999999999992}}}]}}% /. m_Molecule :> ToEntity[m]glycosidic = PatternReaction["[$([OX2H1][CX4][OX2]):1].[OX2H1:3][C:2]>>[O:1][C:2].[O:3]"]{gluα, gluβ} = {Molecule["alpha-D-glucopyranose"], Molecule["beta-D-glucopyranose"]}DeleteDuplicates[Flatten[Table[ApplyReaction[glycosidic, pair, All][[All, 1]], {pair, Tuples[{gluα, gluβ}, 2]}]], MoleculeMatchQ]fruβ = Molecule["beta-D-fructofuranose"]First[ApplyReaction[glycosidic, {gluα, fruβ}, {<|1 -> 6|>, <|2 -> 5, 1 -> 6|>}]]相关指南
-
▪
- 分子结构与计算
文本
Wolfram Research (2022),ApplyReaction,Wolfram 语言函数,https://reference.wolfram.com/language/ref/ApplyReaction.html.
CMS
Wolfram 语言. 2022. "ApplyReaction." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/ApplyReaction.html.
APA
Wolfram 语言. (2022). ApplyReaction. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/ApplyReaction.html 年
BibTeX
@misc{reference.wolfram_2026_applyreaction, author="Wolfram Research", title="{ApplyReaction}", year="2022", howpublished="\url{https://reference.wolfram.com/language/ref/ApplyReaction.html}", note=[Accessed: 15-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_applyreaction, organization={Wolfram Research}, title={ApplyReaction}, year={2022}, url={https://reference.wolfram.com/language/ref/ApplyReaction.html}, note=[Accessed: 15-August-2026]}