ppcpy.interface.picassoProc#

Classes

PicassoProc

initialize the data_cube

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

initialize the data_cube

Parameters:
  • rawdata_dict – the dict returned by readPollyRawData.readPollyRawData(filename=rawfile)

  • polly_config_dict – the configuration specific to the specific polly loadConfigs.loadPollyConfig(polly_config_file_fullname, polly_default_config_file)

  • picasso_config_dict – the general picasso config loadConfigs.loadPicassoConfig(args.picasso_config_file,picasso_default_config_file)

Notes

The polly_default_dict is not longer available as a separate variable, but is included into the polly_config_dict

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: bool = False)[source]#
Preprocessing of Lidar data. Including in the followin processes in order:

Dead time correction Background correction Range correction etc.

Returns:

  • Background corrected signal including the background per channel.

  • Range corrected signal.

  • etc.

SaturationDetect()[source]#

Saturation Detection …

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]#

Aggregate highres profiles over cloud free segments

TODO: Decide on a consistent way for doing the aggregation, do not mix mean and sum

loadMeteo()[source]#

Load meteorological data

loadAOD()[source]#

TODO: Not yet implemented!

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]#

TODO: flagTransCor = True:

Fix the GHK - Transmission correction

flagTransCor = False:

Check if it is correct to use the BG corrected signal and find a better solution. It is a bit confusing to overwrite the signal as it is called sigTCor but actually is sigBGCor Like storing a dedicated signal dict to be used throuhot the processing, the dictionary could have elements like signal (sig), background (bg), and name. which we could overwrite each time a new correction is made. And by checking the name of the signal (TCor, BGCor) you can find out which signal it is.

retrievalKlett(oc=False, nr=False)[source]#
retrievalRaman(oc=False, nr=False, collect_debug=False)[source]#
overlapCalc(collect_debug=False)[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 varing overlap functions

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

TODO: Add option to read constants from database. TODO: Find out how we prioritise raman, klett, and database retrieved LC…

attBsc_volDepol()[source]#

highres attBsc and voldepol in 2d

molecularHighres()[source]#
quasiV1()[source]#

quasiV1 retrivals and target categorisation.

quasiV2()[source]#

quasiV2 retrivals and target categorisation.

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