mirror of https://gitlab.com/pamhyr/pamhyr2
Mage: Change file name export from '0.XXX' to '<study_name>.XXX'.
parent
f9c28034a5
commit
d064fc042a
|
|
@ -67,6 +67,9 @@ class AbstractSolver(object):
|
||||||
self._process = None
|
self._process = None
|
||||||
self._output = None
|
self._output = None
|
||||||
|
|
||||||
|
# Last study running
|
||||||
|
self._study = None
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"{self._name} : {self._type} : {self._description}"
|
return f"{self._name} : {self._type} : {self._description}"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -105,18 +105,23 @@ class Mage(AbstractSolver):
|
||||||
return l
|
return l
|
||||||
|
|
||||||
def input_param(self):
|
def input_param(self):
|
||||||
return "0.REP"
|
name = self._study.name
|
||||||
|
return f"{name}.REP"
|
||||||
|
|
||||||
def log_file(self):
|
def log_file(self):
|
||||||
return "0.TRA"
|
name = self._study.name
|
||||||
|
return f"{name}.TRA"
|
||||||
|
|
||||||
@timer
|
@timer
|
||||||
def _export_ST(self, study, repertory, qlog):
|
def _export_ST(self, study, repertory, qlog, name="0"):
|
||||||
files = []
|
files = []
|
||||||
|
|
||||||
if qlog is not None:
|
if qlog is not None:
|
||||||
qlog.put("Export ST file")
|
qlog.put("Export ST file")
|
||||||
|
|
||||||
|
os.makedirs(os.path.join(repertory, "net"), exist_ok=True)
|
||||||
|
gra_file = f"{name}.GRA"
|
||||||
|
|
||||||
# Write header
|
# Write header
|
||||||
edges = study.river.edges()
|
edges = study.river.edges()
|
||||||
edges = list(
|
edges = list(
|
||||||
|
|
@ -131,8 +136,8 @@ class Mage(AbstractSolver):
|
||||||
if edge._name == "":
|
if edge._name == "":
|
||||||
name = f"Reach_{edge.id}"
|
name = f"Reach_{edge.id}"
|
||||||
|
|
||||||
with mage_file_open(os.path.join(repertory, f"{name}.ST"), "w+") as f:
|
with mage_file_open(os.path.join(repertory, "net", f"{name}.ST"), "w+") as f:
|
||||||
files.append(f"{name}.ST")
|
files.append(str(os.path.join("net", f"{name}.ST")))
|
||||||
|
|
||||||
cnt_num = 1
|
cnt_num = 1
|
||||||
for profile in edge.reach.profiles:
|
for profile in edge.reach.profiles:
|
||||||
|
|
@ -149,7 +154,7 @@ class Mage(AbstractSolver):
|
||||||
sediment = ""
|
sediment = ""
|
||||||
if profile.sl is not None:
|
if profile.sl is not None:
|
||||||
if not any(filter(lambda f: ".GRA" in f, files)):
|
if not any(filter(lambda f: ".GRA" in f, files)):
|
||||||
files.append("0.GRA")
|
files.append(gra_file)
|
||||||
|
|
||||||
nl = len(profile.sl)
|
nl = len(profile.sl)
|
||||||
sediment = f" {nl:>3}"
|
sediment = f" {nl:>3}"
|
||||||
|
|
@ -181,7 +186,7 @@ class Mage(AbstractSolver):
|
||||||
return files
|
return files
|
||||||
|
|
||||||
@timer
|
@timer
|
||||||
def _export_BC(self, t, bounds, repertory, qlog):
|
def _export_BC(self, t, bounds, repertory, qlog, name="0"):
|
||||||
files = []
|
files = []
|
||||||
|
|
||||||
if len(bounds) == 0:
|
if len(bounds) == 0:
|
||||||
|
|
@ -190,8 +195,8 @@ class Mage(AbstractSolver):
|
||||||
if qlog is not None:
|
if qlog is not None:
|
||||||
qlog.put(f"Export {t} file")
|
qlog.put(f"Export {t} file")
|
||||||
|
|
||||||
with mage_file_open(os.path.join(repertory, f"0.{t}"), "w+") as f:
|
with mage_file_open(os.path.join(repertory, f"{name}.{t}"), "w+") as f:
|
||||||
files.append(f"0.{t}")
|
files.append(f"{name}.{t}")
|
||||||
|
|
||||||
for bound in bounds:
|
for bound in bounds:
|
||||||
name = f"{bound.node.id:3}".replace(" ", "x")
|
name = f"{bound.node.id:3}".replace(" ", "x")
|
||||||
|
|
@ -204,7 +209,7 @@ class Mage(AbstractSolver):
|
||||||
v0 = d[0]
|
v0 = d[0]
|
||||||
v1 = d[1]
|
v1 = d[1]
|
||||||
|
|
||||||
if t in ["HYD", "QSO"]:
|
if t in ["HYD", "QSO", "LIM"]:
|
||||||
v0 /= 60 # Convert first column to minute
|
v0 /= 60 # Convert first column to minute
|
||||||
|
|
||||||
f.write(f"{v0:10}{v1:10}\n")
|
f.write(f"{v0:10}{v1:10}\n")
|
||||||
|
|
@ -212,7 +217,7 @@ class Mage(AbstractSolver):
|
||||||
return files
|
return files
|
||||||
|
|
||||||
@timer
|
@timer
|
||||||
def _export_bound_cond(self, study, repertory, qlog):
|
def _export_bound_cond(self, study, repertory, qlog, name="0"):
|
||||||
files = []
|
files = []
|
||||||
lst = study.river.boundary_condition
|
lst = study.river.boundary_condition
|
||||||
|
|
||||||
|
|
@ -232,22 +237,22 @@ class Mage(AbstractSolver):
|
||||||
elif bound.bctype == "SL":
|
elif bound.bctype == "SL":
|
||||||
QSO.append(bound)
|
QSO.append(bound)
|
||||||
|
|
||||||
files = files + self._export_BC("AVA", AVA, repertory, qlog)
|
files = files + self._export_BC("AVA", AVA, repertory, qlog, name=name)
|
||||||
files = files + self._export_BC("HYD", HYD, repertory, qlog)
|
files = files + self._export_BC("HYD", HYD, repertory, qlog, name=name)
|
||||||
files = files + self._export_BC("LIM", LIM, repertory, qlog)
|
files = files + self._export_BC("LIM", LIM, repertory, qlog, name=name)
|
||||||
files = files + self._export_QSO(QSO, repertory, qlog)
|
files = files + self._export_QSO(QSO, repertory, qlog, name=name)
|
||||||
|
|
||||||
return files
|
return files
|
||||||
|
|
||||||
# @timer
|
# @timer
|
||||||
# def _export_LC(self, lateral, repertory, qlog):
|
# def _export_LC(self, lateral, repertory, qlog, name="0"):
|
||||||
# files = []
|
# files = []
|
||||||
|
|
||||||
# if qlog is not None:
|
# if qlog is not None:
|
||||||
# qlog.put(f"Export LAT file")
|
# qlog.put(f"Export LAT file")
|
||||||
|
|
||||||
# with mage_file_open(os.path.join(repertory, f"0.LAT"), "w+") as f:
|
# with mage_file_open(os.path.join(repertory, f"{name}.LAT"), "w+") as f:
|
||||||
# files.append(f"0.LAT")
|
# files.append(f"{name}.LAT")
|
||||||
|
|
||||||
# name = f"{lateral.node.id:3}".replace(" ", "x")
|
# name = f"{lateral.node.id:3}".replace(" ", "x")
|
||||||
# f.write(f"* {lateral.node.name} ({name}) {lateral.bctype}\n")
|
# f.write(f"* {lateral.node.name} ({name}) {lateral.bctype}\n")
|
||||||
|
|
@ -256,12 +261,12 @@ class Mage(AbstractSolver):
|
||||||
# f.write(f"*{header[0]:>9}|{header[1]:>10}\n")
|
# f.write(f"*{header[0]:>9}|{header[1]:>10}\n")
|
||||||
|
|
||||||
# for d in lateral.data:
|
# for d in lateral.data:
|
||||||
# f.write(f"{d[0]:10.3f}{d[1]:10.3f}\n")
|
# f.write(f"{d[0]:1{name}.3f}{d[1]:10.3f}\n")
|
||||||
|
|
||||||
# return files
|
# return files
|
||||||
|
|
||||||
# @timer
|
# @timer
|
||||||
# def _export_lateral_contrib(self, study, repertory, qlog):
|
# def _export_lateral_contrib(self, study, repertory, qlog, name="0"):
|
||||||
# files = []
|
# files = []
|
||||||
# lst = study.river.lateral_contribution
|
# lst = study.river.lateral_contribution
|
||||||
|
|
||||||
|
|
@ -272,15 +277,15 @@ class Mage(AbstractSolver):
|
||||||
# return files
|
# return files
|
||||||
|
|
||||||
@timer
|
@timer
|
||||||
def _export_RUG(self, study, repertory, qlog):
|
def _export_RUG(self, study, repertory, qlog, name="0"):
|
||||||
files = []
|
files = []
|
||||||
|
|
||||||
if qlog is not None:
|
if qlog is not None:
|
||||||
qlog.put("Export RUG file")
|
qlog.put("Export RUG file")
|
||||||
|
|
||||||
# Write header
|
# Write header
|
||||||
with mage_file_open(os.path.join(repertory, "0.RUG"), "w+") as f:
|
with mage_file_open(os.path.join(repertory, f"{name}.RUG"), "w+") as f:
|
||||||
files.append("0.RUG")
|
files.append(f"{name}.RUG")
|
||||||
|
|
||||||
edges = study.river.edges()
|
edges = study.river.edges()
|
||||||
edges = list(
|
edges = list(
|
||||||
|
|
@ -313,14 +318,14 @@ class Mage(AbstractSolver):
|
||||||
return files
|
return files
|
||||||
|
|
||||||
@timer
|
@timer
|
||||||
def _export_INI(self, study, repertory, qlog):
|
def _export_INI(self, study, repertory, qlog, name="0"):
|
||||||
files = []
|
files = []
|
||||||
|
|
||||||
if qlog is not None:
|
if qlog is not None:
|
||||||
qlog.put("Export INI file")
|
qlog.put("Export INI file")
|
||||||
|
|
||||||
# Write header
|
# Write header
|
||||||
with mage_file_open(os.path.join(repertory, "0.INI"), "w+") as f:
|
with mage_file_open(os.path.join(repertory, f"{name}.INI"), "w+") as f:
|
||||||
has_ini = False
|
has_ini = False
|
||||||
id = 1
|
id = 1
|
||||||
reachs = study.river.edges()
|
reachs = study.river.edges()
|
||||||
|
|
@ -358,16 +363,16 @@ class Mage(AbstractSolver):
|
||||||
id += 1
|
id += 1
|
||||||
|
|
||||||
if has_ini:
|
if has_ini:
|
||||||
files.append("0.INI")
|
files.append(f"{name}.INI")
|
||||||
return files
|
return files
|
||||||
|
|
||||||
@timer
|
@timer
|
||||||
def _export_REP(self, study, repertory, files, qlog):
|
def _export_REP(self, study, repertory, files, qlog, name="0"):
|
||||||
if qlog is not None:
|
if qlog is not None:
|
||||||
qlog.put("Export REP file")
|
qlog.put("Export REP file")
|
||||||
|
|
||||||
# Write header
|
# Write header
|
||||||
with mage_file_open(os.path.join(repertory, f"0.REP"), "w+") as f:
|
with mage_file_open(os.path.join(repertory, f"{name}.REP"), "w+") as f:
|
||||||
f.write("confirmation=non\n")
|
f.write("confirmation=non\n")
|
||||||
|
|
||||||
for file in files:
|
for file in files:
|
||||||
|
|
@ -377,8 +382,8 @@ class Mage(AbstractSolver):
|
||||||
f.write(f"{EXT} {file}\n")
|
f.write(f"{EXT} {file}\n")
|
||||||
|
|
||||||
f.write("* OUTPUT\n")
|
f.write("* OUTPUT\n")
|
||||||
f.write(f"TRA 0.TRA\n")
|
f.write(f"TRA {name}.TRA\n")
|
||||||
f.write(f"BIN 0.BIN\n")
|
f.write(f"BIN {name}.BIN\n")
|
||||||
|
|
||||||
for file in files:
|
for file in files:
|
||||||
EXT = file.split('.')[1]
|
EXT = file.split('.')[1]
|
||||||
|
|
@ -389,7 +394,10 @@ class Mage(AbstractSolver):
|
||||||
|
|
||||||
@timer
|
@timer
|
||||||
def export(self, study, repertory, qlog = None):
|
def export(self, study, repertory, qlog = None):
|
||||||
self._export_ST(study, repertory, qlog)
|
self._study = study
|
||||||
|
name = study.name.replace(" ", "_")
|
||||||
|
|
||||||
|
self._export_ST(study, repertory, qlog, name = name)
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
@ -397,11 +405,11 @@ class Mage(AbstractSolver):
|
||||||
# RESULTS #
|
# RESULTS #
|
||||||
###########
|
###########
|
||||||
|
|
||||||
def read_bin(self, study, repertory, results, qlog = None):
|
def read_bin(self, study, repertory, results, qlog = None, name="0"):
|
||||||
return
|
return
|
||||||
|
|
||||||
@timer
|
@timer
|
||||||
def results(self, study, repertory, qlog = None):
|
def results(self, study, repertory, qlog = None, name="0"):
|
||||||
results = Results(study = study)
|
results = Results(study = study)
|
||||||
|
|
||||||
self.read_bin(study, repertory, results, qlog)
|
self.read_bin(study, repertory, results, qlog)
|
||||||
|
|
@ -462,14 +470,14 @@ class Mage8(Mage):
|
||||||
return l
|
return l
|
||||||
|
|
||||||
@timer
|
@timer
|
||||||
def _export_PAR(self, study, repertory, qlog = None):
|
def _export_PAR(self, study, repertory, qlog = None, name = "0"):
|
||||||
files = []
|
files = []
|
||||||
|
|
||||||
if qlog is not None:
|
if qlog is not None:
|
||||||
qlog.put("Export PAR file")
|
qlog.put("Export PAR file")
|
||||||
|
|
||||||
with mage_file_open(os.path.join(repertory, "0.PAR"), "w+") as f:
|
with mage_file_open(os.path.join(repertory, f"{name}.PAR"), "w+") as f:
|
||||||
files.append("0.PAR")
|
files.append(f"{name}.PAR")
|
||||||
|
|
||||||
params = study.river.get_params(self.type).parameters
|
params = study.river.get_params(self.type).parameters
|
||||||
for p in params:
|
for p in params:
|
||||||
|
|
@ -486,14 +494,14 @@ class Mage8(Mage):
|
||||||
return files
|
return files
|
||||||
|
|
||||||
@timer
|
@timer
|
||||||
def _export_NET(self, study, repertory, qlog = None):
|
def _export_NET(self, study, repertory, qlog = None, name="0"):
|
||||||
files = []
|
files = []
|
||||||
|
|
||||||
if qlog is not None:
|
if qlog is not None:
|
||||||
qlog.put("Export NET file")
|
qlog.put("Export NET file")
|
||||||
|
|
||||||
with mage_file_open(os.path.join(repertory, "0.NET"), "w+") as f:
|
with mage_file_open(os.path.join(repertory, f"{name}.NET"), "w+") as f:
|
||||||
files.append("0.NET")
|
files.append(f"{name}.NET")
|
||||||
|
|
||||||
edges = study.river.edges()
|
edges = study.river.edges()
|
||||||
edges = list(
|
edges = list(
|
||||||
|
|
@ -512,14 +520,14 @@ class Mage8(Mage):
|
||||||
|
|
||||||
n1 = f"{e.node1.id:3}".replace(" ", "x")
|
n1 = f"{e.node1.id:3}".replace(" ", "x")
|
||||||
n2 = f"{e.node2.id:3}".replace(" ", "x")
|
n2 = f"{e.node2.id:3}".replace(" ", "x")
|
||||||
file = name + ".ST"
|
file = os.path.join("net", name + ".ST")
|
||||||
|
|
||||||
f.write(f"{id} {n1} {n2} {file}\n")
|
f.write(f"{id} {n1} {n2} {file}\n")
|
||||||
|
|
||||||
return files
|
return files
|
||||||
|
|
||||||
@timer
|
@timer
|
||||||
def _export_QSO(self, bounds, repertory, qlog):
|
def _export_QSO(self, bounds, repertory, qlog, name="0"):
|
||||||
files = []
|
files = []
|
||||||
|
|
||||||
if len(bounds) == 0:
|
if len(bounds) == 0:
|
||||||
|
|
@ -528,8 +536,8 @@ class Mage8(Mage):
|
||||||
if qlog is not None:
|
if qlog is not None:
|
||||||
qlog.put(f"Export QSO file")
|
qlog.put(f"Export QSO file")
|
||||||
|
|
||||||
with mage_file_open(os.path.join(repertory, f"0.QSO"), "w+") as f:
|
with mage_file_open(os.path.join(repertory, f"{name}.QSO"), "w+") as f:
|
||||||
files.append(f"0.QSO")
|
files.append(f"{name}.QSO")
|
||||||
|
|
||||||
for bound in bounds:
|
for bound in bounds:
|
||||||
name = f"{bound.node.id:3}".replace(" ", "x")
|
name = f"{bound.node.id:3}".replace(" ", "x")
|
||||||
|
|
@ -545,16 +553,19 @@ class Mage8(Mage):
|
||||||
|
|
||||||
|
|
||||||
@timer
|
@timer
|
||||||
def export(self, study, repertory, qlog = None):
|
def export(self, study, repertory, qlog = None, name="0"):
|
||||||
|
self._study = study
|
||||||
|
name = study.name.replace(" ", "_")
|
||||||
|
|
||||||
files = []
|
files = []
|
||||||
|
|
||||||
files = self._export_ST(study, repertory, qlog)
|
files = self._export_ST(study, repertory, qlog, name=name)
|
||||||
files = files + self._export_PAR(study, repertory, qlog)
|
files = files + self._export_PAR(study, repertory, qlog, name=name)
|
||||||
files = files + self._export_NET(study, repertory, qlog)
|
files = files + self._export_NET(study, repertory, qlog, name=name)
|
||||||
files = files + self._export_bound_cond(study, repertory, qlog)
|
files = files + self._export_bound_cond(study, repertory, qlog, name=name)
|
||||||
files = files + self._export_RUG(study, repertory, qlog)
|
files = files + self._export_RUG(study, repertory, qlog, name=name)
|
||||||
files = files + self._export_INI(study, repertory, qlog)
|
files = files + self._export_INI(study, repertory, qlog, name=name)
|
||||||
self._export_REP(study, repertory, files, qlog)
|
self._export_REP(study, repertory, files, qlog, name=name)
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
@ -563,10 +574,10 @@ class Mage8(Mage):
|
||||||
###########
|
###########
|
||||||
|
|
||||||
@timer
|
@timer
|
||||||
def read_bin(self, study, repertory, results, qlog = None):
|
def read_bin(self, study, repertory, results, qlog = None, name="0"):
|
||||||
logger.info(f"read_bin: Start ...")
|
logger.info(f"read_bin: Start ...")
|
||||||
|
|
||||||
with mage_file_open(os.path.join(repertory, f"0.BIN"), "r") as f:
|
with mage_file_open(os.path.join(repertory, f"{name}.BIN"), "r") as f:
|
||||||
newline = lambda: np.fromfile(f, dtype=np.int32, count=1)
|
newline = lambda: np.fromfile(f, dtype=np.int32, count=1)
|
||||||
endline = lambda: np.fromfile(f, dtype=np.int32, count=1)
|
endline = lambda: np.fromfile(f, dtype=np.int32, count=1)
|
||||||
|
|
||||||
|
|
@ -685,13 +696,13 @@ class Mage8(Mage):
|
||||||
logger.info(f"read_bin: ... end with {len(ts)} timestamp read")
|
logger.info(f"read_bin: ... end with {len(ts)} timestamp read")
|
||||||
|
|
||||||
@timer
|
@timer
|
||||||
def read_gra(self, study, repertory, results, qlog = None):
|
def read_gra(self, study, repertory, results, qlog = None, name="0"):
|
||||||
if not study.river.has_sediment():
|
if not study.river.has_sediment():
|
||||||
return
|
return
|
||||||
|
|
||||||
logger.info(f"read_gra: Start ...")
|
logger.info(f"read_gra: Start ...")
|
||||||
|
|
||||||
with mage_file_open(os.path.join(repertory, f"0.GRA"), "r") as f:
|
with mage_file_open(os.path.join(repertory, f"{name}.GRA"), "r") as f:
|
||||||
newline = lambda: np.fromfile(f, dtype=np.int32, count=1)
|
newline = lambda: np.fromfile(f, dtype=np.int32, count=1)
|
||||||
endline = lambda: np.fromfile(f, dtype=np.int32, count=1)
|
endline = lambda: np.fromfile(f, dtype=np.int32, count=1)
|
||||||
|
|
||||||
|
|
@ -838,7 +849,10 @@ class Mage8(Mage):
|
||||||
|
|
||||||
@timer
|
@timer
|
||||||
def results(self, study, repertory, qlog = None):
|
def results(self, study, repertory, qlog = None):
|
||||||
results = super(Mage8, self).results(study, repertory, qlog)
|
self._study = study
|
||||||
self.read_gra(study, repertory, results, qlog)
|
name = study.name.replace(" ", "_")
|
||||||
|
|
||||||
|
results = super(Mage8, self).results(study, repertory, qlog, name = name)
|
||||||
|
self.read_gra(study, repertory, results, qlog, name = name)
|
||||||
|
|
||||||
return results
|
return results
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue