Download scripts/data_loader.py from OneScience-Group/GLONET: direct link, hf CLI and curl.
- Browser
- Download file 1.25 kB
-
https://huggingface.co/OneScience-Group/GLONET/resolve/main/scripts/data_loader.py
- Command line
-
hf download hf://OneScience-Group/GLONET/scripts/data_loader.py
-
curl -L -o data_loader.py https://huggingface.co/OneScience-Group/GLONET/resolve/main/scripts/data_loader.py
1.25 kB
| """Synthetic GLORYS12-shaped data for smoke tests and local development.""" | |
| import glob | |
| import torch | |
| from torch.utils.data import Dataset | |
| try: | |
| import h5py | |
| except ImportError: | |
| h5py = None | |
| class SyntheticOceanDataset(Dataset): | |
| def __init__(self, samples, channels, grid, input_steps=2, output_steps=1, seed=42, data_dir=None): | |
| generator = torch.Generator().manual_seed(seed) | |
| files = sorted(glob.glob(f"{data_dir}/data/*.h5")) if data_dir else [] | |
| if files and h5py is not None: | |
| with h5py.File(files[0], "r") as handle: | |
| fields = torch.from_numpy(handle["fields"][:]).float() | |
| total = min(samples, fields.shape[0] - input_steps - output_steps + 1) | |
| self.x = torch.stack([fields[i:i + input_steps] for i in range(total)]) | |
| self.y = torch.stack([fields[i + input_steps:i + input_steps + output_steps] for i in range(total)]) | |
| else: | |
| self.x = torch.randn(samples, input_steps, channels, *grid, generator=generator) | |
| self.y = torch.randn(samples, output_steps, channels, *grid, generator=generator) | |
| def __len__(self): | |
| return self.x.shape[0] | |
| def __getitem__(self, index): | |
| return self.x[index], self.y[index] | |