Combining multiple samplers using Multisampler

There may be cases in which you want to generate runs using a combination of samplers, each acting on a subset of the parameters. For example, one may wish to carry out a Polynomial Chaos Expansion on some parameters (x and y), but for a set sequence of some other parameter (z). In such a case you would want a sampler that combines a PCE sampler (for x and y) and a Sweep sampler (cycling through values of z). There are, of course, far more complex situations than this too.

In EasyVVUQ such a case is addressed using a Multisampler. For example, the following code creates a new sampler which combines three existing samples (sampler1, sampler2 and sampler3):

my_multisampler = uq.sampling.MultiSampler(sampler1, sampler2, sampler3)

Whilst this example involves 3 samplers, any number of samplers can be combined in the same manner. Note that the ordering of the samplers does matter. The last sampler in the list updates ‘fastest’ while the first sampler updates ‘slowest’. Furthermore, every sampler in a multisampler must be finite (contain a finite number of samples).

Once created, this sampler can be added to the campaign object and used like any other:

my_campaign.set_sampler(my_multisampler)
my_campaign.draw_samples()