Source code for iadpython.nist

"""
Module for importing reflection spectra from NIST database.

https://nvlpubs.nist.gov/nistpubs/jres/122/jres.122.026.pdf

Two types of starting methods are possible.

    Example:
        >>> import numpy as np
        >>> import matplotlib.pyplot as plt
        >>> import iadpython as iad

        >>> # Retrieve and plot subject 5

        >>> subject_number = 5
        >>> lambda0, R = iad.subject_average_reflectance(subject_number)
        >>> plt.plot(lambda0, R)
        >>> plt.xlabel("Wavelength (nm)")
        >>> plt.ylabel("Total Reflectance")
        >>> plt.title("Subject #%d" % subject_number)
        >>> plt.show()

        >>> # Retrieve and plot all subjects

        >>> lambda0, R = iad.all_average_reflectances()
        >>> for i in range(100):
        >>>     plt.plot(lambda0, R[:, i])
        >>> plt.xlabel("Wavelength (nm)")
        >>> plt.ylabel("Total Reflectance")
        >>> plt.title("All Subjects")
        >>> plt.show()
"""

import pkg_resources
import numpy as np

# nist_db = 'https://doi.org/10.18434/M38597'

__all__ = ('subject_reflectances',
           'subject_average_reflectance',
           'all_average_reflectances',
           )


[docs] def subject_reflectances(subject_number): """Extract all reflection data for one subject.""" if subject_number <= 0 or subject_number > 100: raise Exception("subject_number must be 1 to 100") col = (subject_number - 1) * 4 + 1 cols = (0, col, col + 1, col + 2, col + 3) nist_db = pkg_resources.resource_filename(__name__, 'data/M38597.csv') data = np.loadtxt(nist_db, skiprows=8, usecols=cols, delimiter=',', encoding='latin1') lambda0 = data[:, 0] r_1 = data[:, 1] r_2 = data[:, 2] r_3 = data[:, 3] r_ave = data[:, 4] return lambda0, r_1, r_2, r_3, r_ave
[docs] def subject_average_reflectance(subject_number): """Extract average reflection for one subject.""" if subject_number <= 0 or subject_number > 100: raise Exception("subject_number must be 1 to 100") col = (subject_number - 1) * 4 + 4 cols = (0, col) nist_db = pkg_resources.resource_filename(__name__, 'data/M38597.csv') data = np.loadtxt(nist_db, skiprows=8, usecols=cols, delimiter=',', encoding='latin1') lambda0 = data[:, 0] r_ave = data[:, 1] return lambda0, r_ave
[docs] def all_average_reflectances(): """Extract average reflectance for all subjects.""" cols = [4 * i for i in range(101)] nist_db = pkg_resources.resource_filename(__name__, 'data/M38597.csv') data = np.loadtxt(nist_db, skiprows=8, usecols=cols, delimiter=',', encoding='latin1') lambda0 = data[:, 0] r_ave = data[:, 1:] return lambda0, r_ave