RAVEN is a flexible and multi-purpose probabilistic risk analysis, validation and uncertainty quantification, parameter optimization, model reduction and data knowledge-discovering framework.
Is your feature request related to a problem? Please describe.
One of the main barriers to running RAVEN without building it is the reliance on key functionalities from Crow. The Crow class for multivariate normal distributions is among the most commonly used Crow classes. Implementing an equivalent class in Python would allow users to run cases that rely on this class without building RAVEN first and would allow for the removal of the relevant Crow files. This would also be another step towards being able to drop the boost RNG code.
Describe the solution you'd like
Implement a class in Python that replicates the behavior of the Crow BasicMultivariateNormal class. Note that this class models the multivariate distribution in two ways: (1) a spline-based distribution that is reliant on the BasicMultiDimensionalCartesianSpline crow class, and (2) a PCA-based implementation of the multivariate normal distribution. It may be best to handle these methods separately, with the PCA method being the simpler to convert to Python. The scipy.stats.multivariate_normal class may be of use here.
Describe alternatives you've considered
Rely more heavily on the scipy.stats.multivariate_normal class in the implementation at the expense of having to regold 50+ tests.
For Change Control Board: Issue Review
This review should occur before any development is performed as a response to this issue.
[x] 1. Is it tagged with a type: defect or task?
[x] 2. Is it tagged with a priority: critical, normal or minor?
[x] 3. If it will impact requirements or requirements tests, is it tagged with requirements?
[x] 4. If it is a defect, can it cause wrong results for users? If so an email needs to be sent to the users.
[x] 5. Is a rationale provided? (Such as explaining why the improvement is needed or why current code is wrong.)
For Change Control Board: Issue Closure
This review should occur when the issue is imminently going to be closed.
[x] 1. If the issue is a defect, is the defect fixed?
[x] 2. If the issue is a defect, is the defect tested for in the regression test system? (If not explain why not.)
[x] 3. If the issue can impact users, has an email to the users group been written (the email should specify if the defect impacts stable or master)?
[x] 4. If the issue is a defect, does it impact the latest release branch? If yes, is there any issue tagged with release (create if needed)?
[x] 5. If the issue is being closed without a pull request, has an explanation of why it is being closed been provided?
Issue Description
Is your feature request related to a problem? Please describe. One of the main barriers to running RAVEN without building it is the reliance on key functionalities from Crow. The Crow class for multivariate normal distributions is among the most commonly used Crow classes. Implementing an equivalent class in Python would allow users to run cases that rely on this class without building RAVEN first and would allow for the removal of the relevant Crow files. This would also be another step towards being able to drop the boost RNG code.
Describe the solution you'd like Implement a class in Python that replicates the behavior of the Crow
BasicMultivariateNormal
class. Note that this class models the multivariate distribution in two ways: (1) a spline-based distribution that is reliant on theBasicMultiDimensionalCartesianSpline
crow class, and (2) a PCA-based implementation of the multivariate normal distribution. It may be best to handle these methods separately, with the PCA method being the simpler to convert to Python. Thescipy.stats.multivariate_normal
class may be of use here.Describe alternatives you've considered Rely more heavily on the scipy.stats.multivariate_normal class in the implementation at the expense of having to regold 50+ tests.
For Change Control Board: Issue Review
This review should occur before any development is performed as a response to this issue.
For Change Control Board: Issue Closure
This review should occur when the issue is imminently going to be closed.