Skip to content

Commit d2bfac9

Browse files
Merge pull request #362 from juanchossn/dev
Added Pitarch et al. 2025 BRDF correction scheme [beta test]
2 parents 940aaca + 6cd29e7 commit d2bfac9

15 files changed

+66
-15
lines changed

Config/sample_DALEC.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@
112112
"bL2BRDF": 0,
113113
"bL2BRDF_fQ": 0,
114114
"bL2BRDF_IOP": 0,
115+
"bL2BRDF_O23": 0,
115116
"bL2WeightMODISA": 1,
116117
"bL2WeightSentinel3A": 0,
117118
"bL2WeightVIIRSN": 0,

Config/sample_DALEC.hdr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
"nadir": "40",
3434
"rho_correction": "M99",
3535
"NIR_residual_correction": "R06",
36-
"BRDF_correction": "NoBRDF",
36+
"BRDF_correction": "noBRDF",
3737
"comments": "! HyperInSPACE vers = 1.2.14\n! HyperInSPACE Config = sample_DALEC.cfg\n! Rotator Home Angle = 0.0\n! Rotator Delay = 2.0\n! Pitch/Roll Filter = On\n! Max Pitch/Roll = 5.0\n! Rotator Min/Max Filter = Off\n! Rotator Min = -40.0\n! Rotator Max = 40.0\n! Rel Azimuth Filter = On\n! Rel Azimuth Min = 87.0\n! Rel Azimuth Max = 138.0\n! Deglitch Filter = Off\n! ES Dark Window = 11\n! ES Light Window = 5\n! ES Dark Sigma = 3.2\n! ES Light Sigma = 2.3\n! LI Dark Window = 11\n! LI Light Window = 5\n! LI Dark Sigma = 3.3\n! LI Light Sigma = 3.0\n! LT Dark Window = 11\n! LT Light Window = 13\n! LT Dark Sigma = 3.2\n! LT Light Sigma = 2.7\n! FRM Pathway = Factory_Calibration\n! Thermal Source = Internal_Thermistor\n! Default Salt = 35.0\n! Default SST = 26.0\n! Default AOD = 0.2\n! Default Wind = 5.0\n! Default AirTemp = 26.0\n! Wavelength Interp Int = 3.3\n! Max Wind = 10.0\n! Min SZA = 20.0\n! Max SZA = 60.0\n! Spectral Filter = On\n! Filter Sigma Es = 5.0\n! Filter Sigma Li = 8.0\n! Filter Sigma Lt = 3.0\n! Meteorological Filter = On\n! Cloud Flag = 0.05\n! Es Flag = 2.0\n! Dawn/Dusk Flag = 1.0\n! Rain/Humidity Flag = 1.095\n! Ensemble Interval = 300\n! Percent Lt Filter = On\n! Percent Light = 10.0\n! Remove Negatives = On",
3838
"other_comments": "!\n! Raw data extracted from first daily file around time of station 1, 202405202025 for purpose of sample data for HyperCP.\n!",
3939
"missing": -9999,

Config/sample_SEABIRD_SOLARTRACKER.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,7 @@
182182
"bL2BRDF": 0,
183183
"bL2BRDF_fQ": 0,
184184
"bL2BRDF_IOP": 0,
185+
"bL2BRDF_O23": 0,
185186
"bL2WeightMODISA": 0,
186187
"bL2WeightSentinel3A": 0,
187188
"bL2WeightVIIRSN": 0,
@@ -197,7 +198,6 @@
197198
"seaBASSHeaderFileName": "sample_SEABIRD_SOLARTRACKER.hdr",
198199
"bL2SaveSeaBASS": 1,
199200
"bL2WriteReport": 1,
200-
"bL2filterMetFlags": 0,
201201
"bL2PlotProd": 0,
202202
"bL2Prodoc3m": 0,
203203
"bL2Prodkd490": 0,

