Basal Ganglia example (v3.0.0) TypeError

Hey everyone,

I’m working through the examples and noticed that the basal ganglia example throws a TypeError. It does work within Google Colab, but I was wondering what could cause this error?

Build finished in 0:00:01.                                                      Traceback (most recent call last):
  File "D:\HMC\Master Thesis\NengoTutorials\networks3.py", line 33, in <module>
with nengo.Simulator(model) as sim:
  File "C:\Users\Flowhill\Anaconda3\envs\nengo\lib\site-packages\nengo\simulator.py", line 126, in __init__
self.model.build(network, progress=pt.next_stage("Building", "Build"))
  File "C:\Users\Flowhill\Anaconda3\envs\nengo\lib\site-packages\nengo\builder\builder.py", line 133, in build
built = self.builder.build(self, obj, *args, **kwargs)
  File "C:\Users\Flowhill\Anaconda3\envs\nengo\lib\site-packages\nengo\builder\builder.py", line 242, in build
return cls.builders[obj_cls](model, obj, *args, **kwargs)
  File "C:\Users\Flowhill\Anaconda3\envs\nengo\lib\site-packages\nengo\builder\network.py", line 82, in build_network
model.build(subnetwork)
  File "C:\Users\Flowhill\Anaconda3\envs\nengo\lib\site-packages\nengo\builder\builder.py", line 133, in build
built = self.builder.build(self, obj, *args, **kwargs)
  File "C:\Users\Flowhill\Anaconda3\envs\nengo\lib\site-packages\nengo\builder\builder.py", line 242, in build
return cls.builders[obj_cls](model, obj, *args, **kwargs)
  File "C:\Users\Flowhill\Anaconda3\envs\nengo\lib\site-packages\nengo\builder\network.py", line 82, in build_network
model.build(subnetwork)
  File "C:\Users\Flowhill\Anaconda3\envs\nengo\lib\site-packages\nengo\builder\builder.py", line 133, in build
built = self.builder.build(self, obj, *args, **kwargs)
  File "C:\Users\Flowhill\Anaconda3\envs\nengo\lib\site-packages\nengo\builder\builder.py", line 242, in build
return cls.builders[obj_cls](model, obj, *args, **kwargs)
  File "C:\Users\Flowhill\Anaconda3\envs\nengo\lib\site-packages\nengo\builder\network.py", line 94, in build_network
model.build(conn)
  File "C:\Users\Flowhill\Anaconda3\envs\nengo\lib\site-packages\nengo\builder\builder.py", line 133, in build
built = self.builder.build(self, obj, *args, **kwargs)
  File "C:\Users\Flowhill\Anaconda3\envs\nengo\lib\site-packages\nengo\builder\builder.py", line 242, in build
return cls.builders[obj_cls](model, obj, *args, **kwargs)
  File "C:\Users\Flowhill\Anaconda3\envs\nengo\lib\site-packages\nengo\builder\connection.py", line 267, in build_connection
eval_points, decoders, solver_info = model.build(conn.solver, conn, rng)
  File "C:\Users\Flowhill\Anaconda3\envs\nengo\lib\site-packages\nengo\builder\builder.py", line 133, in build
built = self.builder.build(self, obj, *args, **kwargs)
  File "C:\Users\Flowhill\Anaconda3\envs\nengo\lib\site-packages\nengo\builder\builder.py", line 242, in build
return cls.builders[obj_cls](model, obj, *args, **kwargs)
  File "C:\Users\Flowhill\Anaconda3\envs\nengo\lib\site-packages\nengo\builder\connection.py", line 176, in build_solver
return build_decoders(model, conn, rng)
  File "C:\Users\Flowhill\Anaconda3\envs\nengo\lib\site-packages\nengo\builder\connection.py", line 138, in build_decoders
decoders, solver_info = wrapped_solver(conn, gain, bias, x, targets, rng=rng)
  File "C:\Users\Flowhill\Anaconda3\envs\nengo\lib\site-packages\nengo\builder\connection.py", line 157, in solve_for_decoders
decoders, solver_info = conn.solver(activities, targets, rng=rng)
  File "C:\Users\Flowhill\Anaconda3\envs\nengo\lib\site-packages\nengo\solvers.py", line 527, in __call__
return self._solve(A, Y, sigma=sigma)
  File "C:\Users\Flowhill\Anaconda3\envs\nengo\lib\site-packages\nengo\solvers.py", line 503, in _solve
X[:, i], residuals[i] = scipy.optimize.nnls(GA, GY[:, i])
TypeError: _nnls.nnls() missing required argument 'n' (pos 3)

Hi @Flowhill!

It looks like it might be an issue with your Anaconda environment. Can you post the details (installed packages) of your environment (you can do a pip freeze command in your environment) here so that I can attempt to recreate it on my system?

Hey @xchoo,

