Skip to content

Commit fbb2953

Browse files
authored
Merge pull request #1146 from xylar/fix-ncclimo-file-list
Put symlinks for ncclimo in unique directories
2 parents 526463d + fbc9512 commit fbb2953

5 files changed

Lines changed: 40 additions & 6 deletions

File tree

ci/recipe/recipe.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ requirements:
4040
- mache >=1.11.0
4141
- matplotlib-base >=3.9.0
4242
- mpas_tools >=1.3.0,<2.0.0
43-
- nco >=4.8.1,!=5.2.6
43+
- nco >=4.8.1,!=5.2.6,!=5.3.7
4444
- netcdf4
4545
- numpy >=2.0,<3.0
4646
- pandas

dev-spec.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ lxml
1616
mache >=1.11.0
1717
matplotlib-base >=3.9.0
1818
mpas_tools >=1.3.0,<2.0.0
19-
nco >=4.8.1,!=5.2.6
19+
nco >=4.8.1,!=5.2.6,!=5.3.7
2020
netcdf4
2121
numpy >=2.0,<3.0
2222
pandas

mpas_analysis/shared/climatology/mpas_climatology_task.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -414,8 +414,10 @@ def _create_symlinks(self):
414414

415415
climatologyOpDirectory = get_climatology_op_directory(config, self.op)
416416

417-
symlinkDirectory = '{}/source_symlinks'.format(
418-
climatologyOpDirectory)
417+
symlinkDirectory = (
418+
f'{climatologyOpDirectory}/source_symlinks_'
419+
f'{self.ncclimoModel}_{self.startYear:04d}-{self.endYear:04d}'
420+
)
419421

420422
make_directories(symlinkDirectory)
421423

@@ -425,6 +427,8 @@ def _create_symlinks(self):
425427
f'timeSeriesStatsMonthly.{year:04d}-{month:02d}-01.nc'
426428

427429
try:
430+
if os.path.lexists(outFileName):
431+
os.remove(outFileName)
428432
os.symlink(inFileName, outFileName)
429433
except OSError:
430434
pass

mpas_analysis/test/test_mpas_climatology_task.py

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323

2424
from mpas_analysis.test import TestCase, loaddatadir
2525
from mpas_analysis.shared.climatology import MpasClimatologyTask, \
26-
RemapMpasClimatologySubtask
26+
RefYearMpasClimatologyTask, RemapMpasClimatologySubtask
2727
from mpas_analysis.shared import AnalysisTask
2828
from mpas_analysis.shared.analysis_task import \
2929
update_time_bounds_from_file_names
@@ -171,6 +171,36 @@ def test_update_climatology_bounds_and_create_symlinks(self):
171171
update_time_bounds_from_file_names(config, 'climatology', 'ocean',
172172
allow_cache=False)
173173

174+
def test_create_symlinks_isolates_reference_year_files(self):
175+
mpasClimatologyTask = self.setup_task()
176+
177+
refYearTask = RefYearMpasClimatologyTask(
178+
config=mpasClimatologyTask.config, componentName='ocean')
179+
refYearTask.historyStreams = mpasClimatologyTask.historyStreams
180+
refYearTask.startYear = 1
181+
refYearTask.endYear = 1
182+
refYearTask.inputFiles = []
183+
184+
for month in range(1, 13):
185+
fileName = os.path.join(
186+
self.test_dir,
187+
f'mpaso.hist.am.timeSeriesStatsMonthly.0001-{month:02d}-01.nc')
188+
with open(fileName, 'w'):
189+
pass
190+
refYearTask.inputFiles.append(fileName)
191+
192+
refSymlinkDirectory = refYearTask._create_symlinks()
193+
mainSymlinkDirectory = mpasClimatologyTask._create_symlinks()
194+
195+
assert(refSymlinkDirectory != mainSymlinkDirectory)
196+
197+
mainSymlinkFiles = sorted(os.listdir(mainSymlinkDirectory))
198+
199+
assert(len(mainSymlinkFiles) == 12)
200+
for fileName in mainSymlinkFiles:
201+
assert(fileName.startswith(
202+
'mpaso.hist.am.timeSeriesStatsMonthly.0002-'))
203+
174204
def test_subtask_run_analysis(self):
175205
mpasClimatologyTask = self.setup_task()
176206
self.add_variables(mpasClimatologyTask)

pixi.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ lxml = "*"
1717
mache = ">=1.11.0"
1818
matplotlib-base = ">=3.9.0"
1919
mpas_tools = ">=1.3.0,<2.0.0"
20-
nco = ">=4.8.1,!=5.2.6"
20+
nco = ">=4.8.1,!=5.2.6,!=5.3.7"
2121
netcdf4 = "*"
2222
numpy = ">=2.0,<3.0"
2323
pandas = "*"

0 commit comments

Comments
 (0)