Study file reference
All keys of a study file: first as an overview, a commented study file, then section by
section, each key with its type, its default (or whether it is required) and what it does.
<name> stands for a name you choose, e.g., of a measurement. Running a study and
Measurements explain how the keys work together.
This page is generated from the study file’s options (kipe.options), so it describes
exactly what kipe accepts. Unknown keys are an error.
Overview
output: # required
path: <string> # required
log_level: info # debug | info | warning | error
forward_solver: # required
factory: <string> # required
arguments: <mapping> # optional
parameters:
reparameterization: <log | multiplicative | additive> # required
select: # required
<name>: # a parameter of the solver
initial: <number> # optional
relative_stddev: <number > 0> # optional
stddev: <number > 0> # optional
reparameterization: <log | multiplicative | additive> # optional
measurements:
<name>: # a name you choose
fields: <list of strings (at least 1)> # required
data: # required
type: numpy
path: <string> # required
noise: # required
stddev: <number > 0> # required
seed: <integer ≥ 0> # optional
times: <list of numbers or {start, stop, step}> # optional
spatial_sampling: # one of, by type
type: array # the default
# or:
# type: fenicsx.mesh
# mesh: <string> # required
# mesh_name: mesh
# element: P1 # P1 | DG0
# projection: <list of numbers (at least 1) or surface_normal> # optional
# padding: 0.0
# or:
# type: fenicsx.points
# points: <list of lists of numbers (at least 1)> # required
model:
type: difference
synthesis:
truth: # one of, by type
type: run # the default
# or:
# type: checkpoints
# path: <string> # required
noise:
<name>: # one of the measurements
stddev: <number ≥ 0> # required
realizations: 1
estimation:
sigma_points: simplex # simplex | canonical | unique
iterations: 1
output
Output location and logging.
key |
type |
default |
description |
|---|---|---|---|
string |
required |
Directory for all results. Subcommands write into subdirectories. |
|
|
|
Minimum level of the log messages kipe writes. |
forward_solver
Construction of the forward solver.
key |
type |
default |
description |
|---|---|---|---|
string |
required |
Import path of the factory, |
|
mapping |
optional |
Keyword arguments passed to the factory, as given (no path resolution). |
parameters
Estimated parameters.
key |
type |
default |
description |
|---|---|---|---|
|
required |
How the estimated parameter \(\theta\) relates to the physical value \(\phi\),
relative to the initial estimate \(\phi_0\). Default for all parameters in
Available reparameterizations:
|
|
mapping: name → section, see below |
required |
Estimated parameters: parameter name -> initial estimate and uncertainty. All other parameters keep their nominal values. |
parameters.select
Estimated parameters: parameter name -> initial estimate and uncertainty. All other parameters keep their nominal values.
Each parameters.select.<name>, where <name> is a parameter of the solver:
key |
type |
default |
description |
|---|---|---|---|
number |
optional |
Initial estimate (prior mean), as physical value. The solver’s nominal value if not given. |
|
number > 0 |
optional |
Standard deviation relative to Converted to the standard deviation of \(\theta\), to first order around |
|
number > 0 |
optional |
Absolute standard deviation, in the parameter’s physical unit. For |
|
|
optional |
Overrides the section’s |
measurements
Measurements: name -> measurement. The names appear in logs, output and errors.
Each measurements.<name>, where <name> is a name you choose:
key |
type |
default |
description |
|---|---|---|---|
list of strings (at least 1) |
required |
State fields the measurement observes. |
|
section, see below |
required |
Where the measured data are: read by |
|
section, see below |
required |
Measurement noise. |
|
list of numbers or {start, stop, step}, see below |
optional |
Measurement times: a list or a range. Required by |
|
one of, by |
optional |
How the observed fields are brought to the measurement locations; the kind is selected
by |
|
section, see below |
optional |
How predicted data are computed from the sampled fields and compared with the data. |
measurements.<name>.data
Where the measured data are: read by estimation, written by synthesis.
key |
type |
default |
description |
|---|---|---|---|
|
required |
Data format. |
|
string |
required |
Path to the |
measurements.<name>.noise
Measurement noise.
key |
type |
default |
description |
|---|---|---|---|
number > 0 |
required |
Standard deviation of the noise, in the unit of the data. |
|
integer ≥ 0 |
optional |
Seed of the noise added by |
measurements.<name>.times
Measurement times: a list or a range. Required by synthesis (the times to
generate); for estimation a selection from the times in the data, all if not
given.
key |
type |
default |
description |
|---|---|---|---|
number |
required |
First time. |
|
number |
required |
Last time, included (up to round-off). |
|
number > 0 |
required |
Distance between successive times. |
measurements.<name>.spatial_sampling
How the observed fields are brought to the measurement locations; the kind is selected
by type, array by default.
type: array (the default)
Sample all entries of the observed fields, concatenated in the order of fields.
type: fenicsx.mesh
Interpolate the observed field onto a measurement mesh (FEniCSx backend).
The field must be a distributed field whose function space the forward solver provides
(kipe.fenicsx.forward_solver.SupportsFunctionSpaces). The measurement mesh need
not match the solver’s mesh. The data are in the order of the mesh file: by vertex for
P1, by cell for DG0, independent of the number of ranks; for a vector field without
projection, the components of each vertex or cell one after another.
key |
type |
default |
description |
|---|---|---|---|
string |
required |
Path to the measurement mesh, an XDMF file. |
|
string |
|
Name of the mesh in the XDMF file (its grid): |
|
|
|
Finite element on the measurement mesh: vertex values ( |
|
list of numbers (at least 1) or |
optional |
What is measured of a vector field; all components if not given. A direction, e.g.,
|
|
number ≥ 0 |
|
Distance, in mesh units, by which a measurement point may lie outside the solver’s mesh, e.g., where a surface mesh cuts slightly across the solver’s boundary. Such a point takes the value of the field in the nearest cell, extrapolated; a point farther out is an error. |
type: fenicsx.points
Evaluate the observed field at given points (FEniCSx backend).
The field must be a distributed field whose function space the forward solver provides
(kipe.fenicsx.forward_solver.SupportsFunctionSpaces). The data are in the order of
points; for a vector field, the components of each point one after another.
key |
type |
default |
description |
|---|---|---|---|
list of lists of numbers (at least 1) |
required |
Coordinates of the measurement points, one list per point, e.g., |
measurements.<name>.model
How predicted data are computed from the sampled fields and compared with the data.
key |
type |
default |
description |
|---|---|---|---|
|
|
Kind of measurement model. |
synthesis
Generation of synthetic measurement data.
key |
type |
default |
description |
|---|---|---|---|
one of, by |
optional |
Source of the true state the data are generated from: a run of the forward solver, or its checkpoints. |
|
mapping: name → section, see below |
optional |
Noise synthesis adds to the data of the listed measurements (measurement name ->
noise), instead of their |
|
integer > 0 |
|
Number of noise realizations, e.g., for the statistics of the estimates over the noise.
Synthesis computes the true state once and writes the data of realizations
\(r = 0, \dots, n - 1\), each to the |
synthesis.truth
Source of the true state the data are generated from: a run of the forward solver, or its checkpoints.
type: run (the default)
Generate the data by running the forward solver with its nominal parameters.
type: checkpoints
Generate the data from the checkpoints of an earlier run of the forward solver.
The solver reads the true states at the measurement times from the checkpoints at
path; it needs kipe.forward_solver.SupportsCheckpoints. The run may differ
from the model of the forward_solver section (e.g., in its time step or parameters), as
long as the solver can read its checkpoints into the model’s state.
key |
type |
default |
description |
|---|---|---|---|
string |
required |
Location of the checkpoints, as the solver understands it (e.g., the output directory of the run). |
synthesis.noise
Noise synthesis adds to the data of the listed measurements (measurement name ->
noise), instead of their noise.stddev, which estimation assumes: for noise-free data
(stddev: 0) or studies with misspecified noise. Measurements not listed get their
noise.stddev.
Each synthesis.noise.<name>, where <name> is one of the measurements:
key |
type |
default |
description |
|---|---|---|---|
number ≥ 0 |
required |
Standard deviation of the noise, in the unit of the data; 0 for noise-free data. |
estimation
Parameter estimation.
key |
type |
default |
description |
|---|---|---|---|
|
|
Sigma-point stencil, the pattern along which the estimates are perturbed. Each sigma point costs one forward run per measurement time:
|
|
integer ≥ 1 |
|
Number of passes over the measurements. Each pass after the first starts from the previous estimate, with the initial uncertainty. |