Skip to main content

eulumdat-luminance

PyPI version Python License: MIT DOI

Luminance table generation from EULUMDAT (.ldt) photometric files — extension to eulumdat-py.

Features

  • Luminance table (cd/m²) computed from intensity distribution and luminous area geometry
  • UGR grid (C: 0°–345° in 15° steps, γ: 65°–85° in 5° steps) with automatic bilinear interpolation when the native LDT resolution does not match
  • Full native grid mode for detailed photometric analysis
  • result.at(c_deg, g_deg) — bilinear interpolation at arbitrary (C, γ) angles
  • result.projected_area(c_deg, g_deg) — projected luminous area (m²) at arbitrary angles, required by eulumdat-ugr for solid-angle computation
  • Polar luminance diagram (SVG + PNG/JPG): all 24 C-planes visible simultaneously, one curve per γ angle, blue gradient palette, optional threshold circle
  • Print-ready output by default (PolarStyle.for_print(width_cm=10, dpi=150, font_scale=2.11) — 10 cm at 150 dpi, Arial 9pt equivalent); customisable via PolarStyle.for_print(width_cm, dpi)
  • CSV and JSON export

Installation

pip install eulumdat-luminance

Dependencies

  • eulumdat-py — EULUMDAT parser
  • numpy, scipy
  • vl-convert-python — SVG rasterisation
  • Pillow — JPG conversion

Quick start

from pyldt import LdtReader
from eulumdat_luminance import LuminanceCalculator, LuminancePlot, PolarStyle

ldt    = LdtReader.read("luminaire.ldt")
result = LuminanceCalculator.compute(ldt)

print(f"{result.luminaire_name} — {result.maximum:.0f} cd/m²")

# Interpolate luminance at arbitrary (C, γ)
lum  = result.at(c_deg=12.0, g_deg=67.0)           # float, cd/m²

# Projected luminous area at arbitrary (C, γ) — used by eulumdat-ugr
area = result.projected_area(c_deg=0.0, g_deg=65.0) # float, m²

plot = LuminancePlot(result)
plot.polar("polar.svg")   # default: 10 cm at 150 dpi, Arial 9pt equivalent
plot.polar("polar.png")

# Custom size: 8 cm at 300 dpi
plot.polar("polar_report.png", style=PolarStyle.for_print(width_cm=8, dpi=300))

# Get SVG as a string for inline HTML embedding (no file written)
svg_str = plot.polar_svg()

Example output

Polar luminance diagram — sample_04, 10 cm at 150 dpi

Sample 04 — linear luminaire 1480 × 63 mm, 12 334 lm — default style (PolarStyle.for_print(width_cm=10, dpi=150, font_scale=2.11))

Running the tests

# All tests (numerical validation + diagram generation)
pytest

# Numerical tests only (fast)
pytest tests/test_calculator.py

# Diagram generation only
pytest tests/test_polar_diagram.py

# Verbose with print output
pytest -v -s

# Filter by sample
pytest -k sample_04

# Filter by test type
pytest -k "svg"                  # SVG generation only
pytest -k "png"                  # PNG generation only
pytest -k "for_print"            # print sizing test (8 cm / 300 dpi)
pytest -k "word"                 # Word/PDF report test (10 cm / 150 dpi)
pytest -k "Relux"                # Relux numerical validation (30 tests)
pytest -k "not Smoke"            # exclude smoke tests

# Coverage
pytest --cov=eulumdat_luminance tests/test_calculator.py

License

MIT

Metadata

Release files for eulumdat-luminance 1.3.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for eulumdat-luminance 1.3.1
File Size Uploaded
eulumdat_luminance-1.3.1.tar.gz 27.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for eulumdat-luminance 1.3.1
File Interpreter ABI Platform
eulumdat_luminance-1.3.1-py3-none-any.whl Python 3 none any Details

Total release size: 47.6 kB

Release files / eulumdat_luminance-1.3.1.tar.gz

Download URL eulumdat_luminance-1.3.1.tar.gz
Size 27.8 kB
Tags Source
SHA-256 checksum
How to use checksums
69c9076ede6ff461ba046025478210c2be915c3352c7fa690f5614e3c23d8e24
BLAKE2b-256 checksum
How to use checksums
9f441ccb33623a43c8a20bfe3ac17fc251363d29c572c7829d36a0076168fdce
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.11

Release files / eulumdat_luminance-1.3.1-py3-none-any.whl

Download URL eulumdat_luminance-1.3.1-py3-none-any.whl
Size 19.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c8d00695781e86a256cf062e3726d103bc4c89cda01b86ebb8087e529a899688
BLAKE2b-256 checksum
How to use checksums
9834b54697fe1c66c703484529d0a2e0d32f608aa7af44f22db2bd135cdcd646
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.11

Release history Release notifications | RSS feed

This release

1.3.1 This release

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page