Metadata

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.

List of metadata keywords:

Keyword Description
VERSION vs The version number of the metadata format. If no version number is specified, version 1 is assumed by default.(1)
Example: \version 4
DATETIME dt 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
SIZEX sz The parameter sz specifies the number of elements along the x-axis.
Example: \sizex 64
SIZEY sz The parameter sz specifies the number of elements along the y-axis.
Example: \sizey 64
SIZEL sz The parameter sz specifies the number of elements along the layer axis (properties).
Example: \sizel 811
SIZET sz The parameter sz specifies the number of elements along the time axis (number of time slots).
Example: \sizet 1
DESCRIPTION nl
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: <p> <br> <b> <i> <sub> <sup> <font color=... > <ul> <ol> <li>

Example:
\description 3
First image of salmonella strain 3199.
Preprocessed by 0.1 N acetic acid.
Dried at 38 C

CERTIFICATE code Certificate which allows to assure the correctness of both the data and the meta information. The parameter code contains the hex-encoded certificate.
AUTHOR name Name of the data's author.
Example: \author Suzie M. Terzo
AXIDX name Identifier (name) of the x axis. The parameter name must not be longer than 63 characters.
Example: \axidx east-west
AXIDY name Identifier (name) of the y axis. The parameter name must not be longer than 63 characters.
Example: \axidy north-south
AXIDL name Identifier (name) of the layer axis. The parameter name must not be longer than 63 characters.
Example: \axidl Spectrum + Properties
AXIDT name Identifier (name) of the time axis. The parameter name must not be longer than 63 characters.
Example: \axidt Age
DATACRC code 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
LAYERTECDAT nl 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:

\layertecdat 6
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
MASKIDS nl 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.
Example:
\maskids 3
1:Mask Blue
2:MyMask
5:Bad Pixels
PIXATTNAMES nl 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).
Example:
\pixattnames 3
1:RefWater
5:RefOil128/7
6:RefOil122/xx
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).
PROPSX nl The keyword PROPSX defines the names of individual layers along the x axis. For details, see the PROPSL description.
Example:
\propsx 1
1;64::10 -10:N::east west deviation [m]
PROPSY nl The keyword PROPSY defines the names of individual layers along the y axis. For details, see the PROPSL description.
Example:
\propsy 1
1;64::1 0:N::inclination [degree]
PROPSL nl 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:
  1. the index or the range of indices(2) which the layer specification applies to
  2. 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.
  3. 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):
    \propsl 7
    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]
    115:undefined:1 0:N:0:pi-bar
    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):
    \propsl 3
    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:
          N:1:nm
    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:
          N:1:nm
    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:
          N:1:nm
  • PROPST nl The keyword PROPST defines the names of individual time slots along the time axis. For details, see the PROPSL description.
    Example:
    \propst 1
    1::1 0:N::time [sec]
    PHOTOS np 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.
    Example:

    \photos 2
    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]
    SAMPLEID name 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.



    (1) If you intend to create a metadata file using an exernal program you should ensure that the VERSION keyword is specified in the first line of the metadata file.
    (2) A range of indices is specified by the first and the last index separated by a semicolon.
    (3) The content type of the layers is a predefined set of identifiers which is only valid for the PROPSL command; the other PROPS commands leave the content type empty. Currently, the following identifiers are available:
    afm          atomic force microscope
    bwimg        black & white image (gray scale image)
    classmap     classification results
    color        individual color
    edx          energy dispersive xray spectrum (single lines)
    impulse      signal over time
    irdiscrete   IR spectrum at discrete wavelengths
                    (irregular spacing of wave numbers)
    irspec       IR spectrum
    libsraw      LIBS full spectrum
    libssl       LIBS (elemental lines)
    magspec      magnitude spectrum
    msneg        mass spectrum of negative ions (typically organic
                    mass spectrometry, or GC/MS, or HPLC/MS, single MS lines)
    msnegraw     mass spectrum of negative ions, raw data displayed
                    as continuous line spectrum
    mspos        mass spectrum of positive ions (typically organic
                    mass spectrometry, or GC/MS, or HPLC/MS, single MS lines)
    msposraw     mass spectrum of positive ions, raw data displayed
                    as continuous line spectrum
    mssim        individual MS intensities (typically selected ion
                    monitoring, or inorganic MS, e.g. ICP/MS)
    oesraw       optical emission spectroscopy (full spectrum)
    oessl        optical emission spectroscopy (single lines)
    phasespec    phase spectrum
    physprop     physical properties
    pixmask      pixel masks (deprecated)
    powerspec    power spectrum
    raman        Raman spectrum
    rgbcolors    red, green, and blue from a color image
                    (always three layers!)
    sims         secondary ion mass spectrometry
    specdesc     spectral descriptor
    thzspec      THz spectrum
    undefined    undefined/unknown property type
    uvvis        uv/vis/nir infrared spectrum
    
    (4) The scaling factor f is required to handle high order polynomial without numerical problems even for high numeric values