Skip to content

Commit

Permalink
added requirements.txt and updated REAMDE.md
Browse files Browse the repository at this point in the history
  • Loading branch information
David Kappel committed Oct 31, 2017
1 parent c0cbd8d commit 612ec51
Show file tree
Hide file tree
Showing 3 changed files with 172 additions and 5 deletions.
167 changes: 164 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,8 @@ for communication with other software components.

## Quick Installation Guide

SPORE requires NEST installed with MUSIC (`-Dwith-music=ON`) and Python bindings. Please make sure your version of NEST corresponds to or is newer than revision
[58fd190f5e4](https://github.com/nest/nest-simulator/commit/58fd190f5e404f1e3e822c0d3915e2321d102ed5).
A detailed installation guide that also shows how to set up the dependencies is provided on the [SPORE wiki page](https://github.com/IGITUGraz/spore-nest-module/wiki).
SPORE requires NEST installed with MUSIC (`-Dwith-music=ON`) and Python bindings. Please make sure your version of NEST corresponds to or is newer than version 2.14.

This comment has been minimized.

Copy link
@mhoff

mhoff Nov 2, 2017

Collaborator

In fact we can only guarantee compatibility of SPORE 2.14 with NEST 2.14. The development version of NEST (2.14+) might break functionality. Therefore I would put emphasize on holding NEST and SPORE versions in perfect sync.

This comment has been minimized.

Copy link
@mhoff

mhoff Nov 2, 2017

Collaborator

Whoops. I just recognized that you discuss this issue in the detailed instructions. Nevertheless, I would still argue for enforcing (recommending..) the versions to be exactly the same.

A detailed installation guide that also shows how to set up the dependencies is provided below and on the [SPORE wiki page](https://github.com/IGITUGraz/spore-nest-module/wiki).

```bash
git clone https://github.com/IGITUGraz/spore-nest-module
Expand All @@ -31,6 +30,168 @@ make install
make test
```

## Detailed Installation Guide

This guide describes how to install the SPORE module in version 2.14 for the NEST simulator in version 2.14. Combinining this version of SPORE with other versions of NEST may work but has not been tested.

This comment has been minimized.

Copy link
@mhoff

mhoff Nov 2, 2017

Collaborator

Typo in "Combinining"

We used MUSIC version 1.1.15 in revision [8e0a609b298](https://github.com/INCF/MUSIC/commit/8e0a609b29835be604ae556c1592aad9b4be1827) and [MPI](https://www.open-mpi.org/) (Open MPI 1.6.5).

This comment has been minimized.

Copy link
@mhoff

mhoff Nov 2, 2017

Collaborator

"used" -> "use"

Furthermore we need python with the packages `pyzmq`, `numpy`, `ujson` and `matplotlib`.
A guide to install these dependencies is provided below.
Finally we used SPORE ([version 2.14](https://github.com/IGITUGraz/spore-nest-module/releases/tag/v2.14.0), or later).
The installation procedure was tested on Debian GNU/Linux 8.7 (jessie).

This guide assumes that you want to install everything into your local home folder `$HOME/opt/`.
It is further assumed that you checkout the software into a local folder that is used for development,
which we refer to as `devel` folder.

### Preparation

Add the following lines to your `~/.bashrc` (or `~/.zshrc` or `~/.profile` etc.)

```bash
export TARGET_DIR=$HOME/opt/
export PATH=$PATH:$TARGET_DIR/bin
export LIBRARY_PATH=$LIBRARY_PATH:$TARGET_DIR/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TARGET_DIR/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TARGET_DIR/lib/nest # required in some cases
export PYTHONPATH=$PYTHONPATH:$TARGET_DIR/lib/python2.7/site-packages
export PYTHONPATH=$PYTHONPATH:$TARGET_DIR/lib64/python2.7/site-packages
export LD_PRELOAD=/usr/lib/openmpi/lib/libmpi.so # required in some cases
export NUM_CORES=3 # number of CPU cores

```

Now run `source ~/.bashrc` or close the current terminal now and start a new session such that the changes get applied.

Now install all dependencies (for Debian Jessie).

**Notes:**

* Use `pip install --user <package name>` to install the python packages locally.
* Use `sudo pip install <package name>` to install the python packages globally.
* The python packages can also be installed in a [virtualenv](https://virtualenv.pypa.io/en/stable/).
* For python3, use `pip3` to install python packages and install the python3 versions of the packages for NEST dependencies.
* The use of multiple different python3 versions is discouraged.
Make sure to consistently use *one* version for installing libraries and actually running experiments.
When installing MUSIC, the specification of the precise executable (e.g. `python3.4`), rather than `python3`,
may be necessary in ambigous cases (see [#9](https://github.com/IGITUGraz/spore-nest-module/issues/9)).

```bash
# For NEST and MUSIC
apt-get install build-essential cmake
apt-get install python python-dev python-pip
apt-get install libreadline-dev gsl-bin libgsl0-dev libncurses5-dev openmpi-bin

apt-get install automake libtool # BUILD Dependencies
apt-get install libopenmpi-dev libopenmpi1.6 # RUN Dependencies
apt-get install freeglut3-dev # Optional, for viewevents
pip install cython
pip install mpi4py # RUN Dependencies

# For SPORE
apt-get install libzmq3 # For realtime plotting
pip install pyzmq # For real-time plotting

This comment has been minimized.

Copy link
@anandtrex

anandtrex Nov 2, 2017

Contributor

With a requirements.txt, all these can be replaced with pip install --upgrade [--user] -r requirements.txt

pip install numpy # For testing
pip install ujson
pip install --upgrade matplotlib # (Optional, If you want to have nice plotting, you should upgrade `matplotlib` to the newest version)
```


### Installing MUSIC

In your `devel` folder, check out the latest version of MUSIC from https://github.com/INCF/MUSIC

```bash
git clone https://github.com/INCF/MUSIC.git
```

Note that at the moment `--disable-isend` is required because
of a [critical problem](https://github.com/INCF/MUSIC/issues/35#issuecomment-280332573)
in the MUSIC scheduler.

In the folder `./MUSIC/` :

```bash
./autogen.sh
PYTHON=/usr/bin/python ./configure --prefix=$TARGET_DIR --disable-isend # Replace with python3[.x] if desired
make -j$NUM_CORES
make install
```

### Installing NEST

In your `devel` folder, check out the latest version of NEST from https://github.com/nest/nest-simulator

```bash
# use the latest developmental version of NEST. Release versions don't currently work with SPORE
git clone https://github.com/nest/nest-simulator.git
```
Then in the folder `./nest-simulator` :

```bash
mkdir build
cd build/
cmake -DCMAKE_INSTALL_PREFIX:PATH=$TARGET_DIR -Dwith-music=ON -Dwith-mpi=ON -Dwith-python=2 .. # Change python version to 3 for Python 3
make -j$NUM_CORES
make install
```

### Installing SPORE

In your `devel` folder, check out the latest version of SPORE from https://github.com/IGITUGraz/spore-nest-module

```bash
git clone https://github.com/IGITUGraz/spore-nest-module.git
```

Then in the folder `./spore-nest-module` :

```bash
mkdir build
cd build/
cmake -Dwith-python=2 .. # Change python version to 3 for Python 3, or provide a path to a python binary
make -j$NUM_CORES
make install
make test
```

In `ipython` (or `ipython3`) running `import nest` and then `nest.Install("sporemodule")` should now yield the following:

```
In [1]: import nest
[INFO] [.../rng_manager.cpp:238 @ Network::create_rngs_] : Creating default RNGs
[INFO] [.../rng_manager.cpp:233 @ Network::create_rngs_] : Deleting existing random number generators
[INFO] [.../rng_manager.cpp:238 @ Network::create_rngs_] : Creating default RNGs
[INFO] [.../rng_manager.cpp:284 @ Network::create_grng_] : Creating new default global RNG
-- N E S T --
Copyright (C) 2004 The NEST Initiative
Version 2.14.0 Oct 30 2017 13:06:41
This program is provided AS IS and comes with
NO WARRANTY. See the file LICENSE for details.
Problems or suggestions?
Visit http://www.nest-simulator.org
Type 'nest.help()' to find out more about NEST.
In [2]: nest.Install("sporemodule")
Oct 31 13:26:30 Install [Info]:
loaded module SPORE (version 2.14.0)
```

## Running a first experiment

That should be it.

Now you should be able to execute the script [`experiment.py`](https://github.com/IGITUGraz/spore-nest-module/blob/master/examples/pattern_matching_showcase/experiment.py) in

`spore-nest-module/examples/pattern_matching_showcase`.



## License

SPORE is open source software and is licensed under the [GNU General Public
Expand Down
6 changes: 6 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
cython
mpi4py
pyzmq
numpy
ujson
matplotlib
4 changes: 2 additions & 2 deletions src/synaptic_sampling_rewardgradient_connection.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -114,8 +114,6 @@ void SynapticSamplingRewardGradientCommonProperties::get_status(DictionaryDatum&
*/
void SynapticSamplingRewardGradientCommonProperties::set_status(const DictionaryDatum& d, nest::ConnectorModel& cm)
{
nest::CommonSynapseProperties::set_status(d, cm);

CheckParameters p_check( d );
define_parameters < CheckParameters > ( p_check, *this );

Expand All @@ -132,6 +130,8 @@ void SynapticSamplingRewardGradientCommonProperties::set_status(const Dictionary
reward_transmitter_ = new_reward_transmitter;
}

nest::CommonSynapseProperties::set_status(d, cm);

SetStatus p_set( d );
define_parameters < SetStatus > ( p_set, *this );
}
Expand Down

0 comments on commit 612ec51

Please sign in to comment.