Inequality constraints with refnx

Simple equality constraints can use the mechanisms outlined in this notebook, but are better expressed using the Parameter.constraint mechanism, or by sharing Parameter objects. It is sometimes also possible to implement different parameterisation of the model to use physically relevant values.

The following processes can be used to make inequality constraints with refnx. The dataset is reflectivity from a clean silicon wafer with a native oxide layer.

[1]:
%matplotlib inline
import os.path
import numpy as np

import refnx
from refnx.dataset import ReflectDataset
from refnx.reflect import SLD, MaterialSLD, ReflectModel
from refnx.analysis import Objective, CurveFitter

np.random.seed(1)
[2]:
pth = os.path.dirname(refnx.__file__)
DATASET_NAME = 'c_PLP0000708.dat'
file_path = os.path.join(pth, 'dataset', 'test', DATASET_NAME)

data = ReflectDataset(file_path)
[3]:
air = SLD(0)
sio2 = MaterialSLD('SiO2', 2.2)
si = MaterialSLD('Si', 2.33)
s = air | sio2(15, 3) | si(0, 3)

model = ReflectModel(s, bkg=3e-8)
[4]:
# model.bkg.setp(vary=True, bounds=(0, 1e-6))
# model.scale.setp(vary=True, bounds=(0.9, 1.1))

# sio2 layer
s[1].rough.setp(vary=True, bounds=(0, 10))
s[1].thick.setp(vary=True, bounds=(0, 20))

# si/sio2 interface
s[-1].rough.setp(vary=True, bounds=(0, 10))
[5]:
objective = Objective(model, data)
fitter = CurveFitter(objective)
[6]:
fitter.fit('differential_evolution')
print(s)
0it [00:00, ?it/s]

</pre>

0it [00:00, ?it/s]

end{sphinxVerbatim}

0it [00:00, ?it/s]

1it [00:00, 8.00it/s]

</pre>

1it [00:00, 8.00it/s]

end{sphinxVerbatim}

1it [00:00, 8.00it/s]

30.796408062297374:1it [00:00, 8.00it/s]

</pre>

30.796408062297374:1it [00:00, 8.00it/s]

end{sphinxVerbatim}

30.796408062297374: : 1it [00:00, 8.00it/s]

8.499263441355794:2it [00:00, 8.00it/s]

</pre>

8.499263441355794:2it [00:00, 8.00it/s]

end{sphinxVerbatim}

8.499263441355794: : 2it [00:00, 8.00it/s]

-8.621097067900704:3it [00:00, 8.00it/s]

</pre>

-8.621097067900704:3it [00:00, 8.00it/s]

end{sphinxVerbatim}

-8.621097067900704: : 3it [00:00, 8.00it/s]

-8.621097067900704:4it [00:00, 16.41it/s]

</pre>

-8.621097067900704:4it [00:00, 16.41it/s]

end{sphinxVerbatim}

-8.621097067900704: : 4it [00:00, 16.41it/s]

-23.595881434289083:4it [00:00, 16.41it/s]

</pre>

-23.595881434289083:4it [00:00, 16.41it/s]

end{sphinxVerbatim}

-23.595881434289083: : 4it [00:00, 16.41it/s]

-23.595881434289083:5it [00:00, 16.41it/s]

</pre>

-23.595881434289083:5it [00:00, 16.41it/s]

end{sphinxVerbatim}

-23.595881434289083: : 5it [00:00, 16.41it/s]

-24.091899712118547:6it [00:00, 16.41it/s]

</pre>

-24.091899712118547:6it [00:00, 16.41it/s]

end{sphinxVerbatim}

-24.091899712118547: : 6it [00:00, 16.41it/s]

-24.091899712118547:7it [00:00, 18.90it/s]

</pre>

-24.091899712118547:7it [00:00, 18.90it/s]

end{sphinxVerbatim}

-24.091899712118547: : 7it [00:00, 18.90it/s]

-24.091899712118547:7it [00:00, 18.90it/s]

</pre>

-24.091899712118547:7it [00:00, 18.90it/s]

end{sphinxVerbatim}

-24.091899712118547: : 7it [00:00, 18.90it/s]

-24.4727722793994:8it [00:00, 18.90it/s]

</pre>

-24.4727722793994:8it [00:00, 18.90it/s]

end{sphinxVerbatim}

-24.4727722793994: : 8it [00:00, 18.90it/s]

-24.4727722793994:9it [00:00, 18.90it/s]

</pre>

-24.4727722793994:9it [00:00, 18.90it/s]

end{sphinxVerbatim}

-24.4727722793994: : 9it [00:00, 18.90it/s]

-24.4727722793994:10it [00:00, 19.92it/s]

</pre>

-24.4727722793994:10it [00:00, 19.92it/s]

end{sphinxVerbatim}

-24.4727722793994: : 10it [00:00, 19.92it/s]

-24.4727722793994:10it [00:00, 19.92it/s]

</pre>

-24.4727722793994:10it [00:00, 19.92it/s]

end{sphinxVerbatim}

-24.4727722793994: : 10it [00:00, 19.92it/s]

-24.558835493023132:11it [00:00, 19.92it/s]

</pre>

-24.558835493023132:11it [00:00, 19.92it/s]

end{sphinxVerbatim}

-24.558835493023132: : 11it [00:00, 19.92it/s]

-24.558835493023132:12it [00:00, 19.92it/s]

</pre>

-24.558835493023132:12it [00:00, 19.92it/s]

end{sphinxVerbatim}

-24.558835493023132: : 12it [00:00, 19.92it/s]

-24.558835493023132:13it [00:00, 20.66it/s]

</pre>

-24.558835493023132:13it [00:00, 20.66it/s]

end{sphinxVerbatim}

-24.558835493023132: : 13it [00:00, 20.66it/s]

-24.558835493023132:13it [00:00, 20.66it/s]

</pre>

-24.558835493023132:13it [00:00, 20.66it/s]

end{sphinxVerbatim}

-24.558835493023132: : 13it [00:00, 20.66it/s]

-24.558835493023132:14it [00:00, 20.66it/s]

</pre>

-24.558835493023132:14it [00:00, 20.66it/s]

end{sphinxVerbatim}

-24.558835493023132: : 14it [00:00, 20.66it/s]

-24.558835493023132:15it [00:00, 20.66it/s]

</pre>

-24.558835493023132:15it [00:00, 20.66it/s]

end{sphinxVerbatim}

-24.558835493023132: : 15it [00:00, 20.66it/s]

-24.558835493023132:16it [00:00, 20.95it/s]

</pre>

-24.558835493023132:16it [00:00, 20.95it/s]

end{sphinxVerbatim}

-24.558835493023132: : 16it [00:00, 20.95it/s]

-24.58247898319226:16it [00:00, 20.95it/s]

</pre>

-24.58247898319226:16it [00:00, 20.95it/s]

end{sphinxVerbatim}

-24.58247898319226: : 16it [00:00, 20.95it/s]

-24.58247898319226:17it [00:00, 20.95it/s]

</pre>

-24.58247898319226:17it [00:00, 20.95it/s]

end{sphinxVerbatim}

-24.58247898319226: : 17it [00:00, 20.95it/s]

-24.58247898319226:17it [00:00, 18.40it/s]

</pre>

-24.58247898319226:17it [00:00, 18.40it/s]

end{sphinxVerbatim}

-24.58247898319226: : 17it [00:00, 18.40it/s]


________________________________________________________________________________
Structure:
solvent: None
reverse structure: False
contract: 0

________________________________________________________________________________
Parameters:       ''
<Parameter:  ' - thick'   , value=0  (fixed) , bounds=[-inf, inf]>
________________________________________________________________________________
Parameters:       ''
<Parameter:   ' - sld'    , value=0  (fixed) , bounds=[-inf, inf]>
<Parameter:   ' - isld'   , value=0  (fixed) , bounds=[-inf, inf]>
<Parameter:  ' - rough'   , value=0  (fixed) , bounds=[-inf, inf]>
<Parameter:' - volfrac solvent', value=0  (fixed) , bounds=[0.0, 1.0]>
________________________________________________________________________________
Parameters:       ''
<Parameter:  ' - thick'   , value=10.1026 +/- 0.411, bounds=[0.0, 20.0]>
________________________________________________________________________________
Parameters:       ''
<Parameter:   'density'   , value=2.2  (fixed) , bounds=[-inf, inf]>
<Parameter:  ' - rough'   , value=2.66905 +/- 0.438, bounds=[0.0, 10.0]>
<Parameter:' - volfrac solvent', value=0  (fixed) , bounds=[0.0, 1.0]>
________________________________________________________________________________
Parameters:       ''
<Parameter:  ' - thick'   , value=0  (fixed) , bounds=[-inf, inf]>
________________________________________________________________________________
Parameters:       ''
<Parameter:   'density'   , value=2.33  (fixed) , bounds=[-inf, inf]>
<Parameter:  ' - rough'   , value=5.3773 +/- 0.96 , bounds=[0.0, 10.0]>
<Parameter:' - volfrac solvent', value=0  (fixed) , bounds=[0.0, 1.0]>

Inequality constraints with differential_evolution

Simple equality constraints can use the following mechanism, but are better expressed using the ``Parameter.constraint`` mechanism, or by sharing ``Parameter`` objects. It is sometimes also possible to implement different parameterisation of the model to use physically relevant values.

We see that the thickness of the SiO2 layer is 12.45 and the roughness of the air/SiO2 interface is 4.77. Let’s make a constraint that the roughness can’t be more than a quarter of the layer thickness. In optimisation such constraints are expressed as inequalities:

\begin{equation*} t > 4\sigma \end{equation*}

We need to rearrange so that all variables are on one side, we do the rearrangement like this so there is no divide by 0:

\begin{equation*} t - 4\sigma > 0 \end{equation*}

Now we create a callable object (has the __call__ magic method) that encodes this inequality. We’re going to create the object with the parameters we want to constrain (pars), so we can refer to them later. We’ll also store the objective because we’ll need to update it with the fitting parameters.

[7]:
class DEC(object):
    def __init__(self, pars, objective):
        # we'll store the parameters and objective in this object
        # this will be necessary for pickling in the future
        self.pars = pars
        self.objective = objective

    def __call__(self, x):
        # we need to update the varying parameters in the
        # objective first
        self.objective.setp(x)
        return float(self.pars[0] - 4*self.pars[1])

Now lets create an instance of that object, using the parameters we want to constrain. Following that we set up a scipy.optimize.NonlinearConstraint for use with differential_evolution. Note that we want the constraint calculation to be greater than 0.

[8]:
pars = (s[1].thick, s[1].rough)
dec = DEC(pars, objective)

from scipy.optimize import NonlinearConstraint
constraint = NonlinearConstraint(dec, 0, np.inf)

Now do the fit with the added constraint. Note that you can have more than one constraint.

[9]:
np.random.seed(1)
fitter.fit('differential_evolution', constraints=(constraint,))
print(s)
0it [00:00, ?it/s]

</pre>

0it [00:00, ?it/s]

end{sphinxVerbatim}

0it [00:00, ?it/s]

173.8552616266628:1it [00:00, 27.83it/s]

</pre>

173.8552616266628:1it [00:00, 27.83it/s]

