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にある反応物パターンの出現を求める,その変換を適用することで動作する.
- パターンマッチングが順に行われ,パターン反応内の最初のMoleculePatternが最初の入力Moleculeについて検索される.
- 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文字列の反応からDiels–Alder反応についてのパターン反応を作る:
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の第3引数として使う:
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]一連の反応を適用してo-フタルアルデヒドからフタリドを合成する:
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[%]]ウギ反応は多成分反応の典型的な例である.以下はその3コンポーネント版である:
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"]}グルコースの2つのアノマーから作ることができるすべての可能な二糖類を構築する:
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 Language. 2022. "ApplyReaction." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/ApplyReaction.html.
APA
Wolfram Language. (2022). ApplyReaction. Wolfram Language & System Documentation Center. Retrieved from 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: 04-September-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: 04-September-2026]}