Commit f3b69c9d authored by Willi Rath's avatar Willi Rath
Browse files

Add draft for ASCAT missing data treatment

parent d86f3767
Loading
Loading
Loading
Loading
+85 −0
Original line number Diff line number Diff line
%% Cell type:code id: tags:

``` 
import numpy as np
from pathlib import Path
import re
import xarray as xr
```

%% Cell type:code id: tags:

``` 
base_path = Path("/data/c2/TMdata/git_geomar_de_data/")
ASCAT_ref = "v1.x.x"
daily_data_path = base_path / "ASCAT" / ASCAT_ref / "data/Daily/Netcdf"
```

%% Cell type:code id: tags:

``` 
!ls -1 /data/c2/TMdata/git_geomar_de_data/ASCAT/v1.x.x/data/Daily/Netcdf/2007/03/21/
```

%% Output

    2007032100_2007032200_daily-ifremer-L3-MWF-GLO-20110531232401-01.0.nc

%% Cell type:code id: tags:

``` 
def expected_ts_for_year(year):
    first_ts = np.datetime64("{}-01-01T12:00:00".format(year))
    second_ts = np.datetime64("{}-01-02T12:00:00".format(year))
    del_t = second_ts - first_ts
    last_ts = np.datetime64("{}-01-01T12:00:00".format(year+1)) - del_t
    num_ts = (last_ts - first_ts + del_t) / del_t
    expected_ts = [first_ts + n * del_t for n in range(int(num_ts))]
    return expected_ts

assert len(expected_ts_for_year(2016)) == 366
```

%% Cell type:code id: tags:

``` 
def existing_ts_for_year(year):
    all_files = [str(fn) for fn in daily_data_path.glob("{}/??/??/*.nc".format(year))]
    raw_data_set = xr.open_mfdataset(all_files)
    existing_ts = raw_data_set.time[:]
    return existing_ts
```

%% Cell type:code id: tags:

``` 
def is_timestamp_in(time_stamp, ts_iter):
    return any(time_stamp == ts for ts in ts_iter)

assert is_timestamp_in(np.datetime64("2001-01-01T12:00:00"),
                       [np.datetime64("2001-01-01T12:00")])
assert not is_timestamp_in(np.datetime64("2001-01-01T12:00:00"),
                       [np.datetime64("2001-01-01T12:00:01")])
```

%% Cell type:code id: tags:

``` 
def are_timestamps_in(expected_ts, existing_ts):
    return list(map(lambda ts: is_timestamp_in(ts, existing_ts), expected_ts))

assert are_timestamps_in([np.datetime64("2001-01-01"), np.datetime64("2001-01-02")],
                         [np.datetime64("2001-01-01"),]) == [True, False]
```

%% Cell type:code id: tags:

``` 
expected_ts = expected_ts_for_year(2016)
existing_ts = existing_ts_for_year(2016)
print(are_timestamps_in(expected_ts, existing_ts))
```

%% Output

    [True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True]