@@ -42,6 +42,11 @@ different classes of observations using the associated keywords:
4242 from a reservoir simulator RFT file. Examples are pressure and saturation
4343 values.
4444
45+ - :ref: `SEISMIC_OBSERVATION <seismic_observation >`: For loading spatially
46+ distributed observations along a horizon, typically 4D seismic
47+ attributes. Observations are loaded from a CSV or Parquet file with
48+ one row per measurement location.
49+
4550
4651Please note that observations and datatypes are quite tightly linked together.
4752Before reading this you should have a firm grasp of the dynamic data types
@@ -707,3 +712,80 @@ is ``summary``. Valid formats are:
707712 - date: '2015-03-15'
708713 value: 0.015
709714 error: 0.01
715+
716+
717+ .. _seismic_observation :
718+
719+ SEISMIC_OBSERVATION keyword
720+ ---------------------------
721+
722+ The keyword ``SEISMIC_OBSERVATION `` is used to condition on spatially
723+ distributed observations along a horizon, such as 4D seismic attributes
724+ (amplitude, time-shift, impedance change, etc.). Each observation
725+ represents a single measurement at a specific horizontal location, and a
726+ single ``SEISMIC_OBSERVATION `` declaration typically defines many
727+ individual measurements loaded from an external file.
728+
729+ A minimal seismic observation is created as follows:
730+
731+ .. code-block :: none
732+
733+ SEISMIC_OBSERVATION OBS_MEAN_2025 {
734+ OBS_FILE = path/to/observations.csv;
735+ };
736+
737+ The name (``OBS_MEAN_2025 `` above) is used as a label for the observation
738+ within ERT and must be unique. If the name is omitted, the stem of the
739+ observation file will be used.
740+
741+ Observations are read from either a CSV file or a Parquet file. The file
742+ type is determined from the file extension (``.csv `` or ``.parquet ``).
743+ Parquet is the preferred format for seismic observations as it is a typed,
744+ compressed binary format that is significantly smaller and faster to load
745+ than CSV. The file must contain one row per observation with the following
746+ required columns:
747+
748+ - ``X_UTME ``: Easting coordinate of the measurement location.
749+ - ``Y_UTMN ``: Northing coordinate of the measurement location.
750+ - ``OBS ``: The observed value at that location.
751+ - ``OBS_ERROR ``: The observation error (absolute standard deviation).
752+
753+ .. note ::
754+ The ``CSV `` key is a deprecated alias for ``OBS_FILE ``.
755+ Existing configurations using ``CSV = path/to/observations.csv; `` will
756+ continue to work but emit a deprecation warning; new configurations should
757+ use ``OBS_FILE ``. ``OBS_FILE `` and ``CSV `` cannot be combined in the same
758+ declaration.
759+
760+ An example of such a CSV could look like this:
761+
762+ .. code-block :: none
763+
764+ X_UTME,Y_UTMN,OBS,OBS_ERROR
765+ 463401.665023891,6929758.90312445,0.008602961,0.005
766+ 463312.374851203,6929712.58234601,-0.007062605,0.005
767+ 463245.488743621,6929689.04095157,0.009096828,0.005
768+ 463198.920134567,6929645.33178924,-0.007231411,0.005
769+
770+ All observation coordinates within a single ``SEISMIC_OBSERVATION ``
771+ declaration must be at least 0.2 m apart. Overlapping or duplicate
772+ coordinates will cause ERT to raise a configuration error.
773+
774+ Limiting observations with a boundary polygon
775+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
776+
777+ An optional ``BOUNDARY `` file may be provided to restrict which
778+ observations are used during the update step. Observations located
779+ outside the polygon are deactivated. The boundary file must contain a
780+ closed polygon, given as ``X Y Z `` triplets, with the polygon terminated
781+ by a line containing ``999.0 999.0 999.0 ``:
782+
783+ .. code-block :: none
784+
785+ SEISMIC_OBSERVATION OBS_MIN_2025 {
786+ OBS_FILE = path/to/observations.csv;
787+ BOUNDARY = path/to/boundary.pol;
788+ };
789+
790+ The boundary file is resolved relative to the directory containing the
791+ observation configuration file, the same as ``OBS_FILE ``.
0 commit comments