Graph-tool
Developer(s) | Tiago de Paula Peixoto |
---|---|
Stable release |
2.12
/ 6 November 2015 |
Repository |
git |
Written in | Python, C++ |
Operating system | Cross-platform |
Type | Software library |
License | GPL |
Website |
graph-tool |
graph-tool is a Python module for manipulation and statistical analysis of graphs (AKA networks). The core data structures and algorithms of graph-tool are implemented in C++, making extensive use of metaprogramming, based heavily on the Boost Graph Library. This type of approach can confer a level of performance which is comparable (both in memory usage and computation time) to that of a pure C++ library, which can be several orders of magnitude better than pure Python.[1]
Furthermore, many algorithms are implemented in parallel using OpenMP, which provides increased performance on multi-core architectures.
Features
- Creation and manipulation of directed or undirected graphs.
- Association of arbitrary information to the vertices, edges or even the graph itself, by means of property maps.
- Filter vertices and/or edges "on the fly", such that they appear to have been removed.
- Support for dot, Graph Modelling Language and GraphML formats.
- Convenient and powerful graph drawing based on cairo or Graphviz.
- Support for typical statistical measurements: degree/property histogram, combined degree/property histogram, vertex-vertex correlations, assortativity, average vertex-vertex shortest path, etc.
- Support for several graph-theoretical algorithms: such as graph isomorphism, subgraph isomorphism, minimum spanning tree, connected components, dominator tree, maximum flow, etc.
- Support for several centrality measures.
- Support for clustering coefficients, as well as network motif statistics and community structure detection.
- Generation of random graphs, with arbitrary degree distribution and correlations.
- Support for well-established network models: Price, Barabási-Albert, Geometric Networks, Multidimensional lattice graph, etc.
Suitabilty
Graph-tool can be used to work with very large graphs in a variety of contexts, including simulation of cellular tissue,[2] data mining,[3][4] analysis of social networks,[5][6] analysis of P2P systems,[7] large-scale modeling of agent-based systems,[8] study of academic Genealogy trees,[9] theoretical assessment and modeling of network clustering,[10] large-scale call graph analysis,[11][12] and analysis of the brain's Connectome.[13]
References
- ↑ Graph-tool performance comparison, Graph-tool
- ↑ Bruno Monier et al, "Apico-basal forces exerted by apoptotic cells drive epithelium folding", Nature, 2015
- ↑ Ma, Shuai, et al. "Distributed graph pattern matching." Proceedings of the 21st international conference on World Wide Web. ACM, 2012.
- ↑ Ma, Shuai, et al. "Capturing topology in graph pattern matching." Proceedings of the VLDB Endowment 5.4 (2011): 310-321.
- ↑ Janssen, E., M. A. T. T. Hurshman, and N. A. U. Z. E. R. Kalyaniwalla. "Model selection for social networks using graphlets." Internet Mathematics (2012).
- ↑ Asadi, Hirad Cyrus. Design and implementation of a middleware for data analysis of social networks. Diss. M Sc thesis report, KTH School of Computer Science and Communication, Stockholm, Sweden, 2007.
- ↑ Teresniak, Sven, et al. "Information-Retrieval in einem P2P-Netz mit Small-World-Eigenschaften Simulation und Evaluation des SemPIR-Modells."
- ↑ Hamacher, Kay, and Stefan Katzenbeisser. "Public security: simulations need to replace conventional wisdom." Proceedings of the 2011 workshop on New security paradigms workshop. ACM, 2011.
- ↑ Miyahara, Edson Kiyohiro, Jesus P. Mena-Chalco, and Roberto M. Cesar-Jr. "Genealogia Acadêmica Lattes."
- ↑ Abdo, Alexandre H., and A. P. S. de Moura. "Clustering as a measure of the local topology of networks." arXiv preprint physics/0605235 (2006).
- ↑ Narayan, Ganesh, K. Gopinath, and V. Sridhar. "Structure and interpretation of computer programs." Theoretical Aspects of Software Engineering, 2008. TASE'08. 2nd IFIP/IEEE International Symposium on. IEEE, 2008.
- ↑ Campos, José Creissac, et al. "GUIsurfer: A Reverse Engineering Framework for User Interface Software."
- ↑ Gerhard, Stephan, et al. "The connectome viewer toolkit: an open source framework to manage, analyze, and visualize connectomes." Frontiers in neuroinformatics 5 (2011).