def make_tradeplots_for_files_in_folder(directory): import os from IO import load_tradeprice_data from plotting import make_pretty_tradeprice_plot extension = '.npz' list_of_files = [file for file in os.listdir(directory) if file.lower().endswith(extension)] for file in list_of_files: rounds, prices = IO.load_tradeprice_data(directory + file) filename = directory + file[:-3] + 'png' make_pretty_tradeprice_plot(rounds, prices, filename)
def issue_85_tradeplot_and_tex(folder_with_npz_files, figure_name): import os from plotting import make_pretty_tradeprice_plot npzfiles = os.listdir(folder_with_npz_files) npzfiles = [folder_with_npz_files + f for f in npzfiles if f.endswith('.npz')] print npzfiles for npzfile in npzfiles: make_pretty_tradeprice_plot(IO.load_tradeprice_data(npzfile)) utils.export_tradeprice_figure_as_tex(npzfiles, figure_name)
def issue_113_make_all_tradeprice_plots(): from plotting import make_pretty_tradeprice_plot data_folder = '/Users/halfdan/Dropbox/Waseda/Research/MarketSimulation/Thesis/data_for_tradeprice_plots/' mapping = { 'gen12_1386710381616696.npz' : 'low_stdev_but_not_stable', 'gen56_1388690478773536.npz' : 'low_stdev_and_stable', 'gen13_1387568360402236.npz' : 'high_stdev_but_stable' } figure_folder = make_issue_specific_figure_folder('issue_113_tradeprice_plots', 'all') for dataname, plotname in mapping.items(): rounds, prices = IO.load_tradeprice_data(data_folder + dataname) #make_pretty_tradeprice_plot(rounds, prices, figure_folder + plotname, dpi = 200, figsize=tuple(map(lambda x: x*1, [8,4])), format = 'pdf') make_pretty_tradeprice_plot(rounds, prices, figure_folder + plotname, dpi = 200, format = 'pdf')
def replot(mask, subfolder_name, f = 0): try: in_mask = ids[mask] has_tuple = in_mask['id'].map(lambda x: isinstance(x, tuple)) in_mask = in_mask[has_tuple] indexes = range(len(in_mask)) np.random.shuffle(indexes) if n_graphs_to_copy == 'all': n_copy = len(indexes) - 1 else: n_copy = n_graphs_to_copy names = map(lambda x: x[0], in_mask.iloc[indexes[0:n_copy]]['id'].values) #print 'names' #print names paths = map(lambda x: '%s%s'%(raw_data_path, x), names) graph_paths = map(lambda x: '%s.png'%x, paths) data_paths = map(lambda x: '%s.npz'%x, paths) #all_data = map(lambda x: np.load(x).items()[0][1].item(), data_paths) directory = '%s%s%s/'%(graph_save_dir, subfolder_name, f) parameters = DataFrame(columns = par.columns) if not os.path.exists(directory): os.makedirs(directory) for path, data_path, name in zip(paths, data_paths, names): data = np.load(data_path).items()[0][1].item() rounds = data['rounds'] prices = data['tradePrice'] filename = directory + name + '.png' parameters = parameters.append(data['parameters'], ignore_index=True) print 'Replotting market with pars: %s'%data['parameters'] make_pretty_tradeprice_plot(rounds, prices, filename) return parameters for path, graph, name in zip(paths, graph_paths, names): print 'copy %s to %s'%(graph, directory + name + '.png') shutil.copyfile(graph, directory + name + '.png') except IndexError: pass
def __evaluate_simulation_results(parameters, logdata_folder, graph_folder, generation_number, plot_name = None): assert logdata_folder, "Please specify where the logdata is located" data = empty_data_matrix(1) #ob_round_based = np.genfromtxt(logdata_folder + 'columnLog_roundBased_orderbook(0,0).csv', names=True, dtype=int, delimiter=',', usecols=(1,2)) #stock_round_based = np.genfromtxt(logdata_folder + 'columnLog_roundBased_stock0.csv', names=True, dtype=int, delimiter=',', usecols=(0,1)) trades = IO.load_trade_log_data(logdata_folder) fas = get_fundamental_after_shock() within_margin = get_number_of_rounds_within_stability_margin(trades['price'], trades['round'], fas) #data['n_simulation_rounds_within_stability_margin'] = within_margin['total_number_of_rounds'] #data['n_seperate_intervals_within_stability_margin'] = within_margin['n_intervals'] if 'longest_interval_within_margin' in data_for_failed_simulation.keys(): data['longest_interval_within_margin'] = within_margin['longest_interval'] if 'stdev' in data_for_failed_simulation.keys(): data['stdev'] = get_tp_std_after_entering_margin(trades['price'], trades['round']) if 'overshoot' in data_for_failed_simulation.keys(): data['overshoot'] = calculate_overshoot(fas, trades['price'], trades['round']) if 'time_to_reach_new_fundamental' in data_for_failed_simulation.keys(): data['time_to_reach_new_fundamental'] = get_first_round_to_reach_new_fundamental(trades['price'], trades['round']) if 'round_stable' in data_for_failed_simulation.keys(): data['round_stable'] = calculate_round_stable(trades['price'], trades['round'], fas) if np.random.random() <= PLOT_SAVE_PROB: data_id = 'gen%s_%s_%s'%(generation_number, get_epoch_time(), str(abs(hash(np.random.random())))) print graph_folder + data_id + '.npz' IO.save_tradeprice_data(trades['round'], trades['price'], data, parameters, graph_folder + data_id + '.npz') plotting.make_pretty_tradeprice_plot(trades['round'], trades['price'], graph_folder + data_id + '.png') #plotting.make_tradeprice_plot(trades['round'], trades['price'], data, parameters, graph_folder + data_id + '.png') else: data_id = None if not KEEP_SIMULATION_DATA: IO.delete_simulation_data(logdata_folder) return data, data_id