3D Balaban indexΒΆ

The geometric distance matrix is defined as

\mathbf{D} =
\begin{pmatrix}
    0      & d_{01} & d_{02} & ... & d_{0N} \\
    d_{10} & 0      & d_{12} & ... & d_{1N} \\
    d_{20} & d_{21} & 0      & ... & d_{2N} \\
    ...    & ...    & ...    & 0   & ...    \\
    d_{N0} & d_{N1} & d_{N2} & ... & 0
\end{pmatrix}.

and leads to the adjacency matrix \mathbf{A} that contains the elements

a_{ij} =
\begin{cases}
    0 & \text{if } d_{ij} > d_0 \\
    1 & \text{if } d_{ij} < d_0
\end{cases},

where d_0 is a threshold that defines the existence of a bond. Similar to the Wiener number, the 3D Balaban index

^{3D}J = \frac{M}{\mu+1} \sum_i^N\sum_j^N \left( d_i d_j \right)^{-1/2}

represents a topographical descriptor related to the shape of the molecule. Here, M is the number of edges in the molecule, \mu is the cyclomatic number

\mu = M-N+1

and d_i is the sum of all entries in the i-th row of the \mathbf{D} \otimes \mathbf{A} matrix.

The use of the Balaban index is invoked by the following block in the meta-config.json file:

"collective variables": [
  {
    "type": "balaban",
    "name": "2d balaban index",
    "exclude_h": False
    "update_adjacency": False
  },
  ...
]

The additional keyword "exclude_h" allows for the calculation of the distance matrix without considering distances from and to Hydrogen atoms. If "update_adjacency" is set to True, the adjacency matrix is recalculated in every dynamics step and therefore accounts for changes in the molecular connectivity.