def _figure_data(self, plot, fmt, as_script=False, **kwargs): if fmt == 'gif': import plotly.io as pio from PIL import Image from plotly.io.orca import ensure_server, shutdown_server, status running = status.state == 'running' if not running: ensure_server() nframes = len(plot) frames = [] for i in range(nframes): plot.update(i) img_bytes = BytesIO() figure = go.Figure(self.get_plot_state(plot)) img = pio.to_image(figure, 'png', validate=False) img_bytes.write(img) frames.append(Image.open(img_bytes)) if not running: shutdown_server() bio = BytesIO() duration = (1. / self.fps) * 1000 frames[0].save(bio, format='GIF', append_images=frames[1:], save_all=True, duration=duration, loop=0) bio.seek(0) data = bio.read() elif fmt in ('png', 'svg'): import plotly.io as pio # Wrapping plot.state in go.Figure here performs validation # and applies any default theme. figure = go.Figure(self.get_plot_state(plot)) data = pio.to_image(figure, fmt) if fmt == 'svg': data = data.decode('utf-8') else: raise ValueError("Unsupported format: {fmt}".format(fmt=fmt)) if as_script: b64 = base64.b64encode(data).decode("utf-8") (mime_type, tag) = MIME_TYPES[fmt], HTML_TAGS[fmt] src = HTML_TAGS['base64'].format(mime_type=mime_type, b64=b64) div = tag.format(src=src, mime_type=mime_type, css='') return div return data
def __run_exp(d, cfgs, prog_list, pid, cfgs_keys, q, WRITE_FREQ=10, overwrite=True): df = pd.DataFrame(index=range(WRITE_FREQ), columns=list(cfgs_keys).extend(["acc", "elapsed_time"])) def check_mem(): # gives an object with many fields vm = psutil.virtual_memory() return (vm.percent) def pack_affmat_str(i): #Extract info related to affmat affmat_keys = [] affmat_vals = [] for k, v in cfgs[i].items(): if k.startswith("aff_") or k == "dataset": affmat_keys.append(k) affmat_vals.append(v) affmat_keys, affmat_vals = (list(t) for t in zip( *sorted(zip(affmat_keys, affmat_vals)))) affmat_str = "" #Create string identiiiifying this affmat config for i in range(len(affmat_keys)): affmat_str = affmat_str + affmat_keys[i] + "=" + str( affmat_vals[i]) + ";" return (affmat_str) print("Process Number:{}".format(pid)) count = 0 for i in range(len(cfgs)): # disable output nullwrite = open(os.devnull, 'w') oldstdout = sys.stdout if not DEBUG_MODE: sys.stdout = nullwrite #Get affmat string to index into affmat dict affmat_str = pack_affmat_str(i) #Update dataframe for k, v in cfgs[i].items(): df.loc[i % WRITE_FREQ, k] = v #Create GSSL object gssl_obj = GraphSSL(cfgs[i]) #Get Affinity Matrix if DISABLE_MATRIX_DICT: W = gssl_obj.getAffMatrix() else: W = d.get(affmat_str, None) if W is None: W = gssl_obj.getAffMatrix() d[affmat_str] = W count += 1 #Run algorithm res = gssl_obj.train(W) if orca.status.state == "running": orca.shutdown_server() del gssl_obj df.loc[i % WRITE_FREQ, "acc"] = res["acc"] df.loc[i % WRITE_FREQ, "elapsed_time"] = res["elapsed_time"] #Update results dict if i % WRITE_FREQ == (WRITE_FREQ - 1) or i == (len(cfgs) - 1): result_path = './results/' + OUTPUT_NAME + '_pid=' + str( pid) + '.csv' f_exists = os.path.isfile(result_path) f_mode = "a" if (f_exists and overwrite and i == WRITE_FREQ - 1) or (not f_exists and i == WRITE_FREQ - 1): f_mode = "w" with open(result_path, f_mode) as f: is_header = (f_mode == "w") df.iloc[0:((i % WRITE_FREQ) + 1), :].to_csv(f, header=is_header) df.iloc[0:((i % WRITE_FREQ) + 1), :] = np.nan #Update progress list prog_list[pid] = i / len(cfgs) sys.stdout = oldstdout #Enable output q.put(1)