from matplotlib.colors import LinearSegmentedColormap
from numpy import nan, inf
cm_data = [[0., 0., 0.],
[0., 0.164706, 0.],
[0., 0.333333, 0.],
[0., 0.498039, 0.],
[0., 0.666667, 0.],
[0., 0.831373, 0.],
[0., 1., 0.],
[0., 0.964706, 0.],
[0., 0.92549, 0.],
[0., 0.886275, 0.],
[0., 0.847059, 0.],
[0., 0.807843, 0.],
[0., 0.772549, 0.],
[0., 0.733333, 0.],
[0., 0.694118, 0.],
[0., 0.654902, 0.],
[0., 0.615686, 0.],
[0., 0.580392, 0.],
[0., 0.541176, 0.],
[0., 0.501961, 0.],
[0., 0.462745, 0.],
[0., 0.423529, 0.],
[0., 0.388235, 0.],
[0., 0.34902, 0.],
[0., 0.309804, 0.],
[0., 0.270588, 0.],
[0., 0.231373, 0.],
[0., 0.196078, 0.],
[0., 0.156863, 0.],
[0., 0.117647, 0.],
[0., 0.0784314, 0.],
[0., 0.0392157, 0.],
[0., 0., 0.],
[0., 0., 0.0313725],
[0., 0., 0.0627451],
[0., 0., 0.0941176],
[0., 0., 0.12549],
[0., 0., 0.160784],
[0., 0., 0.192157],
[0., 0., 0.223529],
[0., 0., 0.254902],
[0., 0., 0.290196],
[0., 0., 0.321569],
[0., 0., 0.352941],
[0., 0., 0.384314],
[0., 0., 0.415686],
[0., 0., 0.45098],
[0., 0., 0.482353],
[0., 0., 0.513725],
[0., 0., 0.545098],
[0., 0., 0.580392],
[0., 0., 0.611765],
[0., 0., 0.643137],
[0., 0., 0.67451],
[0., 0., 0.705882],
[0., 0., 0.741176],
[0., 0., 0.772549],
[0., 0., 0.803922],
[0., 0., 0.835294],
[0., 0., 0.870588],
[0., 0., 0.901961],
[0., 0., 0.933333],
[0., 0., 0.964706],
[0., 0., 1.],
[0., 0., 0.],
[0.027451, 0., 0.0196078],
[0.0588235, 0., 0.0392157],
[0.0901961, 0., 0.0588235],
[0.121569, 0., 0.0823529],
[0.152941, 0., 0.101961],
[0.184314, 0., 0.121569],
[0.215686, 0., 0.145098],
[0.247059, 0., 0.164706],
[0.27451, 0., 0.184314],
[0.305882, 0., 0.207843],
[0.337255, 0., 0.227451],
[0.368627, 0., 0.247059],
[0.4, 0., 0.270588],
[0.431373, 0., 0.290196],
[0.462745, 0., 0.309804],
[0.494118, 0., 0.333333],
[0.52549, 0., 0.34902],
[0.556863, 0., 0.368627],
[0.592157, 0., 0.384314],
[0.623529, 0., 0.403922],
[0.658824, 0., 0.423529],
[0.690196, 0., 0.439216],
[0.721569, 0., 0.458824],
[0.756863, 0., 0.47451],
[0.788235, 0., 0.494118],
[0.823529, 0., 0.513725],
[0.854902, 0., 0.529412],
[0.886275, 0., 0.54902],
[0.921569, 0., 0.564706],
[0.952941, 0., 0.584314],
[0.988235, 0., 0.603922],
[0., 0., 0.],
[0.00392157, 0., 0.],
[0.00784314, 0., 0.],
[0.0117647, 0., 0.],
[0.0156863, 0., 0.],
[0.0196078, 0., 0.],
[0.0235294, 0., 0.],
[0.027451, 0., 0.],
[0.0313725, 0., 0.],
[0.0352941, 0., 0.],
[0.0392157, 0., 0.],
[0.0431373, 0., 0.],
[0.0470588, 0., 0.],
[0.054902, 0., 0.],
[0.0627451, 0., 0.],
[0.0705882, 0., 0.],
[0.0784314, 0., 0.],
[0.0901961, 0., 0.],
[0.0980392, 0., 0.],
[0.105882, 0., 0.],
[0.113725, 0., 0.],
[0.12549, 0., 0.],
[0.133333, 0., 0.],
[0.141176, 0., 0.],
[0.14902, 0., 0.],
[0.160784, 0., 0.],
[0.172549, 0., 0.],
[0.184314, 0., 0.],
[0.196078, 0., 0.],
[0.207843, 0., 0.],
[0.219608, 0., 0.],
[0.231373, 0., 0.],
[0.247059, 0., 0.],
[0.258824, 0., 0.],
[0.270588, 0., 0.],
[0.282353, 0., 0.],
[0.294118, 0., 0.],
[0.305882, 0., 0.],
[0.321569, 0., 0.00392157],
[0.333333, 0., 0.00392157],
[0.34902, 0., 0.00392157],
[0.364706, 0., 0.00392157],
[0.380392, 0., 0.00392157],
[0.396078, 0., 0.00392157],
[0.411765, 0., 0.00392157],
[0.423529, 0., 0.00392157],
[0.439216, 0., 0.00392157],
[0.454902, 0., 0.00392157],
[0.470588, 0., 0.00392157],
[0.486275, 0., 0.00392157],
[0.501961, 0.00392157, 0.00392157],
[0.513725, 0.00392157, 0.00392157],
[0.529412, 0.00392157, 0.00392157],
[0.545098, 0.00392157, 0.00392157],
[0.560784, 0.00392157, 0.00392157],
[0.576471, 0.00392157, 0.00392157],
[0.592157, 0.00392157, 0.00392157],
[0.607843, 0.00392157, 0.00392157],
[0.623529, 0.00392157, 0.00392157],
[0.639216, 0.00392157, 0.00392157],
[0.654902, 0.00392157, 0.00392157],
[0.670588, 0.00392157, 0.00392157],
[0.686275, 0.00392157, 0.00392157],
[0.698039, 0.00392157, 0.00392157],
[0.709804, 0.00392157, 0.00392157],
[0.72549, 0.00392157, 0.00392157],
[0.737255, 0.00392157, 0.00392157],
[0.752941, 0.00392157, 0.00392157],
[0.764706, 0.00392157, 0.00392157],
[0.776471, 0.00392157, 0.00392157],
[0.792157, 0.00392157, 0.00392157],
[0.803922, 0.00392157, 0.00392157],
[0.819608, 0.00392157, 0.00392157],
[0.831373, 0.00392157, 0.00392157],
[0.847059, 0.00392157, 0.00784314],
[0.854902, 0.00392157, 0.00784314],
[0.862745, 0.00392157, 0.00784314],
[0.87451, 0.00392157, 0.00784314],
[0.882353, 0.00392157, 0.00784314],
[0.890196, 0.00392157, 0.00784314],
[0.901961, 0.00392157, 0.00784314],
[0.909804, 0.00392157, 0.00784314],
[0.917647, 0.00392157, 0.00784314],
[0.929412, 0.00392157, 0.00784314],
[0.937255, 0.00392157, 0.00784314],
[0.945098, 0.00392157, 0.00784314],
[0.956863, 0.00784314, 0.00784314],
[0.956863, 0.00784314, 0.00784314],
[0.960784, 0.00784314, 0.00784314],
[0.964706, 0.00784314, 0.00784314],
[0.968627, 0.00784314, 0.00784314],
[0.968627, 0.00784314, 0.00784314],
[0.972549, 0.00784314, 0.00784314],
[0.976471, 0.00784314, 0.00784314],
[0.980392, 0.00784314, 0.00784314],
[0.980392, 0.00784314, 0.00784314],
[0.984314, 0.00784314, 0.00784314],
[0.988235, 0.00784314, 0.00784314],
[0.992157, 0.00784314, 0.00784314],
[0.996078, 0.00392157, 0.00784314],
[0.996078, 0.00392157, 0.00784314],
[0.996078, 0.0117647, 0.00784314],
[0.996078, 0.0196078, 0.00784314],
[0.996078, 0.0313725, 0.00784314],
[0.996078, 0.0392157, 0.00784314],
[0.996078, 0.0470588, 0.00784314],
[0.996078, 0.0588235, 0.00784314],
[0.996078, 0.0666667, 0.00784314],
[0.996078, 0.0745098, 0.00784314],
[0.996078, 0.0862745, 0.00784314],
[0.996078, 0.0941176, 0.00784314],
[0.996078, 0.101961, 0.00784314],
[0.996078, 0.113725, 0.00784314],
[0.996078, 0.121569, 0.00784314],
[0.996078, 0.129412, 0.00784314],
[0.996078, 0.141176, 0.00784314],
[0.996078, 0.141176, 0.00784314],
[0.996078, 0.14902, 0.0117647],
[0.996078, 0.156863, 0.0156863],
[0.996078, 0.164706, 0.0196078],
[1., 0.176471, 0.027451],
[1., 0.188235, 0.0352941],
[1., 0.2, 0.0470588],
[1., 0.211765, 0.054902],
[1., 0.227451, 0.0666667],
[1., 0.239216, 0.0784314],
[1., 0.25098, 0.0901961],
[1., 0.262745, 0.105882],
[1., 0.27451, 0.117647],
[1., 0.286275, 0.133333],
[1., 0.301961, 0.152941],
[1., 0.321569, 0.172549],
[1., 0.341176, 0.192157],
[1., 0.360784, 0.215686],
[1., 0.376471, 0.235294],
[1., 0.392157, 0.254902],
[1., 0.407843, 0.278431],
[1., 0.423529, 0.298039],
[1., 0.443137, 0.321569],
[1., 0.466667, 0.34902],
[1., 0.490196, 0.380392],
[1., 0.513725, 0.407843],
[1., 0.541176, 0.439216],
[1., 0.564706, 0.470588],
[1., 0.592157, 0.501961],
[1., 0.615686, 0.533333],
[1., 0.643137, 0.568627],
[1., 0.670588, 0.6],
[1., 0.698039, 0.635294],
[1., 0.72549, 0.670588],
[1., 0.756863, 0.705882],
[1., 0.784314, 0.741176],
[1., 0.815686, 0.776471],
[1., 0.843137, 0.811765],
[1., 0.87451, 0.85098],
[1., 0.898039, 0.878431],
[1., 0.921569, 0.909804],
[1., 0.94902, 0.937255],
[1., 0.972549, 0.968627],
[1., 1., 1.]]

test_cm = LinearSegmentedColormap.from_list(__file__, cm_data)


if __name__ == "__main__":
    import matplotlib.pyplot as plt
    import numpy as np

    try:
        from pycam02ucs.cm.viscm import viscm
        viscm(test_cm)
    except ImportError:
        print("pycam02ucs not found, falling back on simple display")
        plt.imshow(np.linspace(0, 100, 256)[None, :], aspect='auto',
                   cmap=test_cm)
    plt.show()
