| import numpy as np |
| import torch |
| import pandas as pd |
|
|
| LATLON_SCALE_FACTOR = 360 |
| DAYS_IN_YEAR = 366 |
|
|
| DAILY_SCALE_FACTOR = { |
| "ERA5": 4, |
| "HADISD": 4, |
| "IR": 4, |
| "SOUNDER": 1, |
| "ICOADS": 1, |
| } |
|
|
| date_list = [ |
| "1979-01-01", |
| "1999-01-01", |
| "1999-01-02", |
| "2002-01-02", |
| "2007-01-01", |
| "2007-01-02", |
| "2007-01-03", |
| "2013-01-02", |
| "2014-01-01", |
| "2017-01-02", |
| "2018-01-01", |
| "2019-01-01", |
| "2020-01-02", |
| "2020-01-01", |
| "2021-01-02", |
| "2021-01-01", |
| ] |
|
|
|
|
| def generate_offsets(date_list, dates): |
| offsets = {} |
| for d in date_list: |
| try: |
| offsets[d] = np.where(dates == d)[0][0] |
| except: |
| offsets[d] = -1 |
| return offsets |
|
|
|
|
| IC_OFFSETS = generate_offsets( |
| date_list, pd.date_range("1999-01-02", "2021-12-31 18:00", freq="6H") |
| ) |
|
|
| AMSUA_OFFSETS = generate_offsets( |
| date_list, pd.date_range("2007-01-01", "2021-12-31 18:00", freq="6H") |
| ) |
|
|
| AMSUB_OFFSETS = generate_offsets( |
| date_list, pd.date_range("2007-01-01", "2021-12-31 18:00", freq="6H") |
| ) |
|
|
| ASCAT_OFFSETS = generate_offsets( |
| date_list, pd.date_range("2007-01-01", "2021-12-31", freq="6H") |
| ) |
|
|
| ATMS_OFFSETS = generate_offsets( |
| date_list, pd.date_range("2013-01-02", "2021-12-31", freq="1D") |
| ) |
|
|
| ICOADS_OFFSETS = generate_offsets( |
| date_list, pd.date_range("1999-01-01 06:00", "2021-12-31", freq="6H") |
| ) |
|
|
| IGRA_OFFSETS = generate_offsets( |
| date_list, pd.date_range("1999-01-01 00:00", "2021-12-31 18:00", freq="6H") |
| ) |
|
|
| SAT_OFFSETS = generate_offsets( |
| date_list, pd.date_range("1990-01-01 00:00", "2021-12-31 18:00", freq="6H") |
| ) |
|
|
| HADISD_OFFSETS = generate_offsets( |
| date_list, pd.date_range("1950-01-01 00:00", "2021-12-31 18:00", freq="6H") |
| ) |
|
|
|
|
| def lon_to_0_360(x): |
| return (x + 360) % 360 |
|
|
|
|
| def lat_to_m90_90(x): |
| return torch.flip(x, [-1]) |
|
|