script to visualize power data while poening/closing
This commit is contained in:
parent
4c34544b9b
commit
2fc4339f61
77
powerlog.py
Executable file
77
powerlog.py
Executable file
@ -0,0 +1,77 @@
|
||||
#!/usr/bin/python
|
||||
#import matplotlib
|
||||
#matplotlib.use("Agg")
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
import getopt
|
||||
import sys
|
||||
|
||||
def get_time_power(file_name):
|
||||
offset = 1000000
|
||||
loop_offset = 0
|
||||
last_time = 0
|
||||
time_log = np.array([])
|
||||
power_log = np.array([])
|
||||
log = open(file_name, "r")
|
||||
for line in log:
|
||||
line = line.strip().split(" ")
|
||||
time = int(line[0])
|
||||
if time < last_time:
|
||||
loop_offset += offset
|
||||
last_time = time
|
||||
time_log = np.append(time_log, time + loop_offset)
|
||||
power_log = np.append(power_log, int(line[2]))
|
||||
if len(time_log) != len(power_log):
|
||||
return None
|
||||
return time_log, power_log
|
||||
|
||||
def time_us_to_ms(time_us):
|
||||
time_ms = np.array([])
|
||||
for value in time_us:
|
||||
time_ms = np.append(time_ms, value / 1000)
|
||||
return time_ms
|
||||
|
||||
def get_basename(file_name):
|
||||
basename = file_name.strip().split(".")
|
||||
if len(basename) < 1:
|
||||
return None
|
||||
return basename[0]
|
||||
|
||||
def print_power_diagram(time_ms, power_mw, time_slope, power_slope, basename, image_format="svg"):
|
||||
plt.clf()
|
||||
plt.plot(time_ms, power_mw, "r-", time_slope, power_slope, "b-")
|
||||
plt.show()
|
||||
return None
|
||||
|
||||
def get_slope(x, y, interval):
|
||||
y_sum = 0
|
||||
x_start = x[0]
|
||||
div = 0
|
||||
x_slope = np.array([])
|
||||
y_slope = np.array([])
|
||||
for i in range(0, len(x)):
|
||||
if x[i] > (x_start + interval):
|
||||
if div == 0:
|
||||
div = 1
|
||||
x_slope = np.append(x_slope, x[i])
|
||||
y_slope = np.append(y_slope, y_sum / div)
|
||||
div = 0
|
||||
y_sum = 0
|
||||
x_start = x[i]
|
||||
else:
|
||||
y_sum += y[i]
|
||||
div += 1
|
||||
return x_slope, y_slope
|
||||
|
||||
def main(args):
|
||||
opts, _ = getopt.getopt(args, "f:", ["file="])
|
||||
for opt, arg in opts:
|
||||
if opt in ("-f", "--file"):
|
||||
time_us, power_mw = get_time_power(arg)
|
||||
time_ms = time_us_to_ms(time_us)
|
||||
time_slope, power_slope = get_slope(time_ms, power_mw, 1000)
|
||||
print_power_diagram(time_ms, power_mw, time_slope, power_slope, get_basename(arg))
|
||||
return None
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main(sys.argv[1:]))
|
Loading…
Reference in New Issue
Block a user