finish script to plot generic metrics

This commit is contained in:
Starbeamrainbowlabs 2023-03-23 18:00:00 +00:00
parent 698bbe2ffb
commit 1bd59dc038
Signed by: sbrl
GPG key ID: 1BE5172E637709C2

39
aimodel/src/plot_metrics.py Normal file → Executable file
View file

@ -1,19 +1,40 @@
#!/usr/bin/env python3
import os import os
import seaborn as sns import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd import pandas as pd
def plot_metric(train, val, name, dir_output): def plot_metric(ax, train, val, name, dir_output):
plt.plot(train, label=f"train_{name}") ax.plot(train, label=f"train_{name}")
plt.plot(val, label=f"val_{name}") ax.plot(val, label=f"val_{name}")
plt.title(name) ax.set_title(name)
plt.xlabel("epoch") ax.set_xlabel("epoch")
plt.ylabel(name) ax.set_ylabel(name)
plt.savefig(os.path.join(dir_output, f"{name}.png")) # plt.savefig(os.path.join(dir_output, f"{name}.png"))
plt.close() # plt.close()
FILEPATH_INPUT = os.environ["INPUT"] FILEPATH_INPUT = os.environ["INPUT"]
DIRPATH_OUTPUT = os.environ["OUTPUT"] if "OUTPUT" in os.environ else os.getcwd() DIRPATH_OUTPUT = os.environ["OUTPUT"] if "OUTPUT" in os.environ else os.getcwd()
df = pd.read_csv(FILEPATH_INPUT) df = pd.read_csv(FILEPATH_INPUT, sep="\t")
fig = plt.figure(figsize=(10,13))
for i, colname in enumerate(filter(lambda colname: colname != "epoch" and not colname.startswith("val_"), df.columns.values.tolist())):
train = df[colname]
val = df[f"val_{colname}"]
colname_display = colname.replace("metric_dice_coefficient", "dice coefficient") \
.replace("one_hot_mean_iou", "mean iou")
ax = fig.add_subplot(3, 2, i+1)
plot_metric(ax, train, val, name=colname_display, dir_output=DIRPATH_OUTPUT)
fig.tight_layout()
target=os.path.join(DIRPATH_OUTPUT, f"metrics.png")
plt.savefig(target)
print(f">>> Saved to {target}")