编辑: 我不是阿L | 2019-07-02 |
for (int i=0;
iGetAtomicNum()) { case 1: switch (aptr->
GetIsotope()) { case 0: case 1: case 2: break;
default: return true;
Isomorphism counting ? Match counts are frequently used in filtering apps. ? A benchmark of match iteration performance is to count the isomorphisms of ferrocene (to itself). ? SMILES: C12C3[Fe]1456789(C2C4C53)C1C6C7C8C91 ? The correct answer is 200. ? OpenEye'
s OEChem v1.7 takes 3.461s ? A (Patsy) compiled C++ matcher using the same version of OEChem takes only 0.008s (400x). Match generators ? Almost all cheminformatics toolkits provide a mechanism for returning the set of matchings of a given query pattern against a target. ? Most such implementations are eager ;
determining all solutions in advance. ? A more efficient, but technically more challenging solution, is to provide a lazy iterator (called a generator in python) reducing both run-time and memory. Tripos Sybyl atom types # Carbon atom types [#6+] C.cat [c] C.ar [$(C#*),$(C(C.sp C=* C.sp2 [#6] C.sp3 #Oxygen atom types [$(OC=O),$(O=CO)] O.co2 O=* O.2 [#8] O.3 # Nitrogen atom types [nX2] N.ar [#7X4] N.4 NC=[O,S] N.am [NX2]=* N.2 [$(N=*),$(N*=*),$(Na),n] N.pl3 [#7] N.3 # Hydrogen atom type [#1] H Iupac suffix atom types ? OpenEye'
s Lexichem internally uses a system of ~1034 atom types for determining the principal suffix during IUPAC name generation. [CX3](=[OX1])-[OX1-] carboxylate [CX3](=[OX1])-[OHX1] carboxylic acid [CX3](=[OX1])-[OX2] carboxylic acid ester [CX3](=[OX1])-[NX3] amide [CX3](=[OX1])-[NX3]-[NX3] hydrazide [CX3H]=[OX1] aldehyde [CX3H0]=[OX1] ketone [OHX1]-[#6] alcohol Morgan matching ? An efficient way of matching multiple suitable acyclic patterns is to use a method much like Morgan'
s algorithm for canonical grap........