import numpy as np import os dir = os.path.split(os.path.realpath(__file__))[0] f = open(dir + '/sbrgb10w.csv') color_map = [] for line in f: color_map.append([float(s) for s in line.split(',')]) f.close() color_map = np.array(color_map) # zero negative coefficients color_map[color_map < 0] = 0 # normalize coefficients for i in range(len(color_map)): color_map[i,1:] /= np.sum(color_map[i,1:]) def map_wavelength(wavelength): r = np.interp(wavelength, color_map[:,0], color_map[:,1]) g = np.interp(wavelength, color_map[:,0], color_map[:,2]) b = np.interp(wavelength, color_map[:,0], color_map[:,3]) if np.iterable(wavelength): rgb = np.empty((len(wavelength),3)) rgb[:,0] = r rgb[:,1] = g rgb[:,2] = b return rgb else: return np.array([r,g,b])