ppcpy.interface.picassoProc#
Classes
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#
- 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
- 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.
- polarizationCaliD90()[source]#
The stuff that starts here in the matlab version 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
- 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]#
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.
- 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]#
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]#
TODO: Add option to read constants from database. TODO: Find out how we prioritise raman, klett, and database retrieved LC…
- 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