Skip to content

Commit 8fc55d6

Browse files
committed
Added 'wiki_default_parameters.md'
1 parent 64a6085 commit 8fc55d6

5 files changed

Lines changed: 3231 additions & 45 deletions

File tree

flopymetascript/model.py

Lines changed: 58 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# coding=utf-8
22
import inspect
3+
import os
34
import textwrap
45
from collections import OrderedDict as od
56
from functools import partial
@@ -157,67 +158,82 @@ def __init__(self, load_nam='', add_pack=[], load_only=None):
157158
# if bas:
158159
bas.ifrefm = True
159160

160-
# All loaded packages
161-
packagelist = self.sw.get_package_list()
161+
else:
162+
self.sw = flopy.seawat.Seawat()
162163

163-
loaded_parameters = {}
164-
loaded_packages = {}
164+
# All loaded packages
165+
packagelist = self.sw.get_package_list() + add_pack
165166

166-
for name in packagelist + add_pack: # + ['mf', 'mt', 'swt']
167-
pm = od()
168-
pm['name'] = name
167+
if not packagelist:
168+
os.error('Noting to do')
169169

170-
pm['class'] = self.possible_sw_packages[name.lower()]
171-
pm['parent_str'] = inspect.getmodule(pm['class']).__package__
170+
loaded_parameters = od()
171+
loaded_packages = od()
172172

173-
if name in packagelist and name not in add_pack:
174-
pm['loaded'] = True
175-
pm['instance'] = self.sw.get_package(name=name)
173+
for name in packagelist:
174+
pm = od()
175+
pm['name'] = name
176176

177-
else:
178-
pm['loaded'] = False
177+
pm['class'] = self.possible_sw_packages[name.lower()]
178+
pm['parent_str'] = inspect.getmodule(pm['class']).__package__
179+
180+
if name in packagelist and name not in add_pack:
181+
# if in add_pack the default will be used
182+
pm['loaded'] = True
183+
pm['instance'] = self.sw.get_package(name=name)
184+
185+
else:
186+
pm['loaded'] = False
187+
188+
try:
179189
pm['instance'] = pm['class'](model=self.sw)
180190

191+
except:
192+
print('{0} Doesnt initiate using loaded or default values'.
193+
format(name))
194+
pm['instance'] = pm['class']
195+
# continue
196+
197+
try:
181198
p = load_package(pm['instance'])
182199

183200
loaded_parameters[name] = p
184201
loaded_packages[name] = pm
185202

186-
#####################
187-
# Order and include 'flopy.modflow', 'flopy.mt3d', 'flopy.seawat'
188-
self.parameters = od()
189-
self.packages = od()
203+
except:
204+
print('{0} failed to load'.format(name))
205+
continue
190206

191-
all_modules = ['flopy.modflow', 'flopy.mt3d', 'flopy.seawat']
192-
unique_modules = set(
193-
[item['parent_str'] for name, item in loaded_packages.items()])
207+
# Order and include 'flopy.modflow', 'flopy.mt3d', 'flopy.seawat'
208+
self.parameters = od()
209+
self.packages = od()
194210

195-
for mod in [
196-
item for item in all_modules if item in unique_modules
197-
]:
198-
pm = od()
199-
pm['name'] = mod
211+
all_modules = ['flopy.modflow', 'flopy.mt3d', 'flopy.seawat']
212+
unique_modules = set(
213+
[item['parent_str'] for name, item in loaded_packages.items()])
200214

201-
pm['class'] = self.possible_sw_packages[mod]
202-
pm['parent_str'] = 'flopy'
203-
pm['loaded'] = False
204-
pm['instance'] = pm['class']()
215+
for mod in [item for item in all_modules if item in unique_modules]:
216+
pm = od()
217+
pm['name'] = mod
205218

206-
self.packages[mod] = pm
207-
self.parameters[mod] = load_package(pm['instance'])
219+
pm['class'] = self.possible_sw_packages[mod]
220+
pm['parent_str'] = 'flopy'
221+
pm['loaded'] = False
222+
pm['instance'] = pm['class']()
208223

