No "ll_api" attribute in nest module


#1

When trying to run an experiment (after cloning), we run into an error where the backend crashes. We assume it’s due to the following error in the nrp ros-simulation-factory_app, eventually stating that the nest module does not contain the attribute ll_api:

Traceback (most recent call last):
File “/home/bbpnrsoa/nrp/src/ExDBackend/hbp_nrp_cleserver/hbp_nrp_cleserver/server/ROSCLESimulationFactory.py”, line 43, in
from hbp_nrp_cleserver.server.PlaybackServer import PlaybackSimulationAssembly
File “/home/bbpnrsoa/nrp/src/ExDBackend/hbp_nrp_cleserver/hbp_nrp_cleserver/server/PlaybackServer.py”, line 38, in
from hbp_nrp_cleserver.server.CLEGazeboSimulationAssembly import GazeboSimulationAssembly
File “/home/bbpnrsoa/nrp/src/ExDBackend/hbp_nrp_cleserver/hbp_nrp_cleserver/server/CLEGazeboSimulationAssembly.py”, line 43, in
from hbp_nrp_cleserver.server.ROSCLEServer import ROSCLEServer
File “/home/bbpnrsoa/nrp/src/ExDBackend/hbp_nrp_cleserver/hbp_nrp_cleserver/server/ROSCLEServer.py”, line 62, in
import hbp_nrp_cle.tf_framework as tf_framework
File “/home/bbpnrsoa/nrp/src/CLE/hbp_nrp_cle/hbp_nrp_cle/tf_framework/init.py”, line 104, in
from hbp_nrp_cle.brainsim.BrainInterface import IFixedSpikeGenerator,
File “/home/bbpnrsoa/nrp/src/CLE/hbp_nrp_cle/hbp_nrp_cle/brainsim/init.py”, line 44, in
import pyNN.nest
File “/home/bbpnrsoa/.local/lib/python2.7/site-packages/pyNN/nest/init.py”, line 37, in
from pyNN.nest.connectors import *
File “/home/bbpnrsoa/.local/lib/python2.7/site-packages/pyNN/nest/connectors.py”, line 39, in
if not nest.ll_api.sli_func(“statusdict/have_libneurosim ::”):
AttributeError: ‘module’ object has no attribute ‘ll_api’

This is from a container where we did install some new dependencies, but we did not tamper with the original nest installation. And, indeed, when asking where the nest module is loaded from, the path is:

/home/bbpnrsoa/.local/lib/python2.7/site-packages/nest/init.pyc

To verify that this is not just a problem with our custom container, I ran an empty, default container (docker run -it hbpneurorobotics/nrp:dev bash) and received the same error when importing nest.ll_api:

$ import nest
… # Nest init output
$ nest.ll_api
AttributeError: ‘module’ object has no attribute ‘ll_api’

Is this a problem with an outdated nest version (it is 2.12.0 in the container)? Or are some dependencies missing? Or could it have something to do with PATH variables? Am I overwriting them somehow?

Thanks for your time!


#2

I found the source of the error; apparently NEST moved some of their kernel functions into a submodule, which PyNN 0.9.5 solves. But since the NRP uses NEST 2.12, this has not yet happened, hence the error (see https://github.com/NeuralEnsemble/PyNN/commit/f9e37cabc3da7d413b14300eff8307ea2bd819ce).
The solution was to downgrade to PyNN 0.9.4:

pip install pynn==0.9.4