This package gives access to the refractive index data from RefractiveIndex.info.
The focus of this package is to provide a convenient interface to the data, and be efficient in the calculation of (temperature-dependent) refractive indices. Internally, the YAML data are converted to Python objects, for convenient access. Numba is used to speed up recursive calculations.
There are multiple ways to access the data. The most basic way is to use the RefractiveIndexLibrary
class:
from pyindexrepo import RefractiveIndexLibrary
db = RefractiveIndexLibrary(auto_upgrade=True)
bk7 = db.search_material_by_page_name('N-BK7')[0] # returns a list of different BK7 glasses
print(bk7.get_n(0.5875618))
When executed for the first time, the database from the RefractiveIndex Github Repo will be downloaded and converted to a python object. This process takes a few minutes. Consecutive calls will load the database object from a local file (almost instantaneously).
Auto-upgrade of the library is supported, but switched off by default.
The search function will return a list of materials, as there are multiple materials with the same name. You can also select the material by 'shelf', 'book' and 'page' as specified in the RefractiveIndex.info database.
from pyindexrepo import RefractiveIndexLibrary
db = RefractiveIndexLibrary(auto_upgrade=True)
bk7 = db.get_material('specs', 'schott', 'N-BK7')
print(bk7.get_n(0.5875618))
For further information how to interact with the data, please refer to the documentation.
In particular, check the API of the RefractiveIndexLibrary
class and the Material
class.
When temperature data is available, the refractive index of a material can be queried at any temperature within the valid temperature range:
import numpy as np
from pyindexrepo import RefractiveIndexLibrary
db = RefractiveIndexLibrary(auto_upgrade=True)
bk7 = db.search_material_by_page_name('N-BK7')[0] # returns a list of different BK7 glasses
wl = np.linspace(0.4, 0.7, 10000)
print(bk7.get_n_at_temperature(wl, temperature=30))
[1.53088657 1.53088257 1.53087857 ... 1.51309187 1.51309107 1.51309027]
pip install pyindexrepo