ppcpy.interface.picassoProc.PicassoProc#

class ppcpy.interface.picassoProc.PicassoProc(rawdata_dict, polly_config_dict, picasso_config_dict, polly_default_dict)[source]#

Bases: object

initialize the data_cube

Parameters:
counter = 0#
mdate_filename()[source]#
gf(wavelength, meth, telescope)[source]#

get flag shorthand

i.e., the following two calls are equivalent ` data_cube.flag_532_total_FR data_cube.gf(532, 'total', 'FR') `

where the pattern {wavelength}_{total|cross|parallel|rr}_{NR|FR|DFOV} from PollyNET/Pollynet_Processing_Chain#303 is obeyed

Parameters:
  • wavelength – wavelength tag

  • meth – method

  • telescope – telescope

Returns:

with bool flag

Return type:

array

mdate_infile()[source]#
check_for_correct_mshots()[source]#
filter_or_correct_false_mshots()[source]#
mdate_consistency() bool[source]#
reset_date_infile()[source]#
setChannelTags()[source]#

set the channel tags

they are stored as dictionary in ` data_cube.channel_dict `

and as list in ` data_cube.retrievals_highres['channel'] data_cube.polly_config_dict['channelTags'] `

as an array of boolean flags in ` data_cube.flags `

as flags per channel in ` data_cube.flag_355_total_FR `

Return type:

self

preprocessing(collect_debug=False)[source]#
SaturationDetect()[source]#
polarizationCaliD90()[source]#

The stuff that starts here in the matlab version PollyNET/Pollynet_Processing_Chain

cloudScreen()[source]#

PollyNET/Pollynet_Processing_Chain

cloudFreeSeg()[source]#

PollyNET/Pollynet_Processing_Chain

data_cube.clFreGrps = [
    [35,300],
    [2500,2800]
]
aggregate_profiles(var=None)[source]#
loadMeteo()[source]#
loadAOD()[source]#
calcMolecular()[source]#

calculate the molecular scattering for the cloud free periods

with the strategy of first averaging the met data and then calculating the rayleigh scattering

rayleighFit()[source]#

do the rayleigh fit

direct translation from the matlab code. There might be noticeable numerical discrepancies (especially in the residual) seemed to work ok for 532, 1064, but with issues for 355

polarizationCaliMol()[source]#
transCor()[source]#
retrievalKlett(oc=False, nr=False)[source]#
retrievalRaman(oc=False, nr=False, collect_debug=False)[source]#
overlapCalc()[source]#

estimate the overlap function

different to the matlab version, where an average over all cloud free periods is taken, it is done here per cloud free segment

overlapFixLowestBins()[source]#

the lowest bins are affected by stange near range effects

overlapCor()[source]#

the overlap correction is implemented differently to the matlab version first a 2d (time, height) correction array is constructed then it is applied. In future this will allow for time variing overlap functions

calcDepol()[source]#
estQualityMask()[source]#
Angstroem()[source]#
LidarCalibration()[source]#
attBsc_volDepol()[source]#

highres attBsc and voldepol in 2d

molecularHighres()[source]#
quasiV1()[source]#
quasiV2()[source]#
write_2_sql_db(db_path: str, parameter: str, method: str | None = None)[source]#

write LC or eta to sqlite db table parameters: - parameter (str): can be LC (Lidar-calibration-constant) or DC (Depol-calibration-constant) - method (str): ‘raman’ or ‘klett’ - db_path (str): location of the sqlite db-file