mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-01-29 18:32:36 +00:00
Do not align arrays by duplicating last value
To produce the same stats for single and multiple sources. If there are multiple sources with different number of frames, leave the number of values per each metric as is. For example: source 1: [1, None, 2] source 2: [3, None, 4, 5] before this change becomes: source 1: [1, 1, 2, 2] source 2: [3, 3, 4, 5] and after this change: source 1: [1, 1, 2] source 2: [3, 3, 4, 5]
This commit is contained in:
parent
2b53c2335f
commit
080245aa26
@ -149,17 +149,18 @@ def collect_per_frame(sources, keys, begin_frame, end_frame, frame_number_name):
|
||||
for key in keys:
|
||||
result[name][key] = [None] * (end_frame - begin_frame)
|
||||
for name, frames in sources.items():
|
||||
max_index = 0
|
||||
for frame in frames:
|
||||
number = frame[frame_number_name]
|
||||
if begin_frame <= number < end_frame:
|
||||
index = number - begin_frame
|
||||
max_index = max(max_index, index)
|
||||
for key in keys:
|
||||
if key in frame:
|
||||
result[name][key][index] = frame[key]
|
||||
for name in result.keys():
|
||||
for key in keys:
|
||||
prev = 0.0
|
||||
values = result[name][key]
|
||||
values = result[name][key][:max_index + 1]
|
||||
for i in range(len(values)):
|
||||
if values[i] is not None:
|
||||
prev = values[i]
|
||||
@ -183,9 +184,11 @@ def draw_timeseries(sources, keys, add_sum, begin_frame, end_frame):
|
||||
x = numpy.array(range(begin_frame, end_frame))
|
||||
for name, frames in sources.items():
|
||||
for key in keys:
|
||||
ax.plot(x, frames[key], label=f'{key}:{name}')
|
||||
y = frames[key]
|
||||
ax.plot(x[:len(y)], y, label=f'{key}:{name}')
|
||||
if add_sum:
|
||||
ax.plot(x, numpy.sum(list(frames[k] for k in keys), axis=0), label=f'sum:{name}', linestyle='--')
|
||||
y = numpy.sum(list(frames[k] for k in keys), axis=0)
|
||||
ax.plot(x[:len(y)], y, label=f'sum:{name}', linestyle='--')
|
||||
ax.grid(True)
|
||||
ax.legend()
|
||||
fig.canvas.manager.set_window_title('timeseries')
|
||||
@ -196,10 +199,11 @@ def draw_commulative_timeseries(sources, keys, add_sum, begin_frame, end_frame):
|
||||
x = numpy.array(range(begin_frame, end_frame))
|
||||
for name, frames in sources.items():
|
||||
for key in keys:
|
||||
ax.plot(x, numpy.cumsum(frames[key]), label=f'{key}:{name}')
|
||||
y = numpy.cumsum(frames[key])
|
||||
ax.plot(x[:len(y)], y, label=f'{key}:{name}')
|
||||
if add_sum:
|
||||
ax.plot(x, numpy.cumsum(numpy.sum(list(frames[k] for k in keys), axis=0)), label=f'sum:{name}',
|
||||
linestyle='--')
|
||||
y = numpy.cumsum(numpy.sum(list(frames[k] for k in keys), axis=0))
|
||||
ax.plot(x[:len(y)], y, label=f'sum:{name}', linestyle='--')
|
||||
ax.grid(True)
|
||||
ax.legend()
|
||||
fig.canvas.manager.set_window_title('commulative_timeseries')
|
||||
@ -210,10 +214,11 @@ def draw_timeseries_delta(sources, keys, add_sum, begin_frame, end_frame):
|
||||
x = numpy.array(range(begin_frame + 1, end_frame))
|
||||
for name, frames in sources.items():
|
||||
for key in keys:
|
||||
ax.plot(x, numpy.diff(frames[key]), label=f'{key}:{name}')
|
||||
y = numpy.diff(frames[key])
|
||||
ax.plot(x[:len(y)], numpy.diff(frames[key]), label=f'{key}:{name}')
|
||||
if add_sum:
|
||||
ax.plot(x, numpy.diff(numpy.sum(list(frames[k] for k in keys), axis=0)), label=f'sum:{name}',
|
||||
linestyle='--')
|
||||
y = numpy.diff(numpy.sum(list(frames[k] for k in keys), axis=0))
|
||||
ax.plot(x[:len(y)], y, label=f'sum:{name}', linestyle='--')
|
||||
ax.grid(True)
|
||||
ax.legend()
|
||||
fig.canvas.manager.set_window_title('timeseries_delta')
|
||||
@ -312,12 +317,7 @@ def print_stats(sources, keys, stats_sum, precision, sort_by, table_format):
|
||||
style=termtables.styles.markdown,
|
||||
)
|
||||
elif table_format == 'json':
|
||||
table = list()
|
||||
for row in stats:
|
||||
row_table = dict()
|
||||
for key, value in zip(metrics, row.values()):
|
||||
row_table[key] = value
|
||||
table.append(row_table)
|
||||
table = [dict(zip(metrics, row.values())) for row in stats]
|
||||
print(json.dumps(table))
|
||||
else:
|
||||
print(f'Unsupported table format: {table_format}')
|
||||
|
Loading…
x
Reference in New Issue
Block a user