Files
rdkit/Code/GraphMol/StructChecker/AugmentedAtomData.cpp
Brian Kelley 8609cd4883 Add StructChecker functionality
* StructChecker changes. Initial commit. First implementation. Added some tests.

* StructChecker: add  GoodAtoms and AcidicAtoms. new updates

* StructChecker: add new tests

* StructChecker: added TransformAugmentedAtoms()

* StructCheck: add structCheck to GraphMol. Fix compilation errors.

* StructChecker: add stereo verification and some utilities.

* StructChecker: function FixDubious3DMolecule was added

* StructChecker: checkStereo added. done with stereo.

* StructChecker: add StripSmallFragments()

* StructChecker: add AtomClash() function. Some cosmetic + tests

* StructChecker: checkAtoms() was started

* StructChecker: checkAtoms is ready

* StructChecker: user RingInfo from RDkit. Start regarge

* StructChecker: ReCharge molecule method prototype

* StructChecker: updates for ReCharge. Almost finished

* StructChecker: all ReCharge is done except external data tables loading

* StructChecker: add path tables into API. ReCharge completed

* Adds augmented atom data

Signed-off-by: Brian Kelley <brian.kelley@novartis.com>

* Removes extra files

Signed-off-by: Brian Kelley <brian.kelley@novartis.com>

* Adds path to test data via RDBASE environment

Signed-off-by: Brian Kelley <brian.kelley@novartis.com>

* Revert "Struct checker apr15"

* StructChecker: add missing tautomer tests

* Updates test to use RDBASE

* Adds initialization of data from data section

* Adds Python API and tests

* Fixes namespace for enum

* StructChecker: update/imporve strip small fragments

* StructChecker: fix acidic atoms (but logic does not work)

* StructChecker: fix match issue for CheckAtoms

* Adds macro guards

* Adds loading API and proper constructor

* Fixes tests, adds stereo test

* Fixes crash bug, matches[0] was being accessed from an empty match vector

* Reverts crash fix - conflicts with previous

* Adds the rest of the structure checker options

* StructChecker: fix atom matching for aromatic rings

* StructChecker: add tautomers checks. Update some tests

* StructChecker: stereo fixes. Add some tests

* StructChecker: fix check atoms. Start ligand symbol list

* StructChecker: fix some check atoms validation. Add Tranform to query lists. Start correct loading augmented atoms

* update

* another set of fixes

* StructChecker: fix loadDefaultAugmentedAtoms. Some changes in CheckAtom + tests + debug conditional breakpoints (TEMP operators)

* StructChecker: rewrited RecMatch() to sequential. Changed bond matching algorithm. small bug fixes

* Adds better logging of mismatched atoms

* Removes duplicated negative charge

* Fixes charges

* Adds nitro group test

* StructChecker: add better logging

* remove double logging

* Reformats code using RDKit's clang-format style

* StructChecker: Fix charge reformat using RDKit format.

* StructChecker: compilation restore after merge

* restore bond matching

* Removes the same fragments that strucheck does in case of ties

* Don't resanitize - this adds aromaticity which mucks things up

* Adds empty molecule checks

* Fixes atom clashes.

* Removes debug printing

* Removes debug logging info

* First pass at stereo fixes

* Fixes off by one error for dubious stereo fix

* Fixes more off by one errors

* Fixes more off by one errors

* More off by one fixes.

* Another off by one

* Fixes chiral flag set in molfile check

* Copies chiral flag over to largest fragment if necessary

* Poor man’s parity check.

* Find unspecified chiral centers ala Avalon.

* StructChecker: fix recursive match. Fix transformations

* StructChecker: fix transformation for atom list (using query atoms)

* Fixes checks && to &

* StructChecker: fix carboxylic acids tranform issue. Atom list is changed only if different

* StructChecker: documentation was updated

* Fixes snprintf and silences some warnings

* Adds Get/Set StructCheckerOptions

* Adds default AugmentedAtomTransforms
2016-10-24 08:00:07 +02:00

1245 lines
61 KiB
C++

