GraphMatcher makes multiple global alignments of graphs. Given as input a set of directed or undirected graphs, it returns a mapping among the corresponding nodes of all the graphs.
The graphs to be aligned don't need to be identical (isomorphic), or even have the same number of nodes. GraphMatcher finds the best mapping of nodes regardless of the differences among the input graphs.
New! The software can generate a dendrogram to visualize the clustering of all the graphs. Furthermore, it is possible to know the maximum common subgraph of any sub-cluster.
GraphMatcher requires as input a textfile in the graphml format. All the graphs need to be specified in the same input file, such as here. Importantly, all the graphs have to be of the same kind, either directed or undirected.
Alternatively, you may pass to GraphMatcher a set of files, each containing a single graph in graphml format. In this case, you need to specify a pattern, containing a wildcard, describing the full set of files, such as:
Note the quotes surrounding the pattern.
The resulting alignment of GraphMatcher will be presented as a map among nodes shown as plain text in the standard output. Graphs are presented in columns, and nodes in rows. If the input graphs are of different size, the missing nodes in the alignment are indicated with a "-".
The global alignment of graphs can be sent to a file instead, in a tab-separated format, by using the -t option:
Additionally, the program may return an embedded graph (in graphml format), where the corresponding nodes of the input graphs are grouped. This is done by specifying an output file name with the -g switch:
GraphMatcher can show the similarity among the different input graphs, in the form of a dendrogram. The graphical representation is saved to a .png using the -d option:
A useful information to accompany the dendrogram, is the set of all maximum common subgraphs underlying its branching points. This set can be obtained as a graphml file using the -s option:
Finally, you may test GraphMatcher by downloading its free version. In this case, run it by replacing graphmatcher-1.2.jar with graphmatcher-1.2.free.jar.