FindMoleculeSubstructure[mol,patt]
求 mol 中原子索引和 mol 中出现的所有 patt 之间的映射.
FindMoleculeSubstructure[mol,patt,All]
找出 mol 中出现的所有 patt,并返回所有的映射.
FindMoleculeSubstructure[mol,patt,n]
给出最多 n 个映射.
FindMoleculeSubstructure
FindMoleculeSubstructure[mol,patt]
求 mol 中原子索引和 mol 中出现的所有 patt 之间的映射.
FindMoleculeSubstructure[mol,patt,All]
找出 mol 中出现的所有 patt,并返回所有的映射.
FindMoleculeSubstructure[mol,patt,n]
给出最多 n 个映射.
更多信息和选项
- FindMoleculeSubstructure 返回关联 Association[p1->m1,p2->m2,…] 列表,其中 pi 和 mi 分别为 patt 和 mol 里面的原子索引.
- 默认情况下,会对子结构匹配进行剪除以去掉与同一组原子的多个匹配. 使用选项 Overlaps->True 可禁用此功能.
- FindMoleculeSubstructure 接受以下选项:
-
IgnoreStereochemistry False 是否忽略立体化学 IncludeHydrogens Automatic 是否包含氢原子 Overlaps False 是否包含重叠的匹配
范例
打开所有单元 关闭所有单元基本范例 (2)
FindMoleculeSubstructure[Molecule[{"C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C",
"C", "C", "C", "C"}, {Bond[{1, 2}, "Single"], Bond[{2, 3}, "Single"], Bond[{3, 4}, "Single"],
Bond[{4, 5}, "Aromatic"], Bond[{5, 6}, "Aromatic ... }, "Aromatic"],
Bond[{16, 17}, "Aromatic"], Bond[{17, 18}, "Aromatic"], Bond[{18, 19}, "Aromatic"],
Bond[{19, 20}, "Aromatic"], Bond[{14, 21}, "Single"], Bond[{21, 22}, "Single"],
Bond[{9, 4}, "Aromatic"], Bond[{20, 15}, "Aromatic"]}, {}], MoleculePattern["c1ccccc1"]]FindMoleculeSubstructure[Molecule[{"C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "O", "C", "C", "C", "C", "C", "C",
"C", "O", "C", "C", "C", "O", "H", "H", "H", "H", "H", "H", "H", "H", "H", "H", "H", "H", "H",
"H", "H", "H", "H", "H", "H", "H", "H", "H", "H ... "Direction" -> "Counterclockwise"], Association["StereoType" -> "Tetrahedral",
"ChiralCenter" -> 16, "Direction" -> "Counterclockwise"],
Association["StereoType" -> "Tetrahedral", "ChiralCenter" -> 19, "Direction" -> "Clockwise"]}}], MoleculePattern[{"C", "O", "H"}, {Bond[{1, 2}], Bond[{2, 3}]}], All]范围 (4)
FindMoleculeSubstructure[Molecule[{"O", "H", "H"}, {Bond[{1, 2}, "Single"], Bond[{1, 3}, "Single"]}, {}], "O"]FindMoleculeSubstructure[Molecule[{"O", "H", "H"}, {Bond[{1, 2}, "Single"], Bond[{1, 3}, "Single"]}, {}], "H", All]m = Molecule[{Atom["C"], Atom["C", "MassNumber" -> 14], Atom["O"], Atom["O", "FormalCharge" -> -1],
Atom["H"], Atom["H"], Atom["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"]}];FindMoleculeSubstructure[m, Atom["O", "FormalCharge" -> -1]]FindMoleculeSubstructure[m, Atom["C", "MassNumber" -> 14]]用 Atom 指定更广义的模式. 找出所有带电原子:
m = Molecule[Entity["Chemical", "Methyl4Nitrobutyrate"]];FindMoleculeSubstructure[m, Atom["FormalCharge" -> Except[0]], All]FindMoleculeSubstructure[m, Atom["FormalCharge" -> GreaterThan[0]], All]FindMoleculeSubstructure[m, Atom["FormalCharge" -> LessEqualThan[-1]], All]用 Bond 定义双键模式:
m = Molecule["2-[[(1E,4E)-1,5-bis(5-nitrofuran-2-yl)penta-1,4-dien-3-ylidene]amino]guanidine"]FindMoleculeSubstructure[m, Bond[_, "Double"], All]FindMoleculeSubstructure[m, Bond[{"N", _}, "Double"], All]FindMoleculeSubstructure[m, Bond[{Atom["FormalCharge" -> Except[0]], _}, "Double"], All]选项 (3)
IgnoreStereochemistry (1)
FindMoleculeSubstructure[Molecule["l-alanine"],
MoleculePattern["C[C@@H](N)C(=O)O"]]使用 IgnoreStereochemistryTrue 以获得正匹配:
FindMoleculeSubstructure[Molecule["l-alanine"],
MoleculePattern["C[C@@H](N)C(=O)O"], IgnoreStereochemistry -> True]IncludeHydrogens (1)
默认情况下,除非模式包含明确的氢原子,否则将使用分子的隐氢图进行子结构匹配:
FindMoleculeSubstructure[Molecule[{"C", "C", "C", "Cl"}, {Bond[{1, 2}, "Single"], Bond[{2, 3}, "Single"],
Bond[{2, 4}, "Single"]}, {}], Bond[{"C", "H"}, "Single"], All]对于更复杂的模式,某些与氢原子的匹配会被忽略. 在下面的示例中,模式为碳原子与氢原子或氯原子结合,但只能找到 C-Cl 键:
FindMoleculeSubstructure[Molecule[{"C", "C", "C", "Cl"}, {Bond[{1, 2}, "Single"], Bond[{2, 3}, "Single"],
Bond[{2, 4}, "Single"]}, {}], Bond[{"C", Atom["AtomicNumber" -> (1 | 17)]}, "Single"], All]使用选项 IncludeHydrogensTrue 以确保氢原子在模式匹配中被视为显式:
FindMoleculeSubstructure[Molecule[{"C", "C", "C", "Cl"}, {Bond[{1, 2}, "Single"], Bond[{2, 3}, "Single"],
Bond[{2, 4}, "Single"]}, {}], Bond[{"C", Atom["AtomicNumber" -> (1 | 17)]}, "Single"], All, IncludeHydrogens -> True]Overlaps (1)
应用 (1)
nterminus[mol_] := Module[
{patt, atomsOfInterest = {1, 3}}, patt = MoleculePattern[{Atom["N", "HydrogenCount" -> 2], Atom["C", "OrbitalHybridization" -> "SP3"],
Atom["C"], Atom["O"], Atom["O" | "N"]}, {Bond[{1, 2}, "Single"], Bond[{2, 3}, "Single"],
Bond[{3, 4}, "Double"], Bond[{3, 5}, "Single"]}];
DeleteMissing[AssociationThread[{"amine", "carbonyl"}, Lookup[First[FindMoleculeSubstructure[mol, patt], {}], atomsOfInterest]]]
]peptide = BioSequence["Peptide", "VGSA"];
nterminus[peptide]MoleculePlot[peptide, %]相关指南
文本
Wolfram Research (2019),FindMoleculeSubstructure,Wolfram 语言函数,https://reference.wolfram.com/language/ref/FindMoleculeSubstructure.html.
CMS
Wolfram 语言. 2019. "FindMoleculeSubstructure." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/FindMoleculeSubstructure.html.
APA
Wolfram 语言. (2019). FindMoleculeSubstructure. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/FindMoleculeSubstructure.html 年
BibTeX
@misc{reference.wolfram_2026_findmoleculesubstructure, author="Wolfram Research", title="{FindMoleculeSubstructure}", year="2019", howpublished="\url{https://reference.wolfram.com/language/ref/FindMoleculeSubstructure.html}", note=[Accessed: 12-October-2026]}
BibLaTeX
@online{reference.wolfram_2026_findmoleculesubstructure, organization={Wolfram Research}, title={FindMoleculeSubstructure}, year={2019}, url={https://reference.wolfram.com/language/ref/FindMoleculeSubstructure.html}, note=[Accessed: 12-October-2026]}