# User Infos and their use

For easier interaction with users, experiments can be configured via structures called User Info. These structures contain information about details of the experiment that is to be performed. Since experiments involve the use of basic BDM classes and their compositions, the experiment description is also hierarchical with specific user info for each object or class.

The User Infos are designed using customized version of the libconfig library (link!). It is specialized for BDM so as to recognize basic mathematical objects, such as vectors and matrices, see ... for details.

(Technically it can be made compatible with matlab structures!)

For example a simple experiment can be configures in a following way:

    ndat = 100;                //number of data points
    prior = {type="enorm";
            mu = [1, 2, 3];
            R = [1, 0, 0,
                 0, 1, 0,
                 0, 0, 1];
    };

Exact meaning of root fields in this structure (i.e. ndat and prior) is defined by the application (or mex file) that is using this configuration file. It will look for expected fields and it will ignore any other structures. When it does not find what it is looking for, it terminates with an appropriate error message.

A structure with field `type="identifier"` is special. Such a structure will be parsed by an appropriate class bdm::UIbuilder which will construct the desired object, in this instance of an object of the class bdm::enorm. For a detailed example how this mechanism works in practice see Running experiment `estimator` with ARX data fields.