Skip to content

Commit d8df2d9

Browse files
authored
Merge pull request #75 from NVlabs/pm/sst-offset
Bugfix: added missing SST offset changes in the data loaders
2 parents 241a450 + 752591f commit d8df2d9

2 files changed

Lines changed: 16 additions & 5 deletions

File tree

‎src/cbottle/datasets/amip_sst_loader.py‎

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,8 @@ class AmipSSTLoader:
102102
units = "Kelvin"
103103
path = config.AMIP_MID_MONTH_SST
104104

105-
def __init__(self, target_grid=None):
105+
def __init__(self, target_grid=None, sst_offset: float = 0.0):
106+
self.sst_offset = sst_offset
106107
self.ensure_downloaded()
107108

108109
self.ds = xarray.open_dataset(
@@ -140,7 +141,10 @@ def ensure_downloaded(cls):
140141

141142
async def sel_time(self, times):
142143
data = self.interp(times)
143-
return {("tosbcs", -1): self.regrid(data)}
144+
regridded = self.regrid(data)
145+
if self.sst_offset != 0.0:
146+
regridded = regridded + self.sst_offset
147+
return {("tosbcs", -1): regridded}
144148

145149
def interp(self, time: datetime.datetime):
146150
"""Linearly interpolate between the available points"""
@@ -168,7 +172,8 @@ def ensure_downloaded(cls):
168172
if _is_file(cls.path):
169173
_download_aimip_sst(Path(cls.path))
170174

171-
def __init__(self, target_grid=None):
175+
def __init__(self, target_grid=None, sst_offset: float = 0.0):
176+
self.sst_offset = sst_offset
172177
self.ensure_downloaded()
173178

174179
self.ds = xarray.open_dataset(

‎src/cbottle/datasets/dataset_3d.py‎

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -486,6 +486,7 @@ def _get_loaders(
486486
sst_input: bool = True,
487487
ibtracs_input: bool = False,
488488
variable_config: VariableConfig = _default_config,
489+
sst_offset: float = 0.0,
489490
):
490491
"""Get the appropriate loaders for a given dataset.
491492
@@ -494,6 +495,7 @@ def _get_loaders(
494495
sst_input: Whether to include SST input
495496
ibtracs_input: Whether to include IBTrACS input
496497
variable_config: Variable configuration for the dataset
498+
sst_offset: Uniform SST offset in Kelvin
497499
498500
Returns:
499501
List of loaders for the specified dataset
@@ -568,12 +570,13 @@ def _get_loaders(
568570
HPX_LEVEL, pixel_order=earth2grid.healpix.PixelOrder.NEST
569571
)
570572
if variable_config == VARIABLE_CONFIGS["aimip"]:
571-
loaders.append(AImip_SSTLoader(grid))
573+
loaders.append(AImip_SSTLoader(grid, sst_offset=sst_offset))
572574
print("used aimip sst data")
573575
else:
574576
loaders.append(
575577
AmipSSTLoader(
576578
grid,
579+
sst_offset=sst_offset,
577580
)
578581
)
579582
if ibtracs_input:
@@ -587,11 +590,12 @@ def _get_loaders(
587590
HPX_LEVEL, pixel_order=earth2grid.healpix.PixelOrder.NEST
588591
)
589592
if variable_config == VARIABLE_CONFIGS["aimip"]:
590-
loaders = [AImip_SSTLoader(grid)]
593+
loaders = [AImip_SSTLoader(grid, sst_offset=sst_offset)]
591594
else:
592595
loaders = [
593596
AmipSSTLoader(
594597
grid,
598+
sst_offset=sst_offset,
595599
)
596600
]
597601

@@ -700,13 +704,15 @@ def get_dataset(
700704
frame_masker: Optional[FrameMasker] = None,
701705
variable_config: VariableConfig = _default_config,
702706
map_style: bool = False,
707+
sst_offset: float = 0.0,
703708
) -> TimeMergedDataset | TimeMergedMapStyle:
704709
# Get the appropriate loaders for the dataset
705710
loaders = _get_loaders(
706711
dataset,
707712
sst_input=sst_input,
708713
ibtracs_input=ibtracs_input,
709714
variable_config=variable_config,
715+
sst_offset=sst_offset,
710716
)
711717
times = _get_splits(dataset)[split]
712718
if times.size == 0:

0 commit comments

Comments
 (0)