def create_dispersion_from_ascii(l1b_file, out_disp_file, disp_in_file, sounding_id=None, index_scheme=None): asc_l1b_obj = OCO_Matrix(l1b_file) if sounding_id == None: sounding_id = asc_l1b_obj.header['sounding_id'] if disp_in_file == None: raise IOError('No dispersion file specified') latitude = float(asc_l1b_obj.header['sounding_latitude'].split()[0]) sza_r = math.radians(float(asc_l1b_obj.header['sounding_solar_zenith'].split()[0])) saz_r = math.radians(float(asc_l1b_obj.header['sounding_solar_azimuth'].split()[0])) time_stamp = asc_l1b_obj.header['frame_time_stamp'] time_struct = OCO_TextUtils.convert_timestamp_to_struct(time_stamp) pixel_ranges = asc_l1b_obj.pixel_ranges() aband_data = asc_l1b_obj['Radiance'][slice(*pixel_ranges[0]), 0] disp_in_obj = OCO_Matrix(disp_in_file) dispersion_coefs = disp_in_obj[DISPERSION_ASCII_COLUMN_IDENT].transpose() create_scene_dispersion_file(sounding_id, latitude, sza_r, saz_r, time_struct, aband_data, dispersion_coefs, out_disp_file, index_scheme=index_scheme)