  We consider the problem of finding communities or modules in directed
networks. The most common approach to this problem in the previous literature
has been simply to ignore edge direction and apply methods developed for
community discovery in undirected networks, but this approach discards
potentially useful information contained in the edge directions. Here we show
how the widely used benefit function known as modularity can be generalized in
a principled fashion to incorporate the information contained in edge
directions. This in turn allows us to find communities by maximizing the
modularity over possible divisions of a network, which we do using an algorithm
based on the eigenvectors of the corresponding modularity matrix. This method
is shown to give demonstrably better results than previous methods on a variety
of test networks, both real and computer-generated.
