def get_darkvariance(camcol, band, run=None):
    """
    data.sdss3.org/datamodel/files/BOSS_PHOTOOBJ/frames/RERUN/RUN/CAMCOL/frame.html
    """
    DARK_VAR_CCD = {(0): {'u': 9.61, 'g': 15.6025, 'r': 1.8225, 'i': 7.84,
        'z': 0.81}, (1): {'u': 12.6025, 'g': 1.44, 'r': 1.0, 'i': [5.76, 
        6.25], 'z': 1.0}, (2): {'u': 8.7025, 'g': 1.3225, 'r': 1.3225, 'i':
        4.6225, 'z': 1.0}, (3): {'u': 12.6025, 'g': 1.96, 'r': 1.3225, 'i':
        [6.25, 7.5625], 'z': [9.61, 12.6025]}, (4): {'u': 9.3025, 'g': 
        1.1025, 'r': 0.81, 'i': 7.84, 'z': [1.8225, 2.1025]}, (5): {'u': 
        7.0225, 'g': 1.8225, 'r': 0.9025, 'i': 5.0625, 'z': 1.21}}
    dark = DARK_VAR_CCD[camcol - 1][band]
    if type(dark) == float:
        return dark
    if run is None:
        raise ValueError('there is two dark-variance possibilites for ' + 
            ' *camcol* %d, *band* %s ' % (camcol - 1, band) +
            'Please, provide a *run*')
    return dark[1] if run > 1500 else dark[0]