end{sphinxVerbatim}

173.8552616266628: : 1it [00:00, 27.83it/s]

31.40451930131016:2it [00:00, 31.13it/s]

</pre>

31.40451930131016:2it [00:00, 31.13it/s]

end{sphinxVerbatim}

31.40451930131016: : 2it [00:00, 31.13it/s]

31.40451930131016:3it [00:00, 31.93it/s]

</pre>

31.40451930131016:3it [00:00, 31.93it/s]

end{sphinxVerbatim}

31.40451930131016: : 3it [00:00, 31.93it/s]

31.40451930131016:4it [00:00, 30.31it/s]

</pre>

31.40451930131016:4it [00:00, 30.31it/s]

end{sphinxVerbatim}

31.40451930131016: : 4it [00:00, 30.31it/s]

30.22763589355868:4it [00:00, 30.31it/s]

</pre>

30.22763589355868:4it [00:00, 30.31it/s]

end{sphinxVerbatim}

30.22763589355868: : 4it [00:00, 30.31it/s]

-15.915819537077164:5it [00:00, 30.31it/s]

</pre>

-15.915819537077164:5it [00:00, 30.31it/s]

end{sphinxVerbatim}

-15.915819537077164: : 5it [00:00, 30.31it/s]

-15.915819537077164:6it [00:00, 30.31it/s]

</pre>

-15.915819537077164:6it [00:00, 30.31it/s]

end{sphinxVerbatim}

-15.915819537077164: : 6it [00:00, 30.31it/s]

-15.915819537077164:7it [00:00, 30.31it/s]

</pre>

-15.915819537077164:7it [00:00, 30.31it/s]

end{sphinxVerbatim}

-15.915819537077164: : 7it [00:00, 30.31it/s]

-15.915819537077164:8it [00:00, 28.64it/s]

</pre>

-15.915819537077164:8it [00:00, 28.64it/s]

end{sphinxVerbatim}

-15.915819537077164: : 8it [00:00, 28.64it/s]

-15.915819537077164:8it [00:00, 28.64it/s]

</pre>

-15.915819537077164:8it [00:00, 28.64it/s]

end{sphinxVerbatim}

-15.915819537077164: : 8it [00:00, 28.64it/s]

-15.966470874268929:9it [00:00, 28.64it/s]

</pre>

-15.966470874268929:9it [00:00, 28.64it/s]

end{sphinxVerbatim}

-15.966470874268929: : 9it [00:00, 28.64it/s]

-20.5428945166795:10it [00:00, 28.64it/s]

</pre>

-20.5428945166795:10it [00:00, 28.64it/s]

end{sphinxVerbatim}

-20.5428945166795: : 10it [00:00, 28.64it/s]

-20.5428945166795:11it [00:00, 28.07it/s]

</pre>

-20.5428945166795:11it [00:00, 28.07it/s]

end{sphinxVerbatim}

-20.5428945166795: : 11it [00:00, 28.07it/s]

-23.31944101934217:11it [00:00, 28.07it/s]

</pre>

-23.31944101934217:11it [00:00, 28.07it/s]

end{sphinxVerbatim}

-23.31944101934217: : 11it [00:00, 28.07it/s]

-23.31944101934217:12it [00:00, 28.07it/s]

</pre>

-23.31944101934217:12it [00:00, 28.07it/s]

end{sphinxVerbatim}

-23.31944101934217: : 12it [00:00, 28.07it/s]

-23.31944101934217:13it [00:00, 28.07it/s]

</pre>

-23.31944101934217:13it [00:00, 28.07it/s]

end{sphinxVerbatim}

-23.31944101934217: : 13it [00:00, 28.07it/s]

-23.31944101934217:14it [00:00, 26.60it/s]

</pre>

-23.31944101934217:14it [00:00, 26.60it/s]

end{sphinxVerbatim}

-23.31944101934217: : 14it [00:00, 26.60it/s]

-23.31944101934217:14it [00:00, 26.60it/s]

</pre>

-23.31944101934217:14it [00:00, 26.60it/s]

end{sphinxVerbatim}

-23.31944101934217: : 14it [00:00, 26.60it/s]

-23.31944101934217:15it [00:00, 26.60it/s]

</pre>

-23.31944101934217:15it [00:00, 26.60it/s]

end{sphinxVerbatim}

-23.31944101934217: : 15it [00:00, 26.60it/s]

-23.31944101934217:16it [00:00, 26.60it/s]

</pre>

-23.31944101934217:16it [00:00, 26.60it/s]

end{sphinxVerbatim}

-23.31944101934217: : 16it [00:00, 26.60it/s]

-23.31944101934217:17it [00:00, 24.50it/s]

</pre>

-23.31944101934217:17it [00:00, 24.50it/s]

end{sphinxVerbatim}

-23.31944101934217: : 17it [00:00, 24.50it/s]

-23.31944101934217:17it [00:00, 24.50it/s]

</pre>

-23.31944101934217:17it [00:00, 24.50it/s]

end{sphinxVerbatim}

-23.31944101934217: : 17it [00:00, 24.50it/s]

-23.31944101934217:18it [00:00, 24.50it/s]

</pre>

-23.31944101934217:18it [00:00, 24.50it/s]

end{sphinxVerbatim}

-23.31944101934217: : 18it [00:00, 24.50it/s]

-24.395186706440743:19it [00:00, 24.50it/s]

</pre>

-24.395186706440743:19it [00:00, 24.50it/s]

end{sphinxVerbatim}

-24.395186706440743: : 19it [00:00, 24.50it/s]

-24.395186706440743:20it [00:00, 24.74it/s]

</pre>

-24.395186706440743:20it [00:00, 24.74it/s]

end{sphinxVerbatim}

-24.395186706440743: : 20it [00:00, 24.74it/s]

-24.395186706440743:20it [00:00, 24.74it/s]

</pre>

-24.395186706440743:20it [00:00, 24.74it/s]

end{sphinxVerbatim}

-24.395186706440743: : 20it [00:00, 24.74it/s]

-24.395186706440743:21it [00:00, 24.74it/s]

</pre>

-24.395186706440743:21it [00:00, 24.74it/s]

end{sphinxVerbatim}

-24.395186706440743: : 21it [00:00, 24.74it/s]

-24.395186706440743:22it [00:00, 24.74it/s]

</pre>

-24.395186706440743:22it [00:00, 24.74it/s]

end{sphinxVerbatim}

-24.395186706440743: : 22it [00:00, 24.74it/s]

-24.395186706440743:23it [00:00, 25.50it/s]

</pre>

-24.395186706440743:23it [00:00, 25.50it/s]

end{sphinxVerbatim}

-24.395186706440743: : 23it [00:00, 25.50it/s]

-24.395186706440743:23it [00:00, 25.50it/s]

</pre>

-24.395186706440743:23it [00:00, 25.50it/s]

end{sphinxVerbatim}

-24.395186706440743: : 23it [00:00, 25.50it/s]

-24.395186706440743:24it [00:00, 25.50it/s]

</pre>

-24.395186706440743:24it [00:00, 25.50it/s]

end{sphinxVerbatim}

-24.395186706440743: : 24it [00:00, 25.50it/s]

-24.395186706440743:25it [00:00, 25.50it/s]

</pre>

-24.395186706440743:25it [00:00, 25.50it/s]

end{sphinxVerbatim}

-24.395186706440743: : 25it [00:00, 25.50it/s]

-24.395186706440743:26it [00:00, 25.67it/s]

</pre>

-24.395186706440743:26it [00:00, 25.67it/s]

end{sphinxVerbatim}

-24.395186706440743: : 26it [00:00, 25.67it/s]

-24.395186706440743:26it [00:00, 25.67it/s]

</pre>

-24.395186706440743:26it [00:00, 25.67it/s]

end{sphinxVerbatim}

-24.395186706440743: : 26it [00:00, 25.67it/s]

-24.395186706440743:27it [00:01, 25.67it/s]

</pre>

-24.395186706440743:27it [00:01, 25.67it/s]

end{sphinxVerbatim}

-24.395186706440743: : 27it [00:01, 25.67it/s]

-24.395186706440743:28it [00:01, 25.67it/s]

</pre>

-24.395186706440743:28it [00:01, 25.67it/s]

end{sphinxVerbatim}

-24.395186706440743: : 28it [00:01, 25.67it/s]

-24.395186706440743:29it [00:01, 25.03it/s]

</pre>

-24.395186706440743:29it [00:01, 25.03it/s]

end{sphinxVerbatim}

-24.395186706440743: : 29it [00:01, 25.03it/s]

-24.395186706440743:29it [00:01, 25.03it/s]

</pre>

-24.395186706440743:29it [00:01, 25.03it/s]

end{sphinxVerbatim}

-24.395186706440743: : 29it [00:01, 25.03it/s]

-24.395186706440743:30it [00:01, 25.03it/s]

</pre>

-24.395186706440743:30it [00:01, 25.03it/s]

end{sphinxVerbatim}

-24.395186706440743: : 30it [00:01, 25.03it/s]

-24.402867485194804:31it [00:01, 25.03it/s]

</pre>

-24.402867485194804:31it [00:01, 25.03it/s]

end{sphinxVerbatim}

-24.402867485194804: : 31it [00:01, 25.03it/s]

-24.402867485194804:32it [00:01, 24.80it/s]

</pre>

-24.402867485194804:32it [00:01, 24.80it/s]

end{sphinxVerbatim}

-24.402867485194804: : 32it [00:01, 24.80it/s]

-24.485056658073713:32it [00:01, 24.80it/s]

</pre>

-24.485056658073713:32it [00:01, 24.80it/s]

end{sphinxVerbatim}

-24.485056658073713: : 32it [00:01, 24.80it/s]

-24.50054304824101:33it [00:01, 24.80it/s]

</pre>

-24.50054304824101:33it [00:01, 24.80it/s]

end{sphinxVerbatim}

-24.50054304824101: : 33it [00:01, 24.80it/s]

-24.50054304824101:34it [00:01, 24.80it/s]

</pre>

-24.50054304824101:34it [00:01, 24.80it/s]

end{sphinxVerbatim}

-24.50054304824101: : 34it [00:01, 24.80it/s]

-24.50054304824101:35it [00:01, 25.50it/s]

</pre>

-24.50054304824101:35it [00:01, 25.50it/s]

end{sphinxVerbatim}

-24.50054304824101: : 35it [00:01, 25.50it/s]

-24.50054304824101:35it [00:01, 25.50it/s]

</pre>

-24.50054304824101:35it [00:01, 25.50it/s]

end{sphinxVerbatim}

-24.50054304824101: : 35it [00:01, 25.50it/s]

-24.50054304824101:36it [00:01, 25.50it/s]

</pre>

-24.50054304824101:36it [00:01, 25.50it/s]

end{sphinxVerbatim}

-24.50054304824101: : 36it [00:01, 25.50it/s]

-24.50054304824101:37it [00:01, 25.50it/s]

</pre>

-24.50054304824101:37it [00:01, 25.50it/s]

end{sphinxVerbatim}

-24.50054304824101: : 37it [00:01, 25.50it/s]

