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

Uploaded Python 3

File details

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

File metadata

  • Download URL: photompy-0.1.1.tar.gz
  • Upload date:
  • Size: 21.4 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.1.tar.gz
Algorithm Hash digest
SHA256 27c30b47848f02774ec381d344484785371f0324cf7f1abfaecd28ff41329e5b
MD5 0d42243f0e4ec37c208ac5efb941aa1d
BLAKE2b-256 4c0ef020377bee203848f1c1bd60707995d4d790010c11cda02d4627772a1d8b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: photompy-0.1.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a4613e993fdfe2eb64c7308c245492edbd457be1429e18329829df5b492faf38
MD5 4989ede1b7cfbe91ba8dd67a4e592ece
BLAKE2b-256 5f74b1a4b44868d75498c82aa44af9ee072b48a9a23e2df7a23482b16d9d9dfd

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