Open
Description
I recently upgraded my chaospy version from 2.3.5 to 3.0.4, and noticed that I am no longer able to create MvNormal
distributions with more than 31 random variables. Specifically, if I try to execute the lines in the interactive mode
jdist = cp.MvNormal(np.zeros(32), np.eye(32))
cp.E(jdist)
I get the following error
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/kinshuk/miniconda3/envs/check_chaospy/lib/python3.7/site-packages/chaospy/descriptives/expected.py", line 58, in E
mom = dist.mom(numpy.array(keys).T, **kws)
File "/home/kinshuk/miniconda3/envs/check_chaospy/lib/python3.7/site-packages/chaospy/distributions/baseclass.py", line 339, in mom
out = [evaluation.evaluate_moment(self, kdata, cache) for kdata in K.T]
File "/home/kinshuk/miniconda3/envs/check_chaospy/lib/python3.7/site-packages/chaospy/distributions/baseclass.py", line 339, in <listcomp>
out = [evaluation.evaluate_moment(self, kdata, cache) for kdata in K.T]
File "/home/kinshuk/miniconda3/envs/check_chaospy/lib/python3.7/site-packages/chaospy/distributions/evaluation/moment.py", line 93, in evaluate_moment
out = distribution._mom(k_data, **parameters)
File "/home/kinshuk/miniconda3/envs/check_chaospy/lib/python3.7/site-packages/chaospy/distributions/collection/mv_normal.py", line 110, in _mom
K = numpy.mgrid[[slice(0,_+1,1) for _ in k]]
File "/home/kinshuk/miniconda3/envs/check_chaospy/lib/python3.7/site-packages/numpy/lib/index_tricks.py", line 172, in __getitem__
nn = _nx.indices(size, typ)
File "/home/kinshuk/miniconda3/envs/check_chaospy/lib/python3.7/site-packages/numpy/core/numeric.py", line 1966, in indices
res = empty((N,)+dimensions, dtype=dtype)
ValueError: sequence too large; cannot be greater than 32
I tried bypassing this situation by trying to create a joint distribution using cp.J
as
dist1 = cp.MvNormal(np.zeros(31), np.eye(31))
dist2 = cp.MvNormal(np.zeros(31), np.eye(31))
jdist = cp.J(dist1, dist2)
But I get an Assertion Error
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/kinshuk/miniconda3/envs/check_chaospy/lib/python3.7/site-packages/chaospy/descriptives/expected.py", line 58, in E
mom = dist.mom(numpy.array(keys).T, **kws)
File "/home/kinshuk/miniconda3/envs/check_chaospy/lib/python3.7/site-packages/chaospy/distributions/baseclass.py", line 339, in mom
out = [evaluation.evaluate_moment(self, kdata, cache) for kdata in K.T]
File "/home/kinshuk/miniconda3/envs/check_chaospy/lib/python3.7/site-packages/chaospy/distributions/baseclass.py", line 339, in <listcomp>
out = [evaluation.evaluate_moment(self, kdata, cache) for kdata in K.T]
File "/home/kinshuk/miniconda3/envs/check_chaospy/lib/python3.7/site-packages/chaospy/distributions/evaluation/moment.py", line 93, in evaluate_moment
out = distribution._mom(k_data, **parameters)
File "/home/kinshuk/miniconda3/envs/check_chaospy/lib/python3.7/site-packages/chaospy/distributions/operators/joint.py", line 169, in _mom
output *= evaluation.evaluate_moment(dist, kloc_, cache=cache)
File "/home/kinshuk/miniconda3/envs/check_chaospy/lib/python3.7/site-packages/chaospy/distributions/evaluation/moment.py", line 74, in evaluate_moment
"distribution %s is not of length %d" % (distribution, len(k_data)))
AssertionError: distribution MvNormal(loc=[0.0,....,0.0], scale=[[1.0,...,1.0]]) is not of length 1
I am using numpy 1.16.4, and scipy 1.2.1 to reproduce these errors. I have been treating chaospy as a black box so far, so would greatly appreciate your assistance in getting a workaround!