Spaces:
Sleeping
Sleeping
import argparse | |
import numpy as np | |
import json | |
import pickle | |
from scipy import spatial | |
from matplotlib import pyplot as plt | |
from matplotlib.colors import ListedColormap | |
def plot_histogram_dist(features_database, fig_h, fig_w, fig_dpi, point, distance="cosine"): | |
features_database = json.load(open(features_database, "r")) | |
dist_fn = getattr(spatial.distance, distance) | |
class_names = ["neoplastic", "aphthous", "traumatic"] | |
cmap = ListedColormap(["r","b","g"]) | |
dists = dict() | |
for name, feature_list in features_database.items(): | |
for feature in feature_list: | |
if feature["type"] not in dists: | |
dists[feature["type"]] = [] | |
dists[feature["type"]].append(dist_fn(point, feature["features"])) | |
fig, axes = plt.subplots(len(dists)) | |
for k, ax in zip(dists.keys(), axes): | |
dist = dists[k] | |
ax.set_title(class_names[k]) | |
ax.set_xlim(0, 1) | |
n, bins, patches = ax.hist(dist, "auto", density=True, color=cmap(k)) | |
fig.tight_layout(pad=3.0) | |
return fig | |
if __name__ == "__main__": | |
parser = argparse.ArgumentParser() | |
parser.add_argument("--features-database", type=str, required=True) | |
parser.add_argument("--output", type=str, default="") | |
parser.add_argument("--fig-h", type=int, default=1080) | |
parser.add_argument("--fig-w", type=int, default=720) | |
parser.add_argument("--fig-dpi", type=int, default=100) | |
parser.add_argument("--distance", type=str, default="cosine") | |
parser.add_argument("--point", type=str, required=True) | |
args = parser.parse_args() | |
point = json.loads(args.point) | |
dict_args = vars(args) | |
del dict_args["point"] | |
plot_histogram_dist(**dict_args, point=point) |