ppcpy.interface#
ppcpy.interface.picassoProc#
- 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#
- 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:
- array
with bool flag
- check_for_correct_mshots()[source]#
check if mshots are more than 1.1 * laser_prf * deltatime or smaller 0
- filter_or_correct_false_mshots()[source]#
filter or correct the mshots (currently only logging)
Todo
that might be covered via the mcps conversion
- 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 `- Returns:
- 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.
Todo
This is just a first draft for a docstring. Improve it. There is more processes and outputs of the function.
- polarizationCaliD90()[source]#
calibration with the Delta-90 method
The stuff that starts here in the matlab version PollyNET/Pollynet_Processing_Chain
- cloudFreeSeg()[source]#
cloud free profile segmentation
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
- 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
- transCor()[source]#
transmission correction
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.
- retrievalRaman(oc=False, nr=False, collect_debug=False)[source]#
apply the raman retrieval (nighttime only)
- 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
- overlapCor()[source]#
overlap correction
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
- LidarCalibration()[source]#
calculate the lidar constant
Todo
Add option to read constants from database.
Todo
Find out how we prioritise raman, klett, and database retrieved LC…