It could be useful, and make the code cleaner, to have both bounds and scale be initialized with the ApproxPosterior object. Bounds is used in numerous places to maintain numerically stability and validate point selection. Scaling parameters is used throughout now, as well, so it could make sense to initialize the scaler earlier on. Also, this could allow for the user to select several common scales, like MinMax, Normal, etc, using the sklearn interface. MinMax is easy to initialize with bounds for training the scaler, but Normal and other types of scaling requires fitting on training data, which in our case, could be the initial theta.
I can get around breaking the API by allowing the user to override bounds in the ApproxPosterior run method and with sensible default choices for both scale and bounds.
It could be useful, and make the code cleaner, to have both bounds and scale be initialized with the ApproxPosterior object. Bounds is used in numerous places to maintain numerically stability and validate point selection. Scaling parameters is used throughout now, as well, so it could make sense to initialize the scaler earlier on. Also, this could allow for the user to select several common scales, like MinMax, Normal, etc, using the sklearn interface. MinMax is easy to initialize with bounds for training the scaler, but Normal and other types of scaling requires fitting on training data, which in our case, could be the initial theta.
I can get around breaking the API by allowing the user to override bounds in the ApproxPosterior run method and with sensible default choices for both scale and bounds.