UDeep

The udeep namespace, version 0.3

https://ultradeeprange.github.io/udeep/ns/0.3/

This address is the name of the XMP namespace in which a figure file declares how its data became light: the metadata of the UDeep Figure Profile, draft v0.3, section 8. The usual prefix is udeep. A reader never needs to fetch the address; this page is for people who look it up. The address is provisional until version 1.0 of the profile.

Properties

Copied from section 8.1 of the profile, which defines them. Sections 8.3 to 8.6 say which numbers have the offset removed, how numbers are written, which declarations a reader refuses, and how the two digests are taken.

Property Type Meaning
udeep:Version Text profile version, "0.3"
udeep:ImageState Text data-referred
udeep:DataUnit Text unit of the data values
udeep:NoiseModel Text constant, poisson, relative, tolerance or unknown (§5.2)
udeep:NoiseParameter Real the model's parameter (§5.2), greater than zero; required unless the model is unknown, and absent then
udeep:Stretch Text linear, log, asinh or proportional
udeep:RangeLow, udeep:RangeHigh Real the declared range, in data units after StretchOffset has been subtracted (8.3)
udeep:StretchWidth, udeep:StretchOffset Real the asinh width; the value subtracted from the data before the stretch
udeep:Knee Real data value mapped to diffuse white: the data value itself, before StretchOffset is subtracted (8.3)
udeep:KneeRule Text physical, statistical, preset or percentile, then a description
udeep:AboveKnee Text form of the segment above the knee, with its parameters: hermite; exit=s (§6.7)
udeep:ReferenceHeadroom Real headroom the figure was authored for (linear ratio), greater than 1
udeep:Masked Integer number of pixels in the validity mask
udeep:DerivedMask Text required when a mask was derived from neighbourhoods (§6.2a): the rule's name, for example isolated-3x3. Added 2026-10-08.
udeep:DerivedMasked Integer the number of pixels that rule holds at white, beyond the validity mask. Added 2026-10-08.
udeep:MaxDataStep Real largest Δx_q over the declared range, in data units
udeep:Record Text data-record or rendering (§7.3)
udeep:Preset Text optional: highlight, extend or another named preset (informative)
udeep:RoundingToNoise Real optional: the worst value over the declared range of the rounding error divided by the stated uncertainty (§7.2.1); omitted when the noise model is unknown. Writers store 10⁹ where the ratio is larger than that or has no bound. Added 2026-10-07.
udeep:DataDigest Text optional: the digest of the array that was mapped, as defined in 8.6. It ties the file to its data: a reader holding the data can confirm it is the same. Where the figure shows processed data (whitened, binned, calibrated), the digest is of the processed array. Added 2026-10-08.
udeep:DataSource Text optional: where the data is kept: doi:… where the data has one, otherwise a URL, otherwise a description; several are separated by ;. Added 2026-10-08.
udeep:DataUnitCode Text optional: the unit in machine-readable form, as a UCUM code (for example K, s-1). DataUnit remains the text for people. Added 2026-10-08.
udeep:SdrDigest Text optional, except in a file with no SDR base of its own, which MUST declare it (9.1.2): the digest of the fair SDR rendering's 8-bit RGB pixels, before any lossy coding, as defined in 8.6. It ties an HDR file to the figure of record (§6.8). Added 2026-10-08; required of such a file 2026-10-14.
udeep:DataDigestSha3 Text optional, and only with DataDigest: the same bytes digested with SHA3-256 (8.6), a hash function of another design, so that the link to the data holds if either function is ever broken. Added 2026-10-22.
udeep:SdrDigestSha3 Text optional, and only with SdrDigest: the SDR figure's bytes digested with SHA3-256 (8.6). Added 2026-10-22.
udeep:ColourMap Text the map from light to colour (§6.10): grey, or a registered map as name/version (for example fire/2). Added 2026-10-07; versioned 2026-10-08.
udeep:ColourMapTable Text required unless the map is grey or a registered map at a registered headroom: the table itself, as the node count, ;, then base64 of the two segments' numbers (little-endian float32, row by row). Added 2026-10-08.

NoiseParameter, DerivedMask, ColourMapTable and SdrDigest are required in the cases their rows state. Preset, RoundingToNoise, DataDigest, DataDigestSha3, SdrDigestSha3, DataSource and DataUnitCode are optional. Every other property MUST be present, including one whose value is zero or the usual one (Masked, DerivedMasked, StretchOffset, StretchWidth, AboveKnee).

An example

The declaration in the repository's worked example of a data record, detector_record_pq16.png: a synthetic 12-bit detector frame stored as a 16-bit PQ PNG. It is shown one property to a line; in the file it is one element.

<rdf:Description
    rdf:about=""
    xmlns:udeep="https://ultradeeprange.github.io/udeep/ns/0.3/"
    udeep:DataUnit="counts"
    udeep:Stretch="linear"
    udeep:RangeLow="0"
    udeep:RangeHigh="4095"
    udeep:Knee="1000"
    udeep:KneeRule="preset; white at 1,000 counts"
    udeep:ReferenceHeadroom="4"
    udeep:MaxDataStep="0.58188970746005"
    udeep:NoiseModel="constant"
    udeep:NoiseParameter="3"
    udeep:StretchWidth="1"
    udeep:StretchOffset="0"
    udeep:AboveKnee="hermite; exit=1"
    udeep:Masked="0"
    udeep:DerivedMasked="0"
    udeep:Record="data-record"
    udeep:Preset="extend"
    udeep:ColourMap="grey"
    udeep:RoundingToNoise="0.05599236320678874"
    udeep:DataDigest="sha256:b7d7c57afe15eefe5de15105d12e87cccd659f37744da5fd11fa0a2c3df4c6d0"
    udeep:SdrDigest="sha256:a8bcfcaad5f47548b0d75998162c4ff2fbe0e7d4fd0c3b750fc62cdf95e58b6b"
    udeep:Version="0.3"
    udeep:ImageState="data-referred"/>