1
Fork 0

Cleanup of plots

This commit is contained in:
Edgar P. Burkhart 2022-03-28 13:19:35 +02:00
parent d17d25b8e2
commit 87e2918ffd
Signed by: edpibu
GPG key ID: 9833D3C5A25BD227
7 changed files with 8 additions and 208 deletions

View file

@ -141,4 +141,4 @@ if plt is not None and config.getboolean("out", "plot", fallback=False):
fig, ax = plt.subplots() fig, ax = plt.subplots()
ax.plot(-x, z, color="k") ax.plot(-x, z, color="k")
ax.fill_between(-x, z+hstru, z, color="k", alpha=.2) ax.fill_between(-x, z+hstru, z, color="k", alpha=.2)
plt.show(block=True) fig.savefig(out_root.joinpath("bathy.pdf"))

View file

@ -2,14 +2,8 @@
#plot=True #plot=True
[data] [data]
root=data out=../data/out
hires=bathyhires.dat out_nb=../data/out
bathy=buoyarthabathy.dat
hstru=Hstru.dat
poro=Poro.dat
psize=Psize.dat
out=out_data
out_nb=out_data_nb
[swash] [swash]
nb=True nb=True
@ -26,3 +20,6 @@ out=out_post
dt=0.25 dt=0.25
x0=-1250 x0=-1250
t0=180 t0=180
[plot]
out=out_plt

View file

@ -6,7 +6,6 @@ import pathlib
import matplotlib.animation as animation import matplotlib.animation as animation
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
import numpy as np import numpy as np
import pandas as pd
parser = argparse.ArgumentParser(description="Animate swash output") parser = argparse.ArgumentParser(description="Animate swash output")
parser.add_argument("-v", "--verbose", action="count", default=0) parser.add_argument("-v", "--verbose", action="count", default=0)
@ -22,10 +21,6 @@ config.read("config.ini")
inp = pathlib.Path(config.get("post", "inp")) inp = pathlib.Path(config.get("post", "inp"))
root = pathlib.Path(config.get("swash", "out")) root = pathlib.Path(config.get("swash", "out"))
bathy = pd.read_hdf(
pathlib.Path(config.get("data", "out")).joinpath("bathy.h5"), "bathy"
)
def data(var): def data(var):
return np.load(inp.joinpath(f"{var}.npy")) return np.load(inp.joinpath(f"{var}.npy"))

View file

@ -1,93 +0,0 @@
import argparse
import configparser
import logging
import pathlib
import sys
import numpy as np
import pandas as pd
try:
import matplotlib.pyplot as plt
except ImportError:
plt = None
parser = argparse.ArgumentParser(description="Pre-process bathymetry")
parser.add_argument("-v", "--verbose", action="count", default=0)
args = parser.parse_args()
logging.basicConfig(level=max((10, 20 - 10 * args.verbose)))
log = logging.getLogger("bathy")
log.info("Starting bathymetry pre-processing")
config = configparser.ConfigParser()
config.read("config.ini")
root = pathlib.Path(config.get("data", "root"))
log.info(f"Reading input data from '{root}'")
bathy_hires = np.loadtxt(root.joinpath(config.get("data", "hires")))
bathy_lores = np.loadtxt(root.joinpath(config.get("data", "bathy")))
hstru = np.loadtxt(root.joinpath(config.get("data", "hstru")))
poro = np.loadtxt(root.joinpath(config.get("data", "poro")))
psize = np.loadtxt(root.joinpath(config.get("data", "psize")))
log.info("Generating grid")
x_hires = -np.arange(0, 0.5 * bathy_hires.size, 0.5)[::-1]
x_lores = -np.arange(0, 1 * bathy_lores.size, 1)[::-1]
x_hstru = -np.arange(0, 0.5 * hstru.size, 0.5)[::-1]
log.info("Generating output data")
bathy_hires_pd = pd.Series(bathy_hires.copy(), index=x_hires)
bathy_lores_pd = pd.Series(bathy_lores.copy(), index=x_lores)
bathy = pd.DataFrame(
index=bathy_lores_pd.index.union(bathy_hires_pd.index),
columns=("z", "hstru", "poro", "psize"),
data=0,
)
bathy.z[bathy_lores_pd.index] = bathy_lores_pd
bathy.z[bathy_hires_pd.index] = bathy_hires_pd
bathy.loc[x_hstru, ("hstru", "poro", "psize")] = np.array(
(hstru, poro, psize)
).T
bathy = bathy.reindex(bathy_lores_pd.index)
log.debug(f"Bathymetry:\n{bathy}")
log.info(
f"xmin: {bathy.index.min()}, "
f"xmax: {bathy.index.max()}, "
f"n: {bathy.index.size}"
)
if config.has_option("data", "out"):
out = pathlib.Path(config.get("data", "out"))
log.info(f"Writing output data to '{out}'")
out.mkdir(exist_ok=True)
np.savetxt(out.joinpath("bathy.dat"), bathy.z, newline=" ")
np.savetxt(out.joinpath("hstru.dat"), bathy.hstru, newline=" ")
np.savetxt(out.joinpath("poro.dat"), bathy.poro, newline=" ")
np.savetxt(out.joinpath("psize.dat"), bathy.psize, newline=" ")
bathy.to_hdf(out.joinpath("bathy.h5"), "bathy", mode="w")
if config.getboolean("proc", "plot", fallback=False):
if plt is None:
log.error("Could not import PyPlot")
sys.exit(1)
log.info("Plotting data")
fig, ax = plt.subplots()
ax.plot(x_hires, bathy_hires, label="High-res")
ax.plot(x_lores, bathy_lores, label="Low-res")
ax.plot(bathy.index, bathy.z, ls="-.", c="k", label="Combined")
ax.plot(bathy.index, bathy.z + bathy.hstru, label="Hstru")
ax.grid()
ax.legend()
plt.show(block=True)
log.info("Processing finished")

