File size: 1,826 Bytes
bd3493c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | 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])
|