77 lines
3.1 KiB
Python
77 lines
3.1 KiB
Python
import pyqtgraph as pg
|
|
|
|
from src.utils import read_json, DiagramParser
|
|
from src.uml import Request, UMLCreator
|
|
from src.OptAlgorithm import OptAlgorithm
|
|
from src.gui import PlotWindow, settingsWindow
|
|
|
|
|
|
class app:
|
|
def __init__(self):
|
|
|
|
self.parser = DiagramParser()
|
|
self.request_generator = Request(server_url='http://www.plantuml.com/plantuml/svg/')
|
|
|
|
self.operSettings = settingsWindow("params\operator_params.json", 'Operator', self._update_settings)
|
|
self.sysSettings = settingsWindow("params\system_params.json", 'System', self._update_settings)
|
|
|
|
self._load_preset()
|
|
|
|
|
|
def _get_ideal_timings(self, opt: OptAlgorithm) -> list[float]:
|
|
data = opt.Ts
|
|
ideal_time = [data['tclose'], data['tgrow'], opt.getMarkOpen()]
|
|
return ideal_time
|
|
|
|
def _load_preset(self):
|
|
self.operator_params = read_json("params/operator_params.json")
|
|
self.system_params = read_json("params/system_params.json")
|
|
|
|
self.opt_algorithm = OptAlgorithm(operator_config=self.operator_params, system_config=self.system_params)
|
|
self.ideal_times = self._get_ideal_timings(self.opt_algorithm)
|
|
|
|
self.parser.setData("trace_samples/2024_11_01-09_39_17B00.csv")
|
|
self.bool_dict = self.parser.getBoolDict()
|
|
self.float_dict = self.parser.getFloatDict()
|
|
|
|
self.plotter = PlotWindow(operator_config=self.operator_params,
|
|
system_config=self.system_params,
|
|
opt=self.opt_algorithm,
|
|
bool_dict=self.bool_dict,
|
|
float_dict=self.float_dict,
|
|
show_settings_func=self._show_settings)
|
|
|
|
self.uml_creator = UMLCreator(system_config=self.system_params,
|
|
request_generator=self.request_generator,
|
|
ideal_time=self.ideal_times,
|
|
bool_dict=self.bool_dict,
|
|
float_dict=self.float_dict)
|
|
|
|
def _update_settings(self, _):
|
|
self.operator_params = self.operSettings.getParams()
|
|
self.system_params = self.sysSettings.getParams()
|
|
|
|
self.opt_algorithm = OptAlgorithm(operator_config=self.operator_params, system_config=self.system_params)
|
|
self.ideal_times = self._get_ideal_timings(self.opt_algorithm)
|
|
|
|
self.uml_creator.update_uml(system_config=self.system_params,
|
|
request_generator=self.request_generator,
|
|
ideal_time=self.ideal_times,
|
|
bool_dict=self.bool_dict,
|
|
float_dict=self.float_dict)
|
|
|
|
self.plotter.update_data(operator_config=self.operator_params,
|
|
system_config=self.system_params,
|
|
opt=self.opt_algorithm,
|
|
bool_dict=self.bool_dict,
|
|
float_dict=self.float_dict)
|
|
|
|
def _show_settings(self):
|
|
self.operSettings.show()
|
|
self.sysSettings.show()
|
|
|
|
|
|
if __name__ == '__main__':
|
|
pg.mkQApp("Plotting")
|
|
temp = app()
|
|
pg.exec() |