The metadata of an image cube is stored as a keyword encoded text file, using the following keywords. Each keyword starts with a backslash ('\') in the first character position of a line, immediately followed by an identifier which may be followed by one or more parameters (depending on the keyword). Keywords are not case sensitive.
||The version number of the metadata format. If no version number is specified, version 1 is assumed by default.(1)
Example: \version 4
||The date and time when the data has been acquired. The parameter dt is formatted according to yyyy-MM-dd HH:mm:ss.sss. See Date/Time Format Mask for details on the formatting characters.
Example: \datatime 2010-11-09 22:10:47.812
||The parameter sz specifies the number of elements along the x-axis.
Example: \sizex 64
||The parameter sz specifies the number of elements along the y-axis.
Example: \sizey 64
||The parameter sz specifies the number of elements along the layer axis (properties).
Example: \sizel 811
||The parameter sz specifies the number of elements along the time axis (number of time slots).
Example: \sizet 1
followed by nl lines of text
|The parameter nl specifies the number of lines following the keyword. These lines contain a general description of the data set and include the automatically generated data processing protocol.
The description supports simple HTML formatting tags in order to allow a nice layout of the description. The following tags are supported:
<font color=... >
First image of salmonella strain 3199.
Preprocessed by 0.1 N acetic acid.
Dried at 38° C
||Certificate which allows to assure the correctness of both the data and the meta information. The parameter code contains the hex-encoded certificate.
||Name of the data's author.
Example: \author Suzie M. Terzo
||Identifier (name) of the x axis. The parameter name must not be longer than 63 characters.
Example: \axidx east-west
||Identifier (name) of the y axis. The parameter name must not be longer than 63 characters.
Example: \axidy north-south
||Identifier (name) of the layer axis. The parameter name must not be longer than 63 characters.
Example: \axidl Spectrum + Properties
||Identifier (name) of the time axis. The parameter name must not be longer than 63 characters.
Example: \axidt Age
||A cyclic redundancy check (CRC) code of the data. This code is used to assure that the data cube matches the metadata. The parameter code is the 256 bit CRC checksum of the data encoded as 64 hexadecimal characters. Please note that Epina ImageLab versions with a release number greater than 2.15 use a special version of the CRC code which is indicated by a leading '$8' substring.
Example: \datacrc 48A3E702C36458840A.....EBCF6702AD4BAC396B
||Technical data corresponding to the layer axis. The parameter nl specifies the number of lines following the keyword. The tech data is basically a vector of 32 bit integers whose size is equal to SizeL. The interpretation of these integer numbers depends on the data type. The tech data is stored 10 values per line separated by blanks.
Example: The following example shows the tech data for a data cube of 58 layers:
0 2 2 2 3 3 1 0 0 1
1 1 0 4 0 0 0 -6 -10 -11
1 1 1 0 4 10 220 0 0 0
0 0 1 1 0 0 0 0 0 0
0 0 0 0 4 4 4 4 0 0
0 0 0 1 1 0 8 8
||Defines the available pixel masks. The parameter nl specifies the number of lines following the keyword. The following lines specify the mask index and - separated by a colon - the name of the mask.
||The keyword PIXATTNAMES defines the names of the pixel attributes. The value nl specifies the number of defined attribute names. The following nl lines contain the names, each in a separate line. The index of the corresponding pixel attribute is preceding the name (separated by a colon).
|PIXATTRIBS nc nr
||The keyword PIXATTRIBS defines the size of the pixel attribute map. The first number specifies the number of columns, the second number specifies the number of rows. Please note that the actual attributes are stored in a separate file (.pcmp file).
||The keyword PROPSX defines the names of individual layers along the x axis. For details, see the PROPSL description.
1;64::10 -10:N::east west deviation [µm]
||The keyword PROPSY defines the names of individual layers along the y axis. For details, see the PROPSL description.
1;64::1 0:N::inclination [degree]
||The keyword PROPSL defines the names of individual layers along the spectral axis. The parameter nl specifies the number of lines following the keyword. Each line of the layer specification consists of 6 parts separated by colons:
- the index or the range of indices(2) which the layer specification applies to
- the content type of the layer(s)(3): the content type specifies then spectral type followed by a semicolon and the order of the derivative (value 0..7). The order of the derivative may be omitted if zero.
- the scaling parameters for the relation between the layer index ix (which is relative to the first index of the particular spectral group: ix := index-idxfirst+1) and the property unit (e.g. wavelength). There are three possible formats:
(a) linear transfer functions: the parameter k and d of the linear scaling equation (y = k*ix + d) are specified.
(b) polynomial transfer functions: the range factor f(4) and the coefficients a0 through a6 are specified. If the order of the polynomial is less than 6 the remaining coefficients are stored as zero values; scaling equation: y = a0 + a1*ix*f + a2*(ix*f)2+a3*(ix*f)3+....a6*(ix*f)6
(c) centered polynomials: these are are indicated by the string 'CP' at the beginning of the parameters and include the shift along the independent axis as the first parameter. The other parameters are the same as the parameters of format (b).
For all formats an inverse transfer function may be specified in the same way. The inverse function parameters must be separated by a semicolon. If an inverse transfer function is not specified it is assumed that the inverse function can be calculated using the parameters of the forward transfer (which may be true for linear transfer functions)
the orientation of the axis; 'N' indicates normal orientation (lower values at the left or at the bottom), 'R' indicates the reverse orientation (as, for example, in IR spectra)
the group number identifying data belonging to the same spectrum (the group number is stored only in metadata files of version 2 or higher). The group number is only used along with the layer axis, it is ignored for the x, y, and the time axis. Layers which are not related to each other are always assigned to group 0; the data of group 0 are always unscaled (i.e. the scaling parameters are ignored). This ensures that Epina ImageLab does not try to plot a "spectrum" of completely different data items.
the identifier itself which may optionally include (in square brackets) the units of measurement
Example (note that the last entry for Raman spectroscopy is actually a single line and has been reformatted here to improve readability):
1;111:irspec:-1.9822 3001.8119:R:1:wave length [nm]
112:physprop:1 0:N:0:melting point [°C]
113:physprop:1 0:N:0:boiling point [°C]
114:physprop:1 0:N:0:density [g/cm3]
116;266:raman:0.1 3.5957E+01 5.2707E+00 -2.0344E-03 4.2933E-07 0 0 0;
1.0 -6.8042E+01 1.8873E+00 1.3747E-04 1.4202E-08 2.1018E-12 0 0:
R:1:wave number [cm-1]
Hint: Epina ImageLab provides piecewise calibration functions which ensures that even sophisticated instruments (which might, for example, consist of several spectrometers internally but provide their signal as a single spectrum) are supported. In order to create a piecewise calibration funtion you simply have to define the individual pieces using the same spectral group number. Following is an example (the lines are actually single lines):
1;167:raman:CP 83.5 1.0 249.8 6.307E-02 -4.004E-06 -2.673E-10;
CP 248.6 1.0 9.160E+02 1.581E+01 1.579E-02 4.816E-05:
168;215:raman:CP 24.0 1.0 309.9 3.391E-02 -3.022E-07 -9.831E-09;
CP 309.9 1.0 1.457E+02 2.947E+01 3.492E-04 9.667E-03:
216;386:raman:CP 85.5 1.0 388.3 8.146E-02 -5.681E-06 -3.731E-10;
CP 386.9 1.0 8.370E+02 1.224E+01 1.039E-02 2.590E-05:
||The keyword PROPST defines the names of individual time slots along the time axis. For details, see the PROPSL description.
1::1 0:N::time [sec]
||List of attached photos. The parameter np specifies the number of photos on the list. Each line following this keyword contains all available details of a photo: the associated time slot, the associated layer, the filename, and an arbitrary number (minimum of 3) of calibration points (the attached photos have to be stored in the same directory as the meta information):
Each calibration point consists of a quadruple of numbers of which the first two numbers specify the x/y-coordinates (actual coordinates, not pixel coordinates) in the image and the last two numbers specify the x/y-pixel coordinates on the photo.
1;1;chocolate_1.jpg;[1,1,100,102] [23,25,1605,2287] [23,1,1600,99]
1;8;chocolate_8.jpg;[1,1,102,95] [23,25,1588,2208] [23,1,1611,109] [2,20,180,1277]
||A reference identifier of the sample. The sample id is not used by Epina ImageLab but may be used by the user to unequivocally identify the sample.