Commit d064fc04 authored by Pierre-Antoine Rouby's avatar Pierre-Antoine Rouby
Browse files

Mage: Change file name export from '0.XXX' to '<study_name>.XXX'.

Showing with 74 additions and 57 deletions
+74 -57
......@@ -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
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment