def solver_old_method():
    sys.path.append("../operations/populator/modules/")
    from load_disp_apriori import create_scene_dispersion_file
    from full_physics.oco_matrix import OcoMatrix

    latitude = lua_config.l1b.latitude(0).value
    sza_r = math.radians(lua_config.l1b.solar_zenith(0).value)
    saz_r = math.radians(lua_config.l1b.solar_azimuth(0).value)
    time_struct = lua_config.l1b.time().timetuple()
    aband_data = lua_config.l1b.radiance(0).data()
    apriori_out_file = "./tmp_disp_solve.dat"
    create_scene_dispersion_file(lua_config.sid_string, latitude, sza_r, saz_r, time_struct, aband_data, dispersion_coefs, apriori_out_file)
    result = np.transpose(OcoMatrix(apriori_out_file).data[:,1:])
    os.remove(apriori_out_file)
    return result
def solver_old_method():
    sys.path.append("../operations/populator/modules/")
    from load_disp_apriori import create_scene_dispersion_file
    from full_physics.oco_matrix import OcoMatrix

    latitude = lua_config.l1b.latitude(0).value
    sza_r = math.radians(lua_config.l1b.solar_zenith(0).value)
    saz_r = math.radians(lua_config.l1b.solar_azimuth(0).value)
    time_struct = lua_config.l1b.time().timetuple()
    aband_data = lua_config.l1b.radiance(0).data()
    apriori_out_file = "./tmp_disp_solve.dat"
    create_scene_dispersion_file(lua_config.sid_string, latitude, sza_r, saz_r,
                                 time_struct, aband_data, dispersion_coefs,
                                 apriori_out_file)
    result = np.transpose(OcoMatrix(apriori_out_file).data[:, 1:])
    os.remove(apriori_out_file)
    return result
def load_sounding_apriori(sounding_id, l1b_obj, ecmwf_obj, num_levels, apriori_out_dir, co2_apriori_db, apriori_base_id_obj=None, brdf_type_id_obj=None, gain_type_id_obj=None, windspeed_f=False, l1b_build_id=None, use_brdf_type=None):

   if l1b_obj.instrument_name == ACOS_File.GOSAT_INST_NAME and type(sounding_id) is str and sounding_id[-1] not in ACOS_File.GOSAT_POL_ORDER:
      average_name = 'Polarization'
   else:
      average_name = None

   # Get radiances per band
   radiances   = l1b_obj.get_radiance_data(sounding_id, average=average_name)

   # These return per band, so just get first one
   sounding_indexes = l1b_obj.get_sounding_indexes(sounding_id)
   
   latitude    = l1b_obj.get_sounding_info('latitude', sounding_id, average=average_name)[0]
   longitude   = l1b_obj.get_sounding_info('longitude', sounding_id, average=average_name)[0]
   time_struct = l1b_obj.get_sounding_time(sounding_id, average=average_name)[0]
   sza_r       = math.radians(l1b_obj.get_sounding_info('solar_zenith', sounding_id, average=average_name)[0])
   saz_r       = math.radians(l1b_obj.get_sounding_info('solar_azimuth', sounding_id, average=average_name)[0])
   apriori_surf_type = l1b_obj.get_surface_grouping(sounding_id)

   if l1b_obj.instrument_name == ACOS_File.GOSAT_INST_NAME and gain_type_id_obj != None:
      gain_code = l1b_obj.get_sounding_info('gain', sounding_id)
      print >>gain_type_id_obj, "'%s' '%s'" % (sounding_id, gain_code)

   if use_brdf_type != None and len(use_brdf_type) > 0:
      brdf_type = use_brdf_type
   else:
      # Get the mapping of the apriori surface type to the albedo to be used
      brdf_type = APRIORI_SURF_MASK_PICKS[ apriori_surf_type ]

   if brdf_type == None:
      raise LookupError('Could not determine brdf type from surface mask')

   if brdf_type_id_obj != None:
      print >>brdf_type_id_obj, "%s %s" % (sounding_id, brdf_type)

   apriori_map_value = create_static_apriori_files(sounding_id, latitude, longitude, time_struct, num_levels, apriori_surf_type, apriori_out_dir, co2_apriori_db)

   if apriori_base_id_obj != None:
      print >>apriori_base_id_obj, "%s %s" % (sounding_id, apriori_map_value)

   if brdf_type == LAMBERTIAN:
      # Create albedo apriori from radiances
      create_sounding_albedo_apriori_from_radiance(sounding_id, radiances, sza_r, l1b_obj.instrument_name, apriori_out_dir)
   elif brdf_type == COXMUNK:
      # Create windspeed file
     ws_u_val = ecmwf_obj[WINDSPEED_U_DATASET][sounding_indexes[0],:,sounding_indexes[1]]
     ws_v_val = ecmwf_obj[WINDSPEED_V_DATASET][sounding_indexes[0],:,sounding_indexes[1]]
     if len(ws_u_val.shape) > 1:
        ws_u_val = numpy.average(ws_u_val, 1)
        ws_v_val = numpy.average(ws_v_val, 1)
     ecmwf_ws_values = (ws_u_val, ws_v_val)

     create_windspeed_apriori_from_ecmwf(sounding_id, ecmwf_ws_values, apriori_out_dir, windspeed_f)
         
   else:
      raise Exception("Unknown brdf_type: %s for sounding %s" % (brdf_type, sounding_id))

   if l1b_obj.instrument_name == ACOS_File.GOSAT_INST_NAME:
      dispersion_coefs = l1b_obj.get_sounding_info('dispersion', sounding_id, average=average_name)

      dispersion_ap_file = os.path.join(apriori_out_dir, DISPERSION_FILE_TMPL % sounding_id)

      create_scene_dispersion_file(sounding_id, latitude, sza_r, saz_r, time_struct, radiances[0], dispersion_coefs, dispersion_ap_file, l1b_build_id)