Skip to content

Instantly share code, notes, and snippets.

View tommylees112's full-sized avatar
🐘

Tommy Lees tommylees112

🐘
  • University of Oxford
  • Oxford
View GitHub Profile
@tommylees112
tommylees112 / ella_regrid_data.py
Last active September 8, 2021 14:53
Regrid data for Ella
import xarray as xr
from pathlib import Path
from tqdm import tqdm
import xesmf as xe
def convert_to_same_grid(reference_ds: xr.Dataset, ds: xr.Dataset, method: str="nearest_s2d") -> xr.Dataset:
""" Use xEMSF package to regrid ds to the same grid as reference_ds """
assert ("lat" in reference_ds.dims) & (
"lon" in reference_ds.dims
@tommylees112
tommylees112 / spatial_plotting.py
Created September 2, 2021 14:38
Initial plotting with xarray and GeoPandas
import geopandas as gpd
import xarray as xr
from pathlib import Path
import matplotlib.pyplot as plt
def load_latlon_points(data_dir: Path) -> gpd.GeoSeries:
static = xr.open_dataset(data_dir / "camels_static.nc")
d = static[["gauge_lat", "gauge_lon"]].to_dataframe()
points = gpd.GeoSeries(
time vci
2001-10-10 24.559374350223557
2001-10-20 20.51960470075651
2001-10-31 19.518919914072242
2001-11-10 20.878032524608127
2001-11-20 24.47625265366251
2001-11-30 28.31497249158752
2001-12-10 44.594910789294936
2001-12-20 65.47588757067652
2001-12-31 81.7176422592538
conda create -n gpy --yes
conda install -c conda-forge pytorch xarray=0.16 pytorch torchvision cudatoolkit --yes
conda install -c conda-forge netcdf4 numba tqdm jupyterlab tensorboard ipython pip ruamel.yaml descartes statsmodels scikit-learn black mypy --yes
pip install gpytorch
@tommylees112
tommylees112 / initial_exploration_of_predictions.py
Last active August 25, 2021 11:18
Plot the initial results for predictions of an LSTM
from typing import Dict
import xarray as xr
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from pathlib import Path
def scatter_plot(obs: np.ndarray, sim: np.ndarray, ax = None, scatter_kwargs: Dict = {"marker": "x", "color": "C0", "alpha": 0.3}):
if ax is None:
f, ax = plt.subplots(figsize=(6, 6))
@tommylees112
tommylees112 / calculate_datetime_from_fraction_of_year.py
Last active August 23, 2021 14:44
Using the year (int) and fraction of year (float) to create datetime objects [NOTE: assumes that data is of daily frequency!]
from typing import Tuple, Any, Union, List
import pandas as pd
import datetime as dt
from pathlib import Path
import numpy as np
def find_nearest(array: Union[np.ndarray, List[float]], value: float) -> Tuple[Any, int]:
# https://stackoverflow.com/a/2566508/9940782
array = np.asarray(array)
@tommylees112
tommylees112 / open_xarray_data.py
Last active August 19, 2021 15:17
Getting started with netcdf data using xarray
# conda install -c conda-forge xarray --yes
import xarray as xr
import pandas as pd
from pathlib import Path
import matplotlib.pyplot as plt
data_dir = Path("path/to/data")
# open the data
dynamic = xr.open_dataset(data_dir / "ALL_dynamic_ds.nc")
@tommylees112
tommylees112 / napari_image_open.py
Created August 17, 2021 22:42
Open xarray image in napari
import napari
import xarray as xr
from pathlib import Path
data_dir = Path("/path/to/data")
# open data
ds = xr.open_dataset(data_dir / "data.nc")
da = ds["VARIABLE_NAME"]
@tommylees112
tommylees112 / napari_env.sh
Created August 17, 2021 22:41
create an environment for napari
conda create -n napari python=3.8 --yes
conda activate napari
conda install -c conda-forge napari xarray netcdf4 ipython pip
pip install 'napari[all]'
@tommylees112
tommylees112 / save_load_scaler.py
Created July 29, 2021 10:44
Save load pandas / xarray objects
frmo typing import Dict, Union
import xarray as xr
import pandas as pd
from pathlib import Path
def save_scaler(scaler: Dict[str, Union[xr.Dataset, pd.DataFrame]], run_dir: Path) -> None:
"""Save scaler to disk as separate netcdf files"""
scaler_dir = run_dir / "train_data"
for k, v in scaler.items():