|
import pandas as pd |
|
import numpy as np |
|
import ast |
|
from argparse import ArgumentParser |
|
|
|
parser = ArgumentParser() |
|
parser.add_argument('--file_name', type=str, default='loggings/edit_table/nd_500_cls_2/results.csv', |
|
help='Path to the folder that contains generated samples for rule guidance') |
|
parser.add_argument('--bins', type=int, default=8, |
|
help='Str used to split out basenames') |
|
args = parser.parse_args() |
|
|
|
|
|
df = pd.read_csv(args.file_name) |
|
|
|
|
|
def process_note_density_data_with_bounds(df): |
|
|
|
vertical_densities = [] |
|
horizontal_densities = [] |
|
|
|
|
|
for row in df['note_density.target_rule']: |
|
|
|
densities = ast.literal_eval(row) |
|
vertical_densities.extend(densities[:8]) |
|
horizontal_densities.extend(densities[8:]) |
|
|
|
|
|
def create_bins_and_find_bounds(data): |
|
data_sorted = sorted(data) |
|
bins = np.array_split(data_sorted, 8) |
|
bins_count = [len(bin) for bin in bins] |
|
bins_bounds = [(bin[0], bin[-1]) for bin in bins if len(bin) > 0] |
|
return bins, bins_count, bins_bounds |
|
|
|
|
|
vertical_bins, vertical_bins_count, vertical_bins_bounds = create_bins_and_find_bounds(vertical_densities) |
|
horizontal_bins, horizontal_bins_count, horizontal_bins_bounds = create_bins_and_find_bounds(horizontal_densities) |
|
|
|
return vertical_bins_count, vertical_bins_bounds, horizontal_bins_count, horizontal_bins_bounds |
|
|
|
|
|
vertical_bins_count, vertical_bins_bounds, horizontal_bins_count, horizontal_bins_bounds = process_note_density_data_with_bounds(df) |
|
|
|
|
|
print("Vertical Note Density Bins:") |
|
for i, (count, bounds) in enumerate(zip(vertical_bins_count, vertical_bins_bounds), 1): |
|
print(f"Bin {i} (Samples: {count}, Bounds: {bounds})") |
|
|
|
print("\nHorizontal Note Density Bins:") |
|
for i, (count, bounds) in enumerate(zip(horizontal_bins_count, horizontal_bins_bounds), 1): |
|
print(f"Bin {i} (Samples: {count}, Bounds: {bounds})") |
|
|