209-
for name, item in loaded_packages.items():
210-
assert name in loaded_parameters, 'Each loaded package should have a loaded self.parameters'
224+
self.packages[mod] = pm
225+
self.parameters[mod] = load_package(pm['instance'])
211226

212-
if loaded_packages[name]['parent_str'] != mod:
213-
continue
227+
for name, item in loaded_packages.items():
228+
assert name in loaded_parameters, 'Each loaded package should have a loaded self.parameters'
214229

215-
self.packages[name] = loaded_packages[name]
216-
self.parameters[name] = loaded_parameters[name]
230+
if loaded_packages[name]['parent_str'] != mod:
231+
continue
217232

218-
#####################
233+
self.packages[name] = loaded_packages[name]
234+
self.parameters[name] = loaded_parameters[name]
219235

220-
# sanitize
236+
# sanitize
221237
self.script_sanitize_ncomp()
222238
self.script_sanitize_BTN_mfenheriting()
223239
self.script_sanitize_unwanted_parameters()
@@ -255,7 +271,8 @@ def cat_package_file(self, name):
255271
s = file.read()
256272

257273
print('\n'.join(
258-
[str(path.absolute()), len(str(path.absolute())) * '-', s]))
274+
[str(path.absolute()),
275+
len(str(path.absolute())) * '-', s]))
259276

260277
def script_kwargs2string(self,
261278
name,

flopymetascript/parameter.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,8 @@ def parse_list_str(ar, compres):
230230
def parse_mflist(ar):
231231
out = {}
232232

233+
prev = []
234+
233235
for i, (k, v) in enumerate(sorted(ar.items())):
234236
if k == 0 or k == (0, 0):
235237
out[k] = v
@@ -245,7 +247,7 @@ def parse_mflist(ar):
245247
elif not isinstance(v, int):
246248
# sometimes there is a placeholder int(0)
247249

248-
if isinstance(prev, int) or not (prev == v).all():
250+
if isinstance(prev, int) or not prev == v:
249251
out[k] = v
250252

251253
prev = v
@@ -275,9 +277,12 @@ def parse_array(self, ar):
275277

276278
output = np.unique(ar)
277279

278-
if len(output) == 1:
280+
if output.size == 1:
279281
return 0, output.item()
280282

283+
elif output.size == 0:
284+
return -1, output
285+
281286
else:
282287
items_per_squeezed_dim = ar.ndim * [0]
283288

@@ -431,6 +436,9 @@ def uniquend(ar,
431436

432437
assert isinstance(ar, np.ndarray)
433438

439+
if ar.size == 0:
440+
return ar
441+
434442
if axis is None:
435443
return np.unique(
436444
ar,

flopymetascript/version.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# coding=utf-8
22
major = 0
3-
minor = 2
4-
micro = 1
3+
minor = 3
4+
micro = 0
55

66
__version__ = '{:d}.{:d}.{:d}'.format(major, minor, micro)

setup.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,39 @@
2828
with io.open('README.md', encoding="utf-8") as f:
2929
long_description = f.read()
3030

31+
try:
32+
from flopymetascript.model import Model
33+
import io
34+
import nbformat
35+
import zipfile
36+
import nbconvert
37+
import flopy
38+
39+
p_list = list(flopy.seawat.Seawat().mfnam_packages.keys())
40+
41+
mp = Model(add_pack=p_list)
42+
43+
nb = mp.script_model2nb(use_yapf=False)
44+
ipynb_buff = io.StringIO(nbformat.writes(nb))
45+
s = nbconvert.export(nbconvert.get_exporter('markdown'), ipynb_buff)[0]
46+
47+
s = s.replace('\n\n```', '\n\n```python')
48+
49+
p_list_order = list(mp.packages.keys())
50+
toc = [
51+
'* [' + i + '](#' + i.replace('.', '') + ')\n' for i in p_list_order
52+
]
53+
toc = ''.join(toc)
54+
55+
with open('wiki_default_parameters.md', 'w') as f:
56+
f.write(toc)
57+
f.write(s)
58+
59+
ipynb_buff.close()
60+
61+
except OSError as e:
62+
print('unable to update wiki_default_parameters.md')
63+
3164
setup(
3265
name=__name__,
3366
description=

0 commit comments

Comments
 (0)