/home/docs/checkouts/readthedocs.org/user_builds/refnx/envs/v0.1.42/lib/python3.10/site-packages/scipy/optimize/_hessian_update_strategy.py:182: UserWarning: delta_grad == 0.0. Check if the approximated function is linear. If the function is linear better results can be obtained by defining the Hessian as zero instead of using quasi-Newton approximations.
  warn('delta_grad == 0.0. Check if the approximated '
-24.50054304824101:37it [00:01, 19.53it/s]

</pre>

-24.50054304824101:37it [00:01, 19.53it/s]

end{sphinxVerbatim}

-24.50054304824101: : 37it [00:01, 19.53it/s]

________________________________________________________________________________
Structure:
solvent: None
reverse structure: False
contract: 0

________________________________________________________________________________
Parameters:       ''
<Parameter:  ' - thick'   , value=0  (fixed) , bounds=[-inf, inf]>
________________________________________________________________________________
Parameters:       ''
<Parameter:   ' - sld'    , value=0  (fixed) , bounds=[-inf, inf]>
<Parameter:   ' - isld'   , value=0  (fixed) , bounds=[-inf, inf]>
<Parameter:  ' - rough'   , value=0  (fixed) , bounds=[-inf, inf]>
<Parameter:' - volfrac solvent', value=0  (fixed) , bounds=[0.0, 1.0]>
________________________________________________________________________________
Parameters:       ''
<Parameter:  ' - thick'   , value=9.93053 +/- 0.387, bounds=[0.0, 20.0]>
________________________________________________________________________________
Parameters:       ''
<Parameter:   'density'   , value=2.2  (fixed) , bounds=[-inf, inf]>
<Parameter:  ' - rough'   , value=2.48263 +/- 0.394, bounds=[0.0, 10.0]>
<Parameter:' - volfrac solvent', value=0  (fixed) , bounds=[0.0, 1.0]>
________________________________________________________________________________
Parameters:       ''
<Parameter:  ' - thick'   , value=0  (fixed) , bounds=[-inf, inf]>
________________________________________________________________________________
Parameters:       ''
<Parameter:   'density'   , value=2.33  (fixed) , bounds=[-inf, inf]>
<Parameter:  ' - rough'   , value=5.76589 +/- 0.889, bounds=[0.0, 10.0]>
<Parameter:' - volfrac solvent', value=0  (fixed) , bounds=[0.0, 1.0]>

Inequality constraints during MCMC sampling

If we want to implement that inequality constraint during sampling we can add an extra log-probability term to the Objective. This log-probability term will return 0 if the inequality is satisfied, but -np.inf if not.

[10]:
class LogpExtra(object):
    def __init__(self, pars):
        # we'll store the parameters and objective in this object
        # this will be necessary for pickling in the future
        self.pars = pars

    def __call__(self, model, data):
        if float(self.pars[0] - 4*self.pars[1]) > 0:
            return 0
        return -np.inf
[11]:
lpe = LogpExtra(pars)

# set the log_extra attribute of the Objective with our extra log-probability term.
objective.logp_extra = lpe

Lets check what happens to the probabilities with the specified inequality.

[12]:
print(s[1].thick)
print(s[1].rough)
print(objective.logpost())

print("Now exceed the inequality")
s[1].rough.value = 5.
print(objective.logpost())
<Parameter:  ' - thick'   , value=9.93053 +/- 0.387, bounds=[0.0, 20.0]>
<Parameter:  ' - rough'   , value=2.48263 +/- 0.394, bounds=[0.0, 10.0]>
16.92539558338339
Now exceed the inequality
-inf

Now let’s MCMC sample the system. There will be a user warning because some walkers have initial starting points which disobey the inequality. Normally one would sample for a far longer time, and thin more appropriately. However, the purpose of the following is to produce a corner plot that demonstrates the inequality - note the sharp dropoff in the probability distribution for the roughness. The roughness doesn’t like to go much higher than ~2.5, which is around a quarter of the optimal layer thickness of ~10.

[13]:
s[1].rough.value = 2.
fitter.initialise('covar')
fitter.sample(20, nthin=10, pool=1);
objective.corner();
more-to-come

class

stderr

0%| | 0/200 [00:00&lt;?, ?it/s]

</pre>

0%| | 0/200 [00:00<?, ?it/s]

end{sphinxVerbatim}

0%| | 0/200 [00:00<?, ?it/s]

more-to-come

class

stderr

/home/docs/checkouts/readthedocs.org/user_builds/refnx/envs/v0.1.42/lib/python3.10/site-packages/refnx/_lib/emcee/moves/red_blue.py:99: RuntimeWarning: invalid value encountered in scalar subtract
  lnpdiff = f + nlp - state.log_prob[j]
0%| | 1/200 [00:00&lt;00:37, 5.31it/s]

</pre>

0%| | 1/200 [00:00<00:37, 5.31it/s]

end{sphinxVerbatim}

0%| | 1/200 [00:00<00:37, 5.31it/s]

more-to-come

class

stderr

1%| | 2/200 [00:00&lt;00:37, 5.29it/s]

</pre>

1%| | 2/200 [00:00<00:37, 5.29it/s]

end{sphinxVerbatim}

1%| | 2/200 [00:00<00:37, 5.29it/s]

more-to-come

class

stderr

2%|▏ | 3/200 [00:00&lt;00:37, 5.26it/s]

</pre>

2%|▏ | 3/200 [00:00<00:37, 5.26it/s]

end{sphinxVerbatim}

2%|▏ | 3/200 [00:00<00:37, 5.26it/s]

more-to-come

class

stderr

2%|▏ | 4/200 [00:00&lt;00:37, 5.28it/s]

</pre>

2%|▏ | 4/200 [00:00<00:37, 5.28it/s]

end{sphinxVerbatim}

2%|▏ | 4/200 [00:00<00:37, 5.28it/s]

more-to-come

class

stderr

2%|▎ | 5/200 [00:00&lt;00:36, 5.28it/s]

</pre>

2%|▎ | 5/200 [00:00<00:36, 5.28it/s]

end{sphinxVerbatim}

2%|▎ | 5/200 [00:00<00:36, 5.28it/s]

more-to-come

class

stderr

3%|▎ | 6/200 [00:01&lt;00:36, 5.29it/s]

</pre>

3%|▎ | 6/200 [00:01<00:36, 5.29it/s]

end{sphinxVerbatim}

3%|▎ | 6/200 [00:01<00:36, 5.29it/s]

more-to-come

class

stderr

4%|▎ | 7/200 [00:01&lt;00:36, 5.29it/s]

</pre>

4%|▎ | 7/200 [00:01<00:36, 5.29it/s]

end{sphinxVerbatim}

4%|▎ | 7/200 [00:01<00:36, 5.29it/s]

more-to-come

class

stderr

4%|▍ | 8/200 [00:01&lt;00:36, 5.28it/s]

</pre>

4%|▍ | 8/200 [00:01<00:36, 5.28it/s]

end{sphinxVerbatim}

4%|▍ | 8/200 [00:01<00:36, 5.28it/s]

more-to-come

class

stderr

4%|▍ | 9/200 [00:01&lt;00:36, 5.29it/s]

</pre>

4%|▍ | 9/200 [00:01<00:36, 5.29it/s]

end{sphinxVerbatim}

4%|▍ | 9/200 [00:01<00:36, 5.29it/s]

more-to-come

class

stderr

5%|▌ | 10/200 [00:01&lt;00:36, 5.25it/s]

</pre>

5%|▌ | 10/200 [00:01<00:36, 5.25it/s]

end{sphinxVerbatim}

5%|▌ | 10/200 [00:01<00:36, 5.25it/s]

more-to-come

class

stderr

6%|▌ | 11/200 [00:02&lt;00:35, 5.27it/s]

</pre>

6%|▌ | 11/200 [00:02<00:35, 5.27it/s]

end{sphinxVerbatim}

6%|▌ | 11/200 [00:02<00:35, 5.27it/s]

more-to-come

class

stderr

6%|▌ | 12/200 [00:02&lt;00:35, 5.28it/s]

</pre>

6%|▌ | 12/200 [00:02<00:35, 5.28it/s]

end{sphinxVerbatim}

6%|▌ | 12/200 [00:02<00:35, 5.28it/s]

more-to-come

class

stderr

6%|▋ | 13/200 [00:02&lt;00:35, 5.28it/s]

</pre>

6%|▋ | 13/200 [00:02<00:35, 5.28it/s]

end{sphinxVerbatim}

6%|▋ | 13/200 [00:02<00:35, 5.28it/s]

more-to-come

class

stderr

7%|▋ | 14/200 [00:02&lt;00:35, 5.27it/s]

</pre>

7%|▋ | 14/200 [00:02<00:35, 5.27it/s]

end{sphinxVerbatim}

7%|▋ | 14/200 [00:02<00:35, 5.27it/s]

more-to-come

class

stderr

8%|▊ | 15/200 [00:02&lt;00:35, 5.26it/s]

</pre>

8%|▊ | 15/200 [00:02<00:35, 5.26it/s]

end{sphinxVerbatim}

8%|▊ | 15/200 [00:02<00:35, 5.26it/s]

more-to-come

class

stderr

8%|▊ | 16/200 [00:03&lt;00:35, 5.24it/s]

</pre>

8%|▊ | 16/200 [00:03<00:35, 5.24it/s]

end{sphinxVerbatim}

8%|▊ | 16/200 [00:03<00:35, 5.24it/s]

more-to-come

class

stderr

8%|▊ | 17/200 [00:03&lt;00:34, 5.26it/s]

</pre>

8%|▊ | 17/200 [00:03<00:34, 5.26it/s]

end{sphinxVerbatim}

8%|▊ | 17/200 [00:03<00:34, 5.26it/s]

more-to-come

class

stderr

9%|▉ | 18/200 [00:03&lt;00:34, 5.24it/s]

</pre>

9%|▉ | 18/200 [00:03<00:34, 5.24it/s]

end{sphinxVerbatim}

9%|▉ | 18/200 [00:03<00:34, 5.24it/s]

more-to-come

class

stderr

10%|▉ | 19/200 [00:03&lt;00:34, 5.25it/s]

</pre>

10%|▉ | 19/200 [00:03<00:34, 5.25it/s]

end{sphinxVerbatim}

10%|▉ | 19/200 [00:03<00:34, 5.25it/s]

more-to-come

class

stderr

10%|█ | 20/200 [00:03&lt;00:34, 5.24it/s]

</pre>

10%|█ | 20/200 [00:03<00:34, 5.24it/s]

end{sphinxVerbatim}

10%|█ | 20/200 [00:03<00:34, 5.24it/s]

more-to-come

class

stderr

10%|█ | 21/200 [00:03&lt;00:34, 5.22it/s]

</pre>

10%|█ | 21/200 [00:03<00:34, 5.22it/s]

end{sphinxVerbatim}

10%|█ | 21/200 [00:03<00:34, 5.22it/s]

more-to-come

class

stderr

11%|█ | 22/200 [00:04&lt;00:33, 5.25it/s]

</pre>

11%|█ | 22/200 [00:04<00:33, 5.25it/s]

end{sphinxVerbatim}

11%|█ | 22/200 [00:04<00:33, 5.25it/s]

more-to-come

class

stderr

12%|█▏ | 23/200 [00:04&lt;00:33, 5.26it/s]

</pre>

12%|█▏ | 23/200 [00:04<00:33, 5.26it/s]

end{sphinxVerbatim}

12%|█▏ | 23/200 [00:04<00:33, 5.26it/s]

more-to-come

class

stderr

12%|█▏ | 24/200 [00:04&lt;00:33, 5.24it/s]

</pre>

12%|█▏ | 24/200 [00:04<00:33, 5.24it/s]

end{sphinxVerbatim}

12%|█▏ | 24/200 [00:04<00:33, 5.24it/s]

more-to-come

class

stderr

12%|█▎ | 25/200 [00:04&lt;00:36, 4.82it/s]

</pre>

12%|█▎ | 25/200 [00:04<00:36, 4.82it/s]

end{sphinxVerbatim}

12%|█▎ | 25/200 [00:04<00:36, 4.82it/s]

more-to-come

class

stderr

13%|█▎ | 26/200 [00:04&lt;00:35, 4.95it/s]

</pre>

13%|█▎ | 26/200 [00:04<00:35, 4.95it/s]

end{sphinxVerbatim}

13%|█▎ | 26/200 [00:04<00:35, 4.95it/s]

more-to-come

class

stderr

14%|█▎ | 27/200 [00:05&lt;00:34, 5.04it/s]

</pre>

14%|█▎ | 27/200 [00:05<00:34, 5.04it/s]

end{sphinxVerbatim}

14%|█▎ | 27/200 [00:05<00:34, 5.04it/s]

more-to-come

class

stderr

14%|█▍ | 28/200 [00:05&lt;00:33, 5.09it/s]

</pre>

14%|█▍ | 28/200 [00:05<00:33, 5.09it/s]

end{sphinxVerbatim}

14%|█▍ | 28/200 [00:05<00:33, 5.09it/s]

more-to-come

class

stderr

14%|█▍ | 29/200 [00:05&lt;00:33, 5.12it/s]

</pre>

14%|█▍ | 29/200 [00:05<00:33, 5.12it/s]

end{sphinxVerbatim}

14%|█▍ | 29/200 [00:05<00:33, 5.12it/s]

more-to-come

class

stderr

15%|█▌ | 30/200 [00:05&lt;00:32, 5.16it/s]

</pre>

15%|█▌ | 30/200 [00:05<00:32, 5.16it/s]

end{sphinxVerbatim}

15%|█▌ | 30/200 [00:05<00:32, 5.16it/s]

more-to-come

class

stderr

16%|█▌ | 31/200 [00:05&lt;00:32, 5.16it/s]

</pre>

16%|█▌ | 31/200 [00:05<00:32, 5.16it/s]

end{sphinxVerbatim}

16%|█▌ | 31/200 [00:05<00:32, 5.16it/s]

more-to-come

class

stderr

16%|█▌ | 32/200 [00:06&lt;00:32, 5.20it/s]

</pre>

16%|█▌ | 32/200 [00:06<00:32, 5.20it/s]

end{sphinxVerbatim}

16%|█▌ | 32/200 [00:06<00:32, 5.20it/s]

more-to-come

class

stderr

16%|█▋ | 33/200 [00:06&lt;00:31, 5.22it/s]

</pre>

16%|█▋ | 33/200 [00:06<00:31, 5.22it/s]

end{sphinxVerbatim}

16%|█▋ | 33/200 [00:06<00:31, 5.22it/s]

more-to-come

class

stderr

17%|█▋ | 34/200 [00:06&lt;00:31, 5.22it/s]

</pre>

17%|█▋ | 34/200 [00:06<00:31, 5.22it/s]

end{sphinxVerbatim}

17%|█▋ | 34/200 [00:06<00:31, 5.22it/s]

more-to-come

class

stderr

18%|█▊ | 35/200 [00:06&lt;00:31, 5.24it/s]

</pre>

18%|█▊ | 35/200 [00:06<00:31, 5.24it/s]

end{sphinxVerbatim}

18%|█▊ | 35/200 [00:06<00:31, 5.24it/s]

more-to-come

class

stderr

18%|█▊ | 36/200 [00:06&lt;00:31, 5.24it/s]

</pre>

18%|█▊ | 36/200 [00:06<00:31, 5.24it/s]

end{sphinxVerbatim}

18%|█▊ | 36/200 [00:06<00:31, 5.24it/s]

more-to-come

class

stderr

18%|█▊ | 37/200 [00:07&lt;00:31, 5.25it/s]

</pre>

18%|█▊ | 37/200 [00:07<00:31, 5.25it/s]

end{sphinxVerbatim}

18%|█▊ | 37/200 [00:07<00:31, 5.25it/s]

more-to-come

class

stderr

19%|█▉ | 38/200 [00:07&lt;00:30, 5.25it/s]

</pre>

19%|█▉ | 38/200 [00:07<00:30, 5.25it/s]

end{sphinxVerbatim}

19%|█▉ | 38/200 [00:07<00:30, 5.25it/s]

more-to-come

class

stderr

20%|█▉ | 39/200 [00:07&lt;00:30, 5.24it/s]

</pre>

20%|█▉ | 39/200 [00:07<00:30, 5.24it/s]

end{sphinxVerbatim}

20%|█▉ | 39/200 [00:07<00:30, 5.24it/s]

more-to-come

class

stderr

20%|██ | 40/200 [00:07&lt;00:30, 5.25it/s]

</pre>

20%|██ | 40/200 [00:07<00:30, 5.25it/s]

end{sphinxVerbatim}

20%|██ | 40/200 [00:07<00:30, 5.25it/s]

more-to-come

class

stderr

20%|██ | 41/200 [00:07&lt;00:30, 5.23it/s]

</pre>

20%|██ | 41/200 [00:07<00:30, 5.23it/s]

end{sphinxVerbatim}

20%|██ | 41/200 [00:07<00:30, 5.23it/s]

more-to-come

class

stderr

21%|██ | 42/200 [00:08&lt;00:30, 5.23it/s]

</pre>

21%|██ | 42/200 [00:08<00:30, 5.23it/s]

end{sphinxVerbatim}

21%|██ | 42/200 [00:08<00:30, 5.23it/s]

more-to-come

class

stderr

22%|██▏ | 43/200 [00:08&lt;00:29, 5.25it/s]

</pre>

22%|██▏ | 43/200 [00:08<00:29, 5.25it/s]

end{sphinxVerbatim}

22%|██▏ | 43/200 [00:08<00:29, 5.25it/s]

more-to-come

class

stderr

22%|██▏ | 44/200 [00:08&lt;00:29, 5.25it/s]

</pre>

22%|██▏ | 44/200 [00:08<00:29, 5.25it/s]

end{sphinxVerbatim}

22%|██▏ | 44/200 [00:08<00:29, 5.25it/s]

more-to-come

class

stderr

22%|██▎ | 45/200 [00:08&lt;00:29, 5.24it/s]

</pre>

22%|██▎ | 45/200 [00:08<00:29, 5.24it/s]

end{sphinxVerbatim}

22%|██▎ | 45/200 [00:08<00:29, 5.24it/s]

more-to-come

class

stderr

23%|██▎ | 46/200 [00:08&lt;00:29, 5.24it/s]

</pre>

23%|██▎ | 46/200 [00:08<00:29, 5.24it/s]

end{sphinxVerbatim}

23%|██▎ | 46/200 [00:08<00:29, 5.24it/s]

more-to-come

class

stderr

24%|██▎ | 47/200 [00:09&lt;00:29, 5.24it/s]

</pre>

24%|██▎ | 47/200 [00:09<00:29, 5.24it/s]

end{sphinxVerbatim}

24%|██▎ | 47/200 [00:09<00:29, 5.24it/s]

more-to-come

class

stderr

24%|██▍ | 48/200 [00:09&lt;00:29, 5.24it/s]

</pre>

24%|██▍ | 48/200 [00:09<00:29, 5.24it/s]

end{sphinxVerbatim}

24%|██▍ | 48/200 [00:09<00:29, 5.24it/s]

more-to-come

class

stderr

24%|██▍ | 49/200 [00:09&lt;00:28, 5.23it/s]

</pre>

24%|██▍ | 49/200 [00:09<00:28, 5.23it/s]

end{sphinxVerbatim}

24%|██▍ | 49/200 [00:09<00:28, 5.23it/s]

more-to-come

class

stderr

25%|██▌ | 50/200 [00:09&lt;00:28, 5.23it/s]

</pre>

25%|██▌ | 50/200 [00:09<00:28, 5.23it/s]

end{sphinxVerbatim}

25%|██▌ | 50/200 [00:09<00:28, 5.23it/s]

more-to-come

class

stderr

26%|██▌ | 51/200 [00:09&lt;00:28, 5.23it/s]

</pre>

26%|██▌ | 51/200 [00:09<00:28, 5.23it/s]

end{sphinxVerbatim}

26%|██▌ | 51/200 [00:09<00:28, 5.23it/s]

more-to-come

class

stderr

26%|██▌ | 52/200 [00:09&lt;00:28, 5.21it/s]

</pre>

26%|██▌ | 52/200 [00:09<00:28, 5.21it/s]

end{sphinxVerbatim}

26%|██▌ | 52/200 [00:09<00:28, 5.21it/s]

more-to-come

class

stderr

26%|██▋ | 53/200 [00:10&lt;00:28, 5.23it/s]

</pre>

26%|██▋ | 53/200 [00:10<00:28, 5.23it/s]

end{sphinxVerbatim}

26%|██▋ | 53/200 [00:10<00:28, 5.23it/s]

more-to-come

class

stderr

27%|██▋ | 54/200 [00:10&lt;00:27, 5.25it/s]

</pre>

27%|██▋ | 54/200 [00:10<00:27, 5.25it/s]

end{sphinxVerbatim}

27%|██▋ | 54/200 [00:10<00:27, 5.25it/s]

more-to-come

class

stderr

28%|██▊ | 55/200 [00:10&lt;00:27, 5.24it/s]

</pre>

28%|██▊ | 55/200 [00:10<00:27, 5.24it/s]

end{sphinxVerbatim}

28%|██▊ | 55/200 [00:10<00:27, 5.24it/s]

more-to-come

class

stderr

28%|██▊ | 56/200 [00:10&lt;00:27, 5.26it/s]

</pre>

28%|██▊ | 56/200 [00:10<00:27, 5.26it/s]

end{sphinxVerbatim}

28%|██▊ | 56/200 [00:10<00:27, 5.26it/s]

more-to-come

class

stderr

28%|██▊ | 57/200 [00:10&lt;00:27, 5.25it/s]

</pre>

28%|██▊ | 57/200 [00:10<00:27, 5.25it/s]

end{sphinxVerbatim}

28%|██▊ | 57/200 [00:10<00:27, 5.25it/s]

more-to-come

class

stderr

29%|██▉ | 58/200 [00:11&lt;00:27, 5.25it/s]

</pre>

29%|██▉ | 58/200 [00:11<00:27, 5.25it/s]

end{sphinxVerbatim}

29%|██▉ | 58/200 [00:11<00:27, 5.25it/s]

more-to-come

class

stderr

30%|██▉ | 59/200 [00:11&lt;00:26, 5.25it/s]

</pre>

30%|██▉ | 59/200 [00:11<00:26, 5.25it/s]

end{sphinxVerbatim}

30%|██▉ | 59/200 [00:11<00:26, 5.25it/s]

more-to-come

class

stderr

30%|███ | 60/200 [00:11&lt;00:26, 5.23it/s]

</pre>

30%|███ | 60/200 [00:11<00:26, 5.23it/s]

end{sphinxVerbatim}

30%|███ | 60/200 [00:11<00:26, 5.23it/s]

more-to-come

class

stderr

30%|███ | 61/200 [00:11&lt;00:26, 5.24it/s]

</pre>

30%|███ | 61/200 [00:11<00:26, 5.24it/s]

end{sphinxVerbatim}

30%|███ | 61/200 [00:11<00:26, 5.24it/s]

more-to-come

class

stderr

31%|███ | 62/200 [00:11&lt;00:26, 5.21it/s]

</pre>

31%|███ | 62/200 [00:11<00:26, 5.21it/s]

end{sphinxVerbatim}

31%|███ | 62/200 [00:11<00:26, 5.21it/s]

more-to-come

class

stderr

32%|███▏ | 63/200 [00:12&lt;00:26, 5.21it/s]

</pre>

32%|███▏ | 63/200 [00:12<00:26, 5.21it/s]

end{sphinxVerbatim}

32%|███▏ | 63/200 [00:12<00:26, 5.21it/s]

more-to-come

class

stderr

32%|███▏ | 64/200 [00:12&lt;00:26, 5.23it/s]

</pre>

32%|███▏ | 64/200 [00:12<00:26, 5.23it/s]

end{sphinxVerbatim}

32%|███▏ | 64/200 [00:12<00:26, 5.23it/s]

more-to-come

class

stderr

32%|███▎ | 65/200 [00:12&lt;00:25, 5.24it/s]

</pre>

32%|███▎ | 65/200 [00:12<00:25, 5.24it/s]

end{sphinxVerbatim}

32%|███▎ | 65/200 [00:12<00:25, 5.24it/s]

more-to-come

class

stderr

33%|███▎ | 66/200 [00:12&lt;00:25, 5.22it/s]

</pre>

33%|███▎ | 66/200 [00:12<00:25, 5.22it/s]

end{sphinxVerbatim}

33%|███▎ | 66/200 [00:12<00:25, 5.22it/s]

more-to-come

class

stderr

34%|███▎ | 67/200 [00:12&lt;00:25, 5.24it/s]

</pre>

34%|███▎ | 67/200 [00:12<00:25, 5.24it/s]

end{sphinxVerbatim}

34%|███▎ | 67/200 [00:12<00:25, 5.24it/s]

more-to-come

class

stderr

34%|███▍ | 68/200 [00:13&lt;00:25, 5.24it/s]

</pre>

34%|███▍ | 68/200 [00:13<00:25, 5.24it/s]

end{sphinxVerbatim}

34%|███▍ | 68/200 [00:13<00:25, 5.24it/s]

more-to-come

class

stderr

34%|███▍ | 69/200 [00:13&lt;00:25, 5.23it/s]

</pre>

34%|███▍ | 69/200 [00:13<00:25, 5.23it/s]

end{sphinxVerbatim}

34%|███▍ | 69/200 [00:13<00:25, 5.23it/s]

more-to-come

class

stderr

35%|███▌ | 70/200 [00:13&lt;00:24, 5.23it/s]

</pre>

35%|███▌ | 70/200 [00:13<00:24, 5.23it/s]

end{sphinxVerbatim}

35%|███▌ | 70/200 [00:13<00:24, 5.23it/s]

more-to-come

class

stderr

36%|███▌ | 71/200 [00:13&lt;00:24, 5.24it/s]

</pre>

36%|███▌ | 71/200 [00:13<00:24, 5.24it/s]

end{sphinxVerbatim}

36%|███▌ | 71/200 [00:13<00:24, 5.24it/s]

more-to-come

class

stderr

36%|███▌ | 72/200 [00:13&lt;00:24, 5.24it/s]

</pre>

36%|███▌ | 72/200 [00:13<00:24, 5.24it/s]

end{sphinxVerbatim}

36%|███▌ | 72/200 [00:13<00:24, 5.24it/s]

more-to-come

class

stderr

36%|███▋ | 73/200 [00:13&lt;00:24, 5.22it/s]

</pre>

36%|███▋ | 73/200 [00:13<00:24, 5.22it/s]

end{sphinxVerbatim}

36%|███▋ | 73/200 [00:13<00:24, 5.22it/s]

more-to-come

class

stderr

37%|███▋ | 74/200 [00:14&lt;00:24, 5.24it/s]

</pre>

37%|███▋ | 74/200 [00:14<00:24, 5.24it/s]

end{sphinxVerbatim}

37%|███▋ | 74/200 [00:14<00:24, 5.24it/s]

more-to-come

class

stderr

38%|███▊ | 75/200 [00:14&lt;00:23, 5.25it/s]

</pre>

38%|███▊ | 75/200 [00:14<00:23, 5.25it/s]

end{sphinxVerbatim}

38%|███▊ | 75/200 [00:14<00:23, 5.25it/s]

more-to-come

class

stderr

38%|███▊ | 76/200 [00:14&lt;00:23, 5.23it/s]

</pre>

38%|███▊ | 76/200 [00:14<00:23, 5.23it/s]

end{sphinxVerbatim}

38%|███▊ | 76/200 [00:14<00:23, 5.23it/s]

more-to-come

class

stderr

38%|███▊ | 77/200 [00:14&lt;00:23, 5.24it/s]

</pre>

38%|███▊ | 77/200 [00:14<00:23, 5.24it/s]

end{sphinxVerbatim}

38%|███▊ | 77/200 [00:14<00:23, 5.24it/s]

more-to-come

class

stderr

39%|███▉ | 78/200 [00:14&lt;00:23, 5.23it/s]

</pre>

39%|███▉ | 78/200 [00:14<00:23, 5.23it/s]

end{sphinxVerbatim}

39%|███▉ | 78/200 [00:14<00:23, 5.23it/s]

more-to-come

class

stderr

40%|███▉ | 79/200 [00:15&lt;00:23, 5.23it/s]

</pre>

40%|███▉ | 79/200 [00:15<00:23, 5.23it/s]

end{sphinxVerbatim}

40%|███▉ | 79/200 [00:15<00:23, 5.23it/s]

more-to-come

class

stderr

40%|████ | 80/200 [00:15&lt;00:22, 5.24it/s]

</pre>

40%|████ | 80/200 [00:15<00:22, 5.24it/s]

end{sphinxVerbatim}

40%|████ | 80/200 [00:15<00:22, 5.24it/s]

more-to-come

class

stderr

40%|████ | 81/200 [00:15&lt;00:22, 5.22it/s]

</pre>

40%|████ | 81/200 [00:15<00:22, 5.22it/s]

end{sphinxVerbatim}

40%|████ | 81/200 [00:15<00:22, 5.22it/s]

more-to-come

class

stderr

41%|████ | 82/200 [00:15&lt;00:22, 5.24it/s]

</pre>

41%|████ | 82/200 [00:15<00:22, 5.24it/s]

end{sphinxVerbatim}

41%|████ | 82/200 [00:15<00:22, 5.24it/s]

more-to-come

class

stderr

42%|████▏ | 83/200 [00:15&lt;00:22, 5.12it/s]

</pre>

42%|████▏ | 83/200 [00:15<00:22, 5.12it/s]

end{sphinxVerbatim}

42%|████▏ | 83/200 [00:15<00:22, 5.12it/s]

more-to-come

class

stderr

42%|████▏ | 84/200 [00:16&lt;00:22, 5.16it/s]

</pre>

42%|████▏ | 84/200 [00:16<00:22, 5.16it/s]

end{sphinxVerbatim}

42%|████▏ | 84/200 [00:16<00:22, 5.16it/s]

more-to-come

class

stderr

42%|████▎ | 85/200 [00:16&lt;00:22, 5.20it/s]

</pre>

42%|████▎ | 85/200 [00:16<00:22, 5.20it/s]

end{sphinxVerbatim}

42%|████▎ | 85/200 [00:16<00:22, 5.20it/s]

more-to-come

class

stderr

43%|████▎ | 86/200 [00:16&lt;00:21, 5.22it/s]

</pre>

43%|████▎ | 86/200 [00:16<00:21, 5.22it/s]

end{sphinxVerbatim}

43%|████▎ | 86/200 [00:16<00:21, 5.22it/s]

more-to-come

class

stderr

44%|████▎ | 87/200 [00:16&lt;00:21, 5.22it/s]

</pre>

44%|████▎ | 87/200 [00:16<00:21, 5.22it/s]

end{sphinxVerbatim}

44%|████▎ | 87/200 [00:16<00:21, 5.22it/s]

more-to-come

class

stderr

44%|████▍ | 88/200 [00:16&lt;00:21, 5.23it/s]

</pre>

44%|████▍ | 88/200 [00:16<00:21, 5.23it/s]

end{sphinxVerbatim}

44%|████▍ | 88/200 [00:16<00:21, 5.23it/s]

more-to-come

class

stderr

44%|████▍ | 89/200 [00:17&lt;00:21, 5.23it/s]

</pre>

44%|████▍ | 89/200 [00:17<00:21, 5.23it/s]

end{sphinxVerbatim}

44%|████▍ | 89/200 [00:17<00:21, 5.23it/s]

more-to-come

class

stderr

45%|████▌ | 90/200 [00:17&lt;00:20, 5.24it/s]

</pre>

45%|████▌ | 90/200 [00:17<00:20, 5.24it/s]

end{sphinxVerbatim}

45%|████▌ | 90/200 [00:17<00:20, 5.24it/s]

more-to-come

class

stderr

46%|████▌ | 91/200 [00:17&lt;00:20, 5.24it/s]

</pre>

46%|████▌ | 91/200 [00:17<00:20, 5.24it/s]

end{sphinxVerbatim}

46%|████▌ | 91/200 [00:17<00:20, 5.24it/s]

more-to-come

class

stderr

46%|████▌ | 92/200 [00:17&lt;00:20, 5.24it/s]

</pre>

46%|████▌ | 92/200 [00:17<00:20, 5.24it/s]

end{sphinxVerbatim}

46%|████▌ | 92/200 [00:17<00:20, 5.24it/s]

more-to-come

class

stderr

46%|████▋ | 93/200 [00:17&lt;00:20, 5.23it/s]

</pre>

46%|████▋ | 93/200 [00:17<00:20, 5.23it/s]

end{sphinxVerbatim}

46%|████▋ | 93/200 [00:17<00:20, 5.23it/s]

more-to-come

class

stderr

47%|████▋ | 94/200 [00:17&lt;00:20, 5.22it/s]

</pre>

47%|████▋ | 94/200 [00:17<00:20, 5.22it/s]

end{sphinxVerbatim}

47%|████▋ | 94/200 [00:17<00:20, 5.22it/s]

more-to-come

class

stderr

48%|████▊ | 95/200 [00:18&lt;00:20, 5.24it/s]

</pre>

48%|████▊ | 95/200 [00:18<00:20, 5.24it/s]

end{sphinxVerbatim}

48%|████▊ | 95/200 [00:18<00:20, 5.24it/s]

more-to-come

class

stderr

48%|████▊ | 96/200 [00:18&lt;00:19, 5.25it/s]

</pre>

48%|████▊ | 96/200 [00:18<00:19, 5.25it/s]

end{sphinxVerbatim}

48%|████▊ | 96/200 [00:18<00:19, 5.25it/s]

more-to-come

class

stderr

48%|████▊ | 97/200 [00:18&lt;00:19, 5.22it/s]

</pre>

48%|████▊ | 97/200 [00:18<00:19, 5.22it/s]

end{sphinxVerbatim}

48%|████▊ | 97/200 [00:18<00:19, 5.22it/s]

more-to-come

class

stderr

49%|████▉ | 98/200 [00:18&lt;00:19, 5.24it/s]

</pre>

49%|████▉ | 98/200 [00:18<00:19, 5.24it/s]

end{sphinxVerbatim}

49%|████▉ | 98/200 [00:18<00:19, 5.24it/s]

more-to-come

class

stderr

50%|████▉ | 99/200 [00:18&lt;00:19, 5.23it/s]

</pre>

50%|████▉ | 99/200 [00:18<00:19, 5.23it/s]

end{sphinxVerbatim}

50%|████▉ | 99/200 [00:18<00:19, 5.23it/s]

more-to-come

class

stderr

50%|█████ | 100/200 [00:19&lt;00:19, 5.24it/s]

</pre>

50%|█████ | 100/200 [00:19<00:19, 5.24it/s]

end{sphinxVerbatim}

50%|█████ | 100/200 [00:19<00:19, 5.24it/s]

more-to-come

class

stderr

50%|█████ | 101/200 [00:19&lt;00:18, 5.25it/s]

</pre>

50%|█████ | 101/200 [00:19<00:18, 5.25it/s]

end{sphinxVerbatim}

50%|█████ | 101/200 [00:19<00:18, 5.25it/s]

more-to-come

class

stderr

51%|█████ | 102/200 [00:19&lt;00:18, 5.23it/s]

</pre>

51%|█████ | 102/200 [00:19<00:18, 5.23it/s]

end{sphinxVerbatim}

51%|█████ | 102/200 [00:19<00:18, 5.23it/s]

more-to-come

class

stderr

52%|█████▏ | 103/200 [00:19&lt;00:18, 5.24it/s]

</pre>

52%|█████▏ | 103/200 [00:19<00:18, 5.24it/s]

end{sphinxVerbatim}

52%|█████▏ | 103/200 [00:19<00:18, 5.24it/s]

more-to-come

class

stderr

52%|█████▏ | 104/200 [00:19&lt;00:18, 5.20it/s]

</pre>

52%|█████▏ | 104/200 [00:19<00:18, 5.20it/s]

end{sphinxVerbatim}

52%|█████▏ | 104/200 [00:19<00:18, 5.20it/s]

more-to-come

class

stderr

52%|█████▎ | 105/200 [00:20&lt;00:18, 5.22it/s]

</pre>

52%|█████▎ | 105/200 [00:20<00:18, 5.22it/s]

end{sphinxVerbatim}

52%|█████▎ | 105/200 [00:20<00:18, 5.22it/s]

more-to-come

class

stderr

53%|█████▎ | 106/200 [00:20&lt;00:17, 5.24it/s]

</pre>

53%|█████▎ | 106/200 [00:20<00:17, 5.24it/s]

end{sphinxVerbatim}

53%|█████▎ | 106/200 [00:20<00:17, 5.24it/s]

more-to-come

class

stderr

54%|█████▎ | 107/200 [00:20&lt;00:17, 5.25it/s]

</pre>

54%|█████▎ | 107/200 [00:20<00:17, 5.25it/s]

end{sphinxVerbatim}

54%|█████▎ | 107/200 [00:20<00:17, 5.25it/s]

more-to-come

class

stderr

54%|█████▍ | 108/200 [00:20&lt;00:17, 5.24it/s]

</pre>

54%|█████▍ | 108/200 [00:20<00:17, 5.24it/s]

end{sphinxVerbatim}

54%|█████▍ | 108/200 [00:20<00:17, 5.24it/s]

more-to-come

class

stderr

55%|█████▍ | 109/200 [00:20&lt;00:17, 5.24it/s]

</pre>

55%|█████▍ | 109/200 [00:20<00:17, 5.24it/s]

end{sphinxVerbatim}

55%|█████▍ | 109/200 [00:20<00:17, 5.24it/s]

more-to-come

class

stderr

55%|█████▌ | 110/200 [00:21&lt;00:17, 5.23it/s]

</pre>

55%|█████▌ | 110/200 [00:21<00:17, 5.23it/s]

end{sphinxVerbatim}

55%|█████▌ | 110/200 [00:21<00:17, 5.23it/s]

more-to-come

class

stderr

56%|█████▌ | 111/200 [00:21&lt;00:16, 5.24it/s]

</pre>

56%|█████▌ | 111/200 [00:21<00:16, 5.24it/s]

end{sphinxVerbatim}

56%|█████▌ | 111/200 [00:21<00:16, 5.24it/s]

more-to-come

class

stderr

56%|█████▌ | 112/200 [00:21&lt;00:16, 5.23it/s]

</pre>

56%|█████▌ | 112/200 [00:21<00:16, 5.23it/s]

end{sphinxVerbatim}

56%|█████▌ | 112/200 [00:21<00:16, 5.23it/s]

more-to-come

class

stderr

56%|█████▋ | 113/200 [00:21&lt;00:16, 5.24it/s]

</pre>

56%|█████▋ | 113/200 [00:21<00:16, 5.24it/s]

end{sphinxVerbatim}

56%|█████▋ | 113/200 [00:21<00:16, 5.24it/s]

more-to-come

class

stderr

57%|█████▋ | 114/200 [00:21&lt;00:16, 5.23it/s]

</pre>

57%|█████▋ | 114/200 [00:21<00:16, 5.23it/s]

end{sphinxVerbatim}

57%|█████▋ | 114/200 [00:21<00:16, 5.23it/s]

more-to-come

class

stderr

57%|█████▊ | 115/200 [00:22&lt;00:16, 5.22it/s]

</pre>

57%|█████▊ | 115/200 [00:22<00:16, 5.22it/s]

end{sphinxVerbatim}

57%|█████▊ | 115/200 [00:22<00:16, 5.22it/s]

more-to-come

class

stderr

58%|█████▊ | 116/200 [00:22&lt;00:16, 5.24it/s]

</pre>

58%|█████▊ | 116/200 [00:22<00:16, 5.24it/s]

end{sphinxVerbatim}

58%|█████▊ | 116/200 [00:22<00:16, 5.24it/s]

more-to-come

class

stderr

58%|█████▊ | 117/200 [00:22&lt;00:15, 5.25it/s]

</pre>

58%|█████▊ | 117/200 [00:22<00:15, 5.25it/s]

end{sphinxVerbatim}

58%|█████▊ | 117/200 [00:22<00:15, 5.25it/s]

more-to-come

class

stderr

59%|█████▉ | 118/200 [00:22&lt;00:15, 5.24it/s]

</pre>

59%|█████▉ | 118/200 [00:22<00:15, 5.24it/s]

end{sphinxVerbatim}

59%|█████▉ | 118/200 [00:22<00:15, 5.24it/s]

more-to-come

class

stderr

60%|█████▉ | 119/200 [00:22&lt;00:15, 5.26it/s]

</pre>

60%|█████▉ | 119/200 [00:22<00:15, 5.26it/s]

end{sphinxVerbatim}

60%|█████▉ | 119/200 [00:22<00:15, 5.26it/s]

more-to-come

class

stderr

60%|██████ | 120/200 [00:22&lt;00:15, 5.25it/s]

</pre>

60%|██████ | 120/200 [00:22<00:15, 5.25it/s]

end{sphinxVerbatim}

60%|██████ | 120/200 [00:22<00:15, 5.25it/s]

more-to-come

class

stderr

60%|██████ | 121/200 [00:23&lt;00:15, 5.25it/s]

</pre>

60%|██████ | 121/200 [00:23<00:15, 5.25it/s]

end{sphinxVerbatim}

60%|██████ | 121/200 [00:23<00:15, 5.25it/s]

more-to-come

class

stderr

61%|██████ | 122/200 [00:23&lt;00:15, 5.18it/s]

</pre>

61%|██████ | 122/200 [00:23<00:15, 5.18it/s]

end{sphinxVerbatim}

61%|██████ | 122/200 [00:23<00:15, 5.18it/s]

more-to-come

class

stderr

62%|██████▏ | 123/200 [00:23&lt;00:14, 5.19it/s]

</pre>

62%|██████▏ | 123/200 [00:23<00:14, 5.19it/s]

end{sphinxVerbatim}

62%|██████▏ | 123/200 [00:23<00:14, 5.19it/s]

more-to-come

class

stderr

62%|██████▏ | 124/200 [00:23&lt;00:14, 5.22it/s]

</pre>

62%|██████▏ | 124/200 [00:23<00:14, 5.22it/s]

end{sphinxVerbatim}

62%|██████▏ | 124/200 [00:23<00:14, 5.22it/s]

more-to-come

class

stderr

62%|██████▎ | 125/200 [00:23&lt;00:14, 5.19it/s]

</pre>

62%|██████▎ | 125/200 [00:23<00:14, 5.19it/s]

end{sphinxVerbatim}

62%|██████▎ | 125/200 [00:23<00:14, 5.19it/s]

more-to-come

class

stderr

63%|██████▎ | 126/200 [00:24&lt;00:14, 5.21it/s]

</pre>

63%|██████▎ | 126/200 [00:24<00:14, 5.21it/s]

end{sphinxVerbatim}

63%|██████▎ | 126/200 [00:24<00:14, 5.21it/s]

more-to-come

class

stderr

64%|██████▎ | 127/200 [00:24&lt;00:13, 5.23it/s]

</pre>

64%|██████▎ | 127/200 [00:24<00:13, 5.23it/s]

end{sphinxVerbatim}

64%|██████▎ | 127/200 [00:24<00:13, 5.23it/s]

more-to-come

class

stderr

64%|██████▍ | 128/200 [00:24&lt;00:13, 5.24it/s]

</pre>

64%|██████▍ | 128/200 [00:24<00:13, 5.24it/s]

end{sphinxVerbatim}

64%|██████▍ | 128/200 [00:24<00:13, 5.24it/s]

more-to-come

class

stderr

64%|██████▍ | 129/200 [00:24&lt;00:13, 5.23it/s]

</pre>

64%|██████▍ | 129/200 [00:24<00:13, 5.23it/s]

end{sphinxVerbatim}

64%|██████▍ | 129/200 [00:24<00:13, 5.23it/s]

more-to-come

class

stderr

65%|██████▌ | 130/200 [00:24&lt;00:13, 5.24it/s]

</pre>

65%|██████▌ | 130/200 [00:24<00:13, 5.24it/s]

end{sphinxVerbatim}

65%|██████▌ | 130/200 [00:24<00:13, 5.24it/s]

more-to-come

class

stderr

66%|██████▌ | 131/200 [00:25&lt;00:13, 5.23it/s]

</pre>

66%|██████▌ | 131/200 [00:25<00:13, 5.23it/s]

end{sphinxVerbatim}

66%|██████▌ | 131/200 [00:25<00:13, 5.23it/s]

more-to-come

class

stderr

66%|██████▌ | 132/200 [00:25&lt;00:12, 5.24it/s]

</pre>

66%|██████▌ | 132/200 [00:25<00:12, 5.24it/s]

end{sphinxVerbatim}

66%|██████▌ | 132/200 [00:25<00:12, 5.24it/s]

more-to-come

class

stderr

66%|██████▋ | 133/200 [00:25&lt;00:12, 5.22it/s]

</pre>

66%|██████▋ | 133/200 [00:25<00:12, 5.22it/s]

end{sphinxVerbatim}

66%|██████▋ | 133/200 [00:25<00:12, 5.22it/s]

more-to-come

class

stderr

67%|██████▋ | 134/200 [00:25&lt;00:12, 5.25it/s]

</pre>

67%|██████▋ | 134/200 [00:25<00:12, 5.25it/s]

end{sphinxVerbatim}

67%|██████▋ | 134/200 [00:25<00:12, 5.25it/s]

more-to-come

class

stderr

68%|██████▊ | 135/200 [00:25&lt;00:12, 5.24it/s]

</pre>

68%|██████▊ | 135/200 [00:25<00:12, 5.24it/s]

end{sphinxVerbatim}

68%|██████▊ | 135/200 [00:25<00:12, 5.24it/s]

more-to-come

class

stderr

68%|██████▊ | 136/200 [00:26&lt;00:12, 5.22it/s]

</pre>

68%|██████▊ | 136/200 [00:26<00:12, 5.22it/s]

end{sphinxVerbatim}

68%|██████▊ | 136/200 [00:26<00:12, 5.22it/s]

more-to-come

class

stderr

68%|██████▊ | 137/200 [00:26&lt;00:12, 5.25it/s]

</pre>

68%|██████▊ | 137/200 [00:26<00:12, 5.25it/s]

end{sphinxVerbatim}

68%|██████▊ | 137/200 [00:26<00:12, 5.25it/s]

more-to-come

class

stderr

69%|██████▉ | 138/200 [00:26&lt;00:11, 5.25it/s]

</pre>

69%|██████▉ | 138/200 [00:26<00:11, 5.25it/s]

end{sphinxVerbatim}

69%|██████▉ | 138/200 [00:26<00:11, 5.25it/s]

more-to-come

class

stderr

70%|██████▉ | 139/200 [00:26&lt;00:11, 5.26it/s]

</pre>

70%|██████▉ | 139/200 [00:26<00:11, 5.26it/s]

end{sphinxVerbatim}

70%|██████▉ | 139/200 [00:26<00:11, 5.26it/s]

more-to-come

class

stderr

70%|███████ | 140/200 [00:26&lt;00:11, 5.26it/s]

</pre>

70%|███████ | 140/200 [00:26<00:11, 5.26it/s]

end{sphinxVerbatim}

70%|███████ | 140/200 [00:26<00:11, 5.26it/s]

more-to-come

class

stderr

70%|███████ | 141/200 [00:26&lt;00:11, 5.25it/s]

</pre>

70%|███████ | 141/200 [00:26<00:11, 5.25it/s]

end{sphinxVerbatim}

70%|███████ | 141/200 [00:26<00:11, 5.25it/s]

more-to-come

class

stderr

71%|███████ | 142/200 [00:27&lt;00:11, 5.26it/s]

</pre>

71%|███████ | 142/200 [00:27<00:11, 5.26it/s]

end{sphinxVerbatim}

71%|███████ | 142/200 [00:27<00:11, 5.26it/s]

more-to-come

class

stderr

72%|███████▏ | 143/200 [00:27&lt;00:10, 5.27it/s]

</pre>

72%|███████▏ | 143/200 [00:27<00:10, 5.27it/s]

end{sphinxVerbatim}

72%|███████▏ | 143/200 [00:27<00:10, 5.27it/s]

more-to-come

class

stderr

72%|███████▏ | 144/200 [00:27&lt;00:10, 5.24it/s]

</pre>

72%|███████▏ | 144/200 [00:27<00:10, 5.24it/s]

end{sphinxVerbatim}

72%|███████▏ | 144/200 [00:27<00:10, 5.24it/s]

more-to-come

class

stderr

72%|███████▎ | 145/200 [00:27&lt;00:10, 5.25it/s]

</pre>

72%|███████▎ | 145/200 [00:27<00:10, 5.25it/s]

end{sphinxVerbatim}

72%|███████▎ | 145/200 [00:27<00:10, 5.25it/s]

more-to-come

class

stderr

73%|███████▎ | 146/200 [00:27&lt;00:10, 5.21it/s]

</pre>

73%|███████▎ | 146/200 [00:27<00:10, 5.21it/s]

end{sphinxVerbatim}

73%|███████▎ | 146/200 [00:27<00:10, 5.21it/s]

more-to-come

class

stderr

74%|███████▎ | 147/200 [00:28&lt;00:10, 5.23it/s]

</pre>

74%|███████▎ | 147/200 [00:28<00:10, 5.23it/s]

end{sphinxVerbatim}

74%|███████▎ | 147/200 [00:28<00:10, 5.23it/s]

more-to-come

class

stderr

74%|███████▍ | 148/200 [00:28&lt;00:09, 5.25it/s]

</pre>

74%|███████▍ | 148/200 [00:28<00:09, 5.25it/s]

end{sphinxVerbatim}

74%|███████▍ | 148/200 [00:28<00:09, 5.25it/s]

more-to-come

class

stderr

74%|███████▍ | 149/200 [00:28&lt;00:09, 5.25it/s]

</pre>

74%|███████▍ | 149/200 [00:28<00:09, 5.25it/s]

end{sphinxVerbatim}

74%|███████▍ | 149/200 [00:28<00:09, 5.25it/s]

more-to-come

class

stderr

75%|███████▌ | 150/200 [00:28&lt;00:09, 5.24it/s]

</pre>

75%|███████▌ | 150/200 [00:28<00:09, 5.24it/s]

end{sphinxVerbatim}

75%|███████▌ | 150/200 [00:28<00:09, 5.24it/s]

more-to-come

class

stderr

76%|███████▌ | 151/200 [00:28&lt;00:09, 5.24it/s]

</pre>

76%|███████▌ | 151/200 [00:28<00:09, 5.24it/s]

end{sphinxVerbatim}

76%|███████▌ | 151/200 [00:28<00:09, 5.24it/s]

more-to-come

class

stderr

76%|███████▌ | 152/200 [00:29&lt;00:09, 5.24it/s]

</pre>

76%|███████▌ | 152/200 [00:29<00:09, 5.24it/s]

end{sphinxVerbatim}

76%|███████▌ | 152/200 [00:29<00:09, 5.24it/s]

more-to-come

class

stderr

76%|███████▋ | 153/200 [00:29&lt;00:08, 5.25it/s]

</pre>

76%|███████▋ | 153/200 [00:29<00:08, 5.25it/s]

end{sphinxVerbatim}

76%|███████▋ | 153/200 [00:29<00:08, 5.25it/s]

more-to-come

class

stderr

77%|███████▋ | 154/200 [00:29&lt;00:08, 5.23it/s]

</pre>

77%|███████▋ | 154/200 [00:29<00:08, 5.23it/s]

end{sphinxVerbatim}

77%|███████▋ | 154/200 [00:29<00:08, 5.23it/s]

more-to-come

class

stderr

78%|███████▊ | 155/200 [00:29&lt;00:08, 5.24it/s]

</pre>

78%|███████▊ | 155/200 [00:29<00:08, 5.24it/s]

end{sphinxVerbatim}

78%|███████▊ | 155/200 [00:29<00:08, 5.24it/s]

more-to-come

class

stderr

78%|███████▊ | 156/200 [00:29&lt;00:08, 5.22it/s]

</pre>

78%|███████▊ | 156/200 [00:29<00:08, 5.22it/s]

end{sphinxVerbatim}

78%|███████▊ | 156/200 [00:29<00:08, 5.22it/s]

more-to-come

class

stderr

78%|███████▊ | 157/200 [00:30&lt;00:08, 5.21it/s]

</pre>

78%|███████▊ | 157/200 [00:30<00:08, 5.21it/s]

end{sphinxVerbatim}

78%|███████▊ | 157/200 [00:30<00:08, 5.21it/s]

more-to-come

class

stderr

79%|███████▉ | 158/200 [00:30&lt;00:08, 5.24it/s]

</pre>

79%|███████▉ | 158/200 [00:30<00:08, 5.24it/s]

end{sphinxVerbatim}

79%|███████▉ | 158/200 [00:30<00:08, 5.24it/s]

more-to-come

class

stderr

80%|███████▉ | 159/200 [00:30&lt;00:07, 5.24it/s]

</pre>

80%|███████▉ | 159/200 [00:30<00:07, 5.24it/s]

end{sphinxVerbatim}

80%|███████▉ | 159/200 [00:30<00:07, 5.24it/s]

more-to-come

class

stderr

80%|████████ | 160/200 [00:30&lt;00:07, 5.23it/s]

</pre>

80%|████████ | 160/200 [00:30<00:07, 5.23it/s]

end{sphinxVerbatim}

80%|████████ | 160/200 [00:30<00:07, 5.23it/s]

more-to-come

class

stderr

80%|████████ | 161/200 [00:30&lt;00:07, 5.24it/s]

</pre>

80%|████████ | 161/200 [00:30<00:07, 5.24it/s]

end{sphinxVerbatim}

80%|████████ | 161/200 [00:30<00:07, 5.24it/s]

more-to-come

class

stderr

81%|████████ | 162/200 [00:30&lt;00:07, 5.23it/s]

</pre>

81%|████████ | 162/200 [00:30<00:07, 5.23it/s]

end{sphinxVerbatim}

81%|████████ | 162/200 [00:30<00:07, 5.23it/s]

more-to-come

class

stderr

82%|████████▏ | 163/200 [00:31&lt;00:07, 5.24it/s]

</pre>

82%|████████▏ | 163/200 [00:31<00:07, 5.24it/s]

end{sphinxVerbatim}

82%|████████▏ | 163/200 [00:31<00:07, 5.24it/s]

more-to-come

class

stderr

82%|████████▏ | 164/200 [00:31&lt;00:06, 5.25it/s]

</pre>

82%|████████▏ | 164/200 [00:31<00:06, 5.25it/s]

end{sphinxVerbatim}

82%|████████▏ | 164/200 [00:31<00:06, 5.25it/s]

more-to-come

class

stderr

82%|████████▎ | 165/200 [00:31&lt;00:06, 5.24it/s]

</pre>

82%|████████▎ | 165/200 [00:31<00:06, 5.24it/s]

end{sphinxVerbatim}

82%|████████▎ | 165/200 [00:31<00:06, 5.24it/s]

more-to-come

class

stderr

83%|████████▎ | 166/200 [00:31&lt;00:06, 5.25it/s]

</pre>

83%|████████▎ | 166/200 [00:31<00:06, 5.25it/s]

end{sphinxVerbatim}

83%|████████▎ | 166/200 [00:31<00:06, 5.25it/s]

more-to-come

class

stderr

84%|████████▎ | 167/200 [00:31&lt;00:06, 5.22it/s]

</pre>

84%|████████▎ | 167/200 [00:31<00:06, 5.22it/s]

end{sphinxVerbatim}

84%|████████▎ | 167/200 [00:31<00:06, 5.22it/s]

more-to-come

class

stderr

84%|████████▍ | 168/200 [00:32&lt;00:06, 5.23it/s]

</pre>

84%|████████▍ | 168/200 [00:32<00:06, 5.23it/s]

end{sphinxVerbatim}

84%|████████▍ | 168/200 [00:32<00:06, 5.23it/s]

more-to-come

class

stderr

84%|████████▍ | 169/200 [00:32&lt;00:05, 5.25it/s]

</pre>

84%|████████▍ | 169/200 [00:32<00:05, 5.25it/s]

end{sphinxVerbatim}

84%|████████▍ | 169/200 [00:32<00:05, 5.25it/s]

more-to-come

class

stderr

85%|████████▌ | 170/200 [00:32&lt;00:05, 5.26it/s]

</pre>

85%|████████▌ | 170/200 [00:32<00:05, 5.26it/s]

end{sphinxVerbatim}

85%|████████▌ | 170/200 [00:32<00:05, 5.26it/s]

more-to-come

class

stderr

86%|████████▌ | 171/200 [00:32&lt;00:05, 5.24it/s]

</pre>

86%|████████▌ | 171/200 [00:32<00:05, 5.24it/s]

end{sphinxVerbatim}

86%|████████▌ | 171/200 [00:32<00:05, 5.24it/s]

more-to-come

class

stderr

86%|████████▌ | 172/200 [00:32&lt;00:05, 5.23it/s]

</pre>

86%|████████▌ | 172/200 [00:32<00:05, 5.23it/s]

end{sphinxVerbatim}

86%|████████▌ | 172/200 [00:32<00:05, 5.23it/s]

more-to-come

class

stderr

86%|████████▋ | 173/200 [00:33&lt;00:05, 5.22it/s]

</pre>

86%|████████▋ | 173/200 [00:33<00:05, 5.22it/s]

end{sphinxVerbatim}

86%|████████▋ | 173/200 [00:33<00:05, 5.22it/s]

more-to-come

class

stderr

87%|████████▋ | 174/200 [00:33&lt;00:04, 5.21it/s]

</pre>

87%|████████▋ | 174/200 [00:33<00:04, 5.21it/s]

end{sphinxVerbatim}

87%|████████▋ | 174/200 [00:33<00:04, 5.21it/s]

more-to-come

class

stderr

88%|████████▊ | 175/200 [00:33&lt;00:04, 5.20it/s]

</pre>

88%|████████▊ | 175/200 [00:33<00:04, 5.20it/s]

end{sphinxVerbatim}

88%|████████▊ | 175/200 [00:33<00:04, 5.20it/s]

more-to-come

class

stderr

88%|████████▊ | 176/200 [00:33&lt;00:04, 5.21it/s]

</pre>

88%|████████▊ | 176/200 [00:33<00:04, 5.21it/s]

end{sphinxVerbatim}

88%|████████▊ | 176/200 [00:33<00:04, 5.21it/s]

more-to-come

class

stderr

88%|████████▊ | 177/200 [00:33&lt;00:04, 5.19it/s]

</pre>

88%|████████▊ | 177/200 [00:33<00:04, 5.19it/s]

end{sphinxVerbatim}

88%|████████▊ | 177/200 [00:33<00:04, 5.19it/s]

more-to-come

class

stderr

89%|████████▉ | 178/200 [00:34&lt;00:04, 5.19it/s]

</pre>

89%|████████▉ | 178/200 [00:34<00:04, 5.19it/s]

end{sphinxVerbatim}

89%|████████▉ | 178/200 [00:34<00:04, 5.19it/s]

more-to-come

class

stderr

90%|████████▉ | 179/200 [00:34&lt;00:04, 5.21it/s]

</pre>

90%|████████▉ | 179/200 [00:34<00:04, 5.21it/s]

end{sphinxVerbatim}

90%|████████▉ | 179/200 [00:34<00:04, 5.21it/s]

more-to-come

class

stderr

90%|█████████ | 180/200 [00:34&lt;00:03, 5.22it/s]

</pre>

90%|█████████ | 180/200 [00:34<00:03, 5.22it/s]

end{sphinxVerbatim}

90%|█████████ | 180/200 [00:34<00:03, 5.22it/s]

more-to-come

class

stderr

90%|█████████ | 181/200 [00:34&lt;00:03, 5.22it/s]

</pre>

90%|█████████ | 181/200 [00:34<00:03, 5.22it/s]

end{sphinxVerbatim}

90%|█████████ | 181/200 [00:34<00:03, 5.22it/s]

more-to-come

class

stderr

91%|█████████ | 182/200 [00:34&lt;00:03, 5.22it/s]

</pre>

91%|█████████ | 182/200 [00:34<00:03, 5.22it/s]

end{sphinxVerbatim}

91%|█████████ | 182/200 [00:34<00:03, 5.22it/s]

more-to-come

class

stderr

92%|█████████▏| 183/200 [00:35&lt;00:03, 5.21it/s]

</pre>

92%|█████████▏| 183/200 [00:35<00:03, 5.21it/s]

end{sphinxVerbatim}

92%|█████████▏| 183/200 [00:35<00:03, 5.21it/s]

more-to-come

class

stderr

92%|█████████▏| 184/200 [00:35&lt;00:03, 5.22it/s]

</pre>

92%|█████████▏| 184/200 [00:35<00:03, 5.22it/s]

end{sphinxVerbatim}

92%|█████████▏| 184/200 [00:35<00:03, 5.22it/s]

more-to-come

class

stderr

92%|█████████▎| 185/200 [00:35&lt;00:02, 5.22it/s]

</pre>

92%|█████████▎| 185/200 [00:35<00:02, 5.22it/s]

end{sphinxVerbatim}

92%|█████████▎| 185/200 [00:35<00:02, 5.22it/s]

more-to-come

class

stderr

93%|█████████▎| 186/200 [00:35&lt;00:02, 5.22it/s]

</pre>

93%|█████████▎| 186/200 [00:35<00:02, 5.22it/s]

end{sphinxVerbatim}

93%|█████████▎| 186/200 [00:35<00:02, 5.22it/s]

more-to-come

class

stderr

94%|█████████▎| 187/200 [00:35&lt;00:02, 5.23it/s]

</pre>

94%|█████████▎| 187/200 [00:35<00:02, 5.23it/s]

end{sphinxVerbatim}

94%|█████████▎| 187/200 [00:35<00:02, 5.23it/s]

more-to-come

class

stderr

94%|█████████▍| 188/200 [00:35&lt;00:02, 5.20it/s]

</pre>

94%|█████████▍| 188/200 [00:35<00:02, 5.20it/s]

end{sphinxVerbatim}

94%|█████████▍| 188/200 [00:35<00:02, 5.20it/s]

more-to-come

class

stderr

94%|█████████▍| 189/200 [00:36&lt;00:02, 5.22it/s]

</pre>

94%|█████████▍| 189/200 [00:36<00:02, 5.22it/s]

end{sphinxVerbatim}

94%|█████████▍| 189/200 [00:36<00:02, 5.22it/s]

more-to-come

class

stderr

95%|█████████▌| 190/200 [00:36&lt;00:01, 5.23it/s]

</pre>

95%|█████████▌| 190/200 [00:36<00:01, 5.23it/s]

end{sphinxVerbatim}

95%|█████████▌| 190/200 [00:36<00:01, 5.23it/s]

more-to-come

class

stderr

96%|█████████▌| 191/200 [00:36&lt;00:01, 5.23it/s]

</pre>

96%|█████████▌| 191/200 [00:36<00:01, 5.23it/s]

end{sphinxVerbatim}

96%|█████████▌| 191/200 [00:36<00:01, 5.23it/s]

more-to-come

class

stderr

96%|█████████▌| 192/200 [00:36&lt;00:01, 5.23it/s]

</pre>

96%|█████████▌| 192/200 [00:36<00:01, 5.23it/s]

end{sphinxVerbatim}

96%|█████████▌| 192/200 [00:36<00:01, 5.23it/s]

more-to-come

class

stderr

96%|█████████▋| 193/200 [00:36&lt;00:01, 5.23it/s]

</pre>

96%|█████████▋| 193/200 [00:36<00:01, 5.23it/s]

end{sphinxVerbatim}

96%|█████████▋| 193/200 [00:36<00:01, 5.23it/s]

more-to-come

class

stderr

97%|█████████▋| 194/200 [00:37&lt;00:01, 5.23it/s]

</pre>

97%|█████████▋| 194/200 [00:37<00:01, 5.23it/s]

end{sphinxVerbatim}

97%|█████████▋| 194/200 [00:37<00:01, 5.23it/s]

more-to-come

class

stderr

98%|█████████▊| 195/200 [00:37&lt;00:00, 5.24it/s]

</pre>

98%|█████████▊| 195/200 [00:37<00:00, 5.24it/s]

end{sphinxVerbatim}

98%|█████████▊| 195/200 [00:37<00:00, 5.24it/s]

more-to-come

class

stderr

98%|█████████▊| 196/200 [00:37&lt;00:00, 5.23it/s]

</pre>

98%|█████████▊| 196/200 [00:37<00:00, 5.23it/s]

end{sphinxVerbatim}

98%|█████████▊| 196/200 [00:37<00:00, 5.23it/s]

more-to-come

class

stderr

98%|█████████▊| 197/200 [00:37&lt;00:00, 5.25it/s]

</pre>

98%|█████████▊| 197/200 [00:37<00:00, 5.25it/s]

end{sphinxVerbatim}

98%|█████████▊| 197/200 [00:37<00:00, 5.25it/s]

more-to-come

class

stderr

99%|█████████▉| 198/200 [00:37&lt;00:00, 5.22it/s]

</pre>

99%|█████████▉| 198/200 [00:37<00:00, 5.22it/s]

end{sphinxVerbatim}

99%|█████████▉| 198/200 [00:37<00:00, 5.22it/s]

100%|█████████▉| 199/200 [00:38&lt;00:00, 5.22it/s]

</pre>

100%|█████████▉| 199/200 [00:38<00:00, 5.22it/s]

end{sphinxVerbatim}

100%|█████████▉| 199/200 [00:38<00:00, 5.22it/s]

100%|██████████| 200/200 [00:38&lt;00:00, 5.23it/s]

</pre>

100%|██████████| 200/200 [00:38<00:00, 5.23it/s]

end{sphinxVerbatim}

100%|██████████| 200/200 [00:38<00:00, 5.23it/s]

100%|██████████| 200/200 [00:38&lt;00:00, 5.23it/s]

</pre>

100%|██████████| 200/200 [00:38<00:00, 5.23it/s]

end{sphinxVerbatim}

100%|██████████| 200/200 [00:38<00:00, 5.23it/s]


_images/inequality_constraints_22_203.png
[ ]: