Currently SHOGUN has been confirmed to be fully functional on PowerPC, i386 and AMD64 Linux (tested on debian/ubuntu and gentoo). We also managed to compile SHOGUN on MacOSX and via cygwin on WIN32 platforms. However some manual tweakings of configuration files might be necessary.
SHOGUN is currently pre-packaged for debian (see http://www.debian.org) and available on MacOSX via macports (see http://www.macports.org )
On debian, depending on the interface you want, install the package(s)
libshogun-dev - for C++ developers building extensions using
libshogun
shogun-octave - for the static octave interface
shogun-octave-modular - for the modular octave interface
shogun-python - for the static python interface
shogun-python-modular - for the modular python interface
shogun-r - for the r interface
shogun-cmdline - for the command-line interface.
shogun-elwms - for the eierlegende wollmilchsau interface
(one interface to r/python/octave allowing
to run commands in non-native languages)
shogun-doc - for the documentation
The mac port is provided by James Kyle (Thanks!!) and makes installations on OSX as easy as under linux. To install shogun you will need macports (see http://www.macports.org). Then issue
sudo port selfupdate sudo port install swig -php5 -ruby -perl +python (shogun users who want the r and octave interfaces should add +octave and/or +r to this list) sudo port install shogun (for r, octave, and elwms interfaces: +r +octave +elwms)
Add
DYLD_FALLBACK_LIBRARY_PATH=${macports_prefix}/lib to your shell profile. *Tip* the default ${macports_prefix} is /opt/local/. In that case, the library path would be /opt/local/lib.
Download SHOGUN from http://www.shogun-toolbox.org , aswell as its requirements.
SHOGUN requires the standard linux utils like bash, grep, test, sed, cut, ldd, uname gcc g++ and cat python (debian package: python2.4 or python2.5) for the ./configure to work.
Optionally you will need atlas and lapack (debian packages lapack3-dev, atlas3-headers atlas3-base-dev or atlas3-altivec-dev atlas3-sse2-dev) installed. Note that atlas/lapack is only supported under linux (high performance computing should be done under linux only anyway). In case atlas/lapack is unavailable, don't worry most of shogun will work without, though slightly slower versions are used. To enable Multiple Kernel Learning with CPLEX(tm) just make sure cplex can be found in the PATH. If it is not found shogun will resort to GLPK (if version at least 4.29 is found) for 1-norm MKL, p-norm MKL with p>1 will work nonetheless.
On most platforms (Linux,MacOSX,cygwin) it is sufficient to issue
./configure make sudo make install
In case you just want to compile for a single interfaces you can use
./configure --interfaces=libshogun,libshogunui,<interface> make sudo make install
where interface is one of the following
(you don't need to compile libshogunui in case you compile a modular interface)
However, just running
./configure
will autodetect and configure for the available interfaces.
Call
./configure --help
to see the list of additional options detailled below.
r
NEWS:
No
NEWS:
No
Running configure for SHOGUN version r
Usage: ../src/configure [OPTIONS]...
Configuration:
--interfaces=INTERFACE1,INTERFACE2,...
configure shogun for interface
cmdline, python_modular, python, r, r_modular
octave, octave_modular, matlab or libshogun
-h, -help, --help display this help and exit
Installation directories:
--destdir=DIR use this as the root dir to install shogun to [/]
--prefix=DIR use this prefix for installing shogun [/usr/local]
--bindir=DIR use this prefix for installing shogun binary
[PREFIX/bin]
--datadir=DIR use this prefix for installing machine independent
data files (fonts, skins) [PREFIX/share/shogun]
--mandir=DIR use this prefix for installing manpages [PREFIX/man]
--confdir=DIR use this prefix for installing configuration files
[same as datadir]
--libdir=DIR use this prefix for object code libraries [PREFIX/lib]
--incdir=DIR use this prefix for include files [PREFIX/include]
--pydir=DIR use this prefix for python files [PREFIX/auto-detected]
--octdir=DIR use this prefix for octave files [PREFIX/auto-detected]
--rdir=DIR use this prefix for r files [PREFIX/auto-detected]
Optional features:
--enable-boost-serialization enable boost serialization support [disabled]
--enable-hdf5 enable hdf5 file support [auto]
--enable-json enable json file support [auto]
--enable-xml enable xml file support [auto]
--enable-readline enable readline in cmdline interface [auto]
--enable-logcache enable log (1+exp(x)) log cache (is much faster but less accurate) [disabled]
--enable-shortrealkernelcache enable kernelcache to use 4-byte-floating-point values instead of 8-byte-doubles [enabled]
--enable-logsum-array enable log sum array supposed to be a bit more accurate [disabled]
--enable-hmm-parallel enable parallel structures in hmm training. shogun will then run as many threads as the machine has (much faster) [disabled]
--disable-boost-serialization disable boost serialization support [disable]
--disable-hdf5 disable hdf5 file support [auto]
--disable-json disable json file support [auto]
--disable-xml disable xml file support [auto]
--disable-largefile disable large file support (64bit file acces routines) [enabled]
--disable-lapack disable lapack (fast blas and lapack math routines) and use built in ones (slower!) [auto]
--disable-cplex disable code using CPLEX [auto]
--disable-lpsolve disable code using lpsolve [auto]
--disable-glpk disable code using GLPK [auto]
--disable-lzo disable code using LZO compression [auto]
--disable-gzip disable code using GZIP compression [auto]
--disable-bzip2 disable code using BZIP2 compression [auto]
--disable-lzma disable code using LZMA compression [auto]
--disable-bigstates disable big (16bit) state [enabled]
--disable-hmmcache disable HMM cache [enabled]
--disable-svm-light disable building of SVM-light and thus result in pure GPLv3 code [enabled]
Miscellaneous options:
--disable-doxygen disable documentation generation via doxygen for python_modular interface [enabled]
--disable-cpudetection disable cpu flags detection and corresponding optimization options [enabled]
--enable-debug enable debugging [disabled]
--enable-trace-mallocs enable memory allocation tracing [disabled]
--disable-reference-counting disables reference counting causing severe memory leakage [enabled]
--enable-path-debug enable viterbi path debugging [disabled]
--enable-profile compile profiling information into shogun [disable]
--enable-static build a statically linked binary (to the extend possible);
set further linking options with --enable-static="-lm -lglpk"
--python=python use this python executable [python]
--cc=COMPILER use this C compiler to build shogun [autodetected]
--cxx=COMPILER use this C++ compiler to build shogun [autodetected]
--cflags=OPTIONS use these C compiler options
--cxxflags=OPTIONS use these C++ compiler options
--ldflags=OPTIONS use these additional linker options
--target=PLATFORM target platform (i386-linux, arm-linux, etc)
--install-path=PATH the path to a custom install program (useful if
your OS uses a GNU-incompatible install utility by
default and you want to point to the GNU version)
--includes=DIR include DIR when searching for includes
--libs=DIR include DIR when searching for libraries on linking
If this does not work for you, consult the INSTALL file for platform specific build instructions. The INSTALL file is contained in the shogun src distribution and quoted below.
GENERAL
On most platforms (Linux,MacOSX,cygwin) it is sufficient to issue
./configure
make
sudo make install
which will build shogun for the R, matlab, python, octave and octave_modular,
python_modular and r_modular interfaces and later install it.
If you want specific interfaces use,
e.g
./configure --interfaces=libshogun,libshogunui,python,python_modular
See ./configure --help for additional options.
If this does not work for you, see the SPECIFIC BUILD INSTRUCTIONS below
SPECIAL FEATURES
To enable Multiple Kernel Learning with CPLEX(tm) just make sure cplex can
be found in the PATH. If it is not found shogun will resort to GLPK (if found)
for 1-norm MKL, p-norm MKL with p>1 will work nonetheless.
REQUIREMENTS
The standard linux utils like bash, grep, test, sed, cut, awk, ldd, uname gcc
g++ and cat, python (debian package: python2.5, python2.6) are required
for the ./configure to work.
To compile the R interface you need to have the R developer files
(debian package r-base-dev) installed.
To compile the octave interface you need to have the octave developer files
(debian package octave3.0-headers) installed.
To compile the python interface you need to have the python developer files
installed (debian packages python2.5-dev or python2.6-dev) and numpy
version 1.x installed (debian package python-numpy) installed.
Optionally you will need atlas and lapack (debian packages lapack3-dev,
atlas3-headers atlas3-base-dev or atlas3-altivec-dev atlas3-sse2-dev)
installed. Note that atlas/lapack is only supported under linux (high
performance computing should be done under linux only anyway). In case
atlas/lapack is unavailable, don't worry most of shogun will work without,
though slightly slower versions are used. For standard 1-norm
multiple kernel learning (MKL) the GNU Linear Programming Kit (GLPK) version at
least 4.29 or CPLEX is required. If you want to build the html documentation or
python online help you will need doxygen version 1.6.0 or higher.
SPECIFIC BUILD INSTRUCTIONS
BUILDING ON DEBIAN GNU LINUX
Python (python2.5 or python2.6) need to be installed. To get atlas/lapack
optimizations optionally also install the atlas3-* packages aswell as the
lapack3-* packages.
standalone:
===========
cd src
./configure --interfaces=libshogun,libshogunui,cmdline
make
a shogun executable can be found in cmdline
octave
======
To compile the octave interface you need to have the octave developer files
(debian package octave3.2-headers or octave3.0-headers).
then do a
./configure --interfaces=libshogun,libshogunui,octave
make
make install
a sg.oct file should be created. as a test start octave in the src/ directory
and type
addpath('../examples/documented/octave/graphical')
svr_regression
matlab
======
To compile the matlab interface you need to have matlab installed in the path
(i.e., typing matlab in the shell should start matlab).
then do a
./configure --interfaces=libshogun,libshogunui,matlab
make
make install
a sg.mexglx (or sg.mexa64 or sg.mexmac etc file should be created). As a test
start matlab in the src/matlab directory
and type
addpath('../examples/documented/matlab/graphical')
svr_regression
For permanent use you could add the following line to your matlab/startup.m
addpath('path_to_shogun/trunk/src/matlab');
In case you want to omit the make install step you could run matlab (in gui
mode if you want) with
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:path_to_shogun/trunk/src/libshogunui:path_to_shogun/trunk/src/libshogun
matlab -desktop
R
=
To compile the R interface you need to have the R developer files
(debian package r-base-dev) installed.
then do the usual
./configure --interfaces=libshogun,libshogunui,r
make
make install
python
======
To compile the python interface you need to have numpy version 1.x installed
(debian package python-numpy and python-numpy-ext) and optionally for plotting
python-matplotlib installed. When using matplotlib, make sure you use numpy as
the underlying numeric toolkit, i.e. you have the line
numerix : numpy
in your /etc/matplotlibrc
then do a
./configure --interfaces=libshogun,libshogunui,python
make
A sg.so file should be created in the src/ directory:
To test whether it is working try
PYTHONPATH=`pwd` python ../examples/documented/python/graphical/svm_classification.py
eierlegendewollmichsau (elwms) interface
========================================
This is a .so file that works with R,python,matlab,octave all in one. To compile
you should have at least python and some other interface enabled:
cd src
./configure --interfaces=libshogun,libshogunui,octave,matlab,r,python,elwms
make
cd elwms
LD_LIBRARY_PATH=/path/to/octave/lib:/path/to/matlab/libs octave
All examples from examples/documented/{r,python,matlab,octave}/* should work plus the ones
in examples/documented/elwms/ (that allows lang -> python subcommands).
object oriented python/swig interface:
======================================
proceed as for the python interface but now in addition install the swig package and
configure+compile shogun with:
./configure --interfaces=libshogun,libshogunui,python,python_modular
make
sudo make install
to test if it is working try python ../examples/documented/python-modular/graphical/svm.py
BUILDING ON MACOSX
python:
=======
Get the precompiled binary packages
python, matplotlib, NumPy and wxPython from http://pythonmac.org/packages/py24-fat/index.html
Note: On powerpc archs don't use gcc-4.0 / gcc-4.1 as it will fail with an internal compiler
error. Try gcc-4.2 instead or disable optimization (using -O0).
Furthermore there it *may* happen that compiling hangs with an error in
/usr/include/architecture/ppc/math.h:513.
A workaround is to uncomment this in math.h:
typedef struct __complex_s {
double Real;
double Imag;
} __complex_t;
Also make sure you don't mix python versions (i.e. python2.5 and python2.6) on build/runtime.
You can specify the python version as a argument to configure, e.g.: --python=python2.7
./configure --interface=python
make
to test if it is working try:
PYTHONPATH=`pwd` python ../examples/documented/python/graphical/svm_classification.py
object oriented python/swig interface:
======================================
Follow the above instructions for python. Then use fink/darwinports to install swig.
./configure --interfaces=libshogun,libshogunui,python,python-modular
make
sudo make install
to test if it is working try python ../examples/documented/python-modular/graphical/svm.py
octave:
=======
Use fink/darwinports to install octave. For intel-macs octave currently is only in the
unstable repository + it has to be compiled from source. Also note that g77
got replaced by gfortran, so you might need to do a fink install gcc4 first (which takes
an endless amount time to compile).
then do:
./configure --interfaces=libshogun,libshogunui,octave
make
a sg.oct file should be created. as a test start octave in the src/ directory
and type
addpath('../examples/documented/octave/graphical')
svr_regression
standalone:
===========
cd src
./configure --interfaces=libshogun,libshogunui,cmdline
make
make install
The shogun executable can be found in /usr/local/bin/shogun and the libraries in
/usr/local/lib/libshogun*.
R:
==
Install the full R package (e.g. the 93MB R-2.4.0.dmg image from
http://cran.r-project.org/bin/macosx/ )
then do the usual
./configure --interfaces=libshogun,libshogunui,r
make
make install
After starting the R aqua gui, choose File->Source File and select the
../examples/documented/r/graphical/svm_classification.R example
If that does not work out (send us a bug report) and also please try the following:
Enter the src/ directory and do:
./configure --interfaces=libshogun,libshogunui,r
make
make install
(if that fails attach the configure.log in the bug report)
a sg.so file should be created. To test if that file is OK try in the
r/ directory:
LD_LIBRARY_PATH=../libshogun:../libshogunui R
>> dyn.load('sg.so')
sg <- function(...) .External("sg",...,PACKAGE="sg")
sg('help')
if that was still working go to the shogun/R directory and try
make clean
make
if a .tar.gz is successfully created, then the R CMD INSTALL <file>.tar.gz
should go through.
matlab:
=======
BUILDING ON WINDOWS / CYGWIN
install cygwin 1.7 or later
R:
==
I did not try the long and painful way of compiling R to get etc/Makeconf etc.
to be setup correctly. Thus the usual R CMD INSTALL <pkg> won't work (help welcome).
Instead install the R package from cran (i.e. using the R-2.4.0-win32.exe
installer from http://cran.r-project.org/bin/windows/base/ )
Enter the src/ directory and do:
./configure --interface=libshogun,libshogunui,r
(if that fails attach the configure.log in the bug report)
make
a sg.dll file should be created. To test if that file is OK try in the
src/ directory:
R
>> dyn.load('sg.dll')
sg <- function(...) .External("sg",...,PACKAGE="sg")
sg('help')
Instead of using library(sg) in your .R scripts you now have to use
dyn.load('<path_to_shogun>/sg.dll')
sg <- function(...) .External("sg",...,PACKAGE="sg").
After this modification, The examples in examples/documented/r/ should all work. To get
them to go start the R gui, choose File->Source R Code and select
../examples/documented/r/graphical/svr_regression.R (as this example has no other package dependencies).
matlab:
=======
cd src
./configure --interfaces=libshogun,libshogunui,matlab
make
a sg.dll can be found in src/matlab
startup matlab and type sg('help')
standalone:
===========
cd src
./configure
make
make install
a shogun.exe can be found in src/cmdline
octave:
=======
install octave and octave-headers
cd src
./configure --interface=libshogun,libshogunui,octave
make
make install
a sg.oct file can be found in src/octave
try
cd src/octave
LD_LIBRARY_PATH=../libshogun:../libshogunui octave
addpath('../examples/documented/octave/graphical')
svr_regression
python:
=======
install python2.5 and numpy >1.0
now compile shogun:
./configure --interfaces=libshogun,libshogunui,python
make
make install
this will create a sg.dll in the src/python dir
to test if it is working, try:
cd src
LD_LIBRARY_PATH=./libshogun:libshogunui PYTHONPATH=./python python ../examples/documented/python/graphical/svm_classification.py
object oriented python/swig interface:
======================================
do all of the above you did for python but now in addition install the swig
package and configure+compile shogun with:
./configure --interfaces=libshogun,libshogunui,python,python_modular
make
make install
to test if it is working try python ../examples/documented/python_modular/graphical/svm.py
object oriented octave/swig interface:
======================================
do all of the above you did for octave but now in addition install the swig
package and configure+compile shogun with:
./configure --interfaces=libshogun,libshogunui,python,python_modular
make
make install
to test if it is working try octave ../examples/documented/octave_modular/libsvm.m
object oriented r/swig interface:
======================================
do all of the above you did for R but now in addition install the swig
package and configure+compile shogun with:
./configure --interfaces=libshogun,libshogunui,python,r_modular
make
make install
to test if it is working try octave ../examples/documented/r_modular/all_classifier.R
PROBLEMS
In case header files or libraries are not at standard locations one needs
to manually adjust the libray/include paths using --includes or --libs
(see configure --help for additional options)
The current mingw version in cygwin is out of date - so R and matlab won't work
until mingw is updated to gcc 4.X.