Config/sample_SEABIRD_SOLARTRACKER.hdr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
"nadir": "40",
3434
"rho_correction": "Z17",
3535
"NIR_residual_correction": "MA95",
36-
"BRDF_correction": "NoBRDF",
36+
"BRDF_correction": "noBRDF",
3737
"comments": "! HyperInSPACE vers = 1.2.14\n! HyperInSPACE Config = sample_SEABIRD_SOLARTRACKER.cfg\n! Rotator Home Angle = 0.0\n! Rotator Delay = 2.0\n! Pitch/Roll Filter = On\n! Max Pitch/Roll = 5.0\n! Rotator Min/Max Filter = On\n! Rotator Min = -20.0\n! Rotator Max = 45.0\n! Rel Azimuth Filter = On\n! Rel Azimuth Min = 90.0\n! Rel Azimuth Max = 135.0\n! Deglitch Filter = On\n! ES Dark Window = 11\n! ES Light Window = 5\n! ES Dark Sigma = 3.2\n! ES Light Sigma = 2.3\n! LI Dark Window = 11\n! LI Light Window = 5\n! LI Dark Sigma = 3.3\n! LI Light Sigma = 3.0\n! LT Dark Window = 11\n! LT Light Window = 13\n! LT Dark Sigma = 3.2\n! LT Light Sigma = 2.7\n! FRM Pathway = Non-FRM_Class-based\n! Thermal Source = Internal_Thermistor\n! Default Salt = 35.0\n! Default SST = 26.0\n! Default AOD = 0.2\n! Default Wind = 5.0\n! Default AirTemp = 26.0\n! Wavelength Interp Int = 3.3\n! Max Wind = 10.0\n! Min SZA = 20.0\n! Max SZA = 60.0\n! Spectral Filter = On\n! Filter Sigma Es = 5.0\n! Filter Sigma Li = 8.0\n! Filter Sigma Lt = 3.0\n! Meteorological Filter = On\n! Cloud Flag = 1.0\n! Es Flag = 2.0\n! Dawn/Dusk Flag = 1.0\n! Rain/Humidity Flag = 1.095\n! Ensemble Interval = 300\n! Percent Lt Filter = On\n! Percent Light = 10.0\n! Remove Negatives = On",
3838
"other_comments": "!\n! NASA FSG SolarTracker aboard the RV Onnuri, South Korean waters\n! Combined ancillary data from ship data and field logs on the RV Onnuri\n! Station names are NASA FSG conventions and do not agree with KIOST, UNH, UMass, etc.\n! \n! Home angle: 0, Min/Max Az: -20/45, Height: ~ 8-9 m\n!",
3939
"missing": -9999,

Config/sample_SEABIRD_pySAS.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@
170170
"bL2BRDF": 0,
171171
"bL2BRDF_fQ": 0,
172172
"bL2BRDF_IOP": 0,
173+
"bL2BRDF_O23": 0,
173174
"bL2WeightMODISA": 1,
174175
"bL2WeightSentinel3A": 0,
175176
"bL2WeightVIIRSN": 0,

Config/sample_SEABIRD_pySAS.hdr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
"nadir": "40",
3434
"rho_correction": "M99",
3535
"NIR_residual_correction": "R06",
36-
"BRDF_correction": "NoBRDF",
36+
"BRDF_correction": "noBRDF",
3737
"comments": "! HyperInSPACE vers = 1.2.14\n! HyperInSPACE Config = sample_SEABIRD_pySAS.cfg\n! Rotator Home Angle = 0.0\n! Rotator Delay = 2.0\n! Pitch/Roll Filter = On\n! Max Pitch/Roll = 5.0\n! Rotator Min/Max Filter = On\n! Rotator Min = -126.0\n! Rotator Max = 42.0\n! Rel Azimuth Filter = On\n! Rel Azimuth Min = 87.0\n! Rel Azimuth Max = 138.0\n! Deglitch Filter = On\n! ES Dark Window = 11\n! ES Light Window = 5\n! ES Dark Sigma = 3.2\n! ES Light Sigma = 2.5\n! LI Dark Window = 11\n! LI Light Window = 5\n! LI Dark Sigma = 3.0\n! LI Light Sigma = 2.9\n! LT Dark Window = 11\n! LT Light Window = 5\n! LT Dark Sigma = 3.5\n! LT Light Sigma = 2.9\n! FRM Pathway = FRM-Full-Characterization\n! Thermal Source = Internal_Thermistor\n! Default Salt = 38.0\n! Default SST = 28.0\n! Default AOD = 0.2\n! Default Wind = 5.0\n! Default AirTemp = 26.0\n! Wavelength Interp Int = 3.3\n! Max Wind = 10.0\n! Min SZA = 20.0\n! Max SZA = 60.0\n! Spectral Filter = On\n! Filter Sigma Es = 5.0\n! Filter Sigma Li = 8.0\n! Filter Sigma Lt = 3.0\n! Meteorological Filter = On\n! Cloud Flag = 1.0\n! Es Flag = 2.0\n! Dawn/Dusk Flag = 1.0\n! Rain/Humidity Flag = 1.095\n! Ensemble Interval = 300\n! Percent Lt Filter = On\n! Percent Light = 10.0\n! Remove Negatives = On",
3838
"other_comments": "!\n! COMMENTS\n!\n! FRM4SOC-2 Field InterComparison Experiment (FICE)\n! July 11 - 21, 2022\n! Acqua Alta Oceanographic Tower (AAOT), CNR-ISMAR\n!\n! Ancillary data from: % https://www.comune.venezia.it/content/3-piattaforma-ISMAR-CNR\n! and field notes. relAz refers to target relative azimuth in pySAS.\n!\n! Home",
3939
"missing": -9999,

