Installation

Installation

Pre-compiled toolboxes

MATLAB's Add-on manager (Recommended)

The toolbox can be installed using MATLAB's Add-on manager. Unless you are interested in developing or learning about the package this is the way to go. The Add-on manager will also handle tracking updates for you. See Get and Manage Add-ons for more information.

After installing you can run igraph.postinstall() to clean up files that aren't needed on your system. This isn't required but will save space. It will need to be done after each update too.

Downloading from the release page

Alternatively, you can get the toolbox directly from the release page. There is likely no reason to use this method over the Add-on manager as it will require manually upgrading. Once the download has been completed, you can double click on the resulting .mltbx file in the MATLAB IDE and it will guide you through the installation method. To upgrade download a newer toolbox from the release page and install it through the MATLAB IDE in the same manner as mentioned above.

Compiling from source

For those who want to build the code themselves, this can be done by cloning the git repo and compiling with cmake. If the pre-built toolboxes don't support your architecture, this is the only way to get the toolbox running. It may take a little work to get the build correct for an unsupported architecture. See the igraph C library's installation instructions for obtaining the needed dependencies (note: this toolbox uses igraph's bundled libraries so you won't need to install any of the optional external libraries). If you do work on getting this toolbox running on a new architecture, you can add an issue or pull-request to the github page to add future support to the toolbox.

Getting the source code

The first thing to do is clone the source code with git. Go to the location you want to store the toolbox and run:

  git clone "https://github.com/davidrconnell/matlab-igraph"
  git submodule update --init --recursive

Dependencies

Building the toolbox depends on cmake (and optionally the ninja build tool) as well as bison, flex, and libxml2.

Building toolbox

From the git command above:

  cd matlab-igraph
  mkdir build
  cd build
  cmake ..
  cmake --build .

See cmake's docs for more options.

You may want to build the package target instead of the default target to get a toolbox with all the files in the correct place:

  cmake --build . --target package

Then unzip the package and add the contained toolbox to MATLAB's path.

Development

Since the toolbox is a mix of MATLAB source files and compiled files that end up in build directory, the easiest approach for development (on Linux and macOS) is to add the source directory to MATLAB's path, build the default target, and link the compiled files to the correct location in the source directory. From the build directory:

cd ../toolbox/+igraph/private
ln -s ../../../build/mex/*.mexa64 .
cd ../../../tests/mxIgraph/private
ln -s ../../../build/tests/*.mexa64 .

Where mexa64 is the Linux mex extension. Now MATLAB will automatically reload compiled files when they are rebuilt. There will also be a compile_commands.json in the build directory that can be linked to the root of the repository.

Unfortunately, this will not work on Windows since the compiled files will not be able to find their dynamic libraries. Instead, add a --install-prefix to the cmake config command then running cmake --install build will install all files needed to that location. Add the install path to MATLAB's path. In this case, the install command will need to be rerun whenever m files are changed.

Testing

Tests can be run using ctest with the --test-dir being set to the build directory. For interactive development, it's faster to run buildtool in a running MATLAB instance since it doesn't require repeatedly starting MATLAB. To run all tests:

  buildtool test

Test can be replaced with testMxIgraph or testToolbox.

Upgrading

Every once in awhile you will want to check for a new release by running git pull in the matlab-igraph directory. If this pulled anything new down, rerun the cmake --build . command in the build directory.

Making the docs

Hugo is used to create the documentation website. For viewing the website locally, hugo can be run a local server with hugo server which should be run in the docs directory. When running, hugo will print an address to view the local site. This site will update as the markdown files under docs/content at modified. To make the docs locally, run buildtool makeDocs, this will export MATLAB livescripts to markdown for the website.

The livescripts can be editted in the MATLAB IDE. Other docs can be edited directly in a text editor.