| | |
| | import pandas as pd |
| | import matplotlib.pyplot as plt |
| | import seaborn as sns |
| | import pandas as pd |
| | import numpy as np |
| | import numpy as np |
| | import torch |
| | import os |
| |
|
| |
|
| | def plot_data_with_distribution_seaborn(log1, log2=None, |
| | save_path=None, |
| | label1=None, |
| | label2=None, |
| | title=None): |
| | """ |
| | Plots one or two datasets with the average values and distributions over iterations using Seaborn. |
| | |
| | Parameters: |
| | log1 (list of lists): The first list of scores (each element is a list of scores for an iteration). |
| | log2 (list of lists, optional): The second list of scores (each element is a list of scores for an iteration). Defaults to None. |
| | save_path (str): Path to save the plot. Defaults to None. |
| | label1 (str): Label for the first dataset. Defaults to "Fraction of Valid Peptide SMILES". |
| | label2 (str, optional): Label for the second dataset. Defaults to None. |
| | title (str): Title of the plot. Defaults to "Fraction of Valid Peptides Over Iterations". |
| | """ |
| | |
| | data1 = pd.DataFrame({ |
| | "Iteration": np.repeat(range(1, len(log1) + 1), [len(scores) for scores in log1]), |
| | label1: [score for scores in log1 for score in scores], |
| | "Dataset": label1, |
| | "Style": "Log1" |
| | }) |
| |
|
| | |
| | if log2 is not None: |
| | data2 = pd.DataFrame({ |
| | "Iteration": np.repeat(range(1, len(log2) + 1), [len(scores) for scores in log2]), |
| | label2: [score for scores in log2 for score in scores], |
| | "Dataset": label2, |
| | "Style": "Log2" |
| | }) |
| | data = pd.concat([data1, data2], ignore_index=True) |
| | else: |
| | data = data1 |
| | |
| | palette = { |
| | label1: "#8181ED", |
| | label2: "#D577FF" |
| | } |
| |
|
| | |
| | sns.set_theme() |
| | sns.set_context("paper") |
| |
|
| | |
| | sns.relplot( |
| | data=data, |
| | kind="line", |
| | x="Iteration", |
| | y=label1, |
| | hue="Dataset", |
| | style="Style", |
| | markers=True, |
| | dashes=True, |
| | ci="sd", |
| | height=5, |
| | aspect=1.5, |
| | palette=palette |
| | ) |
| |
|
| | |
| | plt.title(title) |
| | plt.xlabel("Iteration") |
| | plt.ylabel(label1) |
| |
|
| | if save_path: |
| | plt.savefig(save_path, dpi=300, bbox_inches='tight') |
| | print(f"Plot saved to {save_path}") |
| | plt.show() |
| | |
| | def plot_data(log1, log2=None, |
| | save_path=None, |
| | label1="Log 1", |
| | label2=None, |
| | title="Fraction of Valid Peptides Over Iterations", |
| | palette=None): |
| | """ |
| | Plots one or two datasets with their mean values over iterations. |
| | |
| | Parameters: |
| | log1 (list): The first list of mean values for each iteration. |
| | log2 (list, optional): The second list of mean values for each iteration. Defaults to None. |
| | save_path (str): Path to save the plot. Defaults to None. |
| | label1 (str): Label for the first dataset. Defaults to "Log 1". |
| | label2 (str, optional): Label for the second dataset. Defaults to None. |
| | title (str): Title of the plot. Defaults to "Mean Values Over Iterations". |
| | palette (dict, optional): A dictionary defining custom colors for datasets. Defaults to None. |
| | """ |
| | |
| | data1 = pd.DataFrame({ |
| | "Iteration": range(1, len(log1) + 1), |
| | "Fraction of Valid Peptides": log1, |
| | "Dataset": label1 |
| | }) |
| |
|
| | |
| | if log2 is not None: |
| | data2 = pd.DataFrame({ |
| | "Iteration": range(1, len(log2) + 1), |
| | "Fraction of Valid Peptides": log2, |
| | "Dataset": label2 |
| | }) |
| | data = pd.concat([data1, data2], ignore_index=True) |
| | else: |
| | data = data1 |
| |
|
| | palette = { |
| | label1: "#8181ED", |
| | label2: "#D577FF" |
| | } |
| |
|
| | |
| | sns.set_theme() |
| | sns.set_context("paper") |
| |
|
| | |
| | sns.lineplot( |
| | data=data, |
| | x="Iteration", |
| | y="Fraction of Valid Peptides", |
| | hue="Dataset", |
| | style="Dataset", |
| | markers=True, |
| | dashes=False, |
| | palette=palette |
| | ) |
| |
|
| | |
| | plt.title(title) |
| | plt.xlabel("Iteration") |
| | plt.ylabel("Fraction of Valid Peptides") |
| |
|
| | if save_path: |
| | plt.savefig(save_path, dpi=300, bbox_inches='tight') |
| | print(f"Plot saved to {save_path}") |
| | plt.show() |