Config/sample_TRIOS_NOTRACKER.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@
142142
"bL2BRDF": 1,
143143
"bL2BRDF_fQ": 0,
144144
"bL2BRDF_IOP": 1,
145+
"bL2BRDF_O23": 0,
145146
"bL2WeightMODISA": 1,
146147
"bL2WeightSentinel3A": 0,
147148
"bL2WeightVIIRSN": 0,

Source/ConfigFile.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,7 @@ def createDefaultConfig(fileName, new=1):
160160
ConfigFile.settings["bL2BRDF"] = 0
161161
ConfigFile.settings["bL2BRDF_fQ"] = 0
162162
ConfigFile.settings["bL2BRDF_IOP"] = 0
163+
ConfigFile.settings["bL2BRDF_O23"] = 0
163164

164165
ConfigFile.settings["bL2WeightMODISA"] = 0
165166
ConfigFile.settings["bL2WeightSentinel3A"] = 0

Source/ConfigWindow.py

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -525,6 +525,11 @@ def initUI(self):
525525
if int(ConfigFile.settings["bL2BRDF_IOP"]) == 1:
526526
self.l2BRDF_IOPCheckBox.setChecked(True)
527527

528+
self.l2BRDF_O23Label = QtWidgets.QLabel("Pitarch IOP [beta]", self)
529+
self.l2BRDF_O23CheckBox = QtWidgets.QCheckBox("", self)
530+
if int(ConfigFile.settings["bL2BRDF_O23"]) == 1:
531+
self.l2BRDF_O23CheckBox.setChecked(True)
532+
528533
self.l2BRDFCheckBoxUpdate()
529534

530535

@@ -605,6 +610,7 @@ def initUI(self):
605610
self.l2BRDFCheckBox.clicked.connect(self.l2BRDFCheckBoxUpdate)
606611
self.l2BRDF_fQCheckBox.clicked.connect(self.l2BRDF_fQCheckBoxUpdate)
607612
self.l2BRDF_IOPCheckBox.clicked.connect(self.l2BRDF_IOPCheckBoxUpdate)
613+
self.l2BRDF_O23CheckBox.clicked.connect(self.l2BRDF_O23CheckBoxUpdate)
608614

609615
self.l2OCproducts = QtWidgets.QPushButton("Derived L2 Ocean Color Products", self)
610616
self.l2OCproducts.clicked.connect(self.l2OCproductsButtonPressed)
@@ -987,6 +993,8 @@ def initUI(self):
987993
BRDFHBox2.addWidget(self.l2BRDF_fQCheckBox)
988994
BRDFHBox2.addWidget(self.l2BRDF_IOPLabel)
989995
BRDFHBox2.addWidget(self.l2BRDF_IOPCheckBox)
996+
BRDFHBox2.addWidget(self.l2BRDF_O23Label)
997+
BRDFHBox2.addWidget(self.l2BRDF_O23CheckBox)
990998
BRDFVBox.addLayout(BRDFHBox2)
991999
VBox4.addLayout(BRDFVBox)
9921000

@@ -1639,16 +1647,22 @@ def l2BRDFCheckBoxUpdate(self):
16391647
self.l2BRDF_fQLabel.setDisabled(disabled)
16401648
self.l2BRDF_IOPCheckBox.setDisabled(disabled)
16411649
self.l2BRDF_IOPLabel.setDisabled(disabled)
1650+
self.l2BRDF_O23CheckBox.setDisabled(disabled)
1651+
self.l2BRDF_O23Label.setDisabled(disabled)
16421652

16431653
if disabled:
16441654
ConfigFile.settings["bL2BRDF"] = 0
16451655
ConfigFile.settings["bL2BRDF_fQ"] = 0
16461656
ConfigFile.settings["bL2BRDF_IOP"] = 0
1657+
ConfigFile.settings["bL2BRDF_O23"] = 0
16471658
self.l2BRDF_fQCheckBox.setChecked(False)
16481659
self.l2BRDF_IOPCheckBox.setChecked(False)
1649-
elif ConfigFile.settings["bL2BRDF_fQ"] == 0 and ConfigFile.settings["bL2BRDF_IOP"] == 0:
1660+
self.l2BRDF_O23CheckBox.setChecked(False)
1661+
elif ConfigFile.settings["bL2BRDF_fQ"] == 0 and ConfigFile.settings["bL2BRDF_IOP"] == 0 and ConfigFile.settings["bL2BRDF_O23"] == 0:
16501662
ConfigFile.settings["bL2BRDF_IOP"] = 1
1663+
self.l2BRDF_fQCheckBox.setChecked(False)
16511664
self.l2BRDF_IOPCheckBox.setChecked(True)
1665+
self.l2BRDF_O23CheckBox.setChecked(False)
16521666

