3D Balaban index ================ The geometric distance matrix is defined as .. math:: \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 :math:`\mathbf{A}` that contains the elements .. math:: a_{ij} = \begin{cases} 0 & \text{if } d_{ij} > d_0 \\ 1 & \text{if } d_{ij} < d_0 \end{cases}, where :math:`d_0` is a threshold that defines the existence of a bond. Similar to the \ :doc:`Wiener number `, the 3D Balaban index .. math:: ^{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, :math:`M` is \ the number of edges in the molecule, :math:`\mu` is the cyclomatic number .. math:: \mu = M-N+1 and :math:`d_i` is the sum of all entries in the :math:`i`-th row of the \ :math:`\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.