DISCONTINUED -- lpdec: library for LP decoding and related things

Deprecation notice This project has not seen any updates for a long period now and probably won't in the future either, as I (the single developer) am no longer working in the area of decoding. If you are willing to adopt the project, please drop me a note.

Overview

lpdec is a scientific library dedicated to the decoding part of coding theory, in particular, decoding based on methods of mathematical optimization, such as linear programming (LP) decoding.

Requirements

The library is written in Python. It was mainly developed using Python version 2.7, but was recently ported to Python3. Note that there is no CPLEX interface for Python3, so you can not use the CPLEX solvers with that version of Python.

To compile the library, you need Cython. Runtime requirements are the Python packages numpy, scipy, dateutil, sqlalchemy, sympy and jinja2. The setup.py script described below will pull these requirements automatically, but depending on your OS you might favor to install them using your system's package manager.

Some of the decoder implementations require additional software, namely GLPK (with C headers), IBM CPLEX, and Gurobi. The first is open source, the others have free academic licenses available.

We use the alternative gurobi python API called gurobimh.

Installation

Download the package and type:

python setup.py install --user

If you do not have GLPK installed, use:

python setup.py install --no-glpk --user

to skip installation of GLPK-based decoders. Likewise, the switch --no-gurobi is available. In both commands, replace python by an appropriate call to your Python interpreter.

Documentation

API documentation is provided online.

You can also try to generate the API doc with Sphinx. To build the documentation, run the following command from within lpdec's main directory:

sphinx-build2 doc doc-html

This will generate HTML API documentation inside the doc-html folder.