Skip to main content

A library for reading, writing, and viewing photometric files.

Project description

PhotomPy: Photometric Python

A library for reading, writing, and viewing photometric files.

Installation

Install with pip:

pip install photompy

Alternatively, clone the repo and build locally:

git clone https://github.com/jvbelenky/photompy.git
cd photompy
python setup.py sdist
pip install .

Usage

Read files

Most of the core functionality of the library is in read_ies_data :

from photompy import *
lampdict = read_ies_data(filename)

By default, an ies file will be read in its original form, the angle values formatted in accordance with its photometry type, and interpolated to achieve a value for vertical angles (0,180) and horizontal angles (0,360). They are stored in dictionaries with keys phis,thetas, and values. They can be accessed like so:

original_dict = lampdict["original_vals"]
full_dict = lampdict["full_vals"]
interp_dict = lampdict["interp_vals"]

Extending the angles and interpolation between them can be disabled if desired:

lampdict = read_ies_data(filename, extend=False, interpolate=False)

Simple calculations

If finer interpolation is desired, the interp_vals dictionary can be overwritten:

interpolate_values(lampdict, overwrite=True, num_thetas=361, num_phis=721)
finer_interp_dict = lampdict["interp_vals"]

Simple calculations are performed at the filename level:

power = total_optical_power(filename)
luminous_area = lamp_area(filename, units="meters")

Visualization

Some plotting functions are provided for quickly visualizing a file. The default is a standard polar plot:

plot_ies(filename)

An alternative cartesian plotting function is provided and maybe be useful for those less familiar with polar plots to quickly gut-check any changes made to a file:

plot_ies(filename, type="cartesian", "original")
plot_ies(filename, type="cartesian", "full", elev=90, azim=45)
plot_ies(filename, type="cartesian", "interpolated", title="Interpolated", show_cbar=True)

Any dictionary that has keys thetas, phis, and values, where values contains a numpy array of shape ( len(phis), len(thetas) ) can also be quickly plotted with plot_valdict_cartesian or plot_valdict_polar

full_dict = lampdict["full_vals"]
new_dict = full_dict.copy()
new_dict["values"] = full_dict["values"] * 5
fig, ax = plot_valdict_cartesian(new_dict)
fig, ax = plot_valdict_polar(new_dict)

Writing files

To write a new ies file, you must pass a lampdict object and a key pointing to the dictionary where the theta, phi, and candela values are stored. You may want to save the extended or interpolated versions of the original file:

lampdict = read_ies_data(filename)
outfile = "full_vals.ies"
write_ies_data(outfile, lampdict, valkey="full_vals")
outfile = "interp_vals.ies"
write_ies_data(outfile, lampdict, valkey="interp_vals")

If you wish to save a different array of candela values, you can either manipulate the 3 provided value dictionary, or you must create a new dictionary and add it to the lampdict object before writing it to a new file.

# read 
lampdict = read_ies_data(filename)
interp_dict = lampdict["interp_vals"]

# copy and manipulate new dictionary
new_dict = interp_dict.copy()
new_dict["values"] = interp_dict["values"] * 5

# save in lampdict object
lampdict["scaled_vals"] = newdict

# write new value dictionary 
outfile = "scaled_interp_vals.ies"
write_ies_data(outfile, lampdict, valkey="scaled_vals")

Note that header data is not automatically updated in the latter case. Verify that all information is correct before writing.

Roadmap

  • PhotometricData and AngleData objects (as opposed to lampdict and valdict dictionaries)
  • Generate .ies files from an angular distribution table
  • Type A and B photometry support
  • Dialux file (.ldt) support
  • More extensive write support

License

Distributed under the MIT License. See LICENSE.txt for more information.

Contact

Vivian Belenky - jvb@osluv.org

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

photompy-0.0.5.tar.gz (14.8 kB view details)

Uploaded Source

Built Distribution

photompy-0.0.5-py3-none-any.whl (15.1 kB view details)

Uploaded Python 3

File details

Details for the file photompy-0.0.5.tar.gz.

File metadata

  • Download URL: photompy-0.0.5.tar.gz
  • Upload date:
  • Size: 14.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.2

File hashes

Hashes for photompy-0.0.5.tar.gz
Algorithm Hash digest
SHA256 f3176b83c1b6e9da4a26463ea9bb1fc2fbd0a6810bc39129fab9d62a2453379c
MD5 32947080add367ef37ffbfa0c9a80a79
BLAKE2b-256 163d517acbeba79efe83ddf2c9ea9cf6204256a69333132e15501d0276401d3d

See more details on using hashes here.

File details

Details for the file photompy-0.0.5-py3-none-any.whl.

File metadata

  • Download URL: photompy-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 15.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.2

File hashes

Hashes for photompy-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 8342513a56975335db279a4096b91c645bd2610261352c17cc841d384b4f32cc
MD5 2ccf50de1c84b6031df7eee3edf6eb0e
BLAKE2b-256 3a30746b291675fc0e2be7d32f5eea2fcfa14d404a7835322447132c3d63bf5b

See more details on using hashes here.

Supported by

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