UDeep
Draft profile v0.3 · research preview

Turning data into light, on the record.

A figure shows less than the data holds. Scientific data carries more range, and finer steps, than an 8-bit figure can — and no figure file says how its data became brightness. UDeep, short for Ultra Deep Range, is a draft standard and a set of tools for figures that declare that mapping, keep it reversible, and remain the ordinary figure on every screen.

Range. An ordinary figure stops at white. On an HDR display — most recent phones, and many laptops — the values above the figure's white appear brighter than white, so one sees what would otherwise be clipped.

Depth. An 8-bit figure has 256 levels. Whether that suffices depends on the data: the file states how large a step in the data one level is, set against the data's own uncertainty, so a reader can tell whether it holds the measurement or only a picture of it.

The ordinary (SDR) version remains the figure of record. HDR adds to it and never replaces it.

Synthetic CT phantom in a soft-tissue window; the bone ring above the window's top is white in SDR and shows its internal texture in HDR.
Synthetic CT phantom, Extend mode. SDR white is at 240 HU, the top of the standard soft-tissue window, so the low-contrast lesions read as usual. The bone (to 1850 HU) is flat white in SDR; on an HDR display its texture appears above white. On an SDR screen the two buttons look the same, by design.

What the name means

Ultra Deep Range: more range, and more depth.

Two panels of a synthetic CT phantom. Left, the ordinary figure: the bone ring is flat white. Right, a simulation of an HDR display, all four times dimmer: the bone ring shows its texture.
Range. Synthetic CT phantom. The ordinary figure places 240 HU at white, so the bone above it is flat. An HDR display shows the same file with the bone brighter than white, and its texture returns. The right-hand panel only simulates this, by dimming everything fourfold; the file itself is the figure at the top of this page.
Two panels of the same smooth synthetic field seen through a narrow window of its range. Stored in 8 bits it is seven flat bands; stored in 12 bits it is smooth.
Depth. Synthetic, noise-free data. A window 2.6 % of the full range wide is stretched to fill the screen, as one would when looking for faint structure. Stored in 8 bits the window holds 7 levels; in 12 bits, 107. Whether the coarser steps matter depends on the data's noise — which is the comparison the file records.

Why this, why now

The data has more than the figure shows.

Figures clip the data

Detectors, cameras and CT record 12 to 16 bits; simulations produce floats. An 8-bit figure stops at white, so every figure chooses between the faint part and the bright part. Radiologists switch between a soft-tissue window and a bone window for exactly this reason.

Screens changed; figures didn't

Most recent phones and many laptops can show brighter than white. Scientific figures are still made as if they can't, just as they stayed in sRGB long after screens went wide-gamut.

HDR will arrive anyway

Without a convention it arrives as "make it pop": Auto HDR, inverse tone mapping and adaptive boosts that change data silently. Journal image-integrity rules require declared, global processing. A rule written now makes the default safe.

Figures don't say how they were made

No figure file records how data became brightness. The profile writes that mapping into the file, so the figure can be reproduced and checked.

What it needs

  • Evidence. A study of whether HDR helps people read figures. This comes first: so far, model predictions show small gains for Highlight mode, and the stronger Extend result rests on one CT slice.
  • Tools. A pip package, then other plotting ecosystems.
  • Review. Readers of the draft profile, and device reports from many screens.
  • Platform fixes. Decoders that keep precision, gain maps inside SVG files, CSS HDR colours, and HDR in PDF.
  • A home in publishing. HDR supplementary figures alongside papers, and a citable version of the profile.

The full picture, with references, is on the evidence page.

The idea

HDR adds to a figure. It never replaces it.

SDR is complete

Below the knee, the HDR figure is identical to the SDR figure clipped at the same white. Every conclusion must be readable from the SDR version.

The knee means something

The value placed at white is a physical threshold, a statistical one (a false-alarm level) or a domain preset (a CT window). A percentile is marked exploratory.

Brightness says where

Brightness shows where the extreme values are; the colour bar, in data units with "SDR white" marked, says how much.

Global and declared

One mapping for the whole image, written into the file. No local tone mapping, no "Auto HDR". Saturated or clipped pixels never go above white.

Two presets, one curve

