Wind direction checks L0 fluxes (IRGA75, 2004-2017, 2019)

Wind direction checks L0 fluxes (IRGA75, 2004-2017, 2019)#

from datetime import datetime
from diive.pkgs.corrections.winddiroffset import WindDirOffset
from diive.core.plotting.heatmap_datetime import HeatmapDateTime
from diive.core.io.files import load_parquet
SOURCEFILE = r"12_OPENLAG_EDDYPRO_FLUXNET_OUTPUT_IRGA75_2004-2017_2019.parquet"
df = load_parquet(filepath=SOURCEFILE)
df
Loaded .parquet file 12_OPENLAG_EDDYPRO_FLUXNET_OUTPUT_IRGA75_2004-2017_2019.parquet (0.420 seconds).
    --> Detected time resolution of <30 * Minutes> / 30min 
AIR_CP AIR_DENSITY AIR_MV AIR_RHO_CP AOA_METHOD AXES_ROTATION_METHOD BADM_HEIGHTC BADM_INSTPAIR_EASTWARD_SEP_GA_CH4 BADM_INSTPAIR_EASTWARD_SEP_GA_CO2 BADM_INSTPAIR_EASTWARD_SEP_GA_H2O BADM_INSTPAIR_EASTWARD_SEP_GA_NONE BADM_INSTPAIR_HEIGHT_SEP_GA_CH4 BADM_INSTPAIR_HEIGHT_SEP_GA_CO2 BADM_INSTPAIR_HEIGHT_SEP_GA_H2O BADM_INSTPAIR_HEIGHT_SEP_GA_NONE ... W_T_SONIC_COV_IBROM_N0004 W_T_SONIC_COV_IBROM_N0008 W_T_SONIC_COV_IBROM_N0016 W_T_SONIC_COV_IBROM_N0032 W_T_SONIC_COV_IBROM_N0065 W_T_SONIC_COV_IBROM_N0133 W_T_SONIC_COV_IBROM_N0277 W_T_SONIC_COV_IBROM_N0614 W_T_SONIC_COV_IBROM_N1626 W_UNROT W_U_COV W_VM97_TEST W_ZCD ZL ZL_UNCORR
TIMESTAMP_MIDDLE
2004-03-30 14:15:00 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2004-03-30 14:45:00 1005.42 1.12844 0.025668 1134.55 0.0 1.0 37.0 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN -0.227060 -0.209191 800000001.0 14.0 -1.260300 -1.311810
2004-03-30 15:15:00 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2004-03-30 15:45:00 1005.43 1.12663 0.025709 1132.74 0.0 1.0 37.0 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN -0.063026 0.002830 800000001.0 39.0 -0.350350 -0.361224
2004-03-30 16:15:00 1005.43 1.12587 0.025726 1131.98 0.0 1.0 37.0 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN -0.028456 -0.034904 800000000.0 76.0 -0.295733 -0.304238
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
2019-03-20 16:45:00 1005.38 1.13522 0.025515 1141.33 0.0 1.0 37.0 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.383872 -0.350438 800000000.0 20.0 -0.143543 -0.147249
2019-03-20 17:15:00 1005.38 1.13469 0.025527 1140.80 0.0 1.0 37.0 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.431124 -0.339284 800000000.0 13.0 -0.120186 -0.122775
2019-03-20 17:45:00 1005.39 1.13422 0.025537 1140.33 0.0 1.0 37.0 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.197926 -0.251053 800010000.0 17.0 -0.029753 -0.030451
2019-03-20 18:15:00 1005.39 1.13262 0.025573 1138.73 0.0 1.0 37.0 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN -0.061639 -0.101834 800000000.0 29.0 0.088462 0.089222
2019-03-20 18:45:00 1005.40 1.13146 0.025599 1137.57 0.0 1.0 37.0 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN -0.079800 -0.104907 800000000.0 39.0 0.074985 0.075608

262474 rows × 494 columns

col = 'WD'
wd = df[col].copy()

# Prepare input data
wd = wd.loc[(wd.index.year <= 2017) | (wd.index.year == 2019)]
wd = wd.dropna()

wds = WindDirOffset(winddir=wd, offset_start=-50, offset_end=50, hist_ref_years=[2016, 2017], hist_n_bins=360)
yearlyoffsets_df = wds.get_yearly_offsets()
print(yearlyoffsets_df)
print(wd)
# HeatmapDateTime(series=wd).show()

# s_corrected = wds.get_corrected_wind_directions()
# print(s_corrected)
# HeatmapDateTime(series=s_corrected).show()
Working on year 2004 ...
Working on year 2005 ...
Working on year 2006 ...
Working on year 2007 ...
Working on year 2008 ...
Working on year 2009 ...
Working on year 2010 ...
Working on year 2011 ...
Working on year 2012 ...
Working on year 2013 ...
Working on year 2014 ...
Working on year 2015 ...
Working on year 2016 ...
Working on year 2017 ...
Working on year 2019 ...
      YEAR  OFFSET
0   2004.0     1.0
1   2005.0     1.0
2   2006.0     1.0
3   2007.0     1.0
4   2008.0     1.0
5   2009.0    -1.0
6   2010.0     2.0
7   2011.0     1.0
8   2012.0     2.0
9   2013.0     3.0
10  2014.0     1.0
11  2015.0     0.0
12  2016.0     0.0
13  2017.0     0.0
14  2019.0     1.0
TIMESTAMP_MIDDLE
2004-03-30 14:45:00    140.2270
2004-03-30 15:45:00    105.0050
2004-03-30 16:15:00    126.4780
2004-03-30 16:45:00    159.5110
2004-03-30 17:15:00    192.6980
                         ...   
2019-03-20 16:45:00    113.2270
2019-03-20 17:15:00    110.5470
2019-03-20 17:45:00    101.2380
2019-03-20 18:15:00     83.3696
2019-03-20 18:45:00     85.8130
Name: WD, Length: 237182, dtype: float64
yearlyoffsets_df
YEAR OFFSET
0 2004.0 1.0
1 2005.0 1.0
2 2006.0 1.0
3 2007.0 1.0
4 2008.0 1.0
5 2009.0 -1.0
6 2010.0 2.0
7 2011.0 1.0
8 2012.0 2.0
9 2013.0 3.0
10 2014.0 1.0
11 2015.0 0.0
12 2016.0 0.0
13 2017.0 0.0
14 2019.0 1.0

End of notebook.#

dt_string = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print(f"Finished. {dt_string}")
Finished. 2025-07-21 16:58:27