.. _install:

Installation and Dependencies
=============================

This project was written with Python 2.6, and tested on Windows 7 and Linux openSUSE. It *should* work platform independently and with all Python versions >=2.6 and <3.0. Make sure to have the dependencies listed below installed. 

If you download and copy the code, please make sure that the main folder *ComplexNetworkSim* is on your PYTHONPATH.

.. _download:

Download
--------

If you have distutils installed, run ``easy_install ComplexNetworkSim``, or 
otherwise download the code from http://pypi.python.org/pypi/complexnetworksim/

.. _dependencies:

Dependencies
------------

Please make sure the following is installed before running ComplexNetworkSim code.
(if installing via ``easy_install ComplexNetworkSim`` then it will attempt to install networkX, SimPy and Matplotlib itself)

**NetworkX** is a “high productivity software for complex networks”
implemented in Python, allowing manipulation and study of the structure
and functions of complex networks. It is required to run code from this
project. 

**SimPy** (= Simulation in Python `SimPy`_ ) is an object-oriented,
process-based discrete-event simulation language based on standard
Python. 

Visualisations and plotting of results are not automatically called when
running a simulation, to give the user to option not to use this
functionality and to analyse results in an alternative fashion. It is
nevertheless highly recommended to install the following libraries:

**Matplotlib** is a plotting library for Python which is used to
generate both the plots and the animated visualisations. It can generate
a variety of different plots and figures which can be saved to PNG image
files.

Matplotlib itself relies on the scientific computing library **NumPy**
which also has be be installed.

When running a simulation which includes the creation of a
visualisation, the framework will attempt to create an animated gif
image once the static png images have been created (and will just
display a message to the console to notify you if ImageMagick is not
installed correctly). For this, the class *animator\_gifs* is dependant
on ImageMagick, as it requires its *convert* function call to combine
multiple static images (.png) into an animated one (.gif).
**ImageMagick** is an open source software suite for displaying,
converting, and editing raster image files. It can read and write over
100 image file formats. To make use of it, the ImageMagick *convert*
executable has to be on your system path.

Quick links to 

:ref:`code`

.. _SimPy: http://simpy.sourceforge.net/
.. _NetworkX: http://networkx.lanl.gov/
.. _ImageMagick: http://www.imagemagick.org/
