2022-03-02 11:13:06 +01:00
|
|
|
import pathlib
|
|
|
|
import configparser
|
|
|
|
import logging
|
|
|
|
import sys
|
|
|
|
|
|
|
|
import numpy as np
|
|
|
|
import pandas as pd
|
|
|
|
|
|
|
|
try:
|
|
|
|
import matplotlib.pyplot as plt
|
|
|
|
except ImportError:
|
|
|
|
plt = None
|
|
|
|
|
|
|
|
|
|
|
|
logging.basicConfig(level="INFO")
|
|
|
|
log = logging.getLogger("bathy")
|
|
|
|
|
|
|
|
config = configparser.ConfigParser()
|
|
|
|
config.read("config.ini")
|
|
|
|
|
|
|
|
root = pathlib.Path(config.get("data", "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")))
|
|
|
|
|
|
|
|
x_hires = np.arange(-0.5 * bathy_hires.size, 0, 0.5)
|
|
|
|
x_lores = np.arange(-1 * bathy_lores.size, 0, 1)
|
2022-03-02 11:24:09 +01:00
|
|
|
x_hstru = np.arange(-0.5 * hstru.size, 0, 0.5)
|
2022-03-02 11:13:06 +01:00
|
|
|
|
|
|
|
bathy_hires_pd = pd.Series(bathy_hires.copy(), index=x_hires)
|
|
|
|
bathy_lores_pd = pd.Series(bathy_lores.copy(), index=x_lores)
|
|
|
|
|
2022-03-02 11:47:57 +01:00
|
|
|
bathy = pd.DataFrame(
|
|
|
|
index=bathy_lores_pd.index.union(bathy_hires_pd.index),
|
|
|
|
columns=("z", "hstru"),
|
2022-03-02 11:24:09 +01:00
|
|
|
)
|
2022-03-02 11:47:57 +01:00
|
|
|
bathy.z[bathy_lores_pd.index] = bathy_lores_pd
|
|
|
|
bathy.z[bathy_hires_pd.index] = bathy_hires_pd
|
|
|
|
|
|
|
|
bathy.hstru = 0
|
|
|
|
bathy.loc[x_hstru, "hstru"] = hstru
|
|
|
|
|
|
|
|
if config.has_section("out"):
|
|
|
|
out = pathlib.Path(config.get("out", "root"))
|
|
|
|
np.savetxt(out.joinpath("bathy.dat"), bathy.z, newline=" ")
|
|
|
|
np.savetxt(out.joinpath("hstru.dat"), bathy.hstru, newline=" ")
|
2022-03-02 11:13:06 +01:00
|
|
|
|
|
|
|
if config.getboolean("proc", "plot", fallback=False):
|
|
|
|
if plt is None:
|
|
|
|
log.error("Could not import PyPlot")
|
|
|
|
sys.exit(1)
|
|
|
|
|
|
|
|
fig, ax = plt.subplots()
|
|
|
|
ax.plot(x_hires, bathy_hires, label="High-res")
|
|
|
|
ax.plot(x_lores, bathy_lores, label="Low-res")
|
2022-03-02 11:47:57 +01:00
|
|
|
ax.plot(bathy.index, bathy.z, ls="-.", c="k", label="Combined")
|
|
|
|
ax.plot(bathy.index, bathy.hstru, label="H stru")
|
2022-03-02 11:13:06 +01:00
|
|
|
|
|
|
|
ax.grid()
|
|
|
|
ax.legend()
|
|
|
|
plt.show(block=True)
|