// Copyright (c) 2016, Novartis Institutes for BioMedical Research Inc.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following
// disclaimer in the documentation and/or other materials provided
// with the distribution.
// * Neither the name of Novartis Institutes for BioMedical Research Inc.
// nor the names of its contributors may be used to endorse or promote
// products derived from this software without specific prior written
// permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
#include "StructChecker.h"
namespace RDKit {
namespace StructureCheck {
struct AugmentedAtom_t {
const char *dummy; // atomSymbol;
const char *str; // atomSymbol; shortName;
int charge;
RadicalType radical;
AATopology topology;
};
static const AugmentedAtom_t DefaultGoodAtoms[] = {
{"Li,Na,K,Rb,Cs,Fr,Tl", "Li,Na,K,Rb,Cs,Fr,Tl+1", 0, RT_NONE, TP_NONE},
{"Be,Mg,Ca,Sr,Ba,Ra,Sn,Pb", "Be,Mg,Ca,Sr,Ba,Ra,Sn,Pb+2", 1, RT_NONE,
TP_NONE},
{"Al,Ga,In,Tl,Sb,Bi,Fe", "Al,Ga,In,Tl,Sb,Bi,Fe+3", 2, RT_NONE, TP_NONE},
{"B,Si,Ge,N,O,S,F,Cl,Br,I", "B,Si,Ge,N,O,S,F,Cl,Br,I", 0, RT_NONE, TP_NONE},
{"Cu,Ag,Au,Zn,Cd,Hg", "Cu,Ag,Au,Zn,Cd,Hg", 0, RT_NONE, TP_NONE},
{"Cu,Ag,Au,Fe,Ru", "Cu,Ag,Au,Fe,Ru+1", 0, RT_NONE, TP_NONE},
{"Cu,Zn,Cd,Hg,Fe", "Cu,Zn,Cd,Hg,Fe+2", 1, RT_NONE, TP_NONE},
{"Fe,Co,Ni,Ru,Rh,Pd,Os,Ir,Pt,Ti,Zr,Hf,V,Nb,Ta,Cr,Mo,W,Mn,Re",
"Fe,Co,Ni,Ru,Rh,Pd,Os,Ir,Pt,Ti,Zr,Hf,V,Nb,Ta,Cr,Mo,W,Mn,Re", 0, RT_NONE,
TP_NONE},
{"Au,Sc,Y,La,Ce,Pr,Nd,Pm,Sm,Eu,Gd,Tb,Dy,Ho,Er,Tm,Yb,Lu",
"Au,Sc,Y,La,Ce,Pr,Nd,Pm,Sm,Eu,Gd,Tb,Dy,Ho,Er,Tm,Yb,Lu+3", 2, RT_NONE,
TP_NONE},
{"B", "B-1", 0, RT_NONE, TP_NONE},
{"Ar,He,C,P,Sb", "Ar,He,C,P,Sb", 0, RT_NONE, TP_NONE},
{"B", "B(-C,N)", 0, RT_NONE, TP_NONE},
{"C", "C(-B,C,Si,Ge,Sn,Pb,N,P,As,O,S,Se,Te,F,Cl,Br,I)", 0, RT_NONE,
TP_NONE},
{"C", "C(-N,O,P,S,I+1)", 0, RT_NONE, TP_NONE},
{"C", "C(-B,C-1)", 0, RT_NONE, TP_NONE},
{"C", "C(=C,N,P,O,S)", 0, RT_NONE, TP_NONE},
{"C", "C(=N+1)", 0, RT_NONE, TP_NONE},
{"C,N", "C,N(#C,N)", 0, RT_NONE, TP_NONE},
{"C,B,F,Cl,Br,I", "C,B,F,Cl,Br,I(-C.)", 0, RT_NONE, TP_NONE},
{"C,B", "C,B-1(-N+1)", 0, RT_NONE, TP_NONE},
{"C", "C-1(#N+1)", 0, RT_NONE, TP_NONE},
{"C", "C.(-C.)", 0, DOUBLET, TP_NONE},
{"H,D,T", "H,D,T(-C,Si,Ge,Sn,N,P,O,S,F,Cl,Br,I)", 0, RT_NONE, TP_NONE},
{"C,F,Cl,Br,I", "C,F,Cl,Br,I(-B,P,As,Sb-1)", 0, RT_NONE, TP_NONE},
{"Cl,Br,I", "Cl,Br,I(-Zn,Cd,Hg-1)", 0, RT_NONE, TP_NONE},
{"F,Cl,Br,I", "F,Cl,Br,I(-T,D,H)", 0, RT_NONE, TP_NONE},
{"F,Cl,Br,I", "F,Cl,Br,I(-N+1)", 0, RT_NONE, TP_NONE},
{"F,Cl,Br,I", "F,Cl,Br,I(-Sn,Nb,V-1)", 0, RT_NONE, TP_NONE},
{"N,O,S,F,Cl,Br,I",
"N,O,S,F,Cl,Br,I(-C,Si,Ge,Sn,Pb,T,D,H,N,P,As,Sb,Bi,O,S,Se,Te,Po)", 0,
RT_NONE, TP_NONE},
{"N,O,F,Cl,Br,I", "N,O,F,Cl,Br,I(-F,Cl,Br,I)", 0, RT_NONE, TP_NONE},
{"N,O,S,Br,Cl,I", "N,O,S,Br,Cl,I(-N+1)", 0, RT_NONE, TP_NONE},
{"C,O", "C,O(-B,Si-1)", 0, RT_NONE, TP_NONE},
{"N", "N(-S+1)", 0, RT_NONE, TP_NONE},
{"N,O", "N,O(=B,C,Si,Sn,Ge,N,P,As,Sb,S,Se,Cl,Br,I)", 0, RT_NONE, TP_NONE},
{"N,O,S", "N,O,S(=N,S,I+1)", 0, RT_NONE, TP_NONE},
{"N", "N(#N+1)", 0, RT_NONE, TP_NONE},
{"O", "O+1(#C)", 0, RT_NONE, TP_NONE},
{"N", "N+1(=N-1)", 0, RT_NONE, TP_NONE},
{"N", "N+1(-Pd,Pt)", 0, RT_NONE, TP_NONE},
{"N", "N+1(=N+1)", 0, RT_NONE, TP_NONE},
{"N", "N-1(=N+1)", 0, RT_NONE, TP_NONE},
{"B", "B-1(-P+1)", 0, RT_NONE, TP_NONE},
{"O,S", "O,S-1(-C,N,P,S)", 0, RT_NONE, TP_NONE},
{"N,O,S", "N,O,S-1(-N+1)", 0, RT_NONE, TP_NONE},
{"O", "O.(-C,N)", 0, DOUBLET, TP_NONE},
{"O", "O.(-N+1)", 0, DOUBLET, TP_NONE},
{"P", "P(-C,Si,Ge,Sn)", 0, RT_NONE, TP_NONE},
{"S,Se", "S,Se(-C,Si,Ge,Sn,N,P,S)", 0, RT_NONE, TP_NONE},
{"S,Se,Cl,Br,I", "S,Se,Cl,Br,I(-P+1)", 0, RT_NONE, TP_NONE},
{"S", "S(=C,Sn,N,P,As,Sb,O,S)", 0, RT_NONE, TP_NONE},
{"Se", "Se(=C,P,S)", 0, RT_NONE, TP_NONE},
{"Si", "Si(-C)", 0, RT_NONE, TP_NONE},
{"Li,Na,K,Cs,Rb,Fr,Cu,Ag", "Li,Na,K,Cs,Rb,Fr,Cu,Ag(-C)", 0, RT_NONE,
TP_NONE},
{"Zn,Cd,Hg", "Zn,Cd,Hg(=O)", 0, RT_NONE, TP_NONE},
{"Al", "Al(#P)", 0, RT_NONE, TP_NONE},
{"C", "C(-Li,Na,K,Rb,Cs,Be,Mg,Ca,Sr,Ba,Al,Ga,In,Tl,Sb,Bi)", 0, RT_NONE,
TP_NONE},
{"C",
"C(-Cu,Ag,Au,Zn,Cd,Hg,Fe,Co,Ni,Ru,Rh,Pd,Os,Ir,Pt,Ti,Zr,Hf,V,Nb,Ta,Cr,Mo,W,"
"Mn,Re)",
0, RT_NONE, TP_NONE},
{"N,O,S,F,Cl,Br,I",
"N,O,S,F,Cl,Br,I(-Be,Mg,Ca,Sr,Ba,B,Al,Ga,In,Tl,Cu,Ag,Au,Zn,Cd,Hg)", 0,
RT_NONE, TP_NONE},
{"N,O,S,F,Cl,Br,I",
"N,O,S,F,Cl,Br,I(-Fe,Co,Ni,Ru,Rh,Pd,Os,Ir,Pt,Ti,Zr,Hf,V,Nb,Ta,Cr,Mo,W,Mn,"
"Re)",
0, RT_NONE, TP_NONE},
{"N,O,S,F,Cl,Br,I",
"N,O,S,F,Cl,Br,I(-Sc,Y,La,Ce,Pr,Nd,Pm,Sm,Eu,Gd,Tb,Dy,Ho,Er,Tm,Yb,Lu)", 0,
RT_NONE, TP_NONE},
{"P", "P(#Al)", 0, RT_NONE, TP_NONE},
{"C,N,O,S,F,Cl,Br,I", "C,N,O,S,F,Cl,Br,I(-Cu,Ag,Au,Mn,Ru,Al-1)", 0, RT_NONE,
TP_NONE},
{"C,O,F,Cl,Br,I", "C,O,F,Cl,Br,I(-Fe,Co,Ni,Mn,Ru,Al-2)", 0, RT_NONE,
TP_NONE},
{"O",
"O(=Fe,Co,Ni,Ru,Rh,Pd,Os,Ir,Pt,Zn,Cd,Hg,Sc,Ti,V,Cr,Mn,Y,Zr,Nb,Mo,La,Hf,Ta,"
"W,Re)",
0, RT_NONE, TP_NONE},
{"C", "C(=Ru-2)", 0, RT_NONE, TP_NONE},
{"O,Cl", "O,Cl(-Co,Mn,Ru-3)", 0, RT_NONE, TP_NONE},
{"O,Cl", "O,Cl(-Pd-1)", 0, RT_NONE, TP_NONE},
{"N", "N+1(-Co-3)", 0, RT_NONE, TP_NONE},
{"N,O",
"N,O(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,"
"Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Ala",
"Ala(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,"
"Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Arg",
"Arg(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,"
"Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Asn",
"Asn(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,"
"Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Asp",
"Asp(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,"
"Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Cys",
"Cys(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,"
"Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Gln",
"Gln(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,"
"Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Glu",
"Glu(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,"
"Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Gly",
"Gly(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,"
"Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"His",
"His(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,"
"Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Ile",
"Ile(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,"
"Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Leu",
"Leu(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,"
"Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Lys",
"Lys(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,"
"Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Met",
"Met(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,"
"Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Phe",
"Phe(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,"
"Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Pro",
"Pro(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,"
"Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Ser",
"Ser(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,"
"Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Thr",
"Thr(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,"
"Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Trp",
"Trp(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,"
"Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Tyr",
"Tyr(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,"
"Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Val",
"Val(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,"
"Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Ba,Ca,Mg,Pb", "Ba,Ca,Mg,Pb(=O)", 0, RT_NONE, TP_NONE},
{"F,Cl,Br,I", "F,Cl,Br,I(-H)", 0, RT_NONE, TP_NONE},
{"H", "H(-N,O,S,F,Cl,Br,I)", 0, RT_NONE, TP_NONE},
{"O", "O(=O,Ba,Ca,Mg,Al,Bi,Pb)", 0, RT_NONE, TP_NONE},
{"O", "O(=N.)", 0, RT_NONE, TP_NONE},
{"S", "S(=Mo)", 0, RT_NONE, TP_NONE},
{"C", "C-1(#O+1)", 0, RT_NONE, TP_NONE},
{"H", "H(-Al)", 0, RT_NONE, TP_NONE},
{"H", "H(-Fe+1)", 0, RT_NONE, TP_NONE},
{"H", "H(-N+1)", 0, RT_NONE, TP_NONE},
{"Hyd", "Hyd(-Hyd)", 0, RT_NONE, TP_NONE},
{"O", "O+1(#C-1)", 0, RT_NONE, TP_NONE},
{"R", "R(-C,N,O)", 0, RT_NONE, TP_NONE},
{"X", "X(-N)", 0, RT_NONE, TP_NONE},
{"B", "B(-C,N)(-C,N,P,O,S)", 0, RT_NONE, TP_NONE},
{"B", "B(-N+1)(-C,N)", 0, RT_NONE, TP_NONE},
{"B", "B-1(-N+1)(-C)", 0, RT_NONE, TP_NONE},
{"B", "B(=O)(-O)", 0, RT_NONE, TP_NONE},
{"C", "C(-B,C,Si)(-B,C,Si,Ge,Sn,Pb,N,P,O,S,Se,Te,F,Cl,Br,I,D,T)", 0,
RT_NONE, TP_NONE},
{"C", "C(-N,P,O,S,Se,Te,F,Cl,Br,I)(-N,P,O,S,Se,Te,F,Cl,Br,I)", 0, RT_NONE,
TP_NONE},
{"C", "C(-C,Si,P,S)(-B-1)", 0, RT_NONE, TP_NONE},
{"C", "C(-P+1)(-B-1)", 0, RT_NONE, TP_NONE},
{"C", "C(-N,P,O,S,I+1)(-B,C,Si,N,O,P,S,Se,F,Cl,Br,I)", 0, RT_NONE, TP_NONE},
{"C", "C(-N,P+1)(-N,P+1)", 0, RT_NONE, TP_NONE},
{"C", "C(-Sn,Pb)(-Sn,Pb,N,P,O,S)", 0, RT_NONE, TP_NONE},
{"C", "C(=C,N)(-B,F,Cl,Br,I,H,D,T)", 0, RT_NONE, TP_NONE},
{"C", "C(=C,N,P,O,S)(-C,Si,Ge,Sn,N,P,O,S,Se)", 0, RT_NONE, TP_NONE},
{"C", "C(=C,N)(-N,P,S,Se+1)", 0, RT_NONE, TP_NONE},
{"C", "C(=C)(-C+1)", 0, RT_NONE, TP_NONE},
{"C", "C(=C)(-C-1)", 0, RT_NONE, TP_NONE},
{"C", "C(=C,N,O,S)(=C,N,O,S)", 0, RT_NONE, TP_NONE},
{"C", "C(=O+1)(-C)", 0, RT_NONE, TP_NONE},
{"C", "C(=N,S+1)(-C,N,P,O,S)", 0, RT_NONE, TP_NONE},
{"C", "C(=N+1)(-N+1)", 0, RT_NONE, TP_NONE},
{"C", "C(=N+1)(=N)", 0, RT_NONE, TP_NONE},
{"C", "C(=P)(-C)", 0, RT_NONE, TP_NONE},
{"C", "C(=Ru-2)(-N,O,S)", 0, RT_NONE, TP_NONE},
{"C", "C(=Ru-3)(-C)", 0, RT_NONE, TP_NONE},
{"C", "C(#C,N,S)(-H,D,T,B,C,Si,Ge,Sn,N,P,O,S,Se,F,Cl,Br,I)", 0, RT_NONE,
TP_NONE},
{"C", "C(#C)(-C+1)", 0, RT_NONE, TP_NONE},
{"C", "C(#N)(-N+1)", 0, RT_NONE, TP_NONE},
{"C", "C(#N)(-N,B-1)", 0, RT_NONE, TP_NONE},
{"C", "C(#N+1)(-C,N,P)", 0, RT_NONE, TP_NONE},
{"C,N", "C,N(-C.)(-C,Si,O)", 0, RT_NONE, TP_NONE},
{"C", "C(-C.)(=C,O)", 0, RT_NONE, TP_NONE},
{"C", "C.(-C.)(-C)", 0, DOUBLET, TP_NONE},
{"C", "C.(-C.)(-C.)", 0, DOUBLET, TP_NONE},
{"I", "I(-C)(-C)", 0, RT_NONE, TP_NONE},
{"I", "I(-I,Cl)(-I,Cl)", 0, RT_NONE, TP_NONE},
{"I", "I(=C,O)(-C)", 0, RT_NONE, TP_NONE},
{"I", "I+1(-C)(-C)", 0, RT_NONE, TP_NONE},
{"N", "N(-C,Si,N,P,O,S)(-B,C,Si,Ge,Sn,Pb,N,P,O,S,F,Cl,Br,I,H,D,T)", 0,
RT_NONE, TP_NONE},
{"N", "N(-N,P,S+1)(-C,N,O,S)", 0, RT_NONE, TP_NONE},
{"N", "N(=C,N)(-B,C,Si,Sn,N,P,O,S,Se,F,Cl,Br,I,H,D,T)", 0, RT_NONE,
TP_NONE},
{"N", "N(=C,N,O)(-N+1)", 0, RT_NONE, TP_NONE},
{"N", "N(=C)(-S+1)", 0, RT_NONE, TP_NONE},
{"N", "N(=C,N)(-B-1)", 0, RT_NONE, TP_NONE},
{"N", "N(=N,S+1)(-C,Si,Sn,N,P,O,S)", 0, RT_NONE, TP_NONE},
{"N", "N(=N-1)(-C)", 0, RT_NONE, TP_NONE},
{"N", "N(=O)(-C,N,O,S)", 0, RT_NONE, TP_NONE},
{"N", "N(=P,S,Se)(-C,Si,N,P,S)", 0, RT_NONE, TP_NONE},
{"N", "N(=S)(-Cl,Br,I)", 0, RT_NONE, TP_NONE},
{"N", "N(=O,S,P)(-N,P,S+1)", 0, RT_NONE, TP_NONE},
{"N", "N+1(=C)(-B)", 0, RT_NONE, TP_NONE},
{"N", "N+1(=N,P,S)(=N,P,S)", 0, RT_NONE, TP_NONE},
{"N", "N+1(=C,N)(=N-1)", 0, RT_NONE, TP_NONE},
{"N", "N+1(#C,N)(-O,S-1)", 0, RT_NONE, TP_NONE},
{"N", "N+1(#C-1)(-C,N)", 0, RT_NONE, TP_NONE},
{"N", "N+1(#N)(-C)", 0, RT_NONE, TP_NONE},
{"N", "N-1(-N+1)(-C,N,O)", 0, RT_NONE, TP_NONE},
{"N", "N-1(-N+1)(-N+1)", 0, RT_NONE, TP_NONE},
{"N", "N.(-C)(-N)", 0, DOUBLET, TP_NONE},
{"O", "O(-B,Al,Ga,In,Tl)(-B,C,Si,Sn,N,P,S)", 0, RT_NONE, TP_NONE},
{"O",
"O(-C,Si,Ge,Sn,Pb,N,P,As,S,Se,T,D,H)(-C,Si,Ge,Sn,Pb,N,P,As,Sb,O,S,Se,Cl,"
"Br,I)",
0, RT_NONE, TP_NONE},
{"O", "O(-N,P,S+1)(-C,Si,N,S)", 0, RT_NONE, TP_NONE},
{"O", "O(-I+1)(-C)", 0, RT_NONE, TP_NONE},
{"C,O", "C,O(-B,Si-1)(-C)", 0, RT_NONE, TP_NONE},
{"O", "O(-B-1)(-N+1)", 0, RT_NONE, TP_NONE},
{"O", "O(-N-1)(-C)", 0, RT_NONE, TP_NONE},
{"O", "O(-C.)(-C)", 0, RT_NONE, TP_NONE},
{"O", "O+1(=C)(-C)", 0, RT_NONE, TP_NONE},
{"O", "O+1(=C)(-Ru-2)", 0, RT_NONE, TP_NONE},
{"P", "P(-C,N,O)(-C,N,P,O)", 0, RT_NONE, TP_NONE},
{"P", "P(=C,N,O,S)(-C,N,O,S)", 0, RT_NONE, TP_NONE},
{"S", "S(-C,N,P,O,S)(-B,C,O,S,Se,N,P,As,Sb,F,Cl,Br,I,T,D,H)", 0, RT_NONE,
TP_NONE},
{"S", "S(-C)(-Si,Ge,Sn,Pb)", 0, RT_NONE, TP_NONE},
{"S", "S(-N,P,S+1)(-C,N)", 0, RT_NONE, TP_NONE},
{"S", "S(-Sn)(-P,Sn)", 0, RT_NONE, TP_NONE},
{"S", "S(=C,N)(=C,N,O)", 0, RT_NONE, TP_NONE},
{"S", "S(=N)(=S+1)", 0, RT_NONE, TP_NONE},
{"S", "S(#C)(-N)", 0, RT_NONE, TP_NONE},
{"S,Se", "S,Se+1(=C,N,P,S)(-C,N,S)", 0, RT_NONE, TP_NONE},
{"S", "S(-C.)(-C)", 0, RT_NONE, TP_NONE},
{"Se,Te", "Se,Te(-C,N)(-C,N,O,S,Se,Te,Cl,Br,I)", 0, RT_NONE, TP_NONE},
{"Se", "Se(=N)(=N)", 0, RT_NONE, TP_NONE},
{"Se", "Se(=N+1)(=N)", 0, RT_NONE, TP_NONE},
{"Si", "Si(-C,Si,O,F,Cl,Br,I)(-C,O,F,Cl,Br,I)", 0, RT_NONE, TP_NONE},
{"As", "As(=O,S,N,P,As)(-C)", 0, RT_NONE, TP_NONE},
{"Be,Mg,Ca,Sr,Ba", "Be,Mg,Ca,Sr,Ba(-C)(-C,N,P,O,S,F,Cl,Br,I)", 0, RT_NONE,
TP_NONE},
{"Sb", "Sb(=O)(-C)", 0, RT_NONE, TP_NONE},
{"Ge,Sn,Pb", "Ge,Sn,Pb(-C,N,O,S,F,Cl,Br,I)(-C,Sn,N,O,S,F,Cl,Br,I)", 0,
RT_NONE, TP_NONE},
{"Au", "Au(-P+1)(-O,S,F,Cl,Br,I)", 0, RT_NONE, TP_NONE},
{"Be,Mg,Ca,Sr,Ba", "Be,Mg,Ca,Sr,Ba(-N,O)(-N,O)", 0, RT_NONE, TP_NONE},
{"Fe,Co,Ni,Ru,Rh,Pd,Os,Ir,Pt,Ti,Zr,Hf,V,Nb,Ta,Cr,Mo,W,Mn,Re",
"Fe,Co,Ni,Ru,Rh,Pd,Os,Ir,Pt,Ti,Zr,Hf,V,Nb,Ta,Cr,Mo,W,Mn,Re(-C,N,P,O,S,F,"
"Cl,Br,I)(-C,N,P,O,S,F,Cl,Br,I)",
0, RT_NONE, TP_NONE},
{"Cu,Ag,Au,Zn,Cd,Hg",
"Cu,Ag,Au,Zn,Cd,Hg(-C,N,P,O,S,F,Cl,Br,I)(-C,N,P,O,S,F,Cl,Br,I)", 0,
RT_NONE, TP_NONE},
{"Cu,Ag,Au,Zn,Cd,Hg", "Cu,Ag,Au,Zn,Cd,Hg-1(-P,As+1)(-C,N,P,O,S,F,Cl,Br,I)",
0, RT_NONE, TP_NONE},
{"Zn,Cd,Hg,Cr", "Zn,Cd,Hg,Cr(-N+1)(-C,O,S)", 0, RT_NONE, TP_NONE},
{"Ti", "Ti(-O+1)(-O)", 0, RT_NONE, TP_NONE},
{"Hg", "Hg(-C.)(-F,Cl,Br,I)", 0, RT_NONE, TP_NONE},
{"Au", "Au-1(-C)(-S)", 0, RT_NONE, TP_NONE},
{"Au", "Au-1(-C)(-N+1)", 0, RT_NONE, TP_NONE},
{"Au", "Au-1(-N,S+1)(-P+1)", 0, RT_NONE, TP_NONE},
{"Pd", "Pd-1(-Cl)(-P+1)", 0, RT_NONE, TP_NONE},
{"Pd", "Pd-1(-Cl+1)(-Cl+1)", 0, RT_NONE, TP_NONE},
{"Ti", "Ti-1(-O)(-O+1)", 0, RT_NONE, TP_NONE},
{"C", "C(-Li,Na,K,Rb,Cs,Be,Mg,Ca,Sr,Ba,Al,Ga,In,Tl,Sb,Bi)(-C)", 0, RT_NONE,
TP_NONE},
{"C",
"C(-Cu,Ag,Au,Zn,Cd,Hg,Fe,Ru,Os,Co,Rh,Ir,Ni,Pd,Pt,Ti,Zr,Hf,V,Nb,Ta,Cr,Mo,W,"
"Mn,Re)(-C)",
0, RT_NONE, TP_NONE},
{"C", "C(-Hg)(-Cl,Br,I)", 0, RT_NONE, TP_NONE},
{"C", "C(-Hg,Mg)(=C)", 0, RT_NONE, TP_NONE},
{"C", "C(-Li,Na,K,Rb,Cs)(#C)", 0, RT_NONE, TP_NONE},
{"C", "C(-Cu,Ag,Au,Zn,Cd,Hg)(#C,N)", 0, RT_NONE, TP_NONE},
{"C", "C(-Fe,Co,Ni,Ru,Rh,Pd,Os,Ir,Pt,Ti,Zr,Hf,V,Nb,Ta,Cr,Mo,W,Mn,Re)(#N)",
0, RT_NONE, TP_NONE},
{"C", "C(-Au-1)(-P+1)", 0, RT_NONE, TP_NONE},
{"C", "C(-Fe-2)(-C)", 0, RT_NONE, TP_NONE},
{"C", "C(-Fe-2)(#O+1)", 0, RT_NONE, TP_NONE},
{"C", "C(-Fe,Cr-3)(#O+1)", 0, RT_NONE, TP_NONE},
{"C", "C(-Pd,Pt-2)(#N)", 0, RT_NONE, TP_NONE},
{"C", "C(=Ru-2)(-C)", 0, RT_NONE, TP_NONE},
{"N,O,S", "N,O,S(-Be,Mg,Ca,Sr,Ba,Al,Ga,In,Tl,Sb,Bi)(-C,Si,N)", 0, RT_NONE,
TP_NONE},
{"N,O,S",
"N,O,S(-Cu,Ag,Au,Zn,Cd,Hg,Fe,Ru,Os,Co,Rh,Ir,Ni,Pd,Pt,Ti,Zr,Hf,V,Nb,Ta,Cr,"
"Mo,W,Mn,Re)(-C,Si,N)",
0, RT_NONE, TP_NONE},
{"N", "N(-Be,Mg,Ca,Sr,Ba,Al,Ga,In,Tl,As,Sb,Bi)(=C)", 0, RT_NONE, TP_NONE},
{"N",
"N(-Cu,Ag,Au,Zn,Cd,Hg,Fe,Ru,Os,Co,Rh,Ir,Ni,Pd,Pt,Ti,Zr,Hf,V,Nb,Ta,Cr,Mo,W,"
"Mn,Re)(=O)",
0, RT_NONE, TP_NONE},
{"N,O,S", "N,O,S(-Cu,Fe,Co,Ni,Cr,Mn,Ti-1)(-C,Si,N)", 0, RT_NONE, TP_NONE},
{"N,O,S", "N,O,S(-Fe,Co,Ni,Mn-2)(-C,Si,N)", 0, RT_NONE, TP_NONE},
{"N,O,S", "N,O,S(-Mn-3)(-C,Si,N)", 0, RT_NONE, TP_NONE},
{"O", "O(-Cu,Ag,Au,Zn,Cd,Hg)(-N,P,S,B,Al,Ga,In,Tl)", 0, RT_NONE, TP_NONE},
{"O", "O(-Hg)(-N+1)", 0, RT_NONE, TP_NONE},
{"O", "O(-Mn)(-Cl)", 0, RT_NONE, TP_NONE},
{"O", "O(-V)(-O)", 0, RT_NONE, TP_NONE},
{"O", "O(-Sc,Y,La,Ce,Pr,Nd,Pm,Sm,Eu,Gd,Tb,Dy,Ho,Er,Tm,Yb,Lu)(-C)", 0,
RT_NONE, TP_NONE},
{"O,S",
"O,S(-Ti,Zr,Hf,V,Nb,Ta,Cr,Mo,W,Mn,Re)(-N,P,Ti,Zr,Hf,V,Nb,Ta,Cr,Mo,W,Mn,"
"Re)",
0, RT_NONE, TP_NONE},
{"S", "S(-Au-1)(-C)", 0, RT_NONE, TP_NONE},
{"O", "O(-Zr,Cr,V,Zn,Al-2)(-C)", 0, RT_NONE, TP_NONE},
{"O", "O(-Cr-3)(-C)", 0, RT_NONE, TP_NONE},
{"O", "O(-Co-2)(-N+1)", 0, RT_NONE, TP_NONE},
{"O", "O(-Fe,V-3)(-Fe,V-3)", 0, RT_NONE, TP_NONE},
{"O", "O(-Fe,Co,Ni,V,Nb,Ta-3)(-C)", 0, RT_NONE, TP_NONE},
{"O", "O(-Fe,Co,Ni,V,Nb,Ta-3)(=C)", 0, RT_NONE, TP_NONE},
{"N", "N+1(-Cu,Zn,Cd,Ni,Pd,Pt)(-C)", 0, RT_NONE, TP_NONE},
{"O,S",
"O,S+1(-Cu,Ag,Au,Zn,Cd,Hg,Fe,Ru,Os,Co,Rh,Ir,Ni,Pd,Pt,Sc,Y,La,Ti,Zr,Hf,V,"
"Nb,Ta,Cr,Mo,W,Mn,Tc,Re)(=C)",
0, RT_NONE, TP_NONE},
{"N", "N+1(-Cu,Ag,Au,Zn,Cd,Hg,Fe,Ru,Os,Co,Rh,Ir,Ni,Pd,Pt)(#C)", 0, RT_NONE,
TP_NONE},
{"N", "N+1(-Mn-1)(-C,N)", 0, RT_NONE, TP_NONE},
{"O", "O+1(-Ti-1)(=C)", 0, RT_NONE, TP_NONE},
{"N", "N+1(-Ni,Mn-2)(-C,N)", 0, RT_NONE, TP_NONE},
{"O", "O+1(-Mn,V-2)(=C)", 0, RT_NONE, TP_NONE},
{"N", "N+1(-Ru-2)(#C)", 0, RT_NONE, TP_NONE},
{"N", "N+1(-Co-3)(-C)", 0, RT_NONE, TP_NONE},
{"O", "O+1(-Fe,Co,Ni,V,Nb,Ta-3)(=C)", 0, RT_NONE, TP_NONE},
{"C,Cl", "C,Cl+1(-Al,Ru-1)(-Ru-1)", 0, RT_NONE, TP_NONE},
{"Cl", "Cl+1(-Rh-3)(-Rh-3)", 0, RT_NONE, TP_NONE},
{"Cl", "Cl+1(-Pd-1)(-Pd-1)", 0, RT_NONE, TP_NONE},
{"S", "S(-Cys)(-S)", 0, RT_NONE, TP_NONE},
{"N,O,S",
"N,O,S(-C)(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,"
"Ser,Thr,Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,Trp,"
"Tyr,Val",
"Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,Trp,"
"Tyr,Val(-C)(-N,O,S)",
0, RT_NONE, TP_NONE},
{"Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,Trp,"
"Tyr,Val",
"Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,Trp,"
"Tyr,Val(-C,N,O,S)(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,"
"Phe,Pro,Ser,Thr,Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Ala",
"Ala(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,"
"Trp,Tyr,Val)(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,"
"Pro,Ser,Thr,Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Arg",
"Arg(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,"
"Trp,Tyr,Val)(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,"
"Pro,Ser,Thr,Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Asn",
"Asn(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,"
"Trp,Tyr,Val)(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,"
"Pro,Ser,Thr,Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Asp",
"Asp(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,"
"Trp,Tyr,Val)(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,"
"Pro,Ser,Thr,Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Cys",
"Cys(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,"
"Trp,Tyr,Val)(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,"
"Pro,Ser,Thr,Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Gln",
"Gln(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,"
"Trp,Tyr,Val)(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,"
"Pro,Ser,Thr,Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Glu",
"Glu(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,"
"Trp,Tyr,Val)(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,"
"Pro,Ser,Thr,Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Gly",
"Gly(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,"
"Trp,Tyr,Val)(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,"
"Pro,Ser,Thr,Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"His",
"His(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,"
"Trp,Tyr,Val)(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,"
"Pro,Ser,Thr,Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Ile",
"Ile(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,"
"Trp,Tyr,Val)(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,"
"Pro,Ser,Thr,Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Leu",
"Leu(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,"
"Trp,Tyr,Val)(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,"
"Pro,Ser,Thr,Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Lys",
"Lys(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,"
"Trp,Tyr,Val)(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,"
"Pro,Ser,Thr,Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Met",
"Met(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,"
"Trp,Tyr,Val)(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,"
"Pro,Ser,Thr,Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Phe",
"Phe(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,"
"Trp,Tyr,Val)(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,"
"Pro,Ser,Thr,Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Pro",
"Pro(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,"
"Trp,Tyr,Val)(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,"
"Pro,Ser,Thr,Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Ser",
"Ser(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,"
"Trp,Tyr,Val)(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,"
"Pro,Ser,Thr,Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Thr",
"Thr(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,"
"Trp,Tyr,Val)(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,"
"Pro,Ser,Thr,Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Trp",
"Trp(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,"
"Trp,Tyr,Val)(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,"
"Pro,Ser,Thr,Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Tyr",
"Tyr(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,"
"Trp,Tyr,Val)(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,"
"Pro,Ser,Thr,Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Val",
"Val(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,Ser,Thr,"
"Trp,Tyr,Val)(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,"
"Pro,Ser,Thr,Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Al,Bi,Sb", "Al,Bi,Sb(=O)(-O)", 0, RT_NONE, TP_NONE},
{"C", "C(=O)(-H)", 0, RT_NONE, TP_NONE},
{"Cl", "Cl(=O)(-O)", 0, RT_NONE, TP_NONE},
{"Cr,Fe", "Cr,Fe(=O)(-O)", 0, RT_NONE, TP_NONE},
{"Mn,Mo", "Mn,Mo(=O,S)(=O,S)", 0, RT_NONE, TP_NONE},
{"N", "N.(=O)(=O)", 0, DOUBLET, TP_NONE},
{"O", "O(-Al,Bi,Sb)(-Al,Bi,Sb)", 0, RT_NONE, TP_NONE},
{"O", "O(-C,B)(-O,H)", 0, RT_NONE, TP_NONE},
{"O", "O(-Cr,Mn,Fe,Co)(-S)", 0, RT_NONE, TP_NONE},
{"O", "O(-Fe)(-Fe,V)", 0, RT_NONE, TP_NONE},
{"O", "O(-O,S,H)(-H)", 0, RT_NONE, TP_NONE},
{"O", "O(-Zn)(-N+1)", 0, RT_NONE, TP_NONE},
{"S", "S(-Cl)(-Cl)", 0, RT_NONE, TP_NONE},
{"S", "S(-H)(-H)", 0, RT_NONE, TP_NONE},
{"S,Si", "S,Si(=O)(=O)", 0, RT_NONE, TP_NONE},
{"Ti,Zr", "Ti,Zr(=O)(=O)", 0, RT_NONE, TP_NONE},
{"Al", "Al+1(-N)(-N)", 0, RT_NONE, TP_NONE},
{"O", "O(-N+1)(-H)", 0, RT_NONE, TP_NONE},
{"O", "O(-Al-1)(-C)", 0, RT_NONE, TP_NONE},
{"Fe", "Fe+1(-C)(-C)", 0, RT_NONE, TP_NONE},
{"Mn", "Mn+2(-N)(-N)", 1, RT_NONE, TP_NONE},
{"C,N,O", "C,N,O(-C)(-R,X)", 0, RT_NONE, TP_NONE},
{"B", "B(-C,N,O,S,F,Cl,Br,I)(-C,N,O,S,F,Cl,Br,I)(-C,N,O,S,F,Cl,Br,I)", 0,
RT_NONE, TP_NONE},
{"B", "B(-N+1)(-C,N)(-N,O,F,Cl,Br,I)", 0, RT_NONE, TP_NONE},
{"B", "B(-N+1)(-F,Cl,Br,I)(-F,Cl,Br,I)", 0, RT_NONE, TP_NONE},
{"B", "B-1(-N+1)(-C)(-C)", 0, RT_NONE, TP_NONE},
{"C", "C(-B)(-B,C,F,Cl,Br,I)(-C,N,O,S,F,Cl,Br,I)", 0, RT_NONE, TP_NONE},
{"C", "C(-C,N,P,O,S,Se,F,Cl,Br,I)(-C,N,P,O,S,F,Cl,Br,I)(-C,F,Cl,Br,I,D,T)",
0, RT_NONE, TP_NONE},
{"C",
"C(-C,Si,Ge,Sn,Pb,N,P,O,S,Se)(-C,Si,Ge,Sn,Pb,N,P,O,S)(-Si,Ge,Sn,Pb,N,P,O,"
"S)",
0, RT_NONE, TP_NONE},
{"C", "C(-C)(-Si)(-F,Cl,Br,I)", 0, RT_NONE, TP_NONE},
{"C", "C(-C)(-C)(-B-1)", 0, RT_NONE, TP_NONE},
{"C", "C(-N,P,S+1)(-C,N,O,S,F,Cl,Br,I)(-C,N,P,O,S,F,Br,Cl,I,D,T)", 0,
RT_NONE, TP_NONE},
{"C", "C(-C+1)(=C)(-C,N)", 0, RT_NONE, TP_NONE},
{"C", "C(-C+1)(-C)(-C)", 0, RT_NONE, TP_NONE},
{"C", "C(-I+1)(-C)(-C)", 0, RT_NONE, TP_NONE},
{"C", "C(-N+1)(-N+1)(-C)", 0, RT_NONE, TP_NONE},
{"C", "@C(=C)(-O)(-O-1)", 0, RT_NONE, RING},
{"C", "C(=C)(-B)(-B,C,N,O,S)", 0, RT_NONE, TP_NONE},
{"C",
"C(=C)(-C,Si,Ge,Sn,Pb)(-C,Si,Ge,Sn,Pb,O,S,Se,Te,N,P,As,F,Cl,Br,I,D,T)", 0,
RT_NONE, TP_NONE},
{"C", "C(=C)(-O,S,Se,Te,N,P,F,Cl,Br,I)(-O,S,Se,Te,N,P,F,Cl,Br,I)", 0,
RT_NONE, TP_NONE},
{"C", "C(=C)(-N,P,As,S,I+1)(-C,N,P,O,S)", 0, RT_NONE, TP_NONE},
{"C", "C(=C)(-N+1)(-F,Cl,Br,I)", 0, RT_NONE, TP_NONE},
{"C", "C(=C)(-N+1)(-N+1)", 0, RT_NONE, TP_NONE},
{"C", "C(=C)(-O+1)(-C,N)", 0, RT_NONE, TP_NONE},
{"C", "C(=C,N)(-B,C,Sn-1)(-C)", 0, RT_NONE, TP_NONE},
{"C", "C(=I)(-C)(-C)", 0, RT_NONE, TP_NONE},
{"C", "C(=N,P)(-C,N,P,O,S,F,Cl,Br,I)(-B,C,N,P,O,S,Se,Te,F,Cl,Br,I)", 0,
RT_NONE, TP_NONE},
{"C", "C(=N,P)(-C,N,P,S)(-Si,Ge,Sn,H,D,T)", 0, RT_NONE, TP_NONE},
{"C", "C(=O,S,Se)(-C,N,P,O,S,Se,F,Cl,Br,I)(-C,N,P,O,S,Se,Cl,Br,I,D,T)", 0,
RT_NONE, TP_NONE},
{"C", "C(=O)(-B,Cl,Br)(-N,O,Cl,Br)", 0, RT_NONE, TP_NONE},
{"C", "C(=O)(-Si,Ge,Sn)(-C,N,O)", 0, RT_NONE, TP_NONE},
{"C", "C(=N)(-N+1)(-C,N,P,O,S,F,Cl,Br,I)", 0, RT_NONE, TP_NONE},
{"C", "C(=N)(-O,S,I+1)(-C,N)", 0, RT_NONE, TP_NONE},
{"C", "C(=N,P)(-P,S+1)(-N,P,S)", 0, RT_NONE, TP_NONE},
{"C", "C(=O,S)(-N,P+1)(-C,N,O,S)", 0, RT_NONE, TP_NONE},
{"C", "C(=O)(-N+1)(-O,S-1)", 0, RT_NONE, TP_NONE},
{"C", "C(=N+1)(-O,S,Se,Te)(-S,Se,Te,Cl,Br,I)", 0, RT_NONE, TP_NONE},
{"C", "C(=N+1)(-C,N)(-C,N,P,O,S,Se,Te,F,Cl,Br,I)", 0, RT_NONE, TP_NONE},
{"C", "C(=N+1)(-N+1)(-C,N)", 0, RT_NONE, TP_NONE},
{"C", "C(=O,S+1)(-C)(-C,N,O,S)", 0, RT_NONE, TP_NONE},
{"C", "C(=S+1)(-N)(-N)", 0, RT_NONE, TP_NONE},
{"C", "C(=O,S,Se+1)(-S)(-S)", 0, RT_NONE, TP_NONE},
{"B,C,Si", "B,C,Si(-C.)(-C,F,Cl,Br,I)(-C,N,P,O,F,Cl,Br,I)", 0, RT_NONE,
TP_NONE},
{"C", "C(-C.)(=C,O,N)(-C,N,P,O,S)", 0, RT_NONE, TP_NONE},
{"C", "C(-N,O.)(=C,N)(-C,N)", 0, RT_NONE, TP_NONE},
{"C", "C(-N+1.)(=C)(-C)", 0, RT_NONE, TP_NONE},
{"C", "C+1(-C)(-C)(-C)", 0, RT_NONE, TP_NONE},
{"C", "C-1(-I,N+1)(-C)(-C)", 0, RT_NONE, TP_NONE},
{"C", "C-1(-S+1)(-S)(-S)", 0, RT_NONE, TP_NONE},
{"C", "C.(-C.)(-C.)(-C,Si,Sn,N,P,O,S,B,F,Cl,Br,I)", 0, DOUBLET, TP_NONE},
{"C", "C.(-C.)(-C.)(-B-1)", 0, DOUBLET, TP_NONE},
{"I", "I(-C)(-C,O,S,F,Cl)(-O,S,F,Cl)", 0, RT_NONE, TP_NONE},
{"I", "I(=O)(=O)(-C)", 0, RT_NONE, TP_NONE},
{"I", "I+1(=O)(-C)(-C)", 0, RT_NONE, TP_NONE},
{"Cl,Br,I", "Cl,Br,I(=O)(=O)(-O)", 0, RT_NONE, TP_NONE},
{"N", "N(-B)(-B,C,N)(-C,S)", 0, RT_NONE, TP_NONE},
{"N", "N(-C,N,P,O,S)(-C,N,P,O,S,Se,T,D,H)(-C,N,P,O,S,Se,T,D,H)", 0, RT_NONE,
TP_NONE},
{"N", "N(-C,S)(-C,N,O,S,F,Cl,Br,I)(-F,Cl,Br,I)", 0, RT_NONE, TP_NONE},
{"N", "N(-C,Si,N)(-Si,Sn)(-C,Si,N,P,O,S)", 0, RT_NONE, TP_NONE},
{"N", "N(-C)(-C)(-B-1)", 0, RT_NONE, TP_NONE},
{"N", "N(-N,P,S+1)(-C,N)(-C,N,O,S)", 0, RT_NONE, TP_NONE},
{"N", "N(-N,O.)(-C)(-C)", 0, RT_NONE, TP_NONE},
{"N", "N+1(=C)(-C,Si,Ge,Sn,N,O,S)(-C,Si,N,O,S)", 0, RT_NONE, TP_NONE},
{"N", "N+1(=C)(-C)(-B,F,Cl,Br,I)", 0, RT_NONE, TP_NONE},
{"N", "N+1(=C)(-C,N,S,B-1)(-C)", 0, RT_NONE, TP_NONE},
{"N", "N+1(=C,O)(-O-1)(-C,N,O)", 0, RT_NONE, TP_NONE},
{"N", "N+1(=C,O)(-O-1)(-N+1)", 0, RT_NONE, TP_NONE},
{"N", "N+1(=C,O)(-O-1)(-N-1)", 0, RT_NONE, TP_NONE},
{"N", "N+1(=C)(-Ru-2)(-C)", 0, RT_NONE, TP_NONE},
{"N", "N+1(=C)(-Ru-3)(-C)", 0, RT_NONE, TP_NONE},
{"N", "N+1(-O.)(=C)(-C)", 0, RT_NONE, TP_NONE},
{"N", "N+1(=N)(-C,Si)(-C,Si,N,O,S)", 0, RT_NONE, TP_NONE},
{"N", "N+1(=N,O)(-N,O-1)(-C,N,S)", 0, RT_NONE, TP_NONE},
{"N", "N+1(=O,S,Se)(-C)(-C)", 0, RT_NONE, TP_NONE},
{"N", "N+1(=N+1)(-C)(-C)", 0, RT_NONE, TP_NONE},
{"N", "N+1(=N+1)(-O-1)(-C,S)", 0, RT_NONE, TP_NONE},
{"N", "N+1.(-C)(-C)(-C)", 0, DOUBLET, TP_NONE},
{"O", "O+1(-C)(-C)(-C)", 0, RT_NONE, TP_NONE},
{"P", "P(-Cl)(-Cl)(-Cl)", 0, RT_NONE, TP_NONE},
{"P",
"P(-C,Si,N,O,S)(-C,Si,N,P,O,S,F,Cl,Br,I,T,D,H)(-C,Si,N,P,O,S,F,Cl,Br,I,T,"
"D,H)",
0, RT_NONE, TP_NONE},
{"P", "P(=N,O,S)(-C,N,O)(-C,N,O,S)", 0, RT_NONE, TP_NONE},
{"P", "P(-C.)(-C)(-C)", 0, RT_NONE, TP_NONE},
{"S", "S(=C)(-C,N,O,S)(-C,N,O,S,F,Cl,Br,I)", 0, RT_NONE, TP_NONE},
{"S", "S(=C,O)(=O)(=O)", 0, RT_NONE, TP_NONE},
{"S", "S(=C)(-N+1)(-C)", 0, RT_NONE, TP_NONE},
{"S", "S(=N,O)(-C,N,O,S,F,Cl,Br,I)(-C,N,P,O,S,F,Cl,Br,I)", 0, RT_NONE,
TP_NONE},
{"S", "S(=P)(-C,O)(-C,N,O)", 0, RT_NONE, TP_NONE},
{"S", "S(=S)(-C,N)(-C,N,P)", 0, RT_NONE, TP_NONE},
{"S", "S(=N+1)(-C)(-C)", 0, RT_NONE, TP_NONE},
{"S", "S(-C.)(=N)(-N)", 0, RT_NONE, TP_NONE},
{"S", "S+1(-C)(-C)(-C,N,O,S)", 0, RT_NONE, TP_NONE},
{"S", "S+1(-S+1)(-C)(-C)", 0, RT_NONE, TP_NONE},
{"Se,Te", "Se,Te(=O)(-C)(-C,O)", 0, RT_NONE, TP_NONE},
{"Si",
"Si(-C,Si,N,O,S,F,Cl,Br,I)(-C,Si,N,O,S,F,Cl,Br,I)(-C,Si,N,O,S,F,Cl,Br,I)",
0, RT_NONE, TP_NONE},
{"Al,Ga,In,Tl",
"Al,Ga,In,Tl(-C,N,O,S)(-C,N,O,S,F,Cl,Br,I)(-C,N,O,S,F,Cl,Br,I)", 0,
RT_NONE, TP_NONE},
{"As,Sb,Bi", "As,Sb,Bi(-C,O,S)(-C,O,S,F,Cl,Br,I)(-C,O,S,F,Cl,Br,I)", 0,
RT_NONE, TP_NONE},
{"Ge,Sn", "Ge,Sn(=O,S)(-C,N)(-C,N,O,S)", 0, RT_NONE, TP_NONE},
{"Sn", "Sn(-C)(-C)(-C)", 0, RT_NONE, TP_NONE},
{"Au", "Au(-O,S)(-O,S,F,Cl,Br,I)(-F,Cl,Br,I)", 0, RT_NONE, TP_NONE},
{"Cu,Zn,Cd,Ni", "Cu,Zn,Cd,Ni(-N+1)(-N)(-O)", 0, RT_NONE, TP_NONE},
{"Sc,Y,La,Ce,Pr,Nd,Pm,Sm,Eu,Gd,Tb,Dy,Ho,Er,Tm,Yb,Lu",
"Sc,Y,La,Ce,Pr,Nd,Pm,Sm,Eu,Gd,Tb,Dy,Ho,Er,Tm,Yb,Lu(-N,O,F,Cl,Br,I)(-N,O,F,"
"Cl,Br,I)(-O,F,Cl,Br,I)",
0, RT_NONE, TP_NONE},
{"Fe,Co,Ni,Mn,Cr,Mo,W,Ru",
"Fe,Co,Ni,Mn,Cr,Mo,W,Ru(-N,O,S,F,Cl,Br,I)(-N,O,S,F,Cl,Br,I)(-N,O,S,F,Cl,"
"Br,I)",
0, RT_NONE, TP_NONE},
{"Ti", "Ti(-C,F,Cl,Br,I)(-N,O)(-N,O)", 0, RT_NONE, TP_NONE},
{"Zr", "Zr(-C)(-C)(-F,Cl,Br,I)", 0, RT_NONE, TP_NONE},
{"Fe,Co,Ni,Cr,Mo,W,Cu", "Fe,Co,Ni,Cr,Mo,W,Cu(-N+1)(-N,O)(-N,O)", 0, RT_NONE,
TP_NONE},
{"Fe,Co,Ni,Cr,Mo,W,Cu", "Fe,Co,Ni,Cr,Mo,W,Cu(-N+1)(-N+1)(-N,O)", 0, RT_NONE,
TP_NONE},
{"Fe,V,Ce,Pr,Nd,Pm,Sm,Eu,Gd,Tb,Dy,Ho,Er,Tm,Yb,Lu",
"Fe,V,Ce,Pr,Nd,Pm,Sm,Eu,Gd,Tb,Dy,Ho,Er,Tm,Yb,Lu(-N+1)(-N+1)(-N+1)", 0,
RT_NONE, TP_NONE},
{"Ti", "Ti(=O)(-O)(-O)", 0, RT_NONE, TP_NONE},
{"V", "V(=O)(-O)(-O)", 0, RT_NONE, TP_NONE},
{"V", "V(=O)(=O)(-O)", 0, RT_NONE, TP_NONE},
{"Zn,Cd,Hg", "Zn,Cd,Hg-1(-Cl,Br,I)(-Cl,Br,I)(-Cl,Br,I)", 0, RT_NONE,
TP_NONE},
{"Co,Cr,Cu", "Co,Cr,Cu-1(-N+1)(-O)(-O)", 0, RT_NONE, TP_NONE},
{"Ru", "Ru-1(-P+1)(-F,Cl,Br,I)(-F,Cl,Br,I)", 0, RT_NONE, TP_NONE},
{"Ru", "Ru-1(-C,P,Cl,Br,I+1)(-O,Cl,Br,I+1)(-F,Cl,Br,I)", 0, RT_NONE,
TP_NONE},
{"Mn", "Mn-1(-N+1)(-N+1)(-O)", 0, RT_NONE, TP_NONE},
{"Cu", "Cu-1(-N+1)(-N+1)(-N+1)", 0, RT_NONE, TP_NONE},
{"Fe", "Fe-2(-C,F,Cl,Br,I)(-C)(-C)", 1, RT_NONE, TP_NONE},
{"Mn", "Mn-2(-N+1)(-N+1)(-O)", 1, RT_NONE, TP_NONE},
{"Ru", "Ru-2(-N+1)(-N+1)(-N+1)", 1, RT_NONE, TP_NONE},
{"Fe,Cr", "Fe,Cr-3(-C)(-C)(-C)", 2, RT_NONE, TP_NONE},
{"Cr", "Cr-3(-P+1)(-C)(-C)", 2, RT_NONE, TP_NONE},
{"Au", "Au-3(-P+1)(-S+1)(-S+1)", 2, RT_NONE, TP_NONE},
{"C", "C(-C)(-C)(-Li,Na,K,Rb,Cs,Be,Mg,Ca,Sr,Ba,Al,Ga,In,Tl,As,Sb,Bi)", 0,
RT_NONE, TP_NONE},
{"C",
"C(-C)(-C)(-Cu,Ag,Au,Zn,Cd,Hg,Fe,Ru,Os,Co,Rh,Ir,Ni,Pd,Pt,Ti,Zr,Hf,V,Nb,Ta,"
"Cr,Mo,W,Mn,Re)",
0, RT_NONE, TP_NONE},
{"C", "C(-S)(-S)(-Li,Na,K,Rb,Cs)", 0, RT_NONE, TP_NONE},
{"C", "C(=C,N)(-C)(-Li,Na,K,Rb,Cs,Be,Mg,Ca,Sr,Ba,Al,Ga,In,Tl,Sb,Bi)", 0,
RT_NONE, TP_NONE},
{"C",
"C(=C,N)(-C,O)(-Cu,Ag,Au,Zn,Cd,Hg,Fe,Ru,Os,Co,Rh,Ir,Ni,Pd,Pt,Ti,Zr,Hf,V,"
"Nb,Ta,Cr,Mo,W,Mn,Re)",
0, RT_NONE, TP_NONE},
{"C", "C(=C,O)(-O,S)(-Cu,Ag,Au,Zn,Cd,Hg,Ti)", 0, RT_NONE, TP_NONE},
{"N", "N(-C)(-C,N,S)(-Be,Mg,Ca,Sr,Ba,Al,Ga,In,Tl,Ge,Sn,Pb,Sb,Bi)", 0,
RT_NONE, TP_NONE},
{"N",
"N(-C,Si)(-C,N,Si)(-Cu,Ag,Au,Zn,Cd,Hg,Fe,Ru,Os,Co,Rh,Ir,Ni,Pd,Pt,Ti,Zr,Hf,"
"V,Nb,Ta,Cr,Mo,W,Mn,Re)",
0, RT_NONE, TP_NONE},
{"N", "N(-C)(-C,N)(-Sc,Y,La,Ce,Pr,Nd,Pm,Sm,Eu,Gd,Tb,Dy,Ho,Er,Tm,Yb,Lu)", 0,
RT_NONE, TP_NONE},
{"N", "N(-C)(-C,N)(-Cu,Cr,Co-1)", 0, RT_NONE, TP_NONE},
{"C", "C(-C)(-C)(-Fe-2)", 0, RT_NONE, TP_NONE},
{"C", "C(=O)(-C)(-Fe-2)", 0, RT_NONE, TP_NONE},
{"N", "N(-C)(-C,N)(-Cu,Zn,Fe,Co,Ni,Cr-2)", 0, RT_NONE, TP_NONE},
{"N", "N(-C)(-N+1)(-Cu,Ag,Au,Zn,Cd,Hg,Fe,Ru,Os,Co,Rh,Ir,Ni,Pd,Pt)", 0,
RT_NONE, TP_NONE},
{"N", "N+1(-C)(-C)(-Zr,Mn,Co-2)", 0, RT_NONE, TP_NONE},
{"N", "N+1(-C)(-C)(-Co,Mn-3)", 0, RT_NONE, TP_NONE},
{"N", "N+1(=C,N)(-C,N,O)(-Al,Ge,Cu,Ag,Au,Zn,Cd,Hg)", 0, RT_NONE, TP_NONE},
{"N",
"N+1(=C,N)(-C,N,O)(-Fe,Co,Ni,Ru,Rh,Pd,Os,Ir,Pt,Sc,Ti,V,Cr,Mn,Y,Zr,Nb,Mo,"
"La,Hf,Ta,W,Re)",
0, RT_NONE, TP_NONE},
{"N",
"N+1(=C,N)(-C,N,O)(-Mn,Sc,Y,La,Ce,Pr,Nd,Pm,Sm,Eu,Gd,Tb,Dy,Ho,Er,Tm,Yb,Lu)",
0, RT_NONE, TP_NONE},
{"N",
"N+1(=C,N)(-C,N,O)(-Mn,Sc,Y,La,Ce,Pr,Nd,Pm,Sm,Eu,Gd,Tb,Dy,Ho,Er,Tm,Yb,Lu-"
"3)",
0, RT_NONE, TP_NONE},
{"N", "N+1(=C,N)(-C)(-Cr,Co,Mn-3)", 0, RT_NONE, TP_NONE},
{"N", "N+1(=C,N)(-C,N,O)(-Cu,Zn,Cd,Fe,Co,Ni,Mn,Cr,Al-2)", 0, RT_NONE,
TP_NONE},
{"N", "N+1(=C,N)(-C,N)(-Cu,Au,Fe,Co,Cr,Mn,Al-1)", 0, RT_NONE, TP_NONE},
{"N", "N+1(=C)(-N+1)(-Cu,Zn,Cd,Ni)", 0, RT_NONE, TP_NONE},
{"N", "N+1(=C)(-O-1)(-Cu,Zn,Cd,Ni-2)", 0, RT_NONE, TP_NONE},
{"N",
"N+1(=C,N+1)(-C)(-Fe,Co,Ni,Ru,Rh,Pd,Os,Ir,Pt,Sc,Ti,V,Cr,Mn,Y,Zr,Nb,Mo,La,"
"Hf,Ta,W,Re,Cu,Ag,Au,Zn,Cd,Hg)",
0, RT_NONE, TP_NONE},
{"O,S", "O,S+1(-C)(-C)(-Cu,Ag,Au,Zn,Cd,Hg,Fe,Ru,Os,Co,Rh,Ir,Ni,Pd,Pt)", 0,
RT_NONE, TP_NONE},
{"O", "O+1(-C)(-C)(-Ti,Zr,Hf,V,Nb,Ta,Cr,Mo,W,Mn,Re)", 0, RT_NONE, TP_NONE},
{"O", "O+1(-C)(-C)(-Ru-1)", 0, RT_NONE, TP_NONE},
{"S", "S+1(-Au-1)(-Au-3)(-C)", 0, RT_NONE, TP_NONE},
{"P", "P(-Zn)(-Zn)(-Zn)", 0, RT_NONE, TP_NONE},
{"C", "C.(-C.)(-C.)(-Hg)", 0, DOUBLET, TP_NONE},
{"C",
"C(=O)(-C,O)(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,"
"Ser,Thr,Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Cys",
"Cys(-S)(-C,O,Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,Met,Phe,Pro,"
"Ser,Thr,Trp,Tyr,Val)(-Ala,Arg,Asn,Asp,Cys,Gln,Glu,Gly,His,Ile,Leu,Lys,"
"Met,Phe,Pro,Ser,Thr,Trp,Tyr,Val)",
0, RT_NONE, TP_NONE},
{"Al", "Al(-C)(-C)(-H)", 0, RT_NONE, TP_NONE},
{"C", "C(-C)(-C)(-Fe+1)", 0, RT_NONE, TP_NONE},
{"C", "C(=C)(-C)(-Fe+1)", 0, RT_NONE, TP_NONE},
{"C", "C(=C,O)(-C,N,O,H)(-H)", 0, RT_NONE, TP_NONE},
{"Cr,Fe", "Cr,Fe(-F,Cl)(-F,Cl)(-F,Cl,O)", 0, RT_NONE, TP_NONE},
{"Fe", "Fe+1(-C)(-C)(-H)", 0, RT_NONE, TP_NONE},
{"N", "N(-C,O,H)(-H)(-H)", 0, RT_NONE, TP_NONE},
{"Si", "Si(=O)(-O)(-O)", 0, RT_NONE, TP_NONE},
{"P", "P(=O)(=O)(-O)", 0, RT_NONE, TP_NONE},
{"N", "N(-C)(-C)(-Al+1)", 0, RT_NONE, TP_NONE},
{"N", "N(-C)(-C)(-Mn+2)", 0, RT_NONE, TP_NONE},
{"C", "C(-C)(-C)(-R)", 0, RT_NONE, TP_NONE},
{"C", "C(=O)(-C)(-R)", 0, RT_NONE, TP_NONE},
{"N", "N+1(-O-1)(-C)(-N)", 0, RT_NONE, TP_NONE},
{"B",
"B-1(-C,N,O,F,Cl,Br,I)(-C,N,O,F,Cl,Br,I)(-C,N,O,F,Cl,Br,I)(-C,N,O,F,Cl,Br,"
"I)",
0, RT_NONE, TP_NONE},
{"B", "B-1(-N+1)(-C,N,O)(-C,F,Cl,Br,I)(-C,F,Cl,Br,I)", 0, RT_NONE, TP_NONE},
{"B", "B-1(-C.)(-C)(-C)(-C)", 0, RT_NONE, TP_NONE},
{"C", "C(-B)(-C)(-C)(-C,S)", 0, RT_NONE, TP_NONE},
{"C",
"C(-H,D,T)(-C,D,T,Cl,Br)(-C,D,T,N,P,O,S,Se,F,Cl,Br,I)(-B,C,D,T,N,P,O,S,Se,"
"Te,F,Cl,Br,I)",
0, RT_NONE, TP_NONE},
{"C", "C(-H,D,T)(-N,P+1)(-C)(-C)", 0, RT_NONE, TP_NONE},
{"C", "C(-C,N,O,S)(-C,N,P,O,S)(-C,N,P,O,S,Se)(-C,N,P,O,S,Se,Te)", 0,
RT_NONE, TP_NONE},
{"C",
"C(-F,Cl,Br,I)(-C,O,S,F,Cl,Br,I)(-C,N,P,O,S,F,Cl,Br,I)(-C,N,P,O,S,Se,F,Cl,"
"Br,I)",
0, RT_NONE, TP_NONE},
{"C",
"C(-Si,Ge,Sn)(-C,Si,Ge,Sn,F,Cl,Br,I)(-C,S,F,Cl,Br,I)(-C,N,O,S,F,Cl,Br,I)",
0, RT_NONE, TP_NONE},
{"C", "C(-N,P,S,I+1)(-C,O,S)(-C,O,S)(-C,N,O,S,F,Cl,Br,I)", 0, RT_NONE,
TP_NONE},
{"C", "C(-N,P+1)(-F,Cl,Br,I)(-F,Cl,Br,I)(-C,O,S,F,Cl,Br,I)", 0, RT_NONE,
TP_NONE},
{"C", "C(-N+1)(-N+1)(-C)(-C,F,Cl,Br,I)", 0, RT_NONE, TP_NONE},
{"C", "C(-N+1)(-N+1)(-N+1)(-C)", 0, RT_NONE, TP_NONE},
{"C", "C(-N,P+1)(-B-1)(-C)(-C)", 0, RT_NONE, TP_NONE},
{"C", "C(-B,C-1)(-C)(-C)(-C)", 0, RT_NONE, TP_NONE},
{"C,Si,Sn", "C,Si,Sn(-C.)(-C,F,Cl,Br,I)(-C,F,Cl,Br,I)(-C,O,F,Cl,Br,I)", 0,
RT_NONE, TP_NONE},
{"C", "C(-C.)(-C.)(-C)(-C)", 0, RT_NONE, TP_NONE},
{"Cl,Br,I", "Cl,Br,I(=O)(-C,O)(-C,O)(-C,O)", 0, RT_NONE, TP_NONE},
{"Cl,Br,I", "Cl,Br,I(=O)(=O)(=O)(-O)", 0, RT_NONE, TP_NONE},
{"N", "N+1(-C)(-C)(-C)(-C,Sn,B,N,P,O,S,F,Cl,Br,I)", 0, RT_NONE, TP_NONE},
{"N", "N+1(-C,Si,B-1)(-C)(-C)(-C)", 0, RT_NONE, TP_NONE},
{"N", "N+1(-N,O,S-1)(-C)(-C,N)(-C,N,O)", 0, RT_NONE, TP_NONE},
{"P", "P(-C)(-C)(-C)(-N,O)", 0, RT_NONE, TP_NONE},
{"P", "P(-C)(-N,O)(-N,O)(-N,O)", 0, RT_NONE, TP_NONE},
{"P", "P(-N,O)(-N,O)(-N,O)(-N,O)", 0, RT_NONE, TP_NONE},
{"P", "P(=C)(-C,N,O)(-C,N,O)(-C,N,O)", 0, RT_NONE, TP_NONE},
{"P", "P(=O)(-H)(-C,N,O)(-C,N,O)", 0, RT_NONE, TP_NONE},
{"P",
"P(=O,S,N,Se)(-C,Si,N,P,O,S,Se,F,Cl,Br,I)(-C,N,P,O,S,Se,F,Cl,Br,I)(-C,N,P,"
"O,S,Se,F,Cl,Br,I)",
0, RT_NONE, TP_NONE},
{"P", "P(=O)(-N+1)(-O)(-S)", 0, RT_NONE, TP_NONE},
{"P", "P(=N,S+1)(-C)(-C)(-C)", 0, RT_NONE, TP_NONE},
{"P", "P(-C.)(=O)(-C)(-C)", 0, RT_NONE, TP_NONE},
{"P", "P+1(-C,N)(-C,N,O,S,Se)(-C,N,O,S,Se)(-C,N,O,S,Se,Cl,Br,I)", 0,
RT_NONE, TP_NONE},
{"P", "P+1(-B-1)(-C)(-C)(-C)", 0, RT_NONE, TP_NONE},
{"P", "P+1(-Ru-3)(-C)(-C)(-C)", 0, RT_NONE, TP_NONE},
{"S", "S(-C)(-C,O)(-C,N,O,Cl,Br,I)(-C,O,P,Cl,Br,I)", 0, RT_NONE, TP_NONE},
{"S", "S(-N)(-F,Cl,Br,I)(-F,Cl,Br,I)(-F,Cl,Br,I)", 0, RT_NONE, TP_NONE},
{"S,Se", "S,Se(=C,N,O)(=N,O)(-C,N,O,S,F,Cl,Br,I)(-C,Sn,N,P,O,S,F,Cl,Br,I)",
0, RT_NONE, TP_NONE},
{"S", "S(=O)(=O)(-N+1)(-C,N,O)", 0, RT_NONE, TP_NONE},
{"S", "S(-C.)(=O)(=O)(-C)", 0, RT_NONE, TP_NONE},
{"S", "S+1(=O)(-C)(-C,O)(-C,N,O)", 0, RT_NONE, TP_NONE},
{"S", "S+1(=N)(-C)(-C)(-N)", 0, RT_NONE, TP_NONE},
{"Se,Te", "Se,Te(-C)(-C,Cl,Br,I)(-Cl,Br,I)(-Cl,Br,I)", 0, RT_NONE, TP_NONE},
{"Si",
"Si(-C,N,O,S)(-C,N,O,S,Cl,Br,I)(-C,N,P,O,S,Cl,Br,I)(-C,N,P,O,S,F,Cl,Br,I,"
"H,D,T)",
0, RT_NONE, TP_NONE},
{"Si", "Si(-Si)(-C,Si)(-C,Si)(-C,Si,O,F,Cl,Br,I,H,D,T)", 0, RT_NONE,
TP_NONE},
{"Si", "Si(-C,F,Cl,Br,I)(-C,F,Cl,Br,I)(-C,F,Cl,Br,I)(-C,F,Cl,Br,I)", 0,
RT_NONE, TP_NONE},
{"Si", "Si(-N+1)(-N+1)(-N)(-N)", 0, RT_NONE, TP_NONE},
{"Si,Sn", "Si,Sn(-N+1)(-C)(-C)(-C)", 0, RT_NONE, TP_NONE},
{"Ge", "Ge(-C,O)(-C,O)(-C,O,S,Cl,Br,I)(-C,O,S,Cl,Br,I)", 0, RT_NONE,
TP_NONE},
{"Sn",
"Sn(-C,Sn)(-C,N,O,S,F,Cl,Br,I)(-C,N,O,S,F,Cl,Br,I)(-C,N,O,S,F,Cl,Br,I,D,"
"T)",
0, RT_NONE, TP_NONE},
{"Sn", "Sn(-O,S,F,Cl,Br,I)(-O,S,F,Cl,Br,I)(-O,S,F,Cl,Br,I)(-O,S,F,Cl,Br,I)",
0, RT_NONE, TP_NONE},
{"Pb", "Pb(-C)(-C,N,O,S,F,Cl,Br,I)(-C,N,O,S,F,Cl,Br,I)(-C,N,O,S,F,Cl,Br,I)",
0, RT_NONE, TP_NONE},
{"As,Sb", "As,Sb(=O,S)(-C,O)(-C,O)(-C,O)", 0, RT_NONE, TP_NONE},
{"Al,Ge,Sn", "Al,Ge,Sn(-N+1)(-N+1)(-N,O)(-N,O)", 0, RT_NONE, TP_NONE},
{"Al", "Al-1(-C+1)(-Cl,Br,I+1)(-C)(-C)", 0, RT_NONE, TP_NONE},
{"Al", "Al-1(-N+1)(-N+1)(-O)(-O)", 0, RT_NONE, TP_NONE},
{"Hg", "Hg(-N)(-N)(-S)(-S)", 0, RT_NONE, TP_NONE},
{"Cu,Ag,Au,Zn,Cd,Hg", "Cu,Ag,Au,Zn,Cd,Hg(-N,O+1)(-N,O)(-N,O)(-N,O)", 0,
RT_NONE, TP_NONE},
{"Cu,Ag,Au,Zn,Cd,Hg",
"Cu,Ag,Au,Zn,Cd,Hg(-N,P,O+1)(-N,P,O+1)(-N,O,F,Cl,Br,I)(-N,O,F,Cl,Br,I)", 0,
RT_NONE, TP_NONE},
{"Fe,Co,Ni",
"Fe,Co,Ni(-N,P,O,S+1)(-N,P,O,S+1)(-C,N,O,S,F,Cl,Br,I)(-C,N,O,S,F,Cl,Br,I)",
0, RT_NONE, TP_NONE},
{"Cr,Mn,Mo,W,Re",
"Cr,Mn,Mo,W,Re(-N,P,O,S+1)(-N,P,O,S+1)(-N,O,S,F,Cl,Br,I)(-N,O,S,F,Cl,Br,"
"I)",
0, RT_NONE, TP_NONE},
{"Ru,Rh,Pd,Os,Ir,Pt",
"Ru,Rh,Pd,Os,Ir,Pt(-N,P,O,S+1)(-N,P,O,S+1)(-C,N,O,S,F,Cl,Br,I)(-C,N,O,S,F,"
"Cl,Br,I)",
0, RT_NONE, TP_NONE},
{"Ru,Rh,Pd,Os,Ir,Pt",
"Ru,Rh,Pd,Os,Ir,Pt(-N,P,O,S+1)(-N,P,O,S+1)(-N,P,O,S+1)(-N,P,O,S+1)", 0,
RT_NONE, TP_NONE},
{"Cu", "Cu-1(-N+1)(-N)(-O)(-O)", 0, RT_NONE, TP_NONE},
{"Ru,Rh,Pd,Os,Ir,Pt",
"Ru,Rh,Pd,Os,Ir,Pt-2(-C,N)(-C,N)(-C,N,O,F,Cl,Br,I)(-C,N,O,F,Cl,Br,I)", 1,
RT_NONE, TP_NONE},
{"Cu,Zn,Cd,Fe,Co,Ni,Mn,Ru",
"Cu,Zn,Cd,Fe,Co,Ni,Mn,Ru-2(-N+1)(-N+1)(-N,O,F,Cl,Br,I)(-N,O,F,Cl,Br,I)", 1,
RT_NONE, TP_NONE},
{"Co", "Co-2(-N+1)(-N+1)(-N+1)(-F)", 1, RT_NONE, TP_NONE},
{"Cu,Zn,Cd,Ni", "Cu,Zn,Cd,Ni-2(-N+1)(-N+1)(-N+1)(-N+1)", 1, RT_NONE,
TP_NONE},
{"Rh", "Rh-3(-Cl+1)(-Cl+1)(-P+1)(-P+1)", 2, RT_NONE, TP_NONE},
{"Mn,Re", "Mn,Re(=O)(=O)(=O)(-O)", 0, RT_NONE, TP_NONE},
{"Cr,Mo,W", "Cr,Mo,W(=O,S)(=O,S)(-O,S)(-O,S)", 0, RT_NONE, TP_NONE},
{"Ni", "Ni(-C,S)(-C,S)(-C,S)(-C,S)", 0, RT_NONE, TP_NONE},
{"Ni", "Ni-1(-S)(-S)(-S)(-S)", 0, RT_NONE, TP_NONE},
{"Mn", "Mn-1(-N+1)(-O)(-O)(-O)", 0, RT_NONE, TP_NONE},
{"Ti", "Ti(-C,N,O,Cl)(-C,N,O,Cl)(-C,N,O,Cl)(-C,N,O,Cl)", 0, RT_NONE,
TP_NONE},
{"V", "V(=O)(-C,O,S)(-C,O,S)(-C,O,S)", 0, RT_NONE, TP_NONE},
{"Zr", "Zr(-C,O,S)(-C,O,S,F,Cl,Br,I)(-N,O,S,F,Cl,Br,I)(-N,O,S,F,Cl,Br,I)",
0, RT_NONE, TP_NONE},
{"C", "C(-Zn)(-C)(-C,F,Cl,Br,I)(-F,Cl,Br,I)", 0, RT_NONE, TP_NONE},
{"C", "C(-Li,Na,K,Rb,Cs,Be,Mg,Ca,Sr,Ba,Al,Ga,In,Tl,Sb,Bi)(-C)(-C)(-C)", 0,
RT_NONE, TP_NONE},
{"C",
"C(-Cu,Ag,Au,Zn,Cd,Hg,Fe,Ru,Os,Co,Rh,Ir,Ni,Pd,Pt,Ti,Zr,Hf,V,Nb,Ta,Cr,Mo,W,"
"Mn,Re)(-C)(-C)(-C)",
0, RT_NONE, TP_NONE},
{"C", "C(-Li,Na,K,Rb,Cs)(-N+1)(-C)(-C)", 0, RT_NONE, TP_NONE},
{"P", "P(-Zn)(=O)(-C)(-C)", 0, RT_NONE, TP_NONE},
{"C", "C(-Fe-2)(-C)(-C)(-C)", 0, RT_NONE, TP_NONE},
{"N,P,As",
"N,P,As+1(-Cu,Ag,Au,Zn,Cd,Hg,Fe,Co,Ni,Ru,Rh,Pd,Os,Ir,Pt,Ti,Zr,Hf,V,Nb,Ta,"
"Cr,Mo,W,Mn,Tc,Re)(-C)(-C)(-C)",
0, RT_NONE, TP_NONE},
{"N,P,As", "N,P,As+1(-Cu,Ag,Au,Zn,Cd,Hg-1)(-C)(-C)(-C)", 0, RT_NONE,
TP_NONE},
{"P", "P+1(-Ru-1)(-C)(-C)(-C)", 0, RT_NONE, TP_NONE},
{"P", "P+1(-Pd-1)(-C)(-C)(-C)", 0, RT_NONE, TP_NONE},
{"P", "P+1(-Ru-2)(-C)(-C)(-C)", 0, RT_NONE, TP_NONE},
{"N,P", "N,P+1(-Au,Fe,Co,V,Mn,Cr-3)(-C)(-C)(-C)", 0, RT_NONE, TP_NONE},
{"P", "P+1(-Cr,Rh-3)(-O)(-O)(-O)", 0, RT_NONE, TP_NONE},
{"C", "C(-C,Br,H)(-H)(-H)(-H)", 0, RT_NONE, TP_NONE},
{"C", "C(-C,N)(-C,N,O,F,Cl,Br)(-H)(-H)", 0, RT_NONE, TP_NONE},
{"C", "C(-C,O,Cl)(-C,F,Cl)(-F,Cl)(-H)", 0, RT_NONE, TP_NONE},
{"C", "C(-C)(-H)(-H)(-N+1)", 0, RT_NONE, TP_NONE},
{"Co,Cu,Fe,Sc,Y,La,Ce,Pr,Nd,Pm,Sm,Eu,Gd,Tb,Dy,Ho,Er,Tm,Yb,Lu",
"Co,Cu,Fe,Sc,Y,La,Ce,Pr,Nd,Pm,Sm,Eu,Gd,Tb,Dy,Ho,Er,Tm,Yb,Lu(-N,O)(-N,O)(-"
"N,O)(-N,O)",
0, RT_NONE, TP_NONE},
{"Co,Cr", "Co,Cr-1(-O)(-O)(-O)(-O)", 0, RT_NONE, TP_NONE},
{"Ni", "Ni(-N)(-N)(-O)(-O)", 0, RT_NONE, TP_NONE},
{"P", "P(=O)(-H)(-H)(-O)", 0, RT_NONE, TP_NONE},
{"Zn", "Zn(-O)(-O)(-S)(-S)", 0, RT_NONE, TP_NONE},
{"Al", "Al-1(-O)(-O)(-O)(-O)", 0, RT_NONE, TP_NONE},
{"Al", "Al(-N+1)(-N+1)(-N)(-N)(-Cl,Br,I)", 0, RT_NONE, TP_NONE},
{"As", "As(-C)(-C)(-C)(-C,O)(-C,O,Cl,Br,I)", 0, RT_NONE, TP_NONE},
{"Bi", "Bi(-C)(-C)(-C)(-Cl)(-Cl)", 0, RT_NONE, TP_NONE},
{"I", "I(-C)(-O)(-O)(-O)(-O)", 0, RT_NONE, TP_NONE},
{"P", "P(-C,N,O)(-C,N,O)(-C,N,O,F,Cl,Br,I)(-C,O,F,Cl,Br,I)(-O,S,F,Cl,Br,I)",
0, RT_NONE, TP_NONE},
{"Sb", "Sb(-C)(-C)(-C)(-C,O,S,F,Cl,Br,I)(-C,O,S,F,Cl,Br,I)", 0, RT_NONE,
TP_NONE},
{"Si", "Si-1(-N+1)(-C)(-O)(-O)(-O)", 0, RT_NONE, TP_NONE},
{"Sn", "Sn-1(-C)(-C)(-C)(-Br)(-Cl)", 0, RT_NONE, TP_NONE},
{"Cu,Zn,Cd,Ni", "Cu,Zn,Cd,Ni(-S+1)(-N+1)(-N+1)(-O)(-O)", 0, RT_NONE,
TP_NONE},
{"Fe,Cr,Mn", "Fe,Cr,Mn(-N,P,O+1)(-N,P,O+1)(-N,O)(-N,O)(-N,O,F,Cl,Br,I)", 0,
RT_NONE, TP_NONE},
{"Co,Mn,Al", "Co,Mn,Al-2(-N,P,O+1)(-N,P,O+1)(-N,O)(-N,O)(-N,O,F,Cl,Br,I)",
1, RT_NONE, TP_NONE},
{"Co,Mn", "Co,Mn-3(-N,P,O+1)(-N,P,O+1)(-N,P+1)(-N,O)(-N,O,F,Cl,Br,I)", 2,
RT_NONE, TP_NONE},
{"P,Sb", "P,Sb(-Cl)(-Cl)(-Cl)(-Cl)(-Cl)", 0, RT_NONE, TP_NONE},
{"V", "V(-O)(-O)(-O)(-O)(-O)", 0, RT_NONE, TP_NONE},
{"V", "V(=O)(-N,O+1)(-N,O+1)(-N,O)(-N,O)", 0, RT_NONE, TP_NONE},
{"V", "V-2(=O)(-N,O+1)(-N,O+1)(-N,O)(-N,O)", 1, RT_NONE, TP_NONE},
{"Ru", "Ru-2(=C)(-N,P,O+1)(-N,P,O+1)(-F,Cl,Br,I)(-F,Cl,Br,I)", 1, RT_NONE,
TP_NONE},
{"Ru", "Ru-3(-P+1)(-P+1)(-P+1)(-Cl)(-Cl)", 2, RT_NONE, TP_NONE},
{"Al", "Al(-N+1)(-N+1)(-N+1)(-O)(-O)(-O)", 0, RT_NONE, TP_NONE},
{"Ge,Sn",
"Ge,Sn(-N,O+1)(-N,O+1)(-N,O)(-N,O)(-N,O,S,F,Cl,Br,I)(-N,O,S,F,Cl,Br,I)", 0,
RT_NONE, TP_NONE},
{"P", "P(-N)(-O)(-O)(-O)(-O)(-O)", 0, RT_NONE, TP_NONE},
{"S", "S(-C)(-F)(-F)(-F)(-F)(-F)", 0, RT_NONE, TP_NONE},
{"Si", "Si(-F)(-F)(-F)(-F)(-F)(-F)", 0, RT_NONE, TP_NONE},
{"P,As,Sb",
"P,As,Sb-1(-F,Cl,Br,I)(-F,Cl,Br,I)(-F,Cl,Br,I)(-F,Cl,Br,I)(-F,Cl,Br,I)(-F,"
"Cl,Br,I)",
0, RT_NONE, TP_NONE},
{"Nb,V",
"Nb,V-1(-F,Cl,Br,I)(-F,Cl,Br,I)(-F,Cl,Br,I)(-F,Cl,Br,I)(-F,Cl,Br,I)(-F,Cl,"
"Br,I)",
0, RT_NONE, TP_NONE},
{"Ti", "Ti(-C)(-C)(-C)(-C)(-C)(-C)", 0, RT_NONE, TP_NONE},
{"Fe,Co,Ni,Ru,Rh,Pd,Os,Ir,Pt",
"Fe,Co,Ni,Ru,Rh,Pd,Os,Ir,Pt(-F,Cl,Br,I)(-F,Cl,Br,I)(-F,Cl,Br,I)(-F,Cl,Br,"
"I)(-F,Cl,Br,I)(-F,Cl,Br,I)",
0, RT_NONE, TP_NONE},
{"Fe,Co,Ni,Cr,Mn,Mo,W",
"Fe,Co,Ni,Cr,Mn,Mo,W(-N,O+1)(-N,O+1)(-C,N,O)(-C,N,O)(-C,N,O,F,Cl,Br,I)(-C,"
"N,O,F,Cl,Br,I)",
0, RT_NONE, TP_NONE},
{"Fe,Co,Ni,Cr,Mn,Mo,W",
"Fe,Co,Ni,Cr,Mn,Mo,W(-N,O+1)(-N,O+1)(-N,O+1)(-N,O)(-C,N,O,F,Cl,Br,I)(-C,N,"
"O,F,Cl,Br,I)",
0, RT_NONE, TP_NONE},
{"Fe,Co,Ni,Cr,Mn,Mo,W",
"Fe,Co,Ni,Cr,Mn,Mo,W(-N,O+1)(-N,O+1)(-N,O+1)(-N,O+1)(-C,N,O,F,Cl,Br,I)(-C,"
"N,O,F,Cl,Br,I)",
0, RT_NONE, TP_NONE},
{"Ru,Rh,Pd,Os,Ir,Pt",
"Ru,Rh,Pd,Os,Ir,Pt(-N,O+1)(-N,O+1)(-N,O+1)(-N,O+1)(-F,Cl,Br,I)(-F,Cl,Br,"
"I)",
0, RT_NONE, TP_NONE},
{"Fe,Co,Ni,Cr,Mn,Mo,W,Ru,Rh,Pd,Os,Ir,Pt",
"Fe,Co,Ni,Cr,Mn,Mo,W,Ru,Rh,Pd,Os,Ir,Pt(-N,O+1)(-N,O+1)(-N,O+1)(-N,O+1)(-N,"
"O+1)(-N,O+1)",
0, RT_NONE, TP_NONE},
{"Sc,Y,La,Ce,Pr,Nd,Pm,Sm,Eu,Gd,Tb,Dy,Ho,Er,Tm,Yb,Lu",
"Sc,Y,La,Ce,Pr,Nd,Pm,Sm,Eu,Gd,Tb,Dy,Ho,Er,Tm,Yb,Lu-3(-N,O+1)(-N,O+1)(-N,O+"
"1)(-N,O+1)(-N,O+1)(-N,O+1)",
2, RT_NONE, TP_NONE},
{"Fe,Co,Cr", "Fe,Co,Cr-1(-N+1)(-N+1)(-N,O)(-N,O)(-O)(-O)", 0, RT_NONE,
TP_NONE},
{"Fe,Co,Ni,Cr,Zr",
"Fe,Co,Ni,Cr,Zr-2(-N,O+1)(-N,O+1)(-C,N,O)(-C,N,O)(-C,N,O,F,Cl,Br,I)(-C,N,"
"O,F,Cl,Br,I)",
1, RT_NONE, TP_NONE},
{"Co", "Co-2(-N+1)(-N+1)(-N+1)(-Cl)(-Cl)(-Cl)", 1, RT_NONE, TP_NONE},
{"Cr,Mn", "Cr,Mn-3(-N+1)(-N+1)(-N+1)(-O)(-O)(-O)", 2, RT_NONE, TP_NONE},
{"Fe", "Fe-3(-N+1)(-N+1)(-N,O)(-N,O)(-O)(-O)", 2, RT_NONE, TP_NONE},
{"Fe,Co,Ni,V,Nb,Ta",
"Fe,Co,Ni,V,Nb,Ta-3(-N,O+1)(-N,O+1)(-N,O+1)(-N,O+1)(-O,Cl)(-O,Cl)", 2,
RT_NONE, TP_NONE},
{"Ru", "Ru-3(=C)(-N+1)(-N+1)(-P+1)(-Cl)(-Cl)", 2, RT_NONE, TP_NONE},
{"Co", "Co-3(-N+1)(-N+1)(-N+1)(-N+1)(-N+1)(-Cl)", 2, RT_NONE, TP_NONE},
{"Co", "Co-3(-N+1)(-N+1)(-N+1)(-N+1)(-N+1)(-N+1)", 2, RT_NONE, TP_NONE},
{"Zr", "Zr(-N+1)(-N+1)(-N+1)(-N,O)(-N,O)(-N,O)(-O)", 0, RT_NONE, TP_NONE},
{"Zr", "Zr(-N+1)(-N+1)(-N+1)(-N+1)(-N,O)(-N,O)(-N,O)(-N,O)", 0, RT_NONE,
TP_NONE}};
static const AugmentedAtom_t DefaultAcidicAtoms[] = {
{"C", "C", 0, RT_NONE, TP_NONE},
{"C", "C(-A)", 0, RT_NONE, TP_NONE},
{"C", "C(-A)(-A)", 0, RT_NONE, TP_NONE},
{"C", "C(=A)", 0, RT_NONE, TP_NONE},
{"C", "C(-A)(-A)(-A)", 0, RT_NONE, TP_NONE},
{"C", "C(=A)(-A)", 0, RT_NONE, TP_NONE},
{"C", "C(#A)", 0, RT_NONE, TP_NONE},
{"N", "N", 0, RT_NONE, TP_NONE},
{"N", "N(-A)", 0, RT_NONE, TP_NONE},
{"N", "N(=A)", 0, RT_NONE, TP_NONE},
{"N", "N(-A)(-A)", 0, RT_NONE, TP_NONE},
{"N", "N+1", 0, RT_NONE, TP_NONE},
{"N", "N+1(-A)", 0, RT_NONE, TP_NONE},
{"N", "N+1(-A)(-A)", 0, RT_NONE, TP_NONE},
{"N", "N+1(-A)(-A)(-A)", 0, RT_NONE, TP_NONE},
{"N", "N-1(-A)", 0, RT_NONE, TP_NONE},
{"P", "P", 0, RT_NONE, TP_NONE},
{"P", "P(-A)", 0, RT_NONE, TP_NONE},
{"P", "P(-A)(-A)", 0, RT_NONE, TP_NONE},
{"P", "P(=A)(-A)", 0, RT_NONE, TP_NONE},
{"P", "P+1", 0, RT_NONE, TP_NONE},
{"P", "P+1(-A)", 0, RT_NONE, TP_NONE},
{"P", "P+1(-A)(-A)", 0, RT_NONE, TP_NONE},
{"O", "O", 0, RT_NONE, TP_NONE},
{"O", "O(-A)", 0, RT_NONE, TP_NONE},
{"O", "O+1", 0, RT_NONE, TP_NONE},
{"O", "O+1(-A)", 0, RT_NONE, TP_NONE},
{"O", "O+1(-A)(-A)", 0, RT_NONE, TP_NONE},
{"O", "O+1(=A)", 0, RT_NONE, TP_NONE},
{"S", "S", 0, RT_NONE, TP_NONE},
{"S", "S+1", 0, RT_NONE, TP_NONE},
{"S", "S(-A)", 0, RT_NONE, TP_NONE},
{"S", "S+1(-A)", 0, RT_NONE, TP_NONE},
{"Se", "Se", 0, RT_NONE, TP_NONE},
{"Se", "Se(-A)", 0, RT_NONE, TP_NONE},
{"Te", "Te", 0, RT_NONE, TP_NONE},
{"Te", "Te(-A)", 0, RT_NONE, TP_NONE},
{"F", "F", 0, RT_NONE, TP_NONE},
{"Cl", "Cl", 0, RT_NONE, TP_NONE},
{"Br", "Br", 0, RT_NONE, TP_NONE},
{"I", "I", 0, RT_NONE, TP_NONE}};
struct AugmentedAtomTransforms_t {
const char * from;
const char * to;
const char * label;
};
static const AugmentedAtomTransforms_t DefaultAugmentedAtomTransforms[] = {
{/*A000*/ "Li,Na,K,Rb,Cs,Fr", "Li,Na,K,Rb,Cs,Fr+1", "SAF metal" },
{/*A010*/ "Be,Mg,Ca,Sr,Ba,Ra", "Be,Mg,Ca,Sr,Ba,Ra+2", "SAF metal" },
{/*A020*/ "Al,Ga,In,Tl", "Al,Ga,In,Tl+3", "SAF metal" },
{/*A030*/ "Sb,Bi", "Sb,Bi+3", "SAF metal" },
{/*A040*/ "Sn,Pb", "Sn,Pb+2", "SAF metal" },
{/*A080*/ "Sc,Y,La,Ce,Pr,Nd,Pm,Sm", "Sc,Y,La,Ce,Pr,Nd,Pm,Sm+3", "SAF metal" },
{/*A090*/ "Eu,Gd,Tb,Dy,Ho,Er,Tm,Yb,Lu", "Eu,Gd,Tb,Dy,Ho,Er,Tm,Yb,Lu+3", "SAF metal" },
{/*A100*/ "N,O,S,F,Cl,Br,I-1", "N,O,S,F,Cl,Br,I", "SAF anion"},
{/*A110*/ "N+1", "N", "SAF ammonium"},
{/*A201*/ "Li,Na,K(-N,O,S,Se,F,Cl,Br,I)", "Li,Na,K+1(?N,O,S,Se,F,Cl,Br,I)", "SAF"},
{/*A211*/ "Cs,Rb(-N,O,S,Se,F,Cl,Br,I)", "Cs,Rb+1(?N,O,S,Se,F,Cl,Br,I)", "SAF"},
{/*A302*/ "Be,Mg,Ca(-F,Cl,Br,I)(-F,Cl,Br,I)", "Be,Mg,Ca+2(?F,Cl,Br,I)(?F,Cl,Br,I)", ""},
{/*A312*/ "Sr,Ba(-F,Cl,Br,I)(-F,Cl,Br,I)", "Sr,Ba+2(?F,Cl,Br,I)(?F,Cl,Br,I)", ""},
{/*A322*/ "Pb(-F,Cl,Br,I)(-F,Cl,Br,I)", "Pb+2(?F,Cl,Br,I)(?F,Cl,Br,I)", "SAF"},
{/*A403*/ "Al,Ga(-F,Cl,Br,I)(-F,Cl,Br,I)(-F,Cl,Br,I)", "Al,Ga+3(?F,Cl,Br,I)(?F,Cl,Br,I)(?F,Cl,Br,I)", ""},
{/*A413*/ "In,Tl(-F,Cl,Br,I)(-F,Cl,Br,I)(-F,Cl,Br,I)", "In,Tl+3(?F,Cl,Br,I)(?F,Cl,Br,I)(?F,Cl,Br,I)", ""},
{/*A701*/ "Cu,Ag,Au,Hg(-N,O,S,Cl,Br,I)", "Cu,Ag,Au,Hg+1(?N,O,S,Cl,Br,I)", "SAF"},
{/*A702*/ "Zn(-N+1)(-N+1)", "Zn+2(?N)(?N)", "SAF"},
{/*A703*/ "Au(-F,Cl,Br,I)(-F,Cl,Br,I)(-F,Cl,Br,I)", "Au+3(?F,Cl,Br,I)(?F,Cl,Br,I)(?F,Cl,Br,I)", ""},
{/*A803*/ "Sc,Y,La,Ce,Pr,Nd,Pm,Sm(-O)(-O)(-O)", "Sc,Y,La,Ce,Pr,Nd,Pm,Sm+3(?O)(?O)(?O)", ""},
{/*A813*/ "Eu,Gd,Tb,Dy,Ho,Er,Tm,Yb,Lu(-O)(-O)(-O)", "Eu,Gd,Tb,Dy,Ho,Er,Tm,Yb,Lu+3(?O)(?O)(?O)", ""},
{/*AA04*/ "N(=C)(-C)(-C)(-F,Cl,Br,I)", "N+1(=C)(-C)(-C)(?F,Cl,Br,I)", ""},
{/*AA05*/ "N(-C)(-C)(-C)(-C)(-F,Cl,Br,I)", "N+1(-C)(-C)(-C)(-C)(?F,Cl,Br,I)", ""},
{/*AX02*/ "O+1(=C)(-B-1)", "O(=C)(?B)", "bor addukt"},
{/*B101*/ "N+1(-C,N,O)", "N(-C,N,O)", "onium"},
{/*B112*/ "N(-C+1)(-C,N)", "N(=C)(-C,N)", "onium"},
{/*B121*/ "N(-C+1)", "N(=C)", "onium"},
{/*B131*/ "N+1(=C,N)", "N(=C,N)", "onium"},
{/*B302*/ "N+1(-C)(-C,N)", "N(-C)(-C,N)", "onium"},
{/*B312*/ "N+1(=C)(-C,N)", "N(=C)(-C,N)", "onium"},
{/*b322*/ "N+1(=C)(-B-1)", "N(=C)(-B-1)", "MAAG N4B"},
{/*B503*/ "N+1(-C)(-C,N)(-C,N)", "N(-C)(-C,N)(-C,N)", "onium"},
{/*C002*/ "I+1(-C,O-1)(-C)", "I(=C,O)(-C)", "ylid pos."},
{/*C012*/ "N+1(-O-1)(-N)", "N(=O)(-N)", "ylid pos."},
{/*C103*/ "S+1(-C,O-1)(-C)(-C)", "S(=C,O)(-C)(-C)", "ylid pos."},
{/*C204*/ "P+1(-C-1)(-C)(-C)(-C)", "P(=C)(-C)(-C)(-C)", "ylid pos."},
{/*C214*/ "P+1(-O-1)(-N)(-N)(-N)", "P(=O)(-N)(-N)(-N)", "ylid pos."},
{/*C224*/ "S+1(=O)(-C-1)(-C)(-C)", "S(=O)(=C)(-C)(-C)", "ylid pos."},
{/*C301*/ "O-1(-P,S,I+1)", "O(=P,S,I)", "ylid neg."},
{/*C402*/ "C-1(-P,S+1)(-C)", "C(=P,S)(-C)", "ylid neg."},
{/*C503*/ "C-1(-S+1)(-C)(-C)", "C(=S)(-C)(-C)", "ylid neg."},
{/*C513*/ "S-1(-C+1)(-C)(-C)", "S(=C)(-C)(-C)", "ylid neg."},
{/*C601*/ "O(-I+1)", "O(=I)", "ylid spez."},
{/*C702*/ "S(-C+1)(-C)", "S+1(=C)(-C)", "ylid spez."},
{/*C803*/ "S(=O)(=O)(-C,N,O,F,Cl,Br,I)", "S(=O)(-O)(-C,N,O,F,Cl,Br,I)", "R-SO-OH,O-SO-OH"},
{/*C804*/ "P,As,Sb(~O)(~O)(~O)(~O)", "P,As,Sb(=O)(-O)(-O)(-O)", "phosphate"},
{/*C901*/ "N+1(=N-1)", "N-1(=N+1)", "diazo"},
{/*D004*/ "B(-O)(-O)(-O)(-O)", "B-1(-O)(-O)(-O)(-O)", "complex ion"},
{/*D104*/ "B+3(-O-1)(-O-1)(-O-1)(-O-1)", "B-1(-O)(-O)(-O)(-O)", "complex ion"},
{/*D306*/ "Si.(-F-1)(-F-1)(-F-1)(-F-1)(-F-1)(-F-1)", "Si(-F)(-F)(-F)(-F)(-F)(-F)", ""},
{/*D402*/ "Au(=P)(-O,S,F,Cl,Br,I)", "Au(-P+1)(-O,S,F,Cl,Br,I)", "coord.comp"},
{/*D414*/ "Fe,Co,Ni(=P)(=P)(-F,Cl,Br,I)(-F,Cl,Br,I)", "Fe,Co,Ni(-P+1)(-P+1)(-F,Cl,Br,I)(-F,Cl,Br,I)", "coord.comp"},
{/*D424*/ "Hg+2(-N)(-N)(-S-1)(-S-1)", "Hg(-N)(-N)(-S)(-S)", "coord.comp"},
{/*D504*/ "P(=Cu,Ag,Au,Zn,Cd,Hg)(-C)(-C)(-C)", "P+1(-Cu,Ag,Au,Zn,Cd,Hg)(-C)(-C)(-C)", "coord.comp"},
{/*D514*/ "P(=Fe,Co,Ni,Ru,Rh,Pd,Os,Ir,Pt)(-C)(-C)(-C)", "P+1(-Fe,Co,Ni,Ru,Rh,Pd,Os,Ir,Pt)(-C)(-C)(-C)", "coord.comp"},
{/*D522*/ "O(=C)(-Sc,Ti,V,Cr,Mn,Fe,Co,Ni,Cu,Zn)", "O+1(=C)(-Sc,Ti,V,Cr,Mn,Fe,Co,Ni,Cu,Zn)", "coord.comp"},
{/*D523*/ "N(=C,N)(-Al,Ge,V,Cr,Mn,Fe,Co,Ni,Cu,Zn)(-C,N,O)", "N+1(=C,N)(-Al,Ge,V,Cr,Mn,Fe,Co,Ni,Cu,Zn)(-C,N,O)", "coord.comp"},
{/*D533*/ "O(-C)(-C)(-Cr,Mn,Fe,Co,Ni,Cu,Zn)", "O+1(-C)(-C)(-Cr,Mn,Fe,Co,Ni,Cu,Zn)" , "coord.comp"},
{/*E003*/ "N(=C)(=C)(-C)", "N+1(=C)(-C-1)(-C)", "quart. N"},
{/*E013*/ "N(=C)(=N,O)(-C,N,O)", "N+1(=C)(-N,O-1)(-C,N,O)", "quart. N"},
{/*E023*/ "N(=N)(=N,O)(-C)", "N+1(=N)(-N,O-1)(-C)", "quart. N"},
{/*E033*/ "N(=O)(=O)(-C,N,O)", "N+1(=O)(-O-1)(-C,N,O)", "quart. N"},
{/*E104*/ "N(=C,O,S)(-C)(-C,N)(-C,N,O)", "N+1(-C,O,S-1)(-C)(-C,N)(-C,N,O)", "quart. N"},
{/*E203*/ "N(=C,O)(=O)(-O-1)", "N+1(=C,O)(-O-1)(-O)", "quart. N spez."},
{/*E302*/ "N(#C)(=O,S)", "N+1(#C)(-O,S-1)", "quart. N"},
{/*E402*/ "N(#N)(=C)", "N+1(=N-1)(=C)", "quart. N"},
{/*E502*/ "N+1(#N)(-C,N-1)", "N+1(=N-1)(=C,N)", "quart. N"},
{/*E601*/ "N(#N)", "N-1(=N+1)", "quart. N allg."},
{/*F001*/ "C-1(#N)", "C(#N)", "prot."},
{/*F002*/ "C(#N)(-C,O,S-1)", "C(#N)(-C,O,S)", "prot."},
{/*F011*/ "C(-N,P,O,S-1)", "C(-N,P,O,S)", "prot."},
{/*F012*/ "C(-C,N,O)(-N,P,O,S-1)", "C(-C,N,O)(-N,P,O,S)", "prot."},
{/*F022*/ "C(=C)(-N,O-1)", "C(-C)(=N,O)", "prot. enol"},
{/*F032*/ "C(=C)(=N-1)", "C(-C)(#N)", "prot. spez."},
{/*F042*/ "C(=O,S)(-O,S-1)", "C(=O,S)(-O,S)", "prot."},
{/*F052*/ "N+1(=N-1)(=N-1)", "N+1(=N-1)(=N)", "MAAG N3"},
{/*F113*/ "C(-C)(-N,O,S-1)(-C,N,O)", "C(-C)(-N,O,S)(-C,N,O)", "prot."},
{/*F123*/ "C(-C)(-O-1)(-N+1)", "C(-C)(-O)(-N+1)", "prot."},
{/*F203*/ "C(=C)(-N-1)(-C,N)", "C(=C)(-N)(-C,N)", "prot."},
{/*F213*/ "C(=C)(-O,S-1)(-C)", "C(=C)(-O,S)(-C)", "prot. enol C"},
{/*F223*/ "C(=C)(-O-1)(-N,O,S)", "C(-C)(=O)(-N,O,S)", "prot. enol Het."},
{/*F233*/ "C(=C)(-S-1)(-N,S)", "C(-C)(=S)(-N,S)", "prot. enol"},
{/*F243*/ "C(=C)(-O-1)(-N+1)", "C(-C)(=O)(-N+1)", "prot. enol"},
{/*F303*/ "C(=N)(-C,N,O,S-1)(-C,N,O,S)", "C(=N)(-C,N,O,S)(-C,N,O,S)", "prot."},
{/*F313*/ "C(=N)(-N-1)(-C,N)", "C(=N)(-N)(-C,N)", "prot."},
{/*F323*/ "C(=N)(-N,O,S-1)(-N,P+1)", "C(=N)(-N,O,S)(-N,P+1)", "prot."},
{/*F333*/ "C(=N+1)(-O,S-1)(-C,N)", "C(=N+1)(-O,S)(-C,N)", "prot."},
{/*F343*/ "C(=N+1)(-N-1)(-S)", "C(=N+1)(-N)(-S)", "prot."},
{/*F403*/ "C(=O)(-C,N,P,O,S-1)(-C,N,P,O,S)", "C(=O)(-C,N,P,O,S)(-C,N,P,O,S)", "prot."},
{/*F413*/ "C(=S)(-C,N,O,S-1)(-N,P,O,S)", "C(=S)(-C,N,O,S)(-N,P,O,S)", "prot."},
{/*F423*/ "C(=O)(-O,S-1)(-N+1)", "C(=O)(-O,S)(-N+1)" , "prot."},
{/*F503*/ "N(-N,O-1)(-C)(-C)", "N(-N,O)(-C)(-C)", "prot."},
{/*F513*/ "N+1(-O-1)(-C)(-C)", "N(-O)(-C)(-C)", "prot."},
{/*F523*/ "N+1(=C,O)(-O-1)(-O-1)", "N+1(=C,O)(-O-1)(-O)", "prot."},
{/*F603*/ "P(=O)(-O-1)(-C,O)", "P(=O)(-O)(-C,O)", "prot."},
{/*F703*/ "S,Se(=O)(-O-1)(-C,O)", "S,Se(=O)(-O)(-C,O)", "prot."},
{/*F804*/ "C(-C)(-O-1)(-N)(-O)", "C(-C)(-O)(-N)(-O)", "prot."},
{/*F904*/ "P,As(=O)(-O,S-1)(-C,N,O,S)(-C,N,O,S)", "P,As(=O)(-O,S)(-C,N,O,S)(-C,N,O,S)", ""},
{/*F914*/ "P(=S)(-O,S-1)(-C,N,O,S)(-C,N,O,S)", "P(=S)(-O,S)(-C,N,O,S)(-C,N,O,S)", ""},
{/*FA04*/ "S(=N)(=O)(-N,O-1)(-C,N,O,S)", "S(=N)(=O)(-N,O)(-C,N,O,S)", "prot."},
{/*FA14*/ "S(=O)(=O)(-N,O-1)(-C,N,O,S)", "S(=O)(=O)(-N,O)(-C,N,O,S)", "prot."},
{/*FA24*/ "S(=O)(=O)(-N,O-1)(-N+1)", "S(=O)(=O)(-N,O)(-N+1)", "prot."},
{/*G003*/ "C(=N,O)(-N,P,O,S-1)(-N,P,O,S-1)", "C(=N,O)(-N,P,O,S)(-N,P,O,S)", "prot.2x"},
{/*G104*/ "P,As(=O)(-C,N,O)(-O-1)(-O-1)", "P,As(=O)(-C,N,O)(-O)(-O)", "prot.2x"},
{/*G204*/ "S(=O)(=O)(-O-1)(-O-1)", "S(=O)(=O)(-O)(-O)", "prot. 2x"},
{/*H003*/ "V(=O)(=O)(-O-1)", "V(=O)(=O)(-O)", "prot. trans.met."},
{/*I001*/ "O-1(-B,N,P,As,O,Se,Cl,I)", "O(-B,N,P,As,O,Se,Cl,I)", "prot. allg."},
{/*I011*/ "S-1(-S)", "S(-S)", "prot. allg."},
{/*I021*/ "O-1(-V)", "O(-V)", "prot. allg."},
{/*I101*/ "N-1(=C,N)", "N(=C,N)", "prot. allg."},
{/*I202*/ "C-1(-C)(-C,N)", "C(-C)(-C,N)", "prot. allg."},
{/*I212*/ "N-1(-C,N)(-C,N,S)", "N(-C,N)(-C,N,S)", "prot. allg."},
{/*I303*/ "C-1(-C)(-C)(-C,N)", "C(-C)(-C)(-C,N)", "prot. allg."},
{/*K002*/ "S(-C+1)(-S)", "S(-C)(=S+1)", "MAAG special"},
{/*K006*/ "Si-2(-F)(-F)(-F)(-F)(-F)(-F)", "Si(-F)(-F)(-F)(-F)(-F)(-F)", "MAAG special"},
{/*L000*/ "P,Sb-3", "P,Sb", ""},
{/*L000*/ "S-2" , "S", ""},
{/*L100*/ "Ca+1(-O)", "Ca+2(?O)", ""},
{/*L100*/ "O-1(-O-1)", "O(=O)", ""},
{/*L200*/ "C(#N)(-Na)", "C(#N)(?Na+1)", ""},
{/*L200*/ "Ca(-O)(-S,Cl)", "Ca+2(?O)(?S,Cl)", ""},
{/*L200*/ "O(=C)(-Cr)", "O+1(=C)(-Cr)", ""},
{/*L300*/ "N(=O)(=O)(-N+1)", "N+1(=O)(-O-1)(-N+1)", ""},
{/*L300*/ "N(=C)(-C)(-Co,Ni,Cu)", "N+1(=C)(-C)(-Co,Ni,Cu)", ""},
{/*L400*/ "Al(-O)(-O)(-O)(-O)", "Al-1(-O)(-O)(-O)(-O)", ""},
{/*L200*/ "Ca,Ba,Mg(-O)(-O)", "Ca,Ba,Mg+2(?O)(?O)", ""},
{/*L100*/ "C+2(=O)", "C-1(#O+1)", ""},
{/*L400*/ "N+1(-H)(-H)(-H)(-O)", "N(-H)(-H)(-H)(?O)", ""},
{/*L400*/ "N(-O,Cl,Br)(-H)(-H)(-H)", "N(?O,Cl,Br)(-H)(-H)(-H)", ""},
{/*L500*/ "N+1(-Br-1)(-C)(-C)(-C)(-C)", "N+1(?Br)(-C)(-C)(-C)(-C)", ""},
{/*L100*/ "Ca(-O)", "Ca+2(?O)", ""},
{/*L200*/ "N(=N+3)(-C)", "N+1(#N)(-C)", ""},
{/*L200*/ "N+1(-C)(-H)", "N(-C)(-H)", ""},
{/*L200*/ "N+1(=N-1)(=O)", "N+1(#N)(-O-1)", ""},
{/*L200*/ "N+1(=O-1)(=O)", "N.(=O)(=O)", ""},
{/*L200*/ "O(=C)(-C)", "O+1(=C)(-C)", ""},
{/*L200*/ "O-1(-N+1)(-Na)", "O-1(-N+1)(?Na+1)", ""},
{/*L300*/ "Bi(-O)(-O)(-O)", "Bi+3(?O)(?O)(?O)", ""},
{/*L300*/ "Zn(-Cl)(-Cl)(-Cl)", "Zn-1(-Cl)(-Cl)(-Cl)", ""},
{/*L300*/ "N+1(=O)(=O)(-O)", "N+1(=O)(-O-1)(-O)", ""},
{/*L400*/ "S(=O)(=O)(=O)(-C,O)", "S(=O)(=O)(-O)(-C,O)", ""},
{/*L400*/ "Cr+1(-O)(-O)(-O)(-O)", "Cr-1(-O)(-O)(-O)(-O)", ""},
{/*L400*/ "Cr+2(-O)(-O)(-O)(-O)", "Cr-1(-O)(-O)(-O)(-O)", ""},
{/*L400*/ "Cr-3(-O)(-O)(-O)(-O)", "Cr-1(-O)(-O)(-O)(-O)", ""},
{/*L100*/ "H(-H)" , "Hyd(-Hyd)", ""},
{/*B202*/ "I+1(-C)(-C)", "I(-C)(-C)", "onium"},
{/*F253*/ "C(=C)(-N+1)(-S-1)", "C(=C)(-N+1)(-S)", "MAAG SH+Noxid"},
};
} // namespace StructureCheck
} // RDKit