Skip to main content

A package for refractive index values.

Project description

PyOptik logo

Meta

Python

Documentation Status

Testing

Unittest Status

Unittest coverage

PyPi

PyPi version

PyPi version

Anaconda

Anaconda version

Anaconda downloads

PyOptik

PyOptik is a Python tool designed to import refractive indexes and extinction coefficients for various materials across different wavelengths. The data provided by PyOptik can be used in numerous applications, including simulating light interactions with particles. All data is sourced from the reputable RefractiveIndex.INFO database.

Features

  • Comprehensive Database Access: Seamlessly import refractive index and extinction coefficient data for a wide range of materials.

  • Simulation Ready: Ideal for light-matter interaction simulations, particularly in optics and photonics.

  • Simple API: Easy-to-use API that integrates well with other Python libraries.

  • Open Source: Fully open-source.

Installation

To install PyOptik, simply use pip or conda:

pip install PyOptik
conda install --channels martinpdes pyoptik

Building the Material Library

PyOptik allows you to build and customize a local material library, importing material data from various categories. You can download the following categories of materials from the RefractiveIndex.INFO database:

  • classics: Commonly used optical materials.

  • glasses: Various types of glass materials.

  • metals: Different metal materials for optical simulations.

  • organics: Organic materials with optical properties.

  • others: Other optical materials.

  • all: Download all available categories at once.

To build a material library, use the build_library function. This will download and save the material data to your local machine.

Example: Building the Material Library:

In this example, we will download the others category of materials and remove any previously existing data in that category:

from PyOptik import MaterialBank

# Download the 'classics' category and remove previous files
MaterialBank.build_library('classics', remove_previous=True)

Available Categories:

To download materials from another category, simply pass the category name as an argument to build_library. For example:

# Download materials from the 'glasses' category
MaterialBank.build_library('glasses')

To download all material categories at once:

# Download all available material categories
MaterialBank.build_library('all')

You can also set the remove_previous parameter to True to remove old data before downloading new material data.

Viewing Available Materials

Once you have built the material library, you can view all the available materials using the MaterialBank class. This will print a list of materials stored in your local library.

Example:

from PyOptik import MaterialBank

# Print the available materials in a tabulated format
MaterialBank.print_materials()

Simple Usage

After installing PyOptik and building the material library, you can easily access material properties:

from PyOptik import MaterialBank

# Access the refractive index of BK7 glass
bk7 = MaterialBank.BK7
n = bk7.compute_refractive_index(0.55e-6)
print(f"Refractive index at 0.55 µm: {n}")

Example

Here is a quick example demonstrating how to use PyOptik to retrieve and plot the refractive index of a material:

import numpy as np
from PyOptik import MaterialBank

# Define wavelength range
wavelengths = np.linspace(0.3e-6, 2.5e-6, 100)

# Retrieve refractive index for BK7 glass
bk7 = MaterialBank.BK7
n_values = bk7.compute_refractive_index(wavelengths)

# Plot the results
bk7.plot()

This code produces the following figure: PyOptik example: BK7

Adding and Removing Custom Materials

You can add a custom material to your library by providing a URL from refractiveindex.info.

Adding a Custom Material:

from PyOptik import MaterialBank, MaterialType

# Define the URL of the YAML file and the destination
# Call the function to download the file
MaterialBank.add_material_to_bank(
   filename='example_download',
   material_type=MaterialType.SELLMEIER,
   url='https://refractiveindex.info/database/data-nk/main/H2O/Daimon-19.0C.yml'
)

MaterialBank.print_available()

Removing a Material:

You can also remove a material from the library as follows:

from PyOptik.utils import remove_element

MaterialBank.remove_item(filename='example_download')

Testing

To test locally after cloning the GitHub repository, install the dependencies and run the tests:

git clone https://github.com/MartinPdeS/PyOptik.git
cd PyOptik
pip install .
pytest

Contributing

PyOptik is open to contributions. Whether you’re fixing bugs, adding new features, or improving documentation, your help is welcome! Please feel free to fork the repository and submit pull requests.

Contact Information

As of 2024, PyOptik is still under development. If you would like to collaborate, it would be a pleasure to hear from you. Contact me at:

Author: Martin Poinsinet de Sivry-Houle

Email: martin.poinsinet.de.sivry@gmail.com

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

pyoptik-1.9.8.2.tar.gz (542.9 kB view details)

Uploaded Source

Built Distribution

PyOptik-1.9.8.2-py3-none-any.whl (47.6 kB view details)

Uploaded Python 3

File details

Details for the file pyoptik-1.9.8.2.tar.gz.

File metadata

  • Download URL: pyoptik-1.9.8.2.tar.gz
  • Upload date:
  • Size: 542.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.20

File hashes

Hashes for pyoptik-1.9.8.2.tar.gz
Algorithm Hash digest
SHA256 423a1379878e83009fed3628b3f6cd8be488b1b5f7cc34a5b605c7ac250fc3cf
MD5 c2564b7aaa2c76c9dffad31e13dbbf46
BLAKE2b-256 91748d268b613e1f107cacd9a16b2d9eef798ab6c65d30c29ac2274374834d2b

See more details on using hashes here.

File details

Details for the file PyOptik-1.9.8.2-py3-none-any.whl.

File metadata

  • Download URL: PyOptik-1.9.8.2-py3-none-any.whl
  • Upload date:
  • Size: 47.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.20

File hashes

Hashes for PyOptik-1.9.8.2-py3-none-any.whl
Algorithm Hash digest
SHA256 1265bfb28c1551067477d51c652b4950a6385e4ef5992f020063dfdb110743f9
MD5 141b331edcb6c3d5d51f3982a5befef0
BLAKE2b-256 7e16ac1dbf06c4b605b5c1c9b3a7c57bed52b90ce61283f175865b1da9f7db79

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