The profile's rules are about the data and the mapping. Highlight and Extend are two convenient ways of choosing the knee within those rules. They are presets, not requirements.

Highlight: sparse extremes pop out

Synthetic spectrogram of noise with a chirp; only bins above the 1e-4 false-alarm level go above white.
Data
synthetic: exponential noise power, plus a chirp
Knee
the 10⁻⁴ false-alarm level of the noise, 13.3 × the median
Above white
0.9 % of the figure: the chirp, not the noise

Extend: a second range, alongside the first

Synthetic CT phantom, soft-tissue window with bone texture above white.
Data
synthetic CT phantom, with 6 HU noise
Knee
240 HU, the top of the soft-tissue window (W400/L40)
Above white
4.0 % of the figure: the bone

Above the knee, the curve keeps rising to the top of the declared range, so every brightness maps back to one data value. One gain-map file adapts itself to each display's headroom.

These two are synthetic. See six real datasets: two gravitational waves, a chest CT, the Sun, a Hubble galaxy and the black hole in M87.

Use it

One line on top of matplotlib.

import udeep.mpl as hp

img = hp.imshow(ax, ct, mode="extend", knee=240,
                stretch={"kind": "linear", "lo": -160, "hi": 1850}, cmap="grey",
                headroom=4, unit="HU", knee_rule="preset; soft-tissue window")
hp.colorbar(img, ax=ax, label="HU")       # data units, with "SDR white 240" marked
fig.savefig("figure.png")                   # the ordinary figure, unchanged
hp.savefig_hdr(fig, "figure.jpg")           # the same figure, plus a gain map

The JPEG opens everywhere. SDR viewers show the ordinary figure; HDR viewers apply the gain up to their own headroom (ISO 21496-1, the Ultra HDR layout). Axes and text stay at SDR white.

Using another tool? See how scientific apps can adopt it: Jupyter, napari, Makie, Fiji, 3D Slicer, ParaView and astronomy viewers.

Install from the repository (a PyPI release is not out yet): pip install "udeep[mpl] @ git+https://github.com/ultradeeprange/udeep". Every public function is listed in the Python reference, and there are worked examples in the repository.

What works today

Measured, not assumed.

Each result comes from a test page with an SDR control and a positive control (run them yourself). The literature, standards and all our results are on the evidence page. So far: one iPhone 16 Pro (Photos and Safari) and one desktop monitor (Edge on Windows 11), September 2026.

WhatResultImplication
Gain-map JPEG, 16-bit PNG (PQ), AVIF (PQ/HLG), HEVC video (PQ/HLG) on a web pageshows HDRStatic and moving HDR figures can be shared now.
Gain-map JPEG inside inline SVGshows HDRVector axes and text around an HDR data layer.
Gain-map JPEG inside a standalone .svg fileSDR onlySVG files must carry an HDR-encoded layer (AVIF PQ), which does survive.
Vector colours above white (rec2100-*, srgb-linear > 1)not supportedNo vector-only HDR yet; declare an SDR fallback.
10/12-bit AVIF ramps vs the same values in 16-bit PNGAVIF banded, PNG smoothSome decoders drop precision. Use 16-bit PNG where gradients matter.
PDFno portable HDRThe SDR figure is the figure of record. The PDF Association is working on HDR, with JPEG XL.
HDR check pattern: a white band containing squares at 2, 4 and 8 times SDR white.

Is this screen showing HDR?

Look at the white band.

If you can see squares inside it, your screen and browser are showing HDR. The squares are 2×, 4× and 8× the band's white. If the band is plain white, you are seeing the SDR version, which is exactly the fallback we want.

Judging HDR by eye needs a reference: an HDR figure alone is easy to misjudge. On a phone, use mid brightness and turn Low Power Mode off.

The profile

A draft standard for data-referred figures.

The UDeep Figure Profile is data-first. It covers the data (units, uncertainty, a validity mask), a declared and reversible mapping from value to light, precision judged against the data as well as the eye, the metadata that records all of it, the delivery forms (raster, vector, video, publication), comfort and accessibility, and a device-verification protocol.

It is a working draft, not endorsed by any standards body, and its evidence comes from two devices so far. Comments and device reports are welcome.