def show(self, header=True): """Print the contents of this table.""" # if h2o.can_use_pandas(): # import pandas # pandas.options.display.max_rows = 20 # print pandas.DataFrame(self._cell_values,columns=self._col_header) # return if header and self._table_header: print(self._table_header + ":", end=' ') if self._table_description: print(self._table_description) print() table = copy.deepcopy(self._cell_values) nr = 0 if _is_list_of_lists(table): nr = len( table ) # only set if we truly have multiple rows... not just one long row :) if nr > 20: # create a truncated view of the table, first/last 5 rows trunc_table = [] trunc_table += [v for v in table[:5]] trunc_table.append(["---"] * len(table[0])) trunc_table += [v for v in table[(nr - 5):]] table = trunc_table H2ODisplay(table, self._col_header, numalign="left", stralign="left") if nr > 20 and can_use_pandas(): print('\nSee the whole table with table.as_data_frame()')
def show_status(self, detailed=False): """ Print current cluster status information. :param detailed: if True, then also print detailed information about each node. """ keys = _cluster_status_info_keys values = self._get_cluster_status_info_values() table = [[k + ":", values[i]] for i, k in enumerate(keys)] H2ODisplay(table) if detailed: keys = _cluster_status_detailed_info_keys header = ["Nodes info:"] + [ "Node %d" % (i + 1) for i in range(len(self.nodes)) ] table = [[k] + [node[k] for node in self.nodes] for k in keys] H2ODisplay(table=table, header=header)
def show_status(self, detailed=False): """ Print current cluster status information. :param detailed: if True, then also print detailed information about each node. """ if self._retrieved_at + self.REFRESH_INTERVAL < time.time(): # Info is stale, need to refresh new_info = h2o.api("GET /3/Cloud") self._fill_from_h2ocluster(new_info) ncpus = sum(node["num_cpus"] for node in self.nodes) allowed_cpus = sum(node["cpus_allowed"] for node in self.nodes) free_mem = sum(node["free_mem"] for node in self.nodes) unhealthy_nodes = sum(not node["healthy"] for node in self.nodes) status = "locked" if self.locked else "accepting new members" if unhealthy_nodes == 0: status += ", healthy" else: status += ", %d nodes are not healthy" % unhealthy_nodes H2ODisplay([ ["H2O cluster uptime:", get_human_readable_time(self.cloud_uptime_millis)], ["H2O cluster version:", self.version], ["H2O cluster version age:", "{} {}".format(self.build_age, ("!!!" if self.build_too_old else ""))], ["H2O cluster name:", self.cloud_name], ["H2O cluster total nodes:", self.cloud_size], ["H2O cluster free memory:", get_human_readable_bytes(free_mem)], ["H2O cluster total cores:", str(ncpus)], ["H2O cluster allowed cores:", str(allowed_cpus)], ["H2O cluster status:", status], ["H2O connection url:", h2o.connection().base_url], ["H2O connection proxy:", h2o.connection().proxy], ["H2O internal security:", self.internal_security_enabled], ["Python version:", "%d.%d.%d %s" % tuple(sys.version_info[:4])], ]) if detailed: keys = ["h2o", "healthy", "last_ping", "num_cpus", "sys_load", "mem_value_size", "free_mem", "pojo_mem", "swap_mem", "free_disk", "max_disk", "pid", "num_keys", "tcps_active", "open_fds", "rpcs_active"] header = ["Nodes info:"] + ["Node %d" % (i + 1) for i in range(len(self.nodes))] table = [[k] for k in keys] for node in self.nodes: for i, k in enumerate(keys): table[i].append(node[k]) H2ODisplay(table=table, header=header)
def show(self, header=True): """Print the contents of this table.""" print() if header and self._table_header: print(self._table_header + ":", end=' ') if self._table_description: print(self._table_description) (table, nr, is_pandas) = self._as_show_table() H2ODisplay(table, is_pandas=is_pandas, header=self._col_header, numalign="left", stralign="left") if nr > 20 and can_use_pandas(): print('\nSee the whole table with table.as_data_frame()')
def _as_show_table(self): if H2ODisplay.prefer_pandas() and can_use_pandas(): pd = self.as_data_frame() return self.as_data_frame().head(20), pd.shape[0], True else: table = copy.deepcopy(self._cell_values) nr = 0 if _is_list_of_lists(table): nr = len( table) # only set if we truly have multiple rows... not just one long row :) if nr > 20: # create a truncated view of the table, first/last 5 rows trunc_table = [] trunc_table += [v for v in table[:5]] trunc_table.append(["---"] * len(table[0])) trunc_table += [v for v in table[(nr - 5):]] table = trunc_table return table, nr, False
def summary(self, header=True): """Print a detailed summary of the explored models.""" table = [] for model in self.models: model_summary = model._model_json["output"]["model_summary"] r_values = list(model_summary.cell_values[0]) r_values[0] = model.model_id table.append(r_values) # if h2o.can_use_pandas(): # import pandas # pandas.options.display.max_rows = 20 # print pandas.DataFrame(table,columns=self.col_header) # return print() if header: print('Grid Summary:') print() H2ODisplay(table, ['Model Id'] + model_summary.col_header[1:], numalign="left", stralign="left")