Research Interests
Direct Links
Relevant Links

 

Complex Networks Package for MatLab

Research in Complex Networks suffers from lack of efficient, validated and well-implemented tools for network analysis. I have created an expandable framework, operating within MatLab, which provides a convenient environment for import/export, manipulation and analysis of complex networks. Currently, the toolbox contains dozens of efficiently implemented and thoroughly validated algorithms. Most of these algorithms are implemented as C++ mex-files to achieve maximal efficiency. All algorithms are well-documented and typical researcher can start using the toolbox within minutes.


Table of Content


Acknowledgements

This package, and especially the more advanced algorithms in it were developed in tight cooperation with Prof. Yoram Louzoun. Some of these algorithms were implemented by Royi Itschak.

Referencing

The Complex Networks Analysis Package is free for noncommercial use. If used for academic research, it can be referenced as:

Lev Muchnik, Royi Itzhack, Sorin Solomon, and Yoram Louzoun, Self-emergence of knowledge trees: Extraction of the Wikipedia hierarchies, Phys. Rev. E 76, 016106 (2007)

Background

In the last years MatLab became the default research environment in many fields of science and industry. However, with all it's advantages and flexibility, MatLab in incapable to efficiently treat Complex Networks.

Here I provide a framework designed to allow efficient research of Complex Networks within MatLab. All toolbox methods operate on the same data struct containing the network. Untrivial change to this data structure would most probably require some changes to the algorithm implementations. However, each of the algorithms are implemented in quite modular form allowing simple adaptation for such improvements. In fact, I'm now working on the next version of the package which exploits the new features of the recent MatLab releases to further improve computation speed and reduce memory utilization for graph storage.

I am looking for people interested in further expansion of the package and would be happy to support their effort. Please, address me with any question you may have while using or developing this package

List of Features

  • Efficiency

    I did my best to implement the most efficient (in terms of execution time and memory requirements) algorithms. I was able to conveniently manipulate and process graphs of above 1 million nodes and 14 million edges. Each untrivial algorithm typically references the proper scientific source so it's efficiency can be easily estimated

  • Documentation

    Each of the implemented algorithms is thoroughly documented. The documentation includes description of each input and output parameter, definition of the function behavior for different inputs and in case of errors, list of related algorithms, usage examples and reference to publication when relevant.

  • Directionality

    The package operates directional networks. Undirected graphs may be represented as directed ones, where each edge is accompanied by an edge in opposite direction. The package has a method with automatically converts directed networks to undirected ones.

  • Arbitrary Node Properties

    Each node may maintain a list of arbitrary, user-defined properties which can be easily accessed, updated and considered in various computations

  • Multilayer Networks

    Network may in mix various types of nodes, representing multi-layer networks. For example, one could study affiliation network of researchers and their collaborations. This ability is based on the ability to maintain node properties as each node may belong to a specific layer of the network.

  • Weighted Networks

    The basic data structure used in this version of the package fully supports weighted networks. However, only one weight may be assigned to each edge and most of the provided algorithms ignore weights at the current stage.

  • Platform Independent

    The toolbox builds upon MatLab which is available for virtually any hardware platform and operating system used today. However, due to extensive use of mex-files, many of the algorithms will have to be re-compiled. These algorithms are implemented in standard C++ code which may be easily compiled on any platform. Currently, versions for Windows 32 and 64 bits are available for downloads, however, in the past I was able to build the toolbox for MAC OS and Linux.

  • Expandability

    The Complex Networks Package for MatLab is a function-based library. As such, most of its algorithms are stand-alone and are independent of the rest(though, some do rely on others). Addition of new algorithms is straightforward. One should only learn the data structure and add algorithms manipulating it.

Download

Date Version Platform Link
May 30, 2007 1.0

Win 32, MatLab 7, 32 bits

ComplexNetworkPackage32bit.zip
June 21, 2007 1.0

Win 32, MatLab 7, x64

ComplexNetworkPackage64bit.zip

Install

The current version of the Complex Network Package requires Mathwork's MatLab version 7 or higher. Both 32 and 64 bit versions are supported under MS Windows. Build for other operating systems is quite straightforward, but requires some special knowledge. Let me know if you need and I'll try to help.

To install the package, download and unpack the appropriate version. The entire package resigns within 'Graph' directory which should be added to MatLab path. The package makes extensive use of the FlexIO utility library which is located within the 'Graph' folder and which should also be added to MatLab path.

Tutorial

Here I provide a brief tutorial showing some of the Complex Networks Package for MatLab common uses. Check this section frequently as I intend to expend it. You are also welcome to address me with questions. I'll publish them as get answered.

Documentation

Here I'm putting the package documentation. It'll take me some time to put it online (and depends on your interest and feedback). Meanwhile, make sure you check detailed description of methods available at the top of each m-file.