Skip to main content

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

Project description

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))

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

eulumdat_luminance-1.3.0.tar.gz (27.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

eulumdat_luminance-1.3.0-py3-none-any.whl (19.6 kB view details)

Uploaded Python 3

File details

Details for the file eulumdat_luminance-1.3.0.tar.gz.

File metadata

  • Download URL: eulumdat_luminance-1.3.0.tar.gz
  • Upload date:
  • Size: 27.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.11

File hashes

Hashes for eulumdat_luminance-1.3.0.tar.gz
Algorithm Hash digest
SHA256 245bb3a24bd0fb27dc855fbe82c9abab2f6a13fca46cfebde8b0867eb381812a
MD5 f4d313ca867cf75d297f606800655066
BLAKE2b-256 8b8623ed9a2e6122aa8e7ed624df419941a79ef627293614676ef0c76b9f27c0

See more details on using hashes here.

File details

Details for the file eulumdat_luminance-1.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for eulumdat_luminance-1.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 23b9bf5cb76fb0b2feaee2d8c886dc0467c293e561857c7710319f38c0f18c44
MD5 4481435b30a201f2d03ee45ad50cb2dc
BLAKE2b-256 b1bab7802ec1fab3018c87d1a3332bb5f1b92e4a8ea08d62c2b1a1a38430e5d7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page