Skip to content

Commit 06748a9

Browse files
committed
Fixed problem with dims and added more logging
1 parent 8744f31 commit 06748a9

File tree

2 files changed

+43
-13
lines changed

2 files changed

+43
-13
lines changed

tests/test_levels.py

+24-11
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,9 @@
1414
from .helpers import make_test_dataset
1515

1616
try:
17+
# noinspection PyUnresolvedReferences
1718
import xcube
18-
except:
19+
except ImportError:
1920
xcube = None
2021

2122

@@ -25,11 +26,17 @@ def test_no_variables_given(self):
2526
variables = get_variables_config(dataset, dict(x=512, y=256, time=1))
2627
self.assertEqual(
2728
{
28-
"x": {"encoding": {"chunks": None}},
29-
"y": {"encoding": {"chunks": None}},
30-
"time": {"encoding": {"chunks": None}},
31-
"chl": {"encoding": {"chunks": [1, 256, 512]}},
32-
"tsm": {"encoding": {"chunks": [1, 256, 512]}},
29+
"x": {"dims": ["x"], "encoding": {"chunks": None}},
30+
"y": {"dims": ["y"], "encoding": {"chunks": None}},
31+
"time": {"dims": ["time"], "encoding": {"chunks": None}},
32+
"chl": {
33+
"dims": ["time", "y", "x"],
34+
"encoding": {"chunks": [1, 256, 512]},
35+
},
36+
"tsm": {
37+
"dims": ["time", "y", "x"],
38+
"encoding": {"chunks": [1, 256, 512]},
39+
},
3340
},
3441
variables,
3542
)
@@ -47,11 +54,17 @@ def test_variables_given(self):
4754
)
4855
self.assertEqual(
4956
{
50-
"x": {"encoding": {"chunks": None}},
51-
"y": {"encoding": {"chunks": None}},
52-
"time": {"encoding": {"chunks": [3]}},
53-
"chl": {"encoding": {"chunks": [3, 100, 100]}},
54-
"tsm": {"encoding": {"chunks": [1, 256, 512], "dtype": "uint16"}},
57+
"x": {"dims": ["x"], "encoding": {"chunks": None}},
58+
"y": {"dims": ["y"], "encoding": {"chunks": None}},
59+
"time": {"dims": ["time"], "encoding": {"chunks": [3]}},
60+
"chl": {
61+
"dims": ["time", "y", "x"],
62+
"encoding": {"chunks": [3, 100, 100]},
63+
},
64+
"tsm": {
65+
"dims": ["time", "y", "x"],
66+
"encoding": {"chunks": [1, 256, 512], "dtype": "uint16"},
67+
},
5568
},
5669
variables,
5770
)

zappend/levels.py

+19-2
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,7 @@ def write_levels(
153153
variables=zappend_config.pop("variables", None),
154154
)
155155

156+
target_fs.mkdirs(target_root, exist_ok=True)
156157
with target_fs.open(f"{target_root}/.zlevels", "wt") as fp:
157158
levels_data: dict[str, Any] = dict(
158159
version="1.0",
@@ -175,7 +176,8 @@ def write_levels(
175176

176177
subsample_dataset_kwargs = dict(xy_dim_names=xy_dim_names, agg_methods=agg_methods)
177178

178-
for slice_index in range(append_coord.size):
179+
num_slices = append_coord.size
180+
for slice_index in range(num_slices):
179181
slice_ds_indexer = {append_dim: slice(slice_index, slice_index + 1)}
180182
slice_ds = source_ds.isel(slice_ds_indexer)
181183

@@ -212,8 +214,18 @@ def write_levels(
212214
variables=variables,
213215
**zappend_config,
214216
)
217+
steps_total = num_slices * num_levels
218+
percent_total = (
219+
100 * ((slice_index * num_levels) + level_index + 1) / steps_total
220+
)
221+
logger.info(
222+
f"Slice {level_slice_path} written,"
223+
f" {slice_index + 1}/{num_slices} slices,"
224+
f" {level_index + 1}/{num_levels} levels,"
225+
f" {percent_total:.2f}% total"
226+
)
215227

216-
logger.info(f"done writing {target_path}")
228+
logger.info(f"Done appending {num_slices} slices to {target_path}")
217229

218230

219231
def get_variables_config(
@@ -236,6 +248,10 @@ def get_variables_config(
236248
for var_name, var in dataset.variables.items():
237249
var_name = str(var_name)
238250
var_config = dict(var_configs.get(var_name, {}))
251+
252+
if "dims" not in var_config and var.dims:
253+
var_config["dims"] = [str(dim) for dim in var.dims]
254+
239255
var_encoding = dict(var_config.get("encoding", {}))
240256
var_chunks = var_encoding.get("chunks")
241257
if "chunks" not in var_encoding and var.dims:
@@ -245,5 +261,6 @@ def get_variables_config(
245261
var_chunks = [chunk_sizes.get(dim) for dim in var.dims]
246262
var_encoding["chunks"] = var_chunks
247263
var_config["encoding"] = var_encoding
264+
248265
var_configs[var_name] = var_config
249266
return var_configs

0 commit comments

Comments
 (0)