-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Effective Quadratures is seeing increasing applications in academia, and in industries such as the aeronautical industry. To make the code more accessible for non-expert users it is desirable to streamline common tasks such as Uncertainty Quantification (UQ), sensitivity analysis, dimension reduction and optimisation. One way to do this is through the use of pipelines, where a sequence of operations (such as function calls) can be packaged into a "pipeline".
For example, for a UQ task where we wish to compute the mean and variance of an output (see tutorial 9!), we might do:
myParameter = Parameter(lower=-1, upper=1, order=2, distribution='Uniform')
myBasis = Basis('Univariate')
myPoly = Poly(myParameter, myBasis, method='numerical-integration')
mypoly.set_model(data)
mean, var = mypoly.get_mean_and_variance()
The above code is a minimal example, and there might be more code to decide on order
, distribution
etc. This workflow could instead be packaged into the pipeline compute_moments
:
mean, var = compute_moments(lower=-1,upper=1,method='numerical-integration',model_data=data)
The selection of hyper-parameters such as order
could also be integrated into the pipeline through a tuning routine, to further simplify the process for the end user. A set of pipelines for the most common tasks is proposed, in addition to a generic pipeline class to enable users to build their own pipelines (similar to the scikit-learn's sklearn.pipeline
).
This could also be be an opportunity to optimise workflows for speed and memory usage. Joblib (joblib.readthedocs.io/en/latest/) could be used to provide parallel capability similar to scikit-learn's n_jobs
, to parallelise some tasks such as hyper-parameter tuning.
-
Build a generic Pipeline class to chain Effective Quadrature functions together.
-
Develop one or more workflows for common applications, such as multi-fidelity modelling. Incorporating visualisation tools into the workflow could form a part of this work, if the student is interested.
-
Optional extension: Investigate performance gains for specific workflows. This may involve profiling to identify bottlenecks, and
joblib
could be used to parallelise certain components of workflows.
- Ashley Scillitoe
- Pranay Seshadri