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.1.4.tar.gz (21.8 kB view details)

Uploaded Source

Built Distribution

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

photompy-0.1.4-py3-none-any.whl (23.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: photompy-0.1.4.tar.gz
  • Upload date:
  • Size: 21.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.12

File hashes

Hashes for photompy-0.1.4.tar.gz
Algorithm Hash digest
SHA256 587728a09facab6418d97c76d5f4401df14ed1116aa58da5eddd6bbe8a6aabe6
MD5 aa950215e5cea8e97933d3907be67918
BLAKE2b-256 9699b3373978a16ee0c7c639bf89c4394a42c2663547bb864b300fc647bfa3fb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: photompy-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 23.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.12

File hashes

Hashes for photompy-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 b18abf36b906bb78802efc7aa7df06d17597a481de73c922945e5d11010d26fc
MD5 b735d57ef0938254b3a86da3c3c19054
BLAKE2b-256 45ebc26413d5d93a83166a1d682530fb7f37e7c3b1ef2eec856eea67d5401398

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