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