def show_table(log: Dict[str, Any], console: Console) -> None: """Generate a rich table from an optimization status and display it on the console. Parameters ---------- log : Dict Dictionary read from a json log file containing a c3-toolset optimization status. console : Console Rich console for output. """ opt_map = log["opt_map"] optim_status = log["optim_status"] units = log["units"] params = optim_status["params"] if "gradient" not in optim_status: grads = [0] * len(params) else: grads = optim_status["gradient"] table = Table(show_header=True, header_style="bold magenta") table.add_column("Parameter") table.add_column("Value", justify="right") table.add_column("Gradient", justify="right") for ii, equiv_ids in enumerate(opt_map): par = params[ii] par = num3str(par) par_id = equiv_ids[0] table.add_row(par_id, par + units[ii], num3str(grads[ii]) + units[ii]) for par_id in equiv_ids[1:]: table.add_row(par_id, "''", "''") console.clear() print( f"Optimization reached {optim_status.pop('goal', -1):0.3g} at {optim_status.pop('time', 0)}\n" ) console.print(table)
def show_table(): if log: opt_map = log["opt_map"] optim_status = log["optim_status"] units = log["units"] params = optim_status["params"] grads = optim_status["gradient"] table = Table(show_header=True, header_style="bold magenta") table.add_column("Parameter") table.add_column("Value", justify="right") table.add_column("Gradient", justify="right") for ii in range(len(opt_map)): equiv_ids = opt_map[ii] par = params[ii] grad = grads[ii] par = num3str(par) grad = num3str(grad) par_id = equiv_ids[0] nice_id = "-".join(par_id) table.add_row(nice_id, par + units[ii], grad + units[ii]) if len(equiv_ids) > 1: for par_id in equiv_ids[1:]: nice_id = "-".join(par_id) table.add_row(nice_id, "''", "''") console.clear() print( f"Optimization reached {optim_status['goal']:0.3g} at {optim_status['time']}\n" ) console.print(table)
def __str__(self): val = self.numpy() ret = "" for entry in np.nditer(val): if self.unit != "undefined": ret += num3str(entry) + self.unit + " " else: ret += num3str(entry, use_prefix=False) + " " return ret
def __str__(self): val = self.numpy() use_prefix = True if self.unit == "Hz 2pi": val = val / 2 / np.pi elif self.unit == "pi": val = val / np.pi use_prefix = False ret = "" for q in num3str(val, use_prefix): ret += q + self.unit + " " return ret
def __str__(self): val = self.numpy() ret = "" for entry in np.nditer(val): ret += num3str(entry) + self.unit + " " return ret
print("Logfile not found.") if log: opt_map = log["opt_map"] optim_status = log["optim_status"] units = log["units"] params = optim_status["params"] grads = optim_status["gradient"] print(f"Optimization reached {optim_status['goal']:0.3g} at {optim_status['time']}\n") table = Table(show_header=True, header_style="bold magenta") table.add_column("Parameter") table.add_column("Value", justify="right") table.add_column("Gradient", justify="right") for ii in range(len(opt_map)): equiv_ids = opt_map[ii] par = params[ii] grad = grads[ii] par = num3str(par) grad = num3str(grad) par_id = equiv_ids[0] nice_id = "-".join(par_id) table.add_row(nice_id, par+units[ii], grad+units[ii]) if len(equiv_ids) > 1: for par_id in equiv_ids[1:]: nice_id = "-".join(par_id) table.add_row(nice_id, "''", "''") console = Console() console.print(table)