def test_group_results(): results = test_utilities.load_eng_trans_data() experiments, outcomes = results # test indices groups = {'set1':np.arange(0,11), 'set2':np.arange(11,25), 'set3':np.arange(25,experiments.shape[0])} groups = group_results(experiments, outcomes, group_by='index', grouping_specifiers=groups.values(), grouping_labels= groups.keys()) total_data = 0 for value in groups.values(): total_data += value[0].shape[0] print(experiments.shape[0], total_data) # test continuous parameter type array = experiments['average planning and construction period T1'] grouping_specifiers = make_continuous_grouping_specifiers(array, nr_of_groups=5) groups = group_results(experiments, outcomes, group_by='average planning and construction period T1', grouping_specifiers=grouping_specifiers, grouping_labels = [str(entry) for entry in grouping_specifiers]) total_data = 0 for value in groups.values(): total_data += value[0].shape[0] print(experiments.shape[0], total_data) # test integer type array = experiments['seed PR T1'] grouping_specifiers = make_continuous_grouping_specifiers(array, nr_of_groups=10) groups = group_results(experiments, outcomes, group_by='seed PR T1', grouping_specifiers=grouping_specifiers, grouping_labels = [str(entry) for entry in grouping_specifiers]) total_data = 0 for value in groups.values(): total_data += value[0].shape[0] print(experiments.shape[0], total_data) # test categorical type grouping_specifiers = set(experiments["policy"]) groups = group_results(experiments, outcomes, group_by='policy', grouping_specifiers=grouping_specifiers, grouping_labels = [str(entry) for entry in grouping_specifiers]) total_data = 0 for value in groups.values(): total_data += value[0].shape[0] print(experiments.shape[0], total_data)
def test_group_results(): results = load_results(r'./../data/eng_trans_100.cPickle', zipped=False) experiments, outcomes = results # test indices grouping_specifiers = {'set1':np.arange(0,11), 'set2':np.arange(11,25), 'set3':np.arange(25,experiments.shape[0])} groups = group_results(experiments, outcomes, group_by='index', grouping_specifiers=grouping_specifiers) total_data = 0 for value in groups.values(): total_data += value[0].shape[0] print experiments.shape[0], total_data # test continuous parameter type array = experiments['average planning and construction period T1'] grouping_specifiers = make_continuous_grouping_specifiers(array, nr_of_groups=5) groups = group_results(experiments, outcomes, group_by='average planning and construction period T1', grouping_specifiers=grouping_specifiers) total_data = 0 for value in groups.values(): total_data += value[0].shape[0] print experiments.shape[0], total_data # test integer type array = experiments['seed PR T1'] grouping_specifiers = make_continuous_grouping_specifiers(array, nr_of_groups=10) groups = group_results(experiments, outcomes, group_by='seed PR T1', grouping_specifiers=grouping_specifiers) total_data = 0 for value in groups.values(): total_data += value[0].shape[0] print experiments.shape[0], total_data # test categorical type grouping_specifiers = set(experiments["policy"]) groups = group_results(experiments, outcomes, group_by='policy', grouping_specifiers=grouping_specifiers) total_data = 0 for value in groups.values(): total_data += value[0].shape[0] print experiments.shape[0], total_data
def test_make_continuous_grouping_specifiers(): array = np.random.randint(1,100, size=(1000,)) categories = make_continuous_grouping_specifiers(array, nr_of_groups=10) for entry in categories: print(repr(entry)) print(np.min(array), np.max(array))
def test_make_continuous_grouping_specifiers(): array = np.random.randint(1, 100, size=(1000, )) categories = make_continuous_grouping_specifiers(array, nr_of_groups=10) for entry in categories: print(repr(entry)) print(np.min(array), np.max(array))
def envelopes3d_group_by(results, outcome, groupBy = 'policy', discretesize = None, logSpace=False, ymin = None, ymax = None): ''' Function for making 3d envelopes. In contrast to the envelopes in :mod:`graphs`, this version shows the density for every time step, instead of only for the end state. Note that this function makes an envelope for only 1 outcome. This envelopes will group the results based on the specified uncertainty. The user can supply a discretesize function to control the grouping in case of parameterUncertainties. This function will make a separate envelope for each group. :param results: The return from :meth:`run experiments`. :param outcome: Specify the name of outcome of interest for which you want to make the 3d envelopes. :param groupBy: The uncertainty to group by. (default=policy) :param discretesize: a discretesize function to control the grouping in case of parameterUncertainties :param logSpace: Boolean, if true, the log of the input data is used :param ymin: If provided, lower bound for the KDE, if not, ymin = np.min(results.get(outcome)) :param ymax: If provided, lower bound for the KDE, if not, ymax = np.max(results.get(outcome)) ''' def f(x, y, results): """ function that performs the kde for each timestep """ x1 = x[:,0] y1 = y[0,:] results = np.asarray(results) z = [] for i in range(len(list(x1))): data = results[:, i] try: z1 = kde.gaussian_kde(data) z1 = z1.evaluate(y1) except: z1 = np.zeros(shape=y1.shape) z.append(z1) z = np.asarray(z) z = np.log(z+1) return z #prepare the data experiments, results = results #get time axis try: time = results.pop('TIME')[0, :] except: time = np.arange(0, results.values()[0].shape[1]) def make_logical(cases, criterion, interval=False): if interval: return (cases[groupBy] >= criterion[0]) & (cases[groupBy] < criterion[1]) else: return cases[groupBy]== criterion #get the results for the specific outcome of interest results = results.get(outcome) #log results if logSpace: results = np.log(results+1) #generate the grid if ymin == None: ymin = np.min(results) info("ymin: %s" % ymin) if ymax == None: ymax = np.max(results) info("ymax: %s" % ymax) length = min(100, results.shape[1]) y = np.arange(ymin, ymax, (ymax-ymin)/length) X, Y = np.meshgrid(time, y) z = [] #do the preparation for grouping by interval=False if (experiments[groupBy].dtype == np.float32) |\ (experiments[groupBy].dtype == np.float64) |\ ((experiments[groupBy].dtype == np.int) & (len(set(experiments[groupBy])) > 5)): interval=True if discretesize: categories = discretesize(experiments[groupBy]) else: categories = make_continuous_grouping_specifiers(experiments[groupBy]) else: categories = set(experiments[groupBy]) for category in categories: if interval: info("calculating kde for (%s, %s)" % (category)) else: info("calculating kde for %s" % (category)) logical = make_logical(experiments, category, interval) Z = f(X.T,Y.T, results=results[logical]) z.append(Z) #calculate the kde for the grid #visualize results fig = mlab.figure(1, bgcolor=(1, 1, 1), fgcolor=(0, 0, 0)) fig.scene.disable_render = True for i, category in enumerate(categories): if interval: info("plotting (%s, %s)" % (category)) else: info("plotting %s" % (category)) Z = z[i] extent = (-14+i*10,-6+i*10, 0,10, 0,5) s = mlab.mesh(X,Y, Z.T, extent=extent) mlab.outline(s, color=(.7, .7, .7), extent=extent) if i==0: mlab.axes(s, extent=extent, xlabel = '', ylabel = '', zlabel = 'density', x_axis_visibility=False, y_axis_visibility=False, z_axis_visibility=False) category_name = repr(category) mlab.text(-16+10*i, i+10, category_name, z=-2, width=0.14) fig.scene.disable_render = False mlab.title(outcome, line_width=0.5) mlab.show()
def test_group_results(): results = test_utilities.load_eng_trans_data() experiments, outcomes = results # test indices groups = { 'set1': np.arange(0, 11), 'set2': np.arange(11, 25), 'set3': np.arange(25, experiments.shape[0]) } groups = group_results(experiments, outcomes, group_by='index', grouping_specifiers=groups.values(), grouping_labels=groups.keys()) total_data = 0 for value in groups.values(): total_data += value[0].shape[0] print(experiments.shape[0], total_data) # test continuous parameter type array = experiments['average planning and construction period T1'] grouping_specifiers = make_continuous_grouping_specifiers(array, nr_of_groups=5) groups = group_results( experiments, outcomes, group_by='average planning and construction period T1', grouping_specifiers=grouping_specifiers, grouping_labels=[str(entry) for entry in grouping_specifiers]) total_data = 0 for value in groups.values(): total_data += value[0].shape[0] print(experiments.shape[0], total_data) # test integer type array = experiments['seed PR T1'] grouping_specifiers = make_continuous_grouping_specifiers(array, nr_of_groups=10) groups = group_results( experiments, outcomes, group_by='seed PR T1', grouping_specifiers=grouping_specifiers, grouping_labels=[str(entry) for entry in grouping_specifiers]) total_data = 0 for value in groups.values(): total_data += value[0].shape[0] print(experiments.shape[0], total_data) # test categorical type grouping_specifiers = set(experiments["policy"]) groups = group_results( experiments, outcomes, group_by='policy', grouping_specifiers=grouping_specifiers, grouping_labels=[str(entry) for entry in grouping_specifiers]) total_data = 0 for value in groups.values(): total_data += value[0].shape[0] print(experiments.shape[0], total_data)