Database Meta-Atom
The concept of meta atoms is the key to the flexibility of the JTHERGAS system. Meta atoms define an atom label which represents a structure. The structure is defined in CMLElement. The types of meta atoms are:
BensonAtom: This defined the structures associated with the benson rules, such as single, double, triple or aromatic bonding of carbons (and other elements). Also multiple atoms can be defined, such as a CO group.
LinearStructure : This is how linear structures are defined. A complete linear structure is defined as a chain of individual linear structures. The individual linear structures are defined as meta atoms.
NancyLinearForm: Within the nancy linear form, there are meta atoms defined representing structures. One example is CO. This is a structure that is substituted for steric structures. This was especially made to simplify the graph isomorphism problem. A classic example is the methyl group. Matching each methyl group multiplies the number of equivalent matches by 6. For example, a tert-butyl system would match (6*6*6*6)*24 without the methyl substitution and only 24 with.
Meta-Atom Definition
A meta-atom definition has three parts:
A structure:
A meta-atom name:
The type of meta-atom:
Meta-Atom structure
In keeping with the concept of flexibility and reducing thenumber of chemical concepts being 'hard-coded' within the system, the meta-atom is defines the bonding structure of a substructure. The structure definition defines the bonding of the structure. The atoms within this definition consist of two types:
Specifically named molecules, i.e. with the periodic table name. For example, c for carbon or o for oxygen
Generalized atoms: These are atoms which are left unspecified, for example, an R gro
The bonding structure of the meta-atom is the same as any substructure, molecule or radical.
Example
For example, in CML notation, a doubly bonded carbon is specified with only one carbon specified and the rest are left unspecified:
<?xml version="1.0" encoding="ISO-8859-1"?>
<molecule id="DoubleBondCarbon" xmlns="http://www.xml-cml.org/schema">
<atomArray>
<atom id="a1" elementType="Du" formalCharge="0" hydrogenCount="2"/>
<atom id="a2" elementType="C" formalCharge="0" hydrogenCount="2"/>
<atom id="a3" elementType="Du" formalCharge="0" hydrogenCount="0"/>
<atom id="a4" elementType="Du" formalCharge="0" hydrogenCount="0"/>
</atomArray>
<bondArray>
<bond id="b1" atomRefs2="a2 a1" order="D"/>
<bond id="b2" atomRefs2="a3 a2" order="S"/>
<bond id="b3" atomRefs2="a4 a2" order="S"/>
</bondArray>
</molecule>
Here, only a2, the carbon is specified.
<atom id="a2" elementType="C" formalCharge="0" hydrogenCount="2"/>
The rest, labeled (by the JThermodynamics convention) "Du". For example, atom a3:
<atom id="a3" elementType="Du" formalCharge="0" hydrogenCount="0"/>
The double bond is specified by the bond between a3 and a2, i.e., the labeled carbon (a2) and an unlabeled atom (a3).:
<bond id="b2" atomRefs2="a3 a2" order="S"/>
The other two bonds of a2, the specified carbon, are single bonds:
<bond id="b2" atomRefs2="a3 a2" order="S"/>
<bond id="b3" atomRefs2="a4 a2" order="S"/>
Matching and replacing meta-atom.
Meta Atom with 1 specified atom
<molecule id="DoubleBondCarbon" xmlns="http://www.xml-cml.org/schema">
<atomArray>
<atom id="a1" elementType="Du" formalCharge="0" hydrogenCount="2"/>
<atom id="a2" elementType="C" formalCharge="0" hydrogenCount="2"/>
<atom id="a3" elementType="Du" formalCharge="0" hydrogenCount="0"/>
<atom id="a4" elementType="Du" formalCharge="0" hydrogenCount="0"/>
</atomArray>
<bondArray>
<bond id="b1" atomRefs2="a2 a1" order="D"/>
<bond id="b2" atomRefs2="a3 a2" order="S"/>
<bond id="b3" atomRefs2="a4 a2" order="S"/>
</bondArray>
</molecule>
Meta Atom with 2 specified atoms
Just to contrast with the above example, a meta-atom can be defined where two or more atoms are specified. One example is the CO:
<molecule id="AldehydeKetone" xmlns="http://www.xml-cml.org/schema">
<atomArray>
<atom id="a1" elementType="C" x2="6.6676" y2="40.4276" formalCharge="0" hydrogenCount="0"/>
<atom id="a2" title="*" elementType="Du" x2="5.3594" y2="39.7102" formalCharge="0" hydrogenCount="3"/>
<atom id="a3" elementType="O" x2="6.6676" y2="41.9468" formalCharge="0" hydrogenCount="0"/>
<atom id="a5" title="*" elementType="Du" x2="6.6676" y2="38.9084" formalCharge="0" hydrogenCount="3"/>
</atomArray>
<bondArray>
<bond id="b1" atomRefs2="a2 a1" order="S"/>
<bond id="b2" atomRefs2="a1 a3" order="D"/>
<bond id="b4" atomRefs2="a1 a5" order="S"/>
</bondArray>
</molecule>
In this case, both the C and the O would be taken out and substituted with the co meta-atom.