View file

@ -1,94 +0,0 @@
import argparse
import configparser
import logging
import pathlib
import sys
import numpy as np
import pandas as pd
try:
import matplotlib.pyplot as plt
except ImportError:
plt = None
parser = argparse.ArgumentParser(description="Pre-process bathymetry")
parser.add_argument("-v", "--verbose", action="count", default=0)
args = parser.parse_args()
logging.basicConfig(level=max((10, 20 - 10 * args.verbose)))
log = logging.getLogger("bathy")
log.info("Starting bathymetry pre-processing")
config = configparser.ConfigParser()
config.read("config.ini")
root = pathlib.Path(config.get("data", "root"))
log.info(f"Reading input data from '{root}'")
bathy_hires = np.loadtxt(root.joinpath(config.get("data", "hires")))
bathy_lores = np.loadtxt(root.joinpath(config.get("data", "bathy")))
hstru = np.loadtxt(root.joinpath(config.get("data", "hstru")))
poro = np.loadtxt(root.joinpath(config.get("data", "poro")))
psize = np.loadtxt(root.joinpath(config.get("data", "psize")))
log.info("Generating grid")
x_hires = -np.arange(0, 0.5 * bathy_hires.size, 0.5)[::-1]
x_lores = -np.arange(0, 1 * bathy_lores.size, 1)[::-1]
x_hstru = -np.arange(0, 0.5 * hstru.size, 0.5)[::-1]
log.info("Generating output data")
bathy_hires_pd = pd.Series(bathy_hires.copy(), index=x_hires)
bathy_lores_pd = pd.Series(bathy_lores.copy(), index=x_lores)
bathy = pd.DataFrame(
index=bathy_lores_pd.index.union(bathy_hires_pd.index),
columns=("z", "hstru", "poro", "psize"),
data=0,
)
bathy.z[bathy_lores_pd.index] = bathy_lores_pd
bathy.z[bathy_hires_pd.index] = bathy_hires_pd
bathy.z = np.minimum(bathy.z, -15)
# bathy.loc[x_hstru, ("hstru", "poro", "psize")] = np.array(
# (hstru, poro, psize)
# ).T
bathy = bathy.reindex(bathy_lores_pd.index)
log.debug(f"Bathymetry:\n{bathy}")
log.info(
f"xmin: {bathy.index.min()}, "
f"xmax: {bathy.index.max()}, "
f"n: {bathy.index.size}"
)
if config.has_option("data", "out_nb"):
out = pathlib.Path(config.get("data", "out_nb"))
log.info(f"Writing output data to '{out}'")
out.mkdir(exist_ok=True)
np.savetxt(out.joinpath("bathy.dat"), bathy.z, newline=" ")
np.savetxt(out.joinpath("hstru.dat"), bathy.hstru, newline=" ")
np.savetxt(out.joinpath("poro.dat"), bathy.poro, newline=" ")
np.savetxt(out.joinpath("psize.dat"), bathy.psize, newline=" ")
bathy.to_hdf(out.joinpath("bathy.h5"), "bathy", mode="w")
if config.getboolean("proc", "plot", fallback=False):
if plt is None:
log.error("Could not import PyPlot")
sys.exit(1)
log.info("Plotting data")
fig, ax = plt.subplots()
ax.plot(x_hires, bathy_hires, label="High-res")
ax.plot(x_lores, bathy_lores, label="Low-res")
ax.plot(bathy.index, bathy.z, ls="-.", c="k", label="Combined")
ax.plot(bathy.index, bathy.z + bathy.hstru, label="Hstru")
ax.grid()
ax.legend()
plt.show(block=True)
log.info("Processing finished")

View file

@ -6,7 +6,6 @@ import pathlib
import matplotlib.animation as animation import matplotlib.animation as animation
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
import numpy as np import numpy as np
import pandas as pd
parser = argparse.ArgumentParser(description="Animate swash output") parser = argparse.ArgumentParser(description="Animate swash output")
parser.add_argument("-v", "--verbose", action="count", default=0) parser.add_argument("-v", "--verbose", action="count", default=0)
@ -21,10 +20,7 @@ config.read("config.ini")
inp = pathlib.Path(config.get("post", "inp")) inp = pathlib.Path(config.get("post", "inp"))
root = pathlib.Path(config.get("swash", "out")) root = pathlib.Path(config.get("swash", "out"))
out = pathlib.Path(config.get("plot", "out"))
bathy = pd.read_hdf(
pathlib.Path(config.get("data", "out")).joinpath("bathy.h5"), "bathy"
)
def data(var): def data(var):
@ -89,4 +85,4 @@ ani = animation.FuncAnimation(
fig, animate, frames=wl[:, 0].size, interval=20, blit=True fig, animate, frames=wl[:, 0].size, interval=20, blit=True
) )
plt.show(block=True) ani.save(out.joinpath("layers.mp4", codec="h265"))

View file

@ -164,6 +164,5 @@ out.mkdir(parents=True, exist_ok=True)
fig.savefig(out.joinpath("t.png")) fig.savefig(out.joinpath("t.png"))
fig_r.savefig(out.joinpath("R.png")) fig_r.savefig(out.joinpath("R.png"))
fig_x.savefig(out.joinpath("x.png")) fig_x.savefig(out.joinpath("x.png"))
plt.show(block=True)
log.info("Finished post-processing") log.info("Finished post-processing")