Polychaos.jl for uncertainty propagation - avoiding manual operations with tensors

Hi everybody,

I am assessing and trying to get my head around different ways of estimating the propagation of the uncertainty in some models (at this point, my testing models are not ODE, they are simple: model(inputs) → outputs, with at least one of the input described with a probability distribution).

I have been playing around with the like of : Measurements.jl, UncertainData.jl, MonteCarloMeasurements.jl quite successfully. Capable of comparing them, and assessing the pro/cons of each methods.

I wanted to complete the assessment by trying PolyChaos.jl, but while I have been able to replay the examples supplied in Timueh’s page and read and replay the examples from the official page such as the “Chi-squared”, I have reached the understanding that :

  • yes, PCE can be used to propagate uncertainty through a model,
  • but they require you to rewrite your model (or set of equations) by explicitly writing the Galerkin projection using the so called Tensors directly inside your code.

Manually reworking the Galerkin projections is do-able of course, but prone to errors and adding a layer of complexity for non PCE-experts when they want to update the already existing “models”.

So my question after such a long intro: is there a way to automatically (i.e.: without having to manually write the Galerkin Projections using the Tensors) invoke some functions (that may already exist but that I haven’t found) that would enable to use PCE to propagate the uncertainty without manually altering the existing models? (or with very minimal modifications to the already existing code)?

Many thanks.

by the way, thanks for your work @Timueh

Sorry I can’t answer your questions but may I suggest that once you have some kind of conclusion, you contribute that knowledge to PackageComparisons.jl?

The page on uncertainty propagation is still more of a placeholder. That way it can be useful to other people :slight_smile:


@abraemer, your package is quite an initiative. :+1:
Sad that it is not the answer to my question though :slight_smile:

Thanks for the plug. I just want to add that a short description of your findings would indeed be very welcome as a PR or in an issue for JuliaPackageComparisons :slight_smile:

I can unfortunatly not help with your actual issue. Good luck!

Well, I am starting to develop doubts about PolyChaos.jl being still actively maintained (or not)? Let see if some expert users come with welcome suggestions? or maybe the library’s authors? :thinking:

Why do you think the package is not actively maintained? It’s fairly easy to check on GitHub that the last change to the repo was a month ago (albeit automated, two months since a human intervention), and you can even look up the whole commit history here.

Thanks @nilshg, you are right.

1 Like

Waited 4 months, I believe that we can safely conclude that the package is unlikely to implement such a new feature, and most likely what I was looking for is not possible with it in its current form.

This is a conclusion message addressed to future readers that may reach this thread and wonder how it had been concluded.

1 Like

I believe what you mentioned is doable, at least for linear equations, possibly through ModelingToolkit. A lot of rewrites must be done.
Polynomial chaos belongs to the category of intrusive uncertainty quantification method. By saying that, one needs to modify the governing equations “intrusively”. A lot of people enjoy this process, especially in handling nonlinearity.