This package depends on several libraries (the number varies according to which modules you want to use).

Basic dependencies

Regardless of your needs, the following libraries are required:

Additionnal dependencies

  • matplotlib (optional but will limit the functionalities if not present)
  • peewee for database features


If they are not present on your computer, pip will directly try to install the three first libraries, however:

  • lapack is necessary for scipy and pip cannot install it on its own
  • you will have to install the graph library yourself (only networkx can be installed directly using pip)

Simple install


Install the requirements (through aptitude or apt-get on debian/ubuntu/mint, pacman and yaourt on arch-based distributions, or your .rpm manager on fedora. Otherwise you can also install the latest versions via pip:

sudo pip install numpy scipy matplotlib networkx

Under most linux distributions, the simplest way is to install pip and git, then simply type into a terminal:

sudo pip install git+


I recommend using Macports with which you can install all required features to use NEST and NNGT with graph-tool. The following command lines are used with python 2.7 since it is what people are used to but I recommend using version 3.5 or higher (replace all 27/2.7 by 35/3.5).

sudo port select gcc mp-gcc5 && sudo port install gsl +gcc5 && sudo port install autoconf automake libtool && sudo port install python27 pip && sudo port select python python27 && sudo port install py27-cython && sudo port select cython cython27 && sudo port install py27-numpy py27-scipy py27-matplotlib py27-ipython && sudo port select ipython ipython-2.7 && sudo port install py-graph-tool gtk3


It’s the same as linux for windows users once you’ve installed Python and pip, but NEST won’t work anyway...


igraph can be installed on windows if you need something faster than networkx.

Local install

If you want to modify the library more easily, you can also install it locally, then simply add it to your PYTHONPATH environment variable:

cd && mkdir .nngt-install
cd .nngt-install
git clone .
git submodule init
git submodule update
nano .bash_profile

Then add:

export PYTHONPATH="/path/to/your/home/.nngt-install/src/:PYTHONPATH"

In order to update your local repository to keep it up to date, you will need to run the two following commands:

git pull origin master
git submodule update --remote --merge


The configuration file is created in ~/.nngt/nngt.conf after you first run import nngt in python. Here is the default file:

# NNGT configuration file #

version = 0.7

## default graph library -----------------------------------------------------

# (choose among "graph-tool", "igraph", "networkx")

graph_library = graph-tool

## Try to load NEST? ---------------------------------------------------------

load_nest = True

## Matplotlib backend --------------------------------------------------------

# Uncomment and choose among your available backends.
# See for details

#mpl_backend = Qt5Agg

# use TeX rendering for axis labels
use_tex = False

# color library either matplotlib or seaborn
color_lib = matplotlib

# palette to use
palette = Set1

## Settings for database    -------------------------------------------------

use_database = False

# use a database (if False, results will be stored in CSV files)
db_to_file = False
#db_folder = ~/.nngt/database

# database url or temporary database used if use_database = False
# example of real database url: db_url = mysql://user:password@host:port/my_db
db_url = mysql:///nngt_db

## Settings for data logging -------------------------------------------------

# which messages are printed? (see logging module levels:
# set to WARNING or above to remove the messages on import
log_level = INFO

# write log to file?
log_to_file = False
# if True, write to default folder '~/.nngt/log'
#log_folder = ~/.nngt/log

## Multithreaded algorithms --------------------------------------------------

# C++ algorithms using OpenMP are compiled and imported using Cython if True,
# otherwise regular numpy/scipy algorithms are used (equivalent for one thread)

multithreading = False

It can be necessary to modify this file to use the desired graph library, but mostly to correct problems with GTK and matplotlib (if the plot module complains, try Gtk3Agg and Qt4Agg).

Using NEST

If you want to simulate activities on your complex networks, NNGT can directly interact with the NEST simulator to implement the network inside PyNEST. For this, you will need to install NEST with Python bindings, which requires:

  • the python headers (python-dev package on debian-based distribs)
  • autoconf
  • automake
  • libtool
  • libltdl
  • libncurses
  • readlines
  • gsl (the GNU Scientific Library) for many neuronal models