def read_crop_lookup_table(vars_dict):
    '''
    Reads in the Crop Lookup Table and returns a dictionary

    Example Returns::

        vars_dict = {
            # ... previous vars ...

            'crop_lookup_table_uri': '/path/to/crop_lookup_table_uri'
            'crop_lookup_dict': {
                'code': 'crop_name',
                ...
            }
        }
    '''
    input_dict = pygeo.get_lookup_from_csv(
        vars_dict['crop_lookup_table_uri'], 'code')

    crop_lookup_dict = {}
    for i in input_dict:
        crop_lookup_dict[i] = input_dict[i]['crop'].lower()

    # assert codes are non-negative integers?
    keys = crop_lookup_dict.keys()
    assert(all(map(lambda x: (type(x) is int), keys)))
    assert(all(map(lambda x: (x >= 0), keys)))

    vars_dict['crop_lookup_dict'] = convert_dict_to_unicode(crop_lookup_dict)
    return vars_dict
def read_percentile_yield_tables(vars_dict):
    '''
    Reads in the Percentile Yield Table and returns a dictionary

    Example Returns::

        vars_dict = {
            # ... previous vars ...

            'percentile_yield_tables_dir': 'path/to/percentile_yield_tables_dir/',
            'percentile_yield_dict': {
                'crop': {
                    <climate_bin>: {
                        'yield_25th': <float>,
                        'yield_50th': <float>,
                        'yield_75th': <float>,
                        'yield_95th': <float>,
                        ...
                    },
                }
                ...
            },
        }
    '''
    try:
        assert(os.path.exists(vars_dict['percentile_yield_tables_dir']))
    except:
        LOGGER.error("A filepath to the directory containing percentile yield "
                     "tables must be provided to run the percentile yield "
                     "model.")
        raise KeyError

    table_uris = _listdir(vars_dict['percentile_yield_tables_dir'])

    percentile_yield_dict = {}
    for table_uri in table_uris:
        basename = os.path.basename(table_uri)
        cropname = basename.split('_')[0].lower()
        if cropname != '':
            percentile_yield_dict[cropname] = pygeo.get_lookup_from_csv(
                table_uri, 'climate_bin')
            for c_bin in percentile_yield_dict[cropname].keys():
                del percentile_yield_dict[cropname][c_bin]['climate_bin']
                percentile_yield_dict[cropname][c_bin] = _init_empty_items(
                    percentile_yield_dict[cropname][c_bin])

            zero_bin_dict = {}
            for key in percentile_yield_dict[cropname][percentile_yield_dict[
                    cropname].keys()[0]].keys():
                zero_bin_dict[key] = ''
            percentile_yield_dict[cropname][0] = _init_empty_items(
                zero_bin_dict)

    # Add Assertion Statements?

    vars_dict['percentile_yield_dict'] = convert_dict_to_unicode(
        percentile_yield_dict)

    return vars_dict