Frida is basically a huge collection of methods that operate on data or/and curve files.
A data file is basically an array of »spectra«. A spectrum contains x,y data pairs (or x,y,dy triples, if errors are given). The physical meaning of x and y is stored as »coordinate« information in the »meta data« of the file. A coordinate consists of »name« and »unit«, e.g. “mass (kg)” or “counts (Hz)”.
If a data file contains more than one spectrum, it is mandatory that there is a z coordinate; there may be several (denoted z0, z1, …). Each spectrum contains as many z entries as there are z coordinates.
There are additional file meta data, like the »file name« and the »documentation« array. Furthermore, a file may contain an arbitrary number of »file constants«. An file constant is a coordinate-value pair, denoted r0, r1, …. For instance, r0 may contain the coordinate “T (K)” and the value 320 to indicate a temperature of 320 K.
A curve file contains additional file meta data, most importantly a curve definition. This is either an »expression« or a »script command«. Instead of a set of »spectra«, a curve file contains a set of »curves«. Each curve contains an array of curve parameters p0, p1, … (as many as prescribed by the curve definition), an array of flags that indicate whether a parameter is free or fixed, and a few numeric values cq0, cq1, cq2 describing fit quality.
The data model is the most basic design feature of FRIDA. Internal and external storage formats and all method interfaces depend on it. It has remained very stable over the years (whereas the technologies used for implementation have changed almost completely). Major changes were the addition of multi-z-coordinates in 1996, the insertion of an abstraction layer for x-y-dy in 2006, and full support for r pars in 2010. Backward compatibility is always maintained by providing read-in methods for older data files.