Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 17 additions & 14 deletions ppcpy/config/polly_global_config.json
Original file line number Diff line number Diff line change
Expand Up @@ -111,20 +111,23 @@
"rel_std_dminus_1064": 0.2,
"depol_cal_segmentLen_1064": 40,
"depol_cal_smoothWin_1064": 8,
"isFR": [1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0],
"isNR": [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0],
"isDFOV": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
"is532nm": [0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0],
"isRR": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
"is355nm": [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0],
"is1064nm": [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
"isTot": [1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0],
"isCross": [0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0],
"isParallel": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
"is387nm": [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0],
"is407nm": [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0],
"is607nm": [0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0],
"is1058nm": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
"isFR": [1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0],
"isNR": [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0],
"isRR": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
"isTot": [1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0],
"isCross": [0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0],
"isParallel": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
"is355nm": [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0],
"is387nm": [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0],
"is407nm": [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0],
"is532nm": [0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0],
"is607nm": [0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0],
"is1064nm": [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
"isDFOV": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
"is460nm": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
"is353nm": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
"is530nm": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
"is1058nm": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
"minSNR_4_sigNorm": [],
"channelTags": [],
"channelTag": ["FR-total-355 nm", "FR-cross-355 nm", "FR-387 nm", "FR-407 nm", "FR-total-532 nm", "FR-cross-532 nm", "FR-607 nm", "FR-total-1064 nm", "NR-total-532 nm", "NR-607 nm", "NR-total-355 nm", "NR-387 nm", "unknown"],
Expand Down
138 changes: 78 additions & 60 deletions ppcpy/interface/picassoProc.py
Original file line number Diff line number Diff line change
Expand Up @@ -203,75 +203,93 @@ def setChannelTags(self):
```
data_cube.flag_355_total_FR
```

Returns
-------
self

"""
ChannelTags = pollyChannelTags.pollyChannelTags(
## Construct channel flags
channelTags = pollyChannelTags.pollyChannelTags(
self.polly_config_dict['channelTag'], # TODO key: channelTags vs channelTag???
flagFarRangeChannel=self.polly_config_dict['isFR'],
flagNearRangeChannel=self.polly_config_dict['isNR'],
flagRotRamanChannel=self.polly_config_dict['isRR'],
flagTotalChannel=self.polly_config_dict['isTot'],
flagCrossChannel=self.polly_config_dict['isCross'],
flagParallelChannel=self.polly_config_dict['isParallel'],
flag355nmChannel=self.polly_config_dict['is355nm'],
flag387nmChannel=self.polly_config_dict['is387nm'],
flag407nmChannel=self.polly_config_dict['is407nm'],
flag532nmChannel=self.polly_config_dict['is532nm'],
flag607nmChannel=self.polly_config_dict['is607nm'],
flag1064nmChannel=self.polly_config_dict['is1064nm'],
flagDFOVChannel=self.polly_config_dict['isDFOV'],
flagFarRange=self.polly_config_dict['isFR'],
flagNearRange=self.polly_config_dict['isNR'],
flagRotRaman=self.polly_config_dict['isRR'],
flagTotal=self.polly_config_dict['isTot'],
flagCross=self.polly_config_dict['isCross'],
flagParallel=self.polly_config_dict['isParallel'],
flag355nm=self.polly_config_dict['is355nm'],
flag387nm=self.polly_config_dict['is387nm'],
flag407nm=self.polly_config_dict['is407nm'],
flag532nm=self.polly_config_dict['is532nm'],
flag607nm=self.polly_config_dict['is607nm'],
flag1064nm=self.polly_config_dict['is1064nm'],
flagDFOV=self.polly_config_dict['isDFOV'],
flag460nm=self.polly_config_dict['is460nm'],
flag353nm=self.polly_config_dict['is353nm'],
flag530nm=self.polly_config_dict['is530nm'],
flag1058nm=self.polly_config_dict['is1058nm'],
)

ChannelTags, self.polly_config_dict = pollyChannelTags.polly_config_channel_corrections(chTagsOut_ls=ChannelTags, polly_config_dict=self.polly_config_dict)

self.retrievals_highres['channel'] = ChannelTags
self.polly_config_dict['channelTags'] = ChannelTags
self.channel_dict = {i: item for i, item in enumerate(ChannelTags)}
## Remove "none" channels
channelTags, self.polly_config_dict = pollyChannelTags.polly_config_channel_corrections(
chTagsOut_ls=channelTags,
polly_config_dict=self.polly_config_dict
)
self.retrievals_highres['channel'] = channelTags
self.polly_config_dict['channelTags'] = channelTags
self.channel_dict = {i: item for i, item in enumerate(channelTags)}
logging.info(f'ChannelTags: {channelTags}')

ChannelFlags = pollyChannelTags.pollyChannelflags(
## Construct channel flags
channelFlags = pollyChannelTags.pollyChannelFlags(
channel_dict_length=len(self.channel_dict),
flagFarRangeChannel=self.polly_config_dict['isFR'],
flagNearRangeChannel=self.polly_config_dict['isNR'],
flagRotRamanChannel=self.polly_config_dict['isRR'],
flagTotalChannel=self.polly_config_dict['isTot'],
flagCrossChannel=self.polly_config_dict['isCross'],
flagParallelChannel=self.polly_config_dict['isParallel'],
flag355nmChannel=self.polly_config_dict['is355nm'],
flag387nmChannel=self.polly_config_dict['is387nm'],
flag407nmChannel=self.polly_config_dict['is407nm'],
flag532nmChannel=self.polly_config_dict['is532nm'],
flag607nmChannel=self.polly_config_dict['is607nm'],
flag1064nmChannel=self.polly_config_dict['is1064nm'],
flagDFOVChannel=self.polly_config_dict['isDFOV'],
flagFarRange=self.polly_config_dict['isFR'],
flagNearRange=self.polly_config_dict['isNR'],
flagRotRaman=self.polly_config_dict['isRR'],
flagTotal=self.polly_config_dict['isTot'],
flagCross=self.polly_config_dict['isCross'],
flagParallel=self.polly_config_dict['isParallel'],
flag355nm=self.polly_config_dict['is355nm'],
flag387nm=self.polly_config_dict['is387nm'],
flag407nm=self.polly_config_dict['is407nm'],
flag532nm=self.polly_config_dict['is532nm'],
flag607nm=self.polly_config_dict['is607nm'],
flag1064nm=self.polly_config_dict['is1064nm'],
flagDFOV=self.polly_config_dict['isDFOV'],
flag460nm=self.polly_config_dict['is460nm'],
flag353nm=self.polly_config_dict['is353nm'],
flag530nm=self.polly_config_dict['is530nm'],
flag1058nm=self.polly_config_dict['is1058nm'],
)

self.flags = ChannelFlags
self.flag_355_total_FR = ChannelFlags[0]
self.flag_355_cross_FR = ChannelFlags[1]
self.flag_355_parallel_FR = ChannelFlags[2]
self.flag_355_total_NR = ChannelFlags[3]
self.flag_387_total_FR = ChannelFlags[4]
self.flag_387_total_NR = ChannelFlags[5]
self.flag_407_total_FR = ChannelFlags[6]
self.flag_407_total_NR = ChannelFlags[7]
self.flag_532_total_FR = ChannelFlags[8]
self.flag_532_cross_FR = ChannelFlags[9]
self.flag_532_parallel_FR = ChannelFlags[10]
self.flag_532_total_NR = ChannelFlags[11]
self.flag_532_cross_DFOV = ChannelFlags[12]
self.flag_532_rr_FR = ChannelFlags[13]
self.flag_607_total_FR = ChannelFlags[14]
self.flag_607_total_NR = ChannelFlags[15]
self.flag_1058_total_FR = ChannelFlags[16]
self.flag_1064_total_FR = ChannelFlags[17]
self.flag_1064_cross_FR = ChannelFlags[18]
self.flag_1064_total_NR = ChannelFlags[19]

return self
## Store channel flags
self.flags = list(channelFlags.values())
self.flag_353_total_FR = channelFlags['far-range total 353 nm']
self.flag_355_total_FR = channelFlags['far-range total 355 nm']
self.flag_355_cross_FR = channelFlags['far-range cross 355 nm']
self.flag_355_parallel_FR = channelFlags['far-range parallel 355 nm']
self.flag_355_total_NR = channelFlags['near-range total 355 nm']
self.flag_387_total_FR = channelFlags['far-range 387 nm']
self.flag_387_total_NR = channelFlags['near-range 387 nm']
self.flag_407_total_FR = channelFlags['far-range 407 nm']
self.flag_407_total_NR = channelFlags['near-range 407 nm']
self.flag_460_total_FR = channelFlags['far-range 460 nm']
self.flag_530_total_FR = channelFlags['far-range total 530 nm']
self.flag_532_total_FR = channelFlags['far-range total 532 nm']
self.flag_532_cross_FR = channelFlags['far-range cross 532 nm']
self.flag_532_parallel_FR = channelFlags['far-range parallel 532 nm']
self.flag_532_total_NR = channelFlags['near-range total 532 nm']
self.flag_532_cross_DFOV = channelFlags['near-range cross 532 nm']
self.flag_607_total_FR = channelFlags['far-range 607 nm']
self.flag_607_total_NR = channelFlags['near-range 607 nm']
self.flag_1058_total_FR = channelFlags['far-range total 1058 nm']
self.flag_1064_total_FR = channelFlags['far-range total 1064 nm']
self.flag_1064_cross_FR = channelFlags['far-range cross 1064 nm']
self.flag_1064_parallel_FR = channelFlags['far-range parallel 1064 nm']
self.flag_1064_total_NR = channelFlags['near-range total 1064 nm']
self.flag_unknown = channelFlags['unknown']

logging.debug(f"channelFlags: {channelFlags}")
if np.sum(self.flag_unknown) > 0:
logging.warning(f"Unknown channels: {np.asarray(self.retrievals_highres['channel'])[self.flag_unknown]}")


def preprocessing(self, collect_debug:bool=False):
"""Preprocessing of Lidar data.
Expand Down
2 changes: 2 additions & 0 deletions ppcpy/io/loadConfigs.py
Original file line number Diff line number Diff line change
Expand Up @@ -194,8 +194,10 @@ def loadPollyConfig(polly_config_file, polly_default_config_file):
elif isinstance(polly_default_config_file_dict[key], list) and len(polly_default_config_file_dict[key]) > 4 and len(polly_default_config_file_dict[key]) != channels:
## number of channels from the default-polly-config has to be adapted to the correct number of channels, taken from the local-polly-config
if len(polly_default_config_file_dict[key]) > channels:
logging.warning(f'length of {key} exceeds the number of channels ({len(polly_default_config_file_dict[key])} vs {channels}). Only the first {channels} values will be considered.', exc_info=True)
polly_config_dict[key] = polly_default_config_file_dict[key][:channels]
elif len(polly_default_config_file_dict[key]) < channels:
logging.warning(f'length of {key} is less than the number of channels ({len(polly_default_config_file_dict[key])} vs {channels}). The last value {polly_default_config_file_dict[key][-1]} will be used for the last {channels - len(polly_default_config_file_dict[key])} channels.')
polly_config_dict[key] = polly_default_config_file_dict[key]
last_element = polly_default_config_file_dict[key][-1]
extension_length = channels - len(polly_default_config_file_dict[key])
Expand Down
Loading