Here’s the output:

absl-py @ file:///C:/ci/absl-py_1600290345082/work
aiohttp==3.6.2
astor==0.8.1
astunparse==1.6.3
async-timeout==3.0.1
attrs @ file:///tmp/build/80754af9/attrs_1600298409949/work
blinker==1.4
brotlipy==0.7.0
cachetools @ file:///tmp/build/80754af9/cachetools_1596822027882/work
certifi==2020.6.20
cffi @ file:///C:/ci/cffi_1600699250966/work
chardet==3.0.4
click==7.1.2
cryptography @ file:///C:/ci/cryptography_1601046913206/work
cycler==0.10.0
flake8==3.8.4
gast==0.3.3
google-auth @ file:///tmp/build/80754af9/google-auth_1601408044422/work
google-auth-oauthlib==0.4.1
google-pasta==0.2.0
grpcio==1.32.0
h5py==2.10.0
idna @ file:///tmp/build/80754af9/idna_1593446292537/work
importlib-metadata==2.0.0
jedi==0.17.2
Jinja2==2.11.2
Keras-Applications @ file:///tmp/build/80754af9/keras-applications_1594366238411/work
Keras-Preprocessing==1.1.2
kiwisolver==1.2.0
Markdown @ file:///C:/ci/markdown_1597415185889/work
MarkupSafe==1.1.1
matplotlib==3.3.2
mccabe==0.6.1
mkl-fft==1.2.0
mkl-random==1.1.1
mkl-service==2.3.0
multidict @ file:///C:/ci/multidict_1600456486794/work
nengo==3.0.0
nengo-dl==3.3.0
nengo-gui==0.4.6
nengo-spa==1.1.0
nengolib==0.5.2
numpy==1.18.5
oauthlib==3.1.0
opt-einsum==3.3.0
packaging==20.4
parso==0.7.1
Pillow==7.2.0
progressbar2==3.53.1
protobuf==3.13.0
pyasn1==0.4.8
pyasn1-modules==0.2.8
pycodestyle==2.6.0
pycparser @ file:///tmp/build/80754af9/pycparser_1594388511720/work
pyflakes==2.2.0
PyJWT==1.7.1
pyOpenSSL @ file:///tmp/build/80754af9/pyopenssl_1594392929924/work
pyparsing==2.4.7
pyreadline==2.1
PySocks @ file:///C:/ci/pysocks_1594394709107/work
python-dateutil==2.8.1
python-utils==2.4.0
requests @ file:///tmp/build/80754af9/requests_1592841827918/work
requests-oauthlib==1.3.0
rsa @ file:///tmp/build/80754af9/rsa_1596998415516/work
scipy @ file:///C:/ci/scipy_1597686737426/work
six==1.15.0
tensorboard==2.3.0
tensorboard-plugin-wit==1.7.0
tensorflow==2.3.1
tensorflow-estimator==2.3.0
tensorflow-gpu==2.3.1
tensorflow-gpu-estimator==2.3.0
termcolor==1.1.0
typing-extensions==3.7.4.3
urllib3 @ file:///tmp/build/80754af9/urllib3_1597086586889/work
Werkzeug==1.0.1
win-inet-pton==1.1.0
wincertstore==0.2
wrapt==1.12.1
yarl==1.6.0
zipp==3.3.0

I also produced a conda list for you here:

