One differ ence is that, as HNauty allows for several different www.selleckchem.com/products/Enzastaurin.html edge types, the adjacency matrices associated with the graphs in HNauty may contain not only 0s and 1s for entries but can have entries of the form 2i where i is taken over those edges of type i between the two given ver tices. For a graph with two edge types, the entries in the adjacency matrix can be 0, 1, 22 1 21 2 or 1 2 3. A value of 3 should be interpreted to mean that there is both a hierarchy edge and a bond edge between two vertices. Another difference lies in how equitable partitions are calculated. We define a slight generalization to deal with labeled edges. A generalized equitable partition is an ordered partition P of the vertices of a labeled multi graph such that for any edge label e, the graph restricted to the edges labeled e, denoted ? |e, satisfies, the two sets of respective permutations will be equiva lent.
Thus, if g is an automorphism of the graph, it ? where d is the number of edges labeled e between x and Si. In other words, the partition is equita ble with respect to the graph restricted to any single edge type. It can be proved that, given a partition P, there exists a unique coarsest generalized equitable refinement of P. To see this, note that it is enough to prove it for un ordered partitions. Now, suppose that Q1 and Q2 are both generalized equitable refinements of P. If Q1 and Q2 are different as un ordered partitions, then clearly their join, Q is also general ized and equitable. In fact, a basic property of lattices implies that Q is also a refinement of P.
As Q is coarser than both Q1 and Q2, it follows that P has a unique coarsest generalized equitable refinement. This property is the only property of generalized equitable partitions that is necessary to use them in place of equitable partitions. Implementation Except for using generalized equitable partitions in place of equitable partitions, our implementation follows the description given by McKay. Apparently, the actual Nauty program contains some efficiencies not described in. Thus, our algorithm is unlikely to be as finely tuned as Nauty. For an indicator function, we use the shape of the partition together with the shapes of the parent nodes in the search tree. By shape we mean the sizes of the individual cells of the partition.
The partition has shape as it has two cells of size 1, one cell of size 2, no cells of size 3 and one cell of size 4. These tuples are lexicographically ordered. GSK-3 This indicator function is invariant under auto morphisms of the graph as required. Indeed it is invariant under any permutation of the vertices. We implemented our algorithm in both Perl and Python. The Perl version of HNauty is available as Additional file 1. The Python version of HNauty is avail able as Additional file 2. HNauty is also available at the BioNetGen website. The Perl version has been incorporated into BioNetGen. HNauty is turned off by default in BioNetGen.