Skip to content

Commit 45b4f73

Browse files
committed
add mkdir commands where needed in datasets
1 parent 44cfe36 commit 45b4f73

2 files changed

Lines changed: 23 additions & 6 deletions

File tree

emulator/src/data/climate_dataset.py

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import numpy as np
66
import xarray as xr
77

8+
from pathlib import Path
89
from typing import Dict, Optional, List, Tuple, Union
910

1011
from emulator.src.data.constants import (
@@ -64,6 +65,7 @@ def __init__(
6465

6566
self.test_dir = output_save_dir
6667
self.output_save_dir = output_save_dir
68+
Path(self.output_save_dir).mkdir(parents=True, exist_ok=True)
6769

6870
self.channels_last = channels_last
6971
self.load_data_into_mem = load_data_into_mem
@@ -421,7 +423,8 @@ def __init__( # inherits all the stuff from Base
421423
):
422424
self.mode = mode
423425
self.output_save_dir = output_save_dir
424-
self.root_dir = os.path.join(data_dir, "outputs/CMIP6")
426+
self.root_dir = Path(data_dir) / "outputs" / "CMIP6"
427+
self.root_dir.mkdir(parents=True, exist_ok=True)
425428

426429
self.input_nc_files = []
427430
self.output_nc_files = []
@@ -442,7 +445,8 @@ def __init__( # inherits all the stuff from Base
442445
)
443446

444447
if isinstance(climate_model, str):
445-
self.root_dir = os.path.join(self.root_dir, climate_model)
448+
self.root_dir = self.root_dir / climate_model
449+
self.root_dir.mkdir(parents=True, exist_ok=True)
446450
else:
447451
raise NotImplementedError("For loading multiple climate models, please make sure to use the Super Climate Dataset Class.")
448452

@@ -461,6 +465,9 @@ def __init__( # inherits all the stuff from Base
461465
) # Taking multiple ensemble members
462466
if i == (num_ensembles - 1):
463467
break # if num_ensemble ==-1 we take all
468+
469+
for ens_dir in self.ensemble_dir:
470+
Path(ens_dir).mkdir(parents=True, exist_ok=True)
464471

465472
# Check here if os.path.isfile($SCRATCH/data.npz) exists
466473
# if it does, use self._reload data(path)
@@ -584,8 +591,10 @@ def __init__(
584591
self.channels_last = channels_last
585592

586593
self.mode = mode
587-
self.root_dir = os.path.join(data_dir, "inputs/input4mips")
588-
self.output_save_dir = output_save_dir
594+
self.root_dir = Path(data_dir) / "inputs" / "input4mips"
595+
self.root_dir.mkdir(parents=True, exist_ok=True)
596+
self.output_save_dir = Path(output_save_dir)
597+
self.output_save_dir.mkdir(parents=True, exist_ok=True)
589598
self.input_nc_files = []
590599
self.output_nc_files = []
591600

@@ -710,7 +719,7 @@ def __init__(
710719
self.norm_data = self.normalize_data(self.raw_data, stats)
711720

712721
self.data_path = self.save_data_into_disk(
713-
self.raw_data, fname, output_save_dir
722+
self.raw_data, fname, str(output_save_dir)
714723
)
715724

716725
self.copy_to_slurm(self.data_path)

emulator/src/data/super_climate_dataset.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import numpy as np
66
import xarray as xr
77

8+
from pathlib import Path
89
from abc import ABC, abstractmethod
910
from typing import Dict, Optional, List, Tuple, Union
1011

@@ -363,6 +364,7 @@ def __init__(
363364
super().__init__()
364365
self.index_manager = index_manager
365366
self.output_save_dir = output_save_dir
367+
Path(self.output_save_dir).mkdir(parents=True, exist_ok=True)
366368
self.channels_last = channels_last
367369
self.load_data_into_mem = load_data_into_mem
368370

@@ -545,6 +547,7 @@ def __init__( # inherits all the stuff from Base
545547
):
546548
self.mode = mode
547549
self.output_save_dir = output_save_dir
550+
Path(output_save_dir).mkdir(parents=True, exist_ok=True)
548551

549552
self.input_nc_files = []
550553
self.output_nc_files = []
@@ -604,6 +607,7 @@ def __init__( # inherits all the stuff from Base
604607
var_dir = os.path.join(
605608
data_dir, exp, var, f"{CMIP6_NOM_RES}/{CMIP6_TEMP_RES}/{y}"
606609
)
610+
Path(var_dir).mkdir(parents=True, exist_ok=True)
607611
files = glob.glob(var_dir + f"/*.nc", recursive=True)
608612
if len(files) == 0:
609613
raise FileNotFoundError(f"No files for climate model {climate_model}, ensemble member {data_dir.split("/")[-1]}, var {var}, year {y}, scenario {exp}. Please check if climate model runs for this exact pairing actually exist.")
@@ -689,8 +693,10 @@ def __init__( # inherits all the stuff from Base
689693
self.channels_last = channels_last
690694

691695
self.mode = mode
692-
self.root_dir = os.path.join(data_dir, "inputs/input4mips")
696+
self.root_dir = Path(data_dir) / "inputs" / "input4mips"
697+
self.root_dir.mkdir(parents=True, exist_ok=True)
693698
self.output_save_dir = output_save_dir
699+
Path(self.output_save_dir).mkdir(parents=True, exist_ok=True)
694700
self.input_nc_files = []
695701
self.output_nc_files = []
696702

@@ -749,6 +755,7 @@ def __init__( # inherits all the stuff from Base
749755
var,
750756
f"{CMIP6_NOM_RES}/{CMIP6_TEMP_RES}/{y}",
751757
)
758+
Path(var_dir).mkdir(parents=True, exist_ok=True)
752759

753760
output_nc_files = []
754761
for exp in scenarios:
@@ -769,6 +776,7 @@ def __init__( # inherits all the stuff from Base
769776
var,
770777
f"{CMIP6_NOM_RES}/{CMIP6_TEMP_RES}/{y}",
771778
)
779+
Path(var_dir).mkdir(parents=True, exist_ok=True)
772780
files = glob.glob(
773781
var_dir + f"/**/*{filter_path_by}*.nc", recursive=True
774782
)

0 commit comments

Comments
 (0)