Skip to content

Commit 8192e7a

Browse files
mjrenomjreno
authored andcommitted
remove netcdf module
1 parent 92d8dc2 commit 8192e7a

File tree

3 files changed

+1
-568
lines changed

3 files changed

+1
-568
lines changed

autotest/test_netcdf.py

Lines changed: 0 additions & 278 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,7 @@
11
import sys
2-
from pathlib import Path
32

4-
import numpy as np
53
from pydantic import ValidationError
64

7-
from modflow_devtools.netcdf import (
8-
DNODATA,
9-
FILLNA_FLOAT64,
10-
FILLNA_INT32,
11-
NetCDFModelInput,
12-
NetCDFPackageCfg,
13-
)
145
from modflow_devtools.netcdf_schema import validate
156

167

@@ -209,272 +200,3 @@ def test_fail_param_attr_input():
209200
print(f"Exception Value: {exc_value}")
210201
print(f"Traceback Object: {exc_traceback}")
211202
assert "modflow_input" in str(e)
212-
213-
214-
def test_xarray_structured_mesh():
215-
nc_input = NetCDFModelInput(
216-
name="twri",
217-
type="gwf",
218-
grid_type="structured",
219-
dims=[2, 4, 3, 2], # ["time", "z", "y", "x"]
220-
)
221-
222-
nc_input.packages.append(NetCDFPackageCfg("npf", "npf", params=["k", "k22"]))
223-
nc_input.packages.append(NetCDFPackageCfg("welg_0", "welg", params=["q"]))
224-
225-
ds = nc_input.to_xarray()
226-
227-
assert ds.attrs["modflow_grid"] == "structured"
228-
assert ds.attrs["modflow_model"] == "gwf6: twri"
229-
assert "mesh" not in ds.attrs
230-
assert "npf_k" in ds
231-
assert "npf_k22" in ds
232-
assert "welg_0_q" in ds
233-
assert np.allclose(ds["npf_k"].values, FILLNA_FLOAT64)
234-
assert np.allclose(ds["npf_k22"].values, FILLNA_FLOAT64)
235-
assert np.allclose(ds["welg_0_q"].values, DNODATA)
236-
assert ds["npf_k"].dims == ("z", "y", "x")
237-
assert ds["npf_k22"].dims == ("z", "y", "x")
238-
assert ds["welg_0_q"].dims == ("time", "z", "y", "x")
239-
assert ds.sizes["time"] == 2
240-
assert ds.sizes["z"] == 4
241-
assert ds.sizes["y"] == 3
242-
assert ds.sizes["x"] == 2
243-
assert len(ds) == 3
244-
245-
nc_fpath = Path.cwd() / "twri.input.nc"
246-
ds.to_netcdf(
247-
nc_fpath,
248-
format="NETCDF4",
249-
engine="netcdf4",
250-
)
251-
252-
assert nc_fpath.is_file()
253-
254-
255-
def test_xarray_layered_mesh():
256-
nc_input = NetCDFModelInput(
257-
name="twri",
258-
type="gwf",
259-
grid_type="structured",
260-
mesh_type="layered",
261-
dims=[2, 4, 6], # ["time", "z", "nmesh_face"]
262-
)
263-
264-
nc_input.packages.append(NetCDFPackageCfg("npf", "npf", params=["k", "k22"]))
265-
nc_input.packages.append(NetCDFPackageCfg("welg_0", "welg", params=["q"]))
266-
267-
ds = nc_input.to_xarray()
268-
269-
assert ds.attrs["modflow_grid"] == "structured"
270-
assert ds.attrs["modflow_model"] == "gwf6: twri"
271-
assert ds.attrs["mesh"] == "layered"
272-
for k in range(4):
273-
layer = k + 1
274-
assert f"npf_k_l{layer}" in ds
275-
assert f"npf_k22_l{layer}" in ds
276-
assert f"welg_0_q_l{layer}" in ds
277-
assert np.allclose(ds[f"npf_k_l{layer}"].values, FILLNA_FLOAT64)
278-
assert np.allclose(ds[f"npf_k22_l{layer}"].values, FILLNA_FLOAT64)
279-
assert np.allclose(ds[f"welg_0_q_l{layer}"].values, DNODATA)
280-
assert ds[f"npf_k_l{layer}"].dims == ("z", "nmesh_face")
281-
assert ds[f"npf_k22_l{layer}"].dims == ("z", "nmesh_face")
282-
assert ds[f"welg_0_q_l{layer}"].dims == ("time", "z", "nmesh_face")
283-
assert ds.sizes["time"] == 2
284-
assert ds.sizes["z"] == 4
285-
assert ds.sizes["nmesh_face"] == 6
286-
assert len(ds) == 12
287-
288-
nc_fpath = Path.cwd() / "twri.input.nc"
289-
ds.to_netcdf(
290-
nc_fpath,
291-
format="NETCDF4",
292-
engine="netcdf4",
293-
)
294-
295-
assert nc_fpath.is_file()
296-
297-
298-
def test_xarray_disv():
299-
nc_input = NetCDFModelInput(
300-
name="twri",
301-
type="gwf",
302-
grid_type="vertex",
303-
mesh_type="layered",
304-
dims=[2, 4, 6],
305-
)
306-
307-
nc_input.packages.append(NetCDFPackageCfg("npf", "npf", params=["k", "k22"]))
308-
nc_input.packages.append(NetCDFPackageCfg("welg_0", "welg", params=["q"]))
309-
310-
ds = nc_input.to_xarray()
311-
312-
assert ds.attrs["modflow_grid"] == "vertex"
313-
assert ds.attrs["modflow_model"] == "gwf6: twri"
314-
assert ds.attrs["mesh"] == "layered"
315-
for k in range(4):
316-
layer = k + 1
317-
assert f"npf_k_l{layer}" in ds
318-
assert f"npf_k22_l{layer}" in ds
319-
assert f"welg_0_q_l{layer}" in ds
320-
assert np.allclose(ds[f"npf_k_l{layer}"].values, FILLNA_FLOAT64)
321-
assert np.allclose(ds[f"npf_k22_l{layer}"].values, FILLNA_FLOAT64)
322-
assert np.allclose(ds[f"welg_0_q_l{layer}"].values, DNODATA)
323-
assert ds[f"npf_k_l{layer}"].dims == ("z", "nmesh_face")
324-
assert ds[f"npf_k22_l{layer}"].dims == ("z", "nmesh_face")
325-
assert ds[f"welg_0_q_l{layer}"].dims == ("time", "z", "nmesh_face")
326-
assert ds.sizes["time"] == 2
327-
assert ds.sizes["z"] == 4
328-
assert ds.sizes["nmesh_face"] == 6
329-
assert len(ds) == 12
330-
331-
nc_fpath = Path.cwd() / "disv.input.nc"
332-
ds.to_netcdf(
333-
nc_fpath,
334-
format="NETCDF4",
335-
engine="netcdf4",
336-
)
337-
338-
assert nc_fpath.is_file()
339-
340-
341-
def test_xarray_disv_aux():
342-
nc_input = NetCDFModelInput(
343-
name="twri",
344-
type="gwf6",
345-
grid_type="vertex",
346-
mesh_type="layered",
347-
dims=[2, 4, 6],
348-
)
349-
350-
nc_input.packages.append(NetCDFPackageCfg("npf", "npf", params=["k", "k22"]))
351-
nc_input.packages.append(
352-
NetCDFPackageCfg(
353-
"welg_0",
354-
"welg",
355-
auxiliary=["concentration", "temperature"],
356-
params=["q", "aux"],
357-
)
358-
)
359-
360-
ds = nc_input.to_xarray()
361-
362-
assert ds.attrs["modflow_grid"] == "vertex"
363-
assert ds.attrs["modflow_model"] == "gwf6: twri"
364-
assert ds.attrs["mesh"] == "layered"
365-
for k in range(4):
366-
layer = k + 1
367-
assert f"npf_k_l{layer}" in ds
368-
assert f"npf_k22_l{layer}" in ds
369-
assert f"welg_0_q_l{layer}" in ds
370-
assert f"welg_0_concentration_l{layer}" in ds
371-
assert f"welg_0_temperature_l{layer}" in ds
372-
assert np.allclose(ds[f"npf_k_l{layer}"].values, FILLNA_FLOAT64)
373-
assert np.allclose(ds[f"npf_k22_l{layer}"].values, FILLNA_FLOAT64)
374-
assert np.allclose(ds[f"welg_0_q_l{layer}"].values, DNODATA)
375-
assert np.allclose(ds[f"welg_0_concentration_l{layer}"].values, DNODATA)
376-
assert np.allclose(ds[f"welg_0_temperature_l{layer}"].values, DNODATA)
377-
assert ds[f"npf_k_l{layer}"].dims == ("z", "nmesh_face")
378-
assert ds[f"npf_k22_l{layer}"].dims == ("z", "nmesh_face")
379-
assert ds[f"welg_0_q_l{layer}"].dims == ("time", "z", "nmesh_face")
380-
assert ds[f"welg_0_concentration_l{layer}"].dims == ("time", "z", "nmesh_face")
381-
assert ds[f"welg_0_temperature_l{layer}"].dims == ("time", "z", "nmesh_face")
382-
assert ds[f"welg_0_concentration_l{layer}"].attrs["modflow_iaux"] == 1
383-
assert ds[f"welg_0_temperature_l{layer}"].attrs["modflow_iaux"] == 2
384-
assert ds.sizes["time"] == 2
385-
assert ds.sizes["z"] == 4
386-
assert ds.sizes["nmesh_face"] == 6
387-
assert len(ds) == 20
388-
389-
nc_fpath = Path.cwd() / "disv_aux.input.nc"
390-
ds.to_netcdf(
391-
nc_fpath,
392-
format="NETCDF4",
393-
engine="netcdf4",
394-
)
395-
396-
assert nc_fpath.is_file()
397-
398-
399-
def test_xarray_disv_all_params():
400-
nc_input = NetCDFModelInput(
401-
name="twri",
402-
type="gwf",
403-
grid_type="vertex",
404-
mesh_type="layered",
405-
dims=[2, 4, 6],
406-
)
407-
408-
nc_input.packages.append(NetCDFPackageCfg("npf", "npf"))
409-
nc_input.packages.append(NetCDFPackageCfg("welg_0", "welg"))
410-
# TODO: rcha and evta need netcdf annotation in dfns
411-
# nc_cfg.packages.append(NetCDFPackageCfg("rch0", "rcha"))
412-
413-
ds = nc_input.to_xarray()
414-
415-
assert ds.attrs["modflow_grid"] == "vertex"
416-
assert ds.attrs["modflow_model"] == "gwf6: twri"
417-
assert ds.attrs["mesh"] == "layered"
418-
for k in range(4):
419-
layer = k + 1
420-
assert f"npf_icelltype_l{layer}" in ds
421-
assert f"npf_k_l{layer}" in ds
422-
assert f"npf_k22_l{layer}" in ds
423-
assert f"npf_k33_l{layer}" in ds
424-
assert f"npf_angle1_l{layer}" in ds
425-
assert f"npf_angle2_l{layer}" in ds
426-
assert f"npf_angle3_l{layer}" in ds
427-
assert f"npf_wetdry_l{layer}" in ds
428-
assert f"welg_0_q_l{layer}" in ds
429-
assert np.allclose(ds[f"npf_icelltype_l{layer}"].values, FILLNA_INT32)
430-
assert np.allclose(ds[f"npf_k_l{layer}"].values, FILLNA_FLOAT64)
431-
assert np.allclose(ds[f"npf_k22_l{layer}"].values, FILLNA_FLOAT64)
432-
assert np.allclose(ds[f"npf_k33_l{layer}"].values, FILLNA_FLOAT64)
433-
assert np.allclose(ds[f"npf_angle1_l{layer}"].values, FILLNA_FLOAT64)
434-
assert np.allclose(ds[f"npf_angle2_l{layer}"].values, FILLNA_FLOAT64)
435-
assert np.allclose(ds[f"npf_angle3_l{layer}"].values, FILLNA_FLOAT64)
436-
assert np.allclose(ds[f"npf_wetdry_l{layer}"].values, FILLNA_FLOAT64)
437-
assert np.allclose(ds[f"welg_0_q_l{layer}"].values, DNODATA)
438-
assert ds[f"npf_icelltype_l{layer}"].dims == ("z", "nmesh_face")
439-
assert ds[f"npf_k_l{layer}"].dims == ("z", "nmesh_face")
440-
assert ds[f"npf_k22_l{layer}"].dims == ("z", "nmesh_face")
441-
assert ds[f"npf_k33_l{layer}"].dims == ("z", "nmesh_face")
442-
assert ds[f"npf_angle1_l{layer}"].dims == ("z", "nmesh_face")
443-
assert ds[f"npf_angle2_l{layer}"].dims == ("z", "nmesh_face")
444-
assert ds[f"npf_angle3_l{layer}"].dims == ("z", "nmesh_face")
445-
assert ds[f"npf_wetdry_l{layer}"].dims == ("z", "nmesh_face")
446-
assert ds[f"welg_0_q_l{layer}"].dims == ("time", "z", "nmesh_face")
447-
assert ds.sizes["time"] == 2
448-
assert ds.sizes["z"] == 4
449-
assert ds.sizes["nmesh_face"] == 6
450-
assert len(ds) == 36
451-
452-
nc_fpath = Path.cwd() / "disv_all.input.nc"
453-
ds.to_netcdf(
454-
nc_fpath,
455-
format="NETCDF4",
456-
engine="netcdf4",
457-
)
458-
459-
assert nc_fpath.is_file()
460-
461-
462-
def test_jsonschema():
463-
from jsonschema import Draft7Validator
464-
465-
nc_input = NetCDFModelInput(
466-
name="twri",
467-
type="gwf",
468-
grid_type="vertex",
469-
mesh_type="layered",
470-
dims=[2, 4, 6],
471-
)
472-
473-
nc_input.packages.append(NetCDFPackageCfg("npf", "npf"))
474-
nc_input.packages.append(NetCDFPackageCfg("welg_0", "welg"))
475-
476-
schema = nc_input.jsonschema()
477-
assert isinstance(schema, dict)
478-
Draft7Validator.check_schema(schema) # raises if not valid
479-
validator = Draft7Validator(schema)
480-
assert validator.is_valid(nc_input.meta)

0 commit comments

Comments
 (0)