From e6200e3975fb50e847918a2e999e4e2370dfd93f Mon Sep 17 00:00:00 2001 From: Kevin Wu Date: Wed, 13 Jul 2022 22:40:02 +0000 Subject: [PATCH] Add plots of variance schedules --- .../cosine_var_schedule.pdf | Bin 0 -> 6059 bytes .../linear_var_schedule.pdf | Bin 0 -> 6297 bytes .../quadratic_var_schedule.pdf | Bin 0 -> 7041 bytes protdiff/beta_schedules.py | 34 +++++++++++++++++- protdiff/plotting.py | 9 +++++ 5 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 plots/variance_schedules/cosine_var_schedule.pdf create mode 100644 plots/variance_schedules/linear_var_schedule.pdf create mode 100644 plots/variance_schedules/quadratic_var_schedule.pdf create mode 100644 protdiff/plotting.py diff --git a/plots/variance_schedules/cosine_var_schedule.pdf b/plots/variance_schedules/cosine_var_schedule.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a3d9f22a9f84d763e09c034fa6165d734413b176 GIT binary patch literal 6059 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 V!VyViu0^9Wm}Co!sUEK6{{kIlJBa`Q literal 0 HcmV?d00001 diff --git a/plots/variance_schedules/quadratic_var_schedule.pdf b/plots/variance_schedules/quadratic_var_schedule.pdf new file mode 100644 index 0000000000000000000000000000000000000000..8469237bb74439f63868b9840f9f01f128f95bff GIT binary patch literal 7041 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 literal 0 HcmV?d00001 diff --git a/protdiff/beta_schedules.py b/protdiff/beta_schedules.py index 9cfe1a0..8a5eff0 100644 --- a/protdiff/beta_schedules.py +++ b/protdiff/beta_schedules.py @@ -1,7 +1,12 @@ """ Describe beta schedules """ -from typing import Literal +import os +from typing import Literal, get_args + +import numpy as np +from matplotlib import pyplot as plt + import torch SCHEDULES = Literal["linear", "cosine", "quadratic"] @@ -45,3 +50,30 @@ def get_variance_schedule(keyword: SCHEDULES, timesteps: int, **kwargs) -> torch return quadratic_beta_schedule(timesteps, **kwargs) else: raise ValueError(f"Unrecognized variance schedule: {keyword}") + + +def plot_variance_schedule( + fname: str, keyword: SCHEDULES, timesteps: int = 1000, **kwargs +): + """ + Plot the given variance schedule + """ + variance_vals = get_variance_schedule( + keyword=keyword, timesteps=timesteps, **kwargs + ).numpy() + + fig, ax = plt.subplots(dpi=300) + ax.plot(np.arange(timesteps), variance_vals) + fig.savefig(fname) + + +if __name__ == "__main__": + from plotting import PLOT_DIR + + var_plot_dir = os.path.join(PLOT_DIR, "variance_schedules") + if not os.path.isdir(var_plot_dir): + os.makedirs(var_plot_dir) + for s in get_args(SCHEDULES): + plot_variance_schedule( + os.path.join(var_plot_dir, f"{s}_var_schedule.pdf"), keyword=s + ) diff --git a/protdiff/plotting.py b/protdiff/plotting.py new file mode 100644 index 0000000..5475486 --- /dev/null +++ b/protdiff/plotting.py @@ -0,0 +1,9 @@ +""" +Utility functions for plotting +""" + + +import os + +PLOT_DIR = os.path.join(os.path.dirname(os.path.dirname(__file__)), "plots") +assert os.path.isdir(PLOT_DIR)