-
Notifications
You must be signed in to change notification settings - Fork 71
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
remove dump menyanthes method (#471)
- Loading branch information
1 parent
043c31b
commit bf1da48
Showing
1 changed file
with
9 additions
and
222 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,228 +1,15 @@ | ||
"""This file contains the export method for men-files. | ||
Export a .men file | ||
R.C. Caljé - march 2018 | ||
"""This module is deprecated. | ||
""" | ||
|
||
from os import path | ||
|
||
from numpy import NaN, array, vstack, zeros | ||
from pandas import Timestamp | ||
from scipy.io import loadmat, savemat | ||
|
||
from ..utils import datetime2matlab | ||
|
||
|
||
def load(fname: str) -> NotImplementedError: | ||
raise NotImplementedError( | ||
"This is not implemented yet. See the " "reads-section for a Menyanthes-read" | ||
) | ||
|
||
|
||
def dump(fname: str, data: dict, version: int = 3, verbose: bool = True) -> None: | ||
# version can also be a specific version, | ||
# like '2.x.g.t (beta)', or an integer (see below) | ||
if version == 3: | ||
version = "3.x.b.c (gamma)" | ||
elif version == 2: | ||
version = "2.x.g.t (beta)" | ||
# load an empty menyanthes file | ||
io_dir, _ = path.split(__file__) | ||
base_fname = path.join(io_dir, "men", version + ".men") | ||
|
||
if not path.exists(base_fname): | ||
msg = "No Menyanthes file found for version {}".format(version) | ||
raise Exception(msg) | ||
|
||
men = loadmat(base_fname, matlab_compatible=True) | ||
|
||
# add the oseries | ||
dtypeH = men["H"].dtype | ||
fields = dtypeH.fields.keys() | ||
Hdict = {} | ||
for field in fields: | ||
if field == "ID": | ||
Hdict[field] = men["ID"]["H"][0][0][0][0] | ||
men["ID"]["H"] += 1 | ||
elif field == "Name": | ||
Hdict[field] = data["oseries"]["name"] | ||
elif field in ["NITGCode", "OLGACode", "NITGnr", "OLGAnr"]: | ||
Hdict[field] = "<no data> (1)" | ||
elif field == "Type": | ||
Hdict[field] = "Head" | ||
elif field in ["Project", "layercode", "LoggerSerial", "area", "datlog_serial"]: | ||
Hdict[field] = "" | ||
elif field == "values": | ||
date = array([datetime2matlab(x) for x in data["oseries"]["series"].index]) | ||
vals = data["oseries"]["series"].values | ||
Hdict[field] = [vstack((date, vals)).transpose()] | ||
elif field == "filtnr": | ||
Hdict[field] = 1 | ||
elif field in ["handmeas", "aerialphoto", "BWImage", "photo"]: | ||
Hdict[field] = [zeros(shape=(0, 0))] | ||
elif field in [ | ||
"LastTUFExport", | ||
"surflev", | ||
"measpointlev", | ||
"upfiltlev", | ||
"lowfiltlev", | ||
"sedsumplength", | ||
"LoggerDepth", | ||
"tranche", | ||
"datlog_depth", | ||
]: | ||
Hdict[field] = NaN | ||
elif field == "xcoord": | ||
if "x" in data["oseries"]["metadata"]: | ||
Hdict[field] = data["oseries"]["metadata"]["x"] | ||
else: | ||
Hdict[field] = NaN | ||
elif field == "ycoord": | ||
if "y" in data["oseries"]["metadata"]: | ||
Hdict[field] = data["oseries"]["metadata"]["y"] | ||
else: | ||
Hdict[field] = NaN | ||
elif field == "date": | ||
Hdict[field] = datetime2matlab(Timestamp.now()) | ||
elif field == "comment": | ||
# Hdict[field] = [np.array(['',''])] | ||
obj_arr = zeros((2,), dtype=object) | ||
obj_arr[0] = "" | ||
obj_arr[1] = "" | ||
Hdict[field] = [obj_arr] | ||
elif field in [ | ||
"LoggerBrand", | ||
"LoggerType", | ||
"VegTypo", | ||
"VegType", | ||
"Organization", | ||
]: | ||
Hdict[field] = "Unknown" | ||
elif field == "Status": | ||
Hdict[field] = "Active" | ||
elif field == "Comments": | ||
# TODO: has to be a matlab-table | ||
Hdict[field] = "" | ||
elif field == "Meta": | ||
# TODO: has to be a matlab-table | ||
Hdict[field] = "" | ||
elif field == "diver_files": | ||
# has to be a matlab-struct | ||
dtype = [ | ||
("name", "O"), | ||
("LoggerSerial", "O"), | ||
("values", "O"), | ||
("orig_values", "O"), | ||
("changes", "O"), | ||
("current_change", "O"), | ||
("drift", "O"), | ||
("importedby", "O"), | ||
("importdate", "O"), | ||
("validated", "O"), | ||
("validatedby", "O"), | ||
("validatedate", "O"), | ||
("battery_cap", "O"), | ||
("iscomp", "O"), | ||
("density", "O"), | ||
("compID", "O"), | ||
("ref", "O"), | ||
("IsEquidistant", "O"), | ||
("IsLoggerfile", "O"), | ||
("timeshift", "O"), | ||
] | ||
Hdict[field] = [array([], dtype=dtype)] | ||
elif field == "oldmetadata": | ||
# for version='2.x.g.t (beta)' | ||
dtype = [ | ||
("xcoord", "O"), | ||
("ycoord", "O"), | ||
("upfiltlev", "O"), | ||
("lowfiltlev", "O"), | ||
("surflev", "O"), | ||
("measpointlev", "O"), | ||
("sedsumplength", "O"), | ||
("datlog_serial", "O"), | ||
("datlog_depth", "O"), | ||
("date", "O"), | ||
("comment", "O"), | ||
("LoggerBrand", "O"), | ||
("LoggerType", "O"), | ||
("VegTypo", "O"), | ||
("VegType", "O"), | ||
] | ||
Hdict[field] = [array([], dtype=dtype)] | ||
|
||
else: | ||
raise (ValueError("Unknown field " + field)) | ||
|
||
Hnew = zeros((1,), dtype=dtypeH) | ||
for key, val in Hdict.items(): | ||
Hnew[key] = val | ||
men["H"] = vstack((men["H"], Hnew)) | ||
|
||
# add the stressmodels | ||
dtypeIN = men["IN"].dtype | ||
fields = dtypeIN.fields.keys() | ||
for key in data["stressmodels"].keys(): | ||
sm = data["stressmodels"][key] | ||
for istress, stress in enumerate(sm["stress"]): | ||
INdict = {} | ||
for field in fields: | ||
if field == "ID": | ||
INdict[field] = men["ID"]["IN"][0][0][0][0] | ||
men["ID"]["IN"] += 1 | ||
elif field == "Name": | ||
INdict[field] = stress["name"] | ||
elif field == "Type": | ||
if sm["stressmodel"] == "StressModel2" and istress == 1: | ||
INdict[field] = "EVAP" | ||
else: | ||
INdict[field] = "PREC" | ||
elif field in ["LoggerSerial", "datlog_serial"]: | ||
INdict[field] = "" | ||
elif field == "values": | ||
date = array([datetime2matlab(x) for x in stress["series"].index]) | ||
vals = stress["series"].values | ||
INdict[field] = [vstack((date, vals)).transpose()] | ||
elif field == "filtnr": | ||
INdict[field] = 1 | ||
elif field in ["surflev", "upfiltlev", "lowfiltlev"]: | ||
INdict[field] = NaN | ||
elif field == "xcoord": | ||
INdict[field] = NaN | ||
elif field == "ycoord": | ||
INdict[field] = NaN | ||
elif field == "date": | ||
INdict[field] = datetime2matlab(Timestamp.now()) | ||
elif field == "Meta": | ||
# TODO: has to be a matlab-table | ||
INdict[field] = "" | ||
else: | ||
raise (ValueError("Unknown field " + field)) | ||
INnew = zeros((1,), dtype=dtypeIN) | ||
for key, val in INdict.items(): | ||
INnew[key] = val | ||
men["IN"] = vstack((men["IN"], INnew)) | ||
msg = ( | ||
"Pastas no longer supports export to Menyanthes files and this functionality " | ||
"will be removed in Pastas 1.0." | ||
) | ||
|
||
if False: | ||
# correct an error from loadmat | ||
if "AutoImport" in men["PS"].dtype.fields.keys(): | ||
for i in range(len(men["PS"]["AutoImport"][0][0][0])): | ||
men["PS"]["AutoImport"][0][0][0][i]["IsEnabled"] = 0 | ||
men["PS"]["AutoLocalExportEnabled"] = False | ||
men["PS"]["DrainVisEnabled"] = False | ||
if "RemoteDb" in men["PS"].dtype.fields.keys(): | ||
men["PS"]["RemoteDb"][0][0]["IsConnected"] = 0 | ||
|
||
for key in men["ID"].dtype.fields.keys(): | ||
men["ID"][key] = 0 | ||
def load(*args, **kwargs): | ||
raise DeprecationWarning(msg) | ||
|
||
# currently does not generate a model yet | ||
|
||
# save the file | ||
if not fname.endswith(".men"): | ||
fname = fname + ".men" | ||
savemat(fname, men, appendmat=False) | ||
if verbose: | ||
return print("%s file succesfully exported" % fname) | ||
def dump(*args, **kwargs): | ||
raise DeprecationWarning(msg) |