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.0.tar.gz (21.5 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.0-py3-none-any.whl (23.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: photompy-0.1.0.tar.gz
  • Upload date:
  • Size: 21.5 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.0.tar.gz
Algorithm Hash digest
SHA256 ad123fae4111bf7f075521f604346471027cd3c14bea8d8daa838a7644fe7d53
MD5 e95bb5a4008d0246d5c13930de3603ba
BLAKE2b-256 11e0ac5db30d4d74580ccfc985007b61591fb379146470afda680f44b0492a9e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: photompy-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 23.3 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7e48ea0a0ea990f1443b21d13678387e91814075cd8835580e41c032ba37c530
MD5 9cb93cf46ad6c58946786132df7c94a1
BLAKE2b-256 843311dce740d5eb3a61aa9efb7bdce512d29655eb91edc9bbee6c1b0c70d34e

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