Description of problem
brian2.test() reports:
TypeError: logical_and() takes from 2 to 3 positional arguments but 1 were given
FAILED ../../../../../../opt/anaconda/envs/TheBrianBlank/lib/python3.9/site-packages/brian2/tests/test_units.py::test_numpy_functions_logical
Minimal code to reproduce problem
import brian2
brian2.test()
What you have aready tried
I first got the error in a pip managed environment (no anaconda).
I installed anaconda and set up a new environment. I followed the installation guide
conda config --add channels conda-forge
conda install matplotlib pytest ipython notebook brian2 sphinx doctest
But i still get the same error
Expected output
OK
Actual output
False
Full traceback of error
Running tests in /opt/anaconda/envs/TheBrianBlank/lib/python3.9/site-packages/brian2 for targets numpy, cython (excluding long tests)
Running Brian version 2.4.2 from ‘/opt/anaconda/envs/TheBrianBlank/lib/python3.9/site-packages/brian2’
Testing codegen-independent code
Resetting to default preferences
Running doctests
… [100%]
=============================== warnings summary ===============================
core/operations.py::brian2.core.operations.network_operation
/opt/anaconda/envs/TheBrianBlank/lib/python3.9/site-packages/brian2/core/clocks.py:95: DeprecationWarning: np.float
is a deprecated alias for the builtin float
. To silence this warning, use float
by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use np.float64
here.
Deprecated in NumPy 1.20; for more details and guidance: (link removed)
dtype=np.float, read_only=True, constant=True,
monitors/spikemonitor.py::brian2.monitors.spikemonitor.EventMonitor.all_values
monitors/spikemonitor.py::brian2.monitors.spikemonitor.EventMonitor.values
monitors/spikemonitor.py::brian2.monitors.spikemonitor.SpikeMonitor
monitors/spikemonitor.py::brian2.monitors.spikemonitor.SpikeMonitor.all_values
monitors/spikemonitor.py::brian2.monitors.spikemonitor.SpikeMonitor.values
/opt/anaconda/envs/TheBrianBlank/lib/python3.9/site-packages/brian2/groups/neurongroup.py:313: DeprecationWarning: np.bool
is a deprecated alias for the builtin bool
. To silence this warning, use bool
by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use np.bool_
here.
Deprecated in NumPy 1.20; for more details and guidance: (link removed)
self.variables.add_auxiliary_variable(‘_cond’, dtype=np.bool)
monitors/spikemonitor.py::brian2.monitors.spikemonitor.EventMonitor.all_values
monitors/spikemonitor.py::brian2.monitors.spikemonitor.EventMonitor.all_values
monitors/spikemonitor.py::brian2.monitors.spikemonitor.EventMonitor.values
monitors/spikemonitor.py::brian2.monitors.spikemonitor.SpikeMonitor.all_values
monitors/spikemonitor.py::brian2.monitors.spikemonitor.SpikeMonitor.all_values
monitors/spikemonitor.py::brian2.monitors.spikemonitor.SpikeMonitor.spike_trains
monitors/spikemonitor.py::brian2.monitors.spikemonitor.SpikeMonitor.values
/opt/anaconda/envs/TheBrianBlank/lib/python3.9/site-packages/brian2/groups/group.py:257: DeprecationWarning: np.bool
is a deprecated alias for the builtin bool
. To silence this warning, use bool
by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use np.bool_
here.
Deprecated in NumPy 1.20; for more details and guidance: (link removed)
if index_array.dtype == np.bool:
– Docs: (link removed)
41 passed, 13 warnings in 7.26s
Running tests that do not use code generation
…
WARNING The expression “i1 / 1” divides two integer values. In previous versions of Brian, this would have used either an integer (“flooring”) or a floating point division, depending on the Python version and the code generation target. In the current version, it always uses a floating point division. Explicitly ask for an integer division (“//”), or turn one of the operands into a floating point value (e.g. replace “1/2” by “1.0/2”) to no longer receive this warning. [brian2.parsing.bast.floating_point_division]
… [ 19%]
… [ 39%]
…
WARNING The expression “(i + 1) / N” divides two integer values. In previous versions of Brian, this would have used either an integer (“flooring”) or a floating point division, depending on the Python version and the code generation target. In the current version, it always uses a floating point division. Explicitly ask for an integer division (“//”), or turn one of the operands into a floating point value (e.g. replace “1/2” by “1.0/2”) to no longer receive this warning. [brian2.parsing.bast.floating_point_division]
…ss… [ 59%]
…
WARNING The ‘independent’ state updater is deprecated and might be removed in future versions of Brian. [brian2.stateupdaters.exact.deprecated_independent]
… [ 79%]
…F… [ 99%]
… [100%]
=================================== FAILURES ===================================
_________________________ test_numpy_functions_logical _________________________
@pytest.mark.codegen_independent
def test_numpy_functions_logical():
'''
Assure that logical numpy functions work on all quantities and return
unitless boolean arrays.
'''
unit_values1 = [3 * mV, np.array([1, 2]) * mV, np.ones((3, 3)) * mV]
unit_values2 = [3 * second, np.array([1, 2]) * second,
np.ones((3, 3)) * second]
for ufunc in UFUNCS_LOGICAL:
for value1, value2 in zip(unit_values1, unit_values2):
try:
# one argument
result_units = eval('np.%s(value1)' % ufunc)
/opt/anaconda/envs/TheBrianBlank/lib/python3.9/site-packages/brian2/tests/test_units.py:976:
???
E TypeError: logical_and() takes from 2 to 3 positional arguments but 1 were given
:1: TypeError
… Output continues but the rest is Ok. (I had to remove the links in the output since i am a new user)