How DART stores observations: observation sequence (obs_seq) files

Since DART is designed to assimilate observations from any data source, it includes a set of programs to convert observations from their original format to DART’s own observation sequence, or obs_seq, format. The obs_seq format is designed to allow DART to accomodate a myriad of source observation file formats, structure and metadata. Many original source observation files don’t contain the necessary information about the error characteristics and spatial structure of the data needed to perform an assimilation.

There are three types of obs_seq files.

An file actually contains no observation quantities. It may be best thought of as a perfectly laid-out notebook waiting for an observer to fill in the actual observation quantities.

All the rows and columns are ready, labelled, and repeated for every observation time and platform. The file is generally the start of a “perfect model” experiment.

In a perfect model experiment, one instance of the model is run through the DART program perfect_model_obs - which applies the appropriate forward operators to the model state and writes down the observations generated by the model in the writes them down in the perfectly laid-out notebook.

The completed notebook is then renamed obs_seq.out.


An obs_seq.out file contains a linked list of observations. The observations can potentially be (and usually are) from different platforms and of different quantities, each with their own error characteristics and metadata.

An obs_seq.out file containing real data can be generated by using one of DART’s many observation converter programs. Additionally, an obs_seq.out file containing synthetic data can be created by running DART’s perfect_model_obs program.

The observations in the obs_seq.out files are assimilated into the model ensemble by DART’s filter program.

To learn more about the structure of the obs_seq.out file, see Detailed structure of an obs_seq file.

If you want to create an observation sequence file from real observations, you should contact DAReS staff by emailing for advice regarding your specific types of observations.

When running an assimilation, DART’s filter program assimilates the observations contained in the obs_seq.out file and generates an file.

The file contains everything in the obs_seq.out file and also contains a few additional ‘copies’ of the observation.

Since DART is an ensemble algorithm, each ensemble member must compute its own estimate of the observation for the algorithm. You can save the ensemble members’ estimates of the observation in the file by setting the num_output_obs_members entry in the filter_nml namelist of input.nml to a value greater than zero.

Minimally, filter will record the mean and spread of the ensemble estimates in the file.

To learn more about the structure of the file, see Detailed structure of an obs_seq file.

Using for observation-space diagnostics

The best method to determine the performance of an experiment in which you assimilate data from real-world sources is to compare the ensemble estimates of the observation to your real-world data. You can estimate the bias and error of the ensemble mean or gauge how many of the real-world observations are actually being assimilated. These diagnostics are known as observation-space diagnostics.

DART provides programs obs_diag and MATLAB observation space diagnostics for you use to quickly assess the performance of your experiment.


Since each ‘observation type’ may require different amounts of metadata to be read or written, any routine to read or write an observation sequence must be compiled with support for those particular observations. The supported observations are listed in the obs_kind_nml namelist of input.nml. For more information, see How DART supports different types of observations: the preprocess program.