PyAutoFit icon indicating copy to clipboard operation
PyAutoFit copied to clipboard

Errors with NaNs with graphical model following PriorFactors

Open Jammy2211 opened this issue 3 years ago • 3 comments

The following script:

https://github.com/Jammy2211/autofit_workspace/blob/release/scripts/howtofit/chapter_graphical_models/tutorial_3_expectation_propagation.py

The following errors are printed at various points in the run:

2021-11-18 18:31:06,925 - tutorial_3_expectation_propagation - INFO - Removing zip file
2021-11-18 18:31:06,961 - autofit.graphical.expectation_propagation - ERROR - array must not contain infs or NaNs
Traceback (most recent call last):
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/graphical/expectation_propagation/__init__.py", line 159, in run
    model_approx, status = optimiser.optimise(
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/graphical/optimise.py", line 328, in optimise
    opt = OptFactor.from_approx(factor_approx, transform=whiten)
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/graphical/optimise.py", line 125, in from_approx
    return cls(
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/graphical/optimise.py", line 84, in __init__
    self.bounds = self.transform.transform_bounds(
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/mapper/operator.py", line 155, in transform_bounds
    lower = self * lower
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/mapper/operator.py", line 323, in rightmethod
    return method(self, x.reshape(-1, self.lsize)).reshape(x.shape)
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/mapper/operator.py", line 362, in __rtruediv__
    return solve_triangular(self.L, x.T, lower=True).T
  File "/home/jammy/venvs/PyAuto/lib/python3.8/site-packages/scipy/linalg/basic.py", line 334, in solve_triangular
    b1 = _asarray_validated(b, check_finite=check_finite)
  File "/home/jammy/venvs/PyAuto/lib/python3.8/site-packages/scipy/_lib/_util.py", line 272, in _asarray_validated
    a = toarray(a)
  File "/home/jammy/venvs/PyAuto/lib/python3.8/site-packages/numpy/lib/function_base.py", line 488, in asarray_chkfinite
    raise ValueError(
ValueError: array must not contain infs or NaNs
2021-11-18 18:31:06,966 - autofit.graphical.expectation_propagation - ERROR - array must not contain infs or NaNs
Traceback (most recent call last):
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/graphical/expectation_propagation/__init__.py", line 159, in run
    model_approx, status = optimiser.optimise(
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/graphical/optimise.py", line 328, in optimise
    opt = OptFactor.from_approx(factor_approx, transform=whiten)
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/graphical/optimise.py", line 125, in from_approx
    return cls(
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/graphical/optimise.py", line 84, in __init__
    self.bounds = self.transform.transform_bounds(
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/mapper/operator.py", line 155, in transform_bounds
    lower = self * lower
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/mapper/operator.py", line 323, in rightmethod
    return method(self, x.reshape(-1, self.lsize)).reshape(x.shape)
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/mapper/operator.py", line 362, in __rtruediv__
    return solve_triangular(self.L, x.T, lower=True).T
  File "/home/jammy/venvs/PyAuto/lib/python3.8/site-packages/scipy/linalg/basic.py", line 334, in solve_triangular
    b1 = _asarray_validated(b, check_finite=check_finite)
  File "/home/jammy/venvs/PyAuto/lib/python3.8/site-packages/scipy/_lib/_util.py", line 272, in _asarray_validated
    a = toarray(a)
  File "/home/jammy/venvs/PyAuto/lib/python3.8/site-packages/numpy/lib/function_base.py", line 488, in asarray_chkfinite
    raise ValueError(
ValueError: array must not contain infs or NaNs
2021-11-18 18:31:06,968 - autofit.graphical.expectation_propagation - ERROR - array must not contain infs or NaNs
Traceback (most recent call last):
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/graphical/expectation_propagation/__init__.py", line 159, in run
    model_approx, status = optimiser.optimise(
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/graphical/optimise.py", line 328, in optimise
    opt = OptFactor.from_approx(factor_approx, transform=whiten)
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/graphical/optimise.py", line 125, in from_approx
    return cls(
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/graphical/optimise.py", line 84, in __init__
    self.bounds = self.transform.transform_bounds(
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/mapper/operator.py", line 155, in transform_bounds
    lower = self * lower
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/mapper/operator.py", line 323, in rightmethod
    return method(self, x.reshape(-1, self.lsize)).reshape(x.shape)
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/mapper/operator.py", line 362, in __rtruediv__
    return solve_triangular(self.L, x.T, lower=True).T
  File "/home/jammy/venvs/PyAuto/lib/python3.8/site-packages/scipy/linalg/basic.py", line 334, in solve_triangular
    b1 = _asarray_validated(b, check_finite=check_finite)
  File "/home/jammy/venvs/PyAuto/lib/python3.8/site-packages/scipy/_lib/_util.py", line 272, in _asarray_validated
    a = toarray(a)
  File "/home/jammy/venvs/PyAuto/lib/python3.8/site-packages/numpy/lib/function_base.py", line 488, in asarray_chkfinite
    raise ValueError(
ValueError: array must not contain infs or NaNs
2021-11-18 18:31:06,970 - autofit.graphical.expectation_propagation - ERROR - array must not contain infs or NaNs
Traceback (most recent call last):
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/graphical/expectation_propagation/__init__.py", line 159, in run
    model_approx, status = optimiser.optimise(
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/graphical/optimise.py", line 328, in optimise
    opt = OptFactor.from_approx(factor_approx, transform=whiten)
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/graphical/optimise.py", line 125, in from_approx
    return cls(
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/graphical/optimise.py", line 84, in __init__
    self.bounds = self.transform.transform_bounds(
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/mapper/operator.py", line 155, in transform_bounds
    lower = self * lower
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/mapper/operator.py", line 323, in rightmethod
    return method(self, x.reshape(-1, self.lsize)).reshape(x.shape)
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/mapper/operator.py", line 362, in __rtruediv__
    return solve_triangular(self.L, x.T, lower=True).T
  File "/home/jammy/venvs/PyAuto/lib/python3.8/site-packages/scipy/linalg/basic.py", line 334, in solve_triangular
    b1 = _asarray_validated(b, check_finite=check_finite)
  File "/home/jammy/venvs/PyAuto/lib/python3.8/site-packages/scipy/_lib/_util.py", line 272, in _asarray_validated
    a = toarray(a)
  File "/home/jammy/venvs/PyAuto/lib/python3.8/site-packages/numpy/lib/function_base.py", line 488, in asarray_chkfinite
    raise ValueError(
ValueError: array must not contain infs or NaNs
2021-11-18 18:31:06,973 - autofit.graphical.expectation_propagation - ERROR - array must not contain infs or NaNs
Traceback (most recent call last):
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/graphical/expectation_propagation/__init__.py", line 159, in run
    model_approx, status = optimiser.optimise(
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/graphical/optimise.py", line 328, in optimise
    opt = OptFactor.from_approx(factor_approx, transform=whiten)
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/graphical/optimise.py", line 125, in from_approx
    return cls(
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/graphical/optimise.py", line 84, in __init__
    self.bounds = self.transform.transform_bounds(
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/mapper/operator.py", line 155, in transform_bounds
    lower = self * lower
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/mapper/operator.py", line 323, in rightmethod
    return method(self, x.reshape(-1, self.lsize)).reshape(x.shape)
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/mapper/operator.py", line 362, in __rtruediv__
    return solve_triangular(self.L, x.T, lower=True).T
  File "/home/jammy/venvs/PyAuto/lib/python3.8/site-packages/scipy/linalg/basic.py", line 334, in solve_triangular
    b1 = _asarray_validated(b, check_finite=check_finite)
  File "/home/jammy/venvs/PyAuto/lib/python3.8/site-packages/scipy/_lib/_util.py", line 272, in _asarray_validated
    a = toarray(a)
  File "/home/jammy/venvs/PyAuto/lib/python3.8/site-packages/numpy/lib/function_base.py", line 488, in asarray_chkfinite
    raise ValueError(
ValueError: array must not contain infs or NaNs
2021-11-18 18:31:06,975 - autofit.graphical.expectation_propagation - ERROR - array must not contain infs or NaNs
Traceback (most recent call last):
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/graphical/expectation_propagation/__init__.py", line 159, in run
    model_approx, status = optimiser.optimise(
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/graphical/optimise.py", line 328, in optimise
    opt = OptFactor.from_approx(factor_approx, transform=whiten)
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/graphical/optimise.py", line 125, in from_approx
    return cls(
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/graphical/optimise.py", line 84, in __init__
    self.bounds = self.transform.transform_bounds(
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/mapper/operator.py", line 155, in transform_bounds
    lower = self * lower
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/mapper/operator.py", line 323, in rightmethod
    return method(self, x.reshape(-1, self.lsize)).reshape(x.shape)
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/mapper/operator.py", line 362, in __rtruediv__
    return solve_triangular(self.L, x.T, lower=True).T
  File "/home/jammy/venvs/PyAuto/lib/python3.8/site-packages/scipy/linalg/basic.py", line 334, in solve_triangular
    b1 = _asarray_validated(b, check_finite=check_finite)
  File "/home/jammy/venvs/PyAuto/lib/python3.8/site-packages/scipy/_lib/_util.py", line 272, in _asarray_validated
    a = toarray(a)
  File "/home/jammy/venvs/PyAuto/lib/python3.8/site-packages/numpy/lib/function_base.py", line 488, in asarray_chkfinite
    raise ValueError(
ValueError: array must not contain infs or NaNs
2021-11-18 18:31:06,978 - autofit.graphical.expectation_propagation - ERROR - array must not contain infs or NaNs
Traceback (most recent call last):
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/graphical/expectation_propagation/__init__.py", line 159, in run
    model_approx, status = optimiser.optimise(
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/graphical/optimise.py", line 328, in optimise
    opt = OptFactor.from_approx(factor_approx, transform=whiten)
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/graphical/optimise.py", line 125, in from_approx
    return cls(
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/graphical/optimise.py", line 84, in __init__
    self.bounds = self.transform.transform_bounds(
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/mapper/operator.py", line 155, in transform_bounds
    lower = self * lower
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/mapper/operator.py", line 323, in rightmethod
    return method(self, x.reshape(-1, self.lsize)).reshape(x.shape)
  File "/mnt/c/Users/Jammy/Code/PyAuto/PyAutoFit/autofit/mapper/operator.py", line 362, in __rtruediv__
    return solve_triangular(self.L, x.T, lower=True).T
  File "/home/jammy/venvs/PyAuto/lib/python3.8/site-packages/scipy/linalg/basic.py", line 334, in solve_triangular
    b1 = _asarray_validated(b, check_finite=check_finite)
  File "/home/jammy/venvs/PyAuto/lib/python3.8/site-packages/scipy/_lib/_util.py", line 272, in _asarray_validated
    a = toarray(a)
  File "/home/jammy/venvs/PyAuto/lib/python3.8/site-packages/numpy/lib/function_base.py", line 488, in asarray_chkfinite
    raise ValueError(
ValueError: array must not contain infs or NaNs
2021-11-18 18:31:06,980 - tutorial_3_expectation_propagation - INFO - Starting search
2021-11-18 18:31:06,981 - tutorial_3_expectation_propagation - INFO - Saving path info
2021-11-18 18:31:06,996 - tutorial_3_expectation_propagation - INFO - Not complete. Starting non-linear search.
2021-11-18 18:31:06,997 - tutorial_3_expectation_propagation - INFO - number_of_cores == 1...
2021-11-18 18:31:06,997 - tutorial_3_expectation_propagation - INFO - ...not using pool
2021-11-18 18:31:06,997 - autofit.non_linear.initializer - INFO - Generating initial samples of model, which are subject to prior limits and other constraints.
2021-11-18 18:31:07,026 - tutorial_3_expectation_propagation - INFO - No Dynesty samples found, beginning new non-linear search.
501it [00:01, 336.08it/s, +100 | bound: 13 | nc: 1 | ncall: 5101 | eff(%): 11.782 | loglstar:   -inf < 180.871 <    inf | logz: 174.458 +/-  0.415 | dlogz:  0.040 >  0.109]
2021-11-18 18:31:08,624 - tutorial_3_expectation_propagation - INFO - 110000 Iterations: Performing update (Visualization, outputting samples, etc.).
output/fcd9e73d1bfd01c4b7143f9a8ab249f2/AnalysisFactor0/optimization_2/tutorial_3_expectation_propagation/840741008c9d563be6b044f5234924e0/image data.png
output/fcd9e73d1bfd01c4b7143f9a8ab249f2/AnalysisFactor0/optimization_2/tutorial_3_expectation_propagation/840741008c9d563be6b044f5234924e0/image model_data.png
output/fcd9e73d1bfd01c4b7143f9a8ab249f2/AnalysisFactor0/optimization_2/tutorial_3_expectation_propagation/840741008c9d563be6b044f5234924e0/image residual_map.png
output/fcd9e73d1bfd01c4b7143f9a8ab249f2/AnalysisFactor0/optimization_2/tutorial_3_expectation_propagation/840741008c9d563be6b044f5234924e0/image chi_squared_map.png
869it [00:01, 645.24it/s, +100 | bound: 56 | nc: 1 | ncall: 8932 | eff(%): 10.849 | loglstar:   -inf < 180.919 <    inf | logz: 174.528 +/-  0.320 | dlogz:  0.001 >  0.109]
2021-11-18 18:31:10,669 - tutorial_3_expectation_propagation - INFO - 115000 Iterations: Performing update (Visualization, outputting samples, etc.).
output/fcd9e73d1bfd01c4b7143f9a8ab249f2/AnalysisFactor0/optimization_2/tutorial_3_expectation_propagation/840741008c9d563be6b044f5234924e0/image data.png
output/fcd9e73d1bfd01c4b7143f9a8ab249f2/AnalysisFactor0/optimization_2/tutorial_3_expectation_propagation/840741008c9d563be6b044f5234924e0/image model_data.png
output/fcd9e73d1bfd01c4b7143f9a8ab249f2/Analysis

Jammy2211 avatar Nov 18 '21 18:11 Jammy2211

@matthewghgriffiths this is an error that may have been silenced previously due to exception handling in Expectation Propagation. Any idea what is causing this and if we should be concerned?

rhayes777 avatar Nov 24 '21 09:11 rhayes777

I'm not reproducing these issues. It looks like there's an issue with the bounds calculation though, if the bounds are infinite this could cause the issue. So perhaps there should be a check that the bounds being passed are unbounded (i.e. infinite).

matthewghgriffiths avatar Nov 25 '21 15:11 matthewghgriffiths

cool will look into it

rhayes777 avatar Nov 25 '21 15:11 rhayes777