16531667

16541668
# Make BRDF type exclusive so that it is clear what is written to SeaBASS output
@@ -1658,20 +1672,42 @@ def l2BRDF_fQCheckBoxUpdate(self):
16581672
disabled = (not self.l2BRDF_fQCheckBox.isChecked())
16591673
if disabled:
16601674
ConfigFile.settings["bL2BRDF_fQ"] = 0
1675+
self.l2BRDF_fQCheckBox.setChecked(False)
16611676
else:
16621677
ConfigFile.settings["bL2BRDF_fQ"] = 1
16631678
ConfigFile.settings["bL2BRDF_IOP"] = 0
1679+
ConfigFile.settings["bL2BRDF_O23"] = 0
1680+
self.l2BRDF_fQCheckBox.setChecked(True)
16641681
self.l2BRDF_IOPCheckBox.setChecked(False)
1682+
self.l2BRDF_O23CheckBox.setChecked(False)
16651683

16661684
def l2BRDF_IOPCheckBoxUpdate(self):
16671685
print("ConfigWindow - l2BRDF_IOPCheckBoxUpdate")
16681686
disabled = (not self.l2BRDF_IOPCheckBox.isChecked())
16691687
if disabled:
16701688
ConfigFile.settings["bL2BRDF_IOP"] = 0
1689+
self.l2BRDF_IOPCheckBox.setChecked(False)
16711690
else:
1691+
ConfigFile.settings["bL2BRDF_fQ"] = 0
16721692
ConfigFile.settings["bL2BRDF_IOP"] = 1
1693+
ConfigFile.settings["bL2BRDF_O23"] = 0
1694+
self.l2BRDF_fQCheckBox.setChecked(False)
1695+
self.l2BRDF_IOPCheckBox.setChecked(True)
1696+
self.l2BRDF_O23CheckBox.setChecked(False)
1697+
1698+
def l2BRDF_O23CheckBoxUpdate(self):
1699+
print("ConfigWindow - l2BRDF_O23CheckBoxUpdate")
1700+
disabled = (not self.l2BRDF_O23CheckBox.isChecked())
1701+
if disabled:
1702+
ConfigFile.settings["bL2BRDF_O23"] = 0
1703+
self.l2BRDF_O23CheckBox.setChecked(False)
1704+
else:
16731705
ConfigFile.settings["bL2BRDF_fQ"] = 0
1706+
ConfigFile.settings["bL2BRDF_IOP"] = 0
1707+
ConfigFile.settings["bL2BRDF_O23"] = 1
16741708
self.l2BRDF_fQCheckBox.setChecked(False)
1709+
self.l2BRDF_IOPCheckBox.setChecked(False)
1710+
self.l2BRDF_O23CheckBox.setChecked(True)
16751711

16761712
def l2OCproductsButtonPressed(self):
16771713
print("OC Products Dialogue")
@@ -1808,6 +1844,7 @@ def refreshConfig(self):
18081844
ConfigFile.settings["bL2BRDF"] = int(self.l2BRDFCheckBox.isChecked())
18091845
ConfigFile.settings["bL2BRDF_fQ"] = int(self.l2BRDF_fQCheckBox.isChecked())
18101846
ConfigFile.settings["bL2BRDF_IOP"] = int(self.l2BRDF_IOPCheckBox.isChecked())
1847+
ConfigFile.settings["bL2BRDF_O23"] = int(self.l2BRDF_O23CheckBox.isChecked())
18111848

18121849
ConfigFile.settings["bL2WeightMODISA"] = int(self.l2WeightMODISACheckBox.isChecked())
18131850
ConfigFile.settings["bL2WeightSentinel3A"] = int(self.l2WeightSentinel3ACheckBox.isChecked())

Source/ProcessL2.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2107,9 +2107,9 @@ def processL2(root,station=None):
21072107
Utilities.writeLogFileAndPrint("Applying Lee et al. 2011 BRDF correction to Rrs and nLw")
21082108
ProcessL2BRDF.procBRDF(node, BRDF_option='L11')
21092109

2110-
# if ConfigFile.settings['bL2BRDF_OXX']:
2111-
# Utilities.writeLogFileAndPrint("Applying OXX BRDF correction to Rrs and nLw"
2112-
# ProcessL2BRDF.procBRDF(node, BRDF_option='OXX')
2110+
if ConfigFile.settings['bL2BRDF_O23']:
2111+
Utilities.writeLogFileAndPrint("Applying Pitarch et al. 2025 BRDF correction to Rrs and nLw")
2112+
ProcessL2BRDF.procBRDF(node, BRDF_option='O23')
21132113

21142114

21152115
# Strip out L1AQC data

0 commit comments

Comments
 (0)