# packages in environment at C:\Users\Flowhill\anaconda3\envs\nengo:
#
# Name                    Version                   Build  Channel
_tflow_select             2.1.0                       gpu
absl-py                   0.10.0                   py37_0
aiohttp                   3.6.2            py37he774522_0
astor                     0.8.1                    py37_0
astunparse                1.6.3                    pypi_0    pypi
async-timeout             3.0.1                    pypi_0    pypi
attrs                     20.2.0                     py_0
blas                      1.0                         mkl
blinker                   1.4                      py37_0
brotlipy                  0.7.0           py37he774522_1000
ca-certificates           2020.7.22                     0
cachetools                4.1.1                      py_0
certifi                   2020.6.20                py37_0
cffi                      1.14.3           py37h7a1dbc1_0
chardet                   3.0.4                 py37_1003
click                     7.1.2                      py_0
cryptography              3.1.1            py37h7a1dbc1_0
cudatoolkit               10.1.243             h74a9793_0
cudnn                     7.6.5                cuda10.1_0
cycler                    0.10.0                   pypi_0    pypi
flake8                    3.8.4                    pypi_0    pypi
gast                      0.3.3                    pypi_0    pypi
google-auth               1.22.0                     py_0
google-auth-oauthlib      0.4.1                      py_2
google-pasta              0.2.0                      py_0
grpcio                    1.32.0                   pypi_0    pypi
h5py                      2.10.0           py37h5e291fa_0
hdf5                      1.10.4               h7ebc959_0
icc_rt                    2019.0.0             h0cc432a_1
idna                      2.10                       py_0
importlib-metadata        2.0.0                    pypi_0    pypi
intel-openmp              2020.2                      254
jedi                      0.17.2                   pypi_0    pypi
jinja2                    2.11.2                   pypi_0    pypi
keras-applications        1.0.8                      py_1
keras-preprocessing       1.1.2                    pypi_0    pypi
kiwisolver                1.2.0                    pypi_0    pypi
libprotobuf               3.13.0               h200bbdf_0
markdown                  3.2.2                    py37_0
markupsafe                1.1.1                    pypi_0    pypi
matplotlib                3.3.2                    pypi_0    pypi
mccabe                    0.6.1                    pypi_0    pypi
mkl                       2020.2                      256
mkl-service               2.3.0            py37hb782905_0
mkl_fft                   1.2.0            py37h45dec08_0
mkl_random                1.1.1            py37h47e9c7a_0
multidict                 4.7.6            py37he774522_1
nengo                     3.0.0                    pypi_0    pypi
nengo-dl                  3.3.0                    pypi_0    pypi
nengo-gui                 0.4.6                    pypi_0    pypi
nengo-spa                 1.1.0                    pypi_0    pypi
nengolib                  0.5.2                    pypi_0    pypi
numpy                     1.18.5                   pypi_0    pypi
oauthlib                  3.1.0                      py_0
openssl                   1.1.1h               he774522_0
opt-einsum                3.3.0                    pypi_0    pypi
opt_einsum                3.1.0                      py_0
packaging                 20.4                     pypi_0    pypi
parso                     0.7.1                    pypi_0    pypi
pillow                    7.2.0                    pypi_0    pypi
pip                       20.2.3                   py37_0
progressbar2              3.53.1                   pypi_0    pypi
protobuf                  3.13.0                   pypi_0    pypi
pyasn1                    0.4.8                      py_0
pyasn1-modules            0.2.8                    pypi_0    pypi
pycodestyle               2.6.0                    pypi_0    pypi
pycparser                 2.20                       py_2
pyflakes                  2.2.0                    pypi_0    pypi
pyjwt                     1.7.1                    py37_0
pyopenssl                 19.1.0                     py_1
pyparsing                 2.4.7                    pypi_0    pypi
pyreadline                2.1                      py37_1
pysocks                   1.7.1                    py37_1
python                    3.7.9                h60c2a47_0
python-dateutil           2.8.1                    pypi_0    pypi
python-utils              2.4.0                    pypi_0    pypi
requests                  2.24.0                     py_0
requests-oauthlib         1.3.0                      py_0
rsa                       4.6                        py_0
scipy                     1.4.1                    pypi_0    pypi
setuptools                49.6.0                   py37_0
six                       1.15.0                     py_0
sqlite                    3.33.0               h2a8f88b_0
tensorboard               2.3.0                    pypi_0    pypi
tensorboard-plugin-wit    1.7.0                    pypi_0    pypi
tensorflow                2.3.1                    pypi_0    pypi
tensorflow-base           2.1.0           gpu_py37h55f5790_0
tensorflow-estimator      2.3.0                    pypi_0    pypi
tensorflow-gpu            2.3.1                    pypi_0    pypi
tensorflow-gpu-estimator  2.3.0                    pypi_0    pypi
termcolor                 1.1.0                    pypi_0    pypi
typing-extensions         3.7.4.3                  pypi_0    pypi
urllib3                   1.25.10                    py_0
vc                        14.1                 h0510ff6_4
vs2015_runtime            14.16.27012          hf0eaf9b_3
werkzeug                  1.0.1                    pypi_0    pypi
wheel                     0.35.1                     py_0
win_inet_pton             1.1.0                    py37_0
wincertstore              0.2                      py37_0
wrapt                     1.12.1           py37he774522_1
yarl                      1.6.0                    pypi_0    pypi
zipp                      3.3.0                    pypi_0    pypi
zlib                      1.2.11               h62dcd97_4

It looks like something is weird with your Scipy install. I checked the docs for scipy.optimize.nnls in a number of versions, and in no version did I see a required third argument n (as suggested by the TypeError). Some versions do have an optional third argument maxiters, but this is never required.

I noticed your Scipy appears to be installed from source. Is there some reason for that? (Or did Conda do that for some reason?). I’d try to use a standard version of Scipy from pip or conda.

Hey Eric,

I think conda did that. I’ll try reinstalling Scipy from pip.

Reinstalling scipy seemed to work. Apparently two versions of scipy were installed (as a version of scipy remained after I uninstalled one) both 1.4.1 (build: pypi_0, channel: pypi) and 1.5.2 (build/channel unknown as it was not listed).

The example now runs both from a python interpreter and the nengo gui.

Thanks a lot, both of you!