kipe.synthesis module
Generation of synthetic measurement data from a forward run: kipe synthesis.
The true state at the measurement times comes from the forward solver (synthesis.truth):
it runs with its nominal parameters through all measurement times (run), or reads the
states from the checkpoints of an earlier run (checkpoints). At each time, the observation
operator gives the predicted data and noise is added: the measurement’s
noise.stddev, or synthesis.noise where given (e.g., none, for noise-free data). The
resulting measurements are written to their data files, and returned. With several noise
realizations (synthesis.realizations), the true state is computed once, and each
realization gets its own noise and data files. The provenance of the run is written to
<output.path>/synthesis/ (kipe.provenance).
In parallel, each rank generates the entries of the data it holds (global_indices); the
noise of an entry depends only on its position, so the data do not depend on the number of
ranks. Rank 0 writes the files.
- kipe.synthesis.synthesize(study: StudyOptions, comm: mpi4py.MPI.Comm = mpi4py.MPI.COMM_WORLD) list[list[Measurement]][source]
Generate the data of all measurements of the study; write them and the provenance.
- Parameters:
study – the study options
comm – communicator over which the model state is distributed
- Returns:
the generated measurements of each noise realization, with this rank’s entries of their data:
synthesize(study)[r][i]is measurement i of realization r- Raises:
StudyFileError – if a measurement lacks what synthesis needs, or observes a field the solver does not have