From 41339890c4064bb2d46d02cd21ba4bae5798c5ec Mon Sep 17 00:00:00 2001 From: Joeri van Engelen Date: Sun, 1 Nov 2015 13:04:16 +0100 Subject: [PATCH 1/6] I added the local search method of Ruano et al. as an alternative to the brute force approach. I should still write some tests for it. --- SALib/sample/morris.py | 13 ++-- SALib/sample/morris_util.py | 135 ++++++++++++++++++++++++++++++++---- 2 files changed, 130 insertions(+), 18 deletions(-) diff --git a/SALib/sample/morris.py b/SALib/sample/morris.py index ef488c5e..3910e569 100644 --- a/SALib/sample/morris.py +++ b/SALib/sample/morris.py @@ -21,7 +21,7 @@ # - a parallel brute force method (incomplete) # - a combinatorial optimisation approach (completed, but dependencies are # not open-source) -def sample(problem, N, num_levels, grid_jump, optimal_trajectories=None): +def sample(problem, N, num_levels, grid_jump, optimal_trajectories=None, local_optimization=False): """Generates model inputs using for Method of Morris. Returns a NumPy matrix containing the model inputs required for Method of @@ -76,7 +76,7 @@ def sample(problem, N, num_levels, grid_jump, optimal_trajectories=None): if optimal_trajectories >= N: raise ValueError("The number of optimal trajectories should be less than the number of samples.") - if _has_gurobi == False: + if _has_gurobi == False and local_optimization == False: if optimal_trajectories > 10: raise ValueError("Running optimal trajectories greater than values of 10 will take a long time.") @@ -84,7 +84,8 @@ def sample(problem, N, num_levels, grid_jump, optimal_trajectories=None): sample = compute_optimised_trajectories(problem, sample, N, - optimal_trajectories) + optimal_trajectories, + local_optimization) scale_samples(sample, problem['bounds']) return sample @@ -150,7 +151,7 @@ def sample_groups(problem, N, num_levels, grid_jump): return sample.reshape((N * (g + 1), k)) -def compute_optimised_trajectories(problem, input_sample, N, k_choices): +def compute_optimised_trajectories(problem, input_sample, N, k_choices, local_optimization = False): ''' Calls the procedure to compute the optimum k_choices of trajectories from the input_sample. @@ -175,7 +176,8 @@ def compute_optimised_trajectories(problem, input_sample, N, k_choices): N, num_params, k_choices, - groups) + groups, + local_optimization) num_groups = None if groups != None: @@ -213,3 +215,4 @@ def compute_optimised_trajectories(problem, input_sample, N, k_choices): np.savetxt(args.output, param_values, delimiter=args.delimiter, fmt='%.' + str(args.precision) + 'e') + diff --git a/SALib/sample/morris_util.py b/SALib/sample/morris_util.py index 944edbf8..027bb006 100644 --- a/SALib/sample/morris_util.py +++ b/SALib/sample/morris_util.py @@ -13,7 +13,7 @@ import numpy as np import random as rd - +import math def generate_trajectory(G, num_levels, grid_jump): ''' @@ -118,7 +118,7 @@ def compute_distance(m, l): return distance -def compute_distance_matrix(input_sample, N, num_params, groups=None): +def compute_distance_matrix(input_sample, N, num_params, groups=None, local_optimization=False): ''' groups is an integer representing the number of groups ''' @@ -136,7 +136,9 @@ def compute_distance_matrix(input_sample, N, num_params, groups=None): input_1 = input_sample[index_list[j]] for k in range(j + 1, N): input_2 = input_sample[index_list[k]] - distance_matrix[k, j] = compute_distance(input_1, input_2) + distance_matrix[k, j] = compute_distance(input_1, input_2) + if local_optimization is not False: + distance_matrix[j, k] = compute_distance(input_1, input_2) return distance_matrix @@ -249,20 +251,127 @@ def compile_output(input_sample, N, num_params, maximum_combo, groups=None): output[index_list[counter]] = np.array(input_sample[index_list[x]]) return output +# method of Ruano et al. +# defined num_params as number of factors in model +# defined k_choices as number of desired trajectories +def sum_distances(indices, distance_matrix): + '''Calculate combinatorial distance between a select group of trajectories, indicated by indices + + indices = tuple + distance_matrix = array (M,M) + + Notes + ----- + This function can perhaps be quickened by calculating the sum of the distances. + The calculated distances, as they are right now, are only used in a relative way. + Purely summing distances would lead to the same result, at a perhaps quicker rate. + ''' + combs = np.array(tuple(combinations(indices, 2))) + dist = 0.0 + + for comb in combs: + dist += distance_matrix[comb[0],comb[1]]**2 + + return math.sqrt(dist) -def find_optimum_combination(input_sample, N, num_params, k_choices, groups=None): - scores = find_most_distant(input_sample, - N, - num_params, - k_choices, - groups) +def get_max_sum_ind(indices_list, distances): + '''Get the indices that belong to the maximum distance in an array of distances + + indices_list = list of tuples + distance = array (M) + ''' + if len(indices_list) is not len(distances): + raise ValueError("indices and distances are lists of different length") + + max_index = tuple(distances.argsort()[-1:][::-1]) + return indices_list[max_index[0]] - print(scores) +def add_indices(indices, distance_matrix): + '''Adds extra indices for the combinatorial problem. + For indices = (1,2) and M=5, the method returns [(1,2,3),(1,2,4),(1,2,5)] + + indices = tuple + distance_matrix = array (M,M) + ''' + list_new_indices = [] + for i in range(0, len(distance_matrix)): + if i not in indices: + list_new_indices.append(indices+(i,)) + return list_new_indices + +def find_local_maximum(input_sample, N, num_params, k_choices, groups = None): + '''An alternative by Ruano et al. (2012) for the brute force approach as + originally proposed by Campolongo et al. (2007). The method should improve + the speed with which an optimal set of trajectories is found tremendously. + ''' + + if groups is not None: + raise ValueError('Method not tested nor developed with groups. Adapt the code to work with groups.') + + distance_matrix = compute_distance_matrix(input_sample, N, num_params, groups, local_optimization=True) + + tot_indices_list = [] + tot_max_array = np.zeros(k_choices-1) + + #############Loop 'i'############# + #i starts at 1 + for i in range(1,k_choices): + indices_list = [] + row_maxima_i = np.zeros(len(distance_matrix)) + + row_nr = 0 + for row in distance_matrix: + indices = tuple(row.argsort()[-i:][::-1]) + (row_nr,) + row_maxima_i[row_nr] = sum_distances(indices, distance_matrix) + indices_list.append(indices) + row_nr += 1 + + #Find the indices belonging to the maximum distance + i_max_ind = get_max_sum_ind(indices_list,row_maxima_i) - maximum_combo = find_maximum(scores, N, k_choices) + #########Loop 'm' (called loop 'k' in Ruano)############ + m_max_ind = i_max_ind + #m starts at 1 + m = 1 + + while m <= k_choices-i-1: + m_ind = add_indices(m_max_ind, distance_matrix) + + m_maxima = np.zeros(len(m_ind)) + + for n in range(0,len(m_ind)): + m_maxima[n] = sum_distances(m_ind[n], distance_matrix) + + m_max_ind = get_max_sum_ind(m_ind, m_maxima) + + m += 1 + + tot_indices_list.append(m_max_ind) + tot_max_array[i-1] = sum_distances(m_max_ind, distance_matrix) + + tot_max = get_max_sum_ind(tot_indices_list, tot_max_array) + return sorted(list(tot_max)) - print(maximum_combo) +#end method - return maximum_combo +def find_optimum_combination(input_sample, N, num_params, k_choices, groups=None, local_optimization=False): + + if local_optimization is False: + + scores = find_most_distant(input_sample, + N, + num_params, + k_choices, + groups) + + #print(scores) + + maximum_combo = find_maximum(scores, N, k_choices) + + #print(maximum_combo) + + else: + maximum_combo = find_local_maximum(input_sample, N, num_params, k_choices, groups) + return maximum_combo \ No newline at end of file From f232ce476fe507079152aa3f1c71daca87eb5093 Mon Sep 17 00:00:00 2001 From: Joeri van Engelen Date: Thu, 5 Nov 2015 15:27:10 +0100 Subject: [PATCH 2/6] Added a test for finding the local maximum distance. For this simple example, it should match the global maximum distance. --- SALib/tests/test_morris_util.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/SALib/tests/test_morris_util.py b/SALib/tests/test_morris_util.py index 385be3b2..4323f904 100644 --- a/SALib/tests/test_morris_util.py +++ b/SALib/tests/test_morris_util.py @@ -15,7 +15,8 @@ compute_distance_matrix, \ find_most_distant, find_maximum, \ make_index_list, \ - check_input_sample + check_input_sample, \ + find_local_maximum def setup(): @@ -150,6 +151,22 @@ def test_combo_from_find_most_distant(): expected = [0, 2, 3, 5] # trajectories 1, 3, 4, 6 assert_equal(output, expected) +def test_find_local_maximum_distance(): + ''' + Test whether finding the local maximum distance equals the global maximum distance + in a simple case. From Saltelli et al. 2008, in the solution to exercise 3a, + Chapter 3, page 134. + ''' + + sample_inputs = setup() + N=6 + num_params = 2 + k_choices = 4 + scores_global = find_most_distant(sample_inputs, N, num_params, k_choices) + output_global = find_maximum(scores_global, N, k_choices) + output_local = find_local_maximum(sample_inputs, N, num_params, k_choices) + assert_equal(output_global, output_local) + def test_scores_from_find_most_distant(): ''' From b950e2adfc27b77d60c515dd0e9cd6e89943d37e Mon Sep 17 00:00:00 2001 From: Joeri van Engelen Date: Thu, 26 Nov 2015 12:32:44 +0100 Subject: [PATCH 3/6] Fixed an error that had to do with the fact that I used is instead of ==. Furthermore I included extra tests for each function and the calculation in the sum_distances function is now vectorized --- SALib/sample/morris.py | 14 +++- SALib/sample/morris_util.py | 53 ++++++++------- SALib/tests/test_morris_util.py | 63 +++++++++++++++++- .../covariance_plot-expected.png | Bin 0 -> 38998 bytes .../test_plotting/covariance_plot.png | Bin 0 -> 39005 bytes .../covariance_plot_grouped-expected.png | Bin 0 -> 18098 bytes .../test_plotting/covariance_plot_grouped.png | Bin 0 -> 18098 bytes .../horizontal_bar_plot-expected.png | Bin 0 -> 15540 bytes .../test_plotting/horizontal_bar_plot.png | Bin 0 -> 15540 bytes .../sample_histograms-expected.png | Bin 0 -> 7475 bytes .../test_plotting/sample_histograms.png | Bin 0 -> 7475 bytes 11 files changed, 101 insertions(+), 29 deletions(-) create mode 100644 result_images/test_plotting/covariance_plot-expected.png create mode 100644 result_images/test_plotting/covariance_plot.png create mode 100644 result_images/test_plotting/covariance_plot_grouped-expected.png create mode 100644 result_images/test_plotting/covariance_plot_grouped.png create mode 100644 result_images/test_plotting/horizontal_bar_plot-expected.png create mode 100644 result_images/test_plotting/horizontal_bar_plot.png create mode 100644 result_images/test_plotting/sample_histograms-expected.png create mode 100644 result_images/test_plotting/sample_histograms.png diff --git a/SALib/sample/morris.py b/SALib/sample/morris.py index 3910e569..efa56cbd 100644 --- a/SALib/sample/morris.py +++ b/SALib/sample/morris.py @@ -33,7 +33,7 @@ def sample(problem, N, num_levels, grid_jump, optimal_trajectories=None, local_o - Vanilla Morris - Optimised trajectories when optimal_trajectories is set (using - Campolongo's enhancements from 2007) + Campolongo's enhancements from 2007 and optionally Ruano's enhancement from 2012) - Groups with optimised trajectories when optimal_trajectores is set and the problem definition specifies groups @@ -45,6 +45,8 @@ def sample(problem, N, num_levels, grid_jump, optimal_trajectories=None, local_o computed to find the optimal combination of trajectories. We suggest going no higher than 4 from a pool of 100 samples. + Update: With local_optimization = True, it is possible to go higher than the previously suggested 4 from 100. + Parameters ---------- problem : dict @@ -57,6 +59,10 @@ def sample(problem, N, num_levels, grid_jump, optimal_trajectories=None, local_o The grid jump size optimal_trajectories : int The number of optimal trajectories to sample (between 2 and N) + local_optimization : bool + Flag whether to use local optimization according to Ruano et al. (2012) + Speeds up the process tremendously for bigger N and num_levels. + Stating this variable to be true causes the function to ignore gurobi. """ if grid_jump >= num_levels: raise ValueError("grid_jump must be less than num_levels") @@ -164,7 +170,7 @@ def compute_optimised_trajectories(problem, input_sample, N, k_choices, local_op if np.any((input_sample < 0) | (input_sample > 1)): raise ValueError("Input sample must be scaled between 0 and 1") - if _has_gurobi: + if _has_gurobi == True and local_optimization == False: maximum_combo = return_max_combo(input_sample, N, num_params, @@ -204,6 +210,8 @@ def compute_optimised_trajectories(problem, input_sample, N, k_choices, local_op default=2, help='Grid jump size (Morris only)') parser.add_argument('-k', '--k-optimal', type=int, required=False, default=None, help='Number of optimal trajectories (Morris only)') + parser.add_argument('-o', '--local', type=bool, required=True, + default=False, help='Use the local optimisation method (Morris with optimization only)') args = parser.parse_args() np.random.seed(args.seed) @@ -211,7 +219,7 @@ def compute_optimised_trajectories(problem, input_sample, N, k_choices, local_op problem = read_param_file(args.paramfile) param_values = sample(problem, args.samples, args.levels, \ - args.grid_jump, args.k_optimal) + args.grid_jump, args.k_optimal, args.local) np.savetxt(args.output, param_values, delimiter=args.delimiter, fmt='%.' + str(args.precision) + 'e') diff --git a/SALib/sample/morris_util.py b/SALib/sample/morris_util.py index 027bb006..97eb740b 100644 --- a/SALib/sample/morris_util.py +++ b/SALib/sample/morris_util.py @@ -13,7 +13,6 @@ import numpy as np import random as rd -import math def generate_trajectory(G, num_levels, grid_jump): ''' @@ -136,9 +135,11 @@ def compute_distance_matrix(input_sample, N, num_params, groups=None, local_opti input_1 = input_sample[index_list[j]] for k in range(j + 1, N): input_2 = input_sample[index_list[k]] + + if local_optimization is True: + distance_matrix[j, k] = compute_distance(input_1, input_2) + distance_matrix[k, j] = compute_distance(input_1, input_2) - if local_optimization is not False: - distance_matrix[j, k] = compute_distance(input_1, input_2) return distance_matrix @@ -251,9 +252,6 @@ def compile_output(input_sample, N, num_params, maximum_combo, groups=None): output[index_list[counter]] = np.array(input_sample[index_list[x]]) return output -# method of Ruano et al. -# defined num_params as number of factors in model -# defined k_choices as number of desired trajectories def sum_distances(indices, distance_matrix): '''Calculate combinatorial distance between a select group of trajectories, indicated by indices @@ -266,23 +264,28 @@ def sum_distances(indices, distance_matrix): The calculated distances, as they are right now, are only used in a relative way. Purely summing distances would lead to the same result, at a perhaps quicker rate. ''' - combs = np.array(tuple(combinations(indices, 2))) - dist = 0.0 - - for comb in combs: - dist += distance_matrix[comb[0],comb[1]]**2 - - return math.sqrt(dist) + combs_tup = np.array(tuple(combinations(indices, 2))) + + #Put indices from tuples into two-dimensional array. + combs = np.array([[i[0] for i in combs_tup], [i[1] for i in combs_tup]]) + + #Calculate distance (vectorized) + dist = np.sqrt(np.sum(np.square(distance_matrix[combs[0],combs[1]]), axis=0)) + return dist -def get_max_sum_ind(indices_list, distances): +def get_max_sum_ind(indices_list, distances, i, m): '''Get the indices that belong to the maximum distance in an array of distances indices_list = list of tuples distance = array (M) + i = int + m = int ''' - if len(indices_list) is not len(distances): - raise ValueError("indices and distances are lists of different length") + if len(indices_list) != len(distances): + raise ValueError("Indices and distances are lists of different length." + + "Length indices_list = " + str(len(indices_list)) + " and length distances = " + + str(len(distances)) + ". In loop i = " + str(i) + " and m = " + str(m)) max_index = tuple(distances.argsort()[-1:][::-1]) return indices_list[max_index[0]] @@ -303,7 +306,8 @@ def add_indices(indices, distance_matrix): def find_local_maximum(input_sample, N, num_params, k_choices, groups = None): '''An alternative by Ruano et al. (2012) for the brute force approach as originally proposed by Campolongo et al. (2007). The method should improve - the speed with which an optimal set of trajectories is found tremendously. + the speed with which an optimal set of trajectories is found tremendously + for larger sample sizes. ''' if groups is not None: @@ -328,7 +332,7 @@ def find_local_maximum(input_sample, N, num_params, k_choices, groups = None): row_nr += 1 #Find the indices belonging to the maximum distance - i_max_ind = get_max_sum_ind(indices_list,row_maxima_i) + i_max_ind = get_max_sum_ind(indices_list,row_maxima_i, i, 0) #########Loop 'm' (called loop 'k' in Ruano)############ m_max_ind = i_max_ind @@ -343,22 +347,24 @@ def find_local_maximum(input_sample, N, num_params, k_choices, groups = None): for n in range(0,len(m_ind)): m_maxima[n] = sum_distances(m_ind[n], distance_matrix) - m_max_ind = get_max_sum_ind(m_ind, m_maxima) + m_max_ind = get_max_sum_ind(m_ind, m_maxima, i, m) m += 1 tot_indices_list.append(m_max_ind) tot_max_array[i-1] = sum_distances(m_max_ind, distance_matrix) - tot_max = get_max_sum_ind(tot_indices_list, tot_max_array) + tot_max = get_max_sum_ind(tot_indices_list, tot_max_array, "tot", "tot") return sorted(list(tot_max)) -#end method + def find_optimum_combination(input_sample, N, num_params, k_choices, groups=None, local_optimization=False): - if local_optimization is False: + if local_optimization is True: + maximum_combo = find_local_maximum(input_sample, N, num_params, k_choices, groups) + else: scores = find_most_distant(input_sample, N, num_params, @@ -371,7 +377,4 @@ def find_optimum_combination(input_sample, N, num_params, k_choices, groups=None #print(maximum_combo) - else: - maximum_combo = find_local_maximum(input_sample, N, num_params, k_choices, groups) - return maximum_combo \ No newline at end of file diff --git a/SALib/tests/test_morris_util.py b/SALib/tests/test_morris_util.py index 4323f904..ede7c635 100644 --- a/SALib/tests/test_morris_util.py +++ b/SALib/tests/test_morris_util.py @@ -16,7 +16,8 @@ find_most_distant, find_maximum, \ make_index_list, \ check_input_sample, \ - find_local_maximum + find_local_maximum, \ + sum_distances, get_max_sum_ind, add_indices def setup(): @@ -135,6 +136,60 @@ def test_compute_distance_matrix(): expected[5, :] = [7.52, 5.99, 5.52, 7.31, 5.77, 0] assert_allclose(output, expected, rtol=1e-2) +def test_compute_distance_matrix_local(): + ''' + Tests that a distance matrix is computed correctly for the local distance optimization. + The only change is that the local method needs the upper triangle of + the distance matrix instead of the lower one. + + This is for an input of six trajectories and two parameters + ''' + sample_inputs = setup() + output = compute_distance_matrix(sample_inputs, 6, 2, local_optimization=True) + expected = np.zeros((6, 6), dtype=np.float32) + expected[0, :] = [0, 5.50, 6.18, 6.89, 6.18, 7.52] + expected[1, :] = [5.50, 0, 5.31, 6.18, 5.31, 5.99] + expected[2, :] = [6.18, 5.31, 0, 6.57, 5.41, 5.52] + expected[3, :] = [6.89, 6.18, 6.57, 0, 5.50, 7.31] + expected[4, :] = [6.18, 5.31, 5.41, 5.5, 0, 5.77] + expected[5, :] = [7.52, 5.99, 5.52, 7.31, 5.77, 0 ] + assert_allclose(output, expected, rtol=1e-2) + +def test_sum_distances(): + ''' + Tests whether the combinations are summed correctly. + ''' + sample_inputs = setup() + dist_matr = compute_distance_matrix(sample_inputs, 6, 2, local_optimization=True) + indices = (1,3,2) + distance = sum_distances(indices, dist_matr) + + expected = 10.47 + assert_allclose(distance, expected, rtol=1e-2) + +def test_get_max_sum_ind(): + ''' + Tests whether the right maximum indices are returned. + ''' + indices = np.array([(1,2,4),(3,2,1),(4,2,1)]) + distances = np.array([20, 40, 50]) + + output = get_max_sum_ind(indices, distances, 0, 0) + expected = (4,2,1) + + assert_equal(output, expected) + +def test_add_indices(): + ''' + Tests whether the right indices are added. + ''' + indices = (1,3,4) + matr = np.zeros((6,6), dtype = np.int16) + ind_extra = add_indices(indices, matr) + + expected = [(1,3,4,0),(1,3,4,2),(1,3,4,5)] + + assert_equal(ind_extra, expected) def test_combo_from_find_most_distant(): ''' @@ -229,6 +284,12 @@ def test_make_index_list_with_groups(): desired = [np.array([0, 1, 2]), np.array([3, 4, 5]), np.array([6, 7, 8]), np.array([9, 10, 11])] assert_equal(desired, actual) +@raises(ValueError) +def test_get_max_sum_ind_Error(): + indices = [(1,2,4),(3,2,1),(4,2,1)] + distances_wrong = [20,40] + + get_max_sum_ind(indices, distances_wrong, 0, 0) @raises(AssertionError) def test_check_input_sample_N(): diff --git a/result_images/test_plotting/covariance_plot-expected.png b/result_images/test_plotting/covariance_plot-expected.png new file mode 100644 index 0000000000000000000000000000000000000000..c6863dbb2c2ef1fd530b8fda8570970eb8c98a55 GIT binary patch literal 38998 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

WCi8tTZV7eSpC|v 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 literal 0 HcmV?d00001 diff --git a/result_images/test_plotting/covariance_plot_grouped.png b/result_images/test_plotting/covariance_plot_grouped.png new file mode 100644 index 0000000000000000000000000000000000000000..b63a229257cf9abf573ce8285fc06bd96e0ef1b2 GIT binary patch literal 18098 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

WCi8tTZV7eSpC|v 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 literal 0 HcmV?d00001 diff --git a/result_images/test_plotting/horizontal_bar_plot-expected.png b/result_images/test_plotting/horizontal_bar_plot-expected.png new file mode 100644 index 0000000000000000000000000000000000000000..a0c1645cedb0ecc7b628902e04290db44c4ff34b GIT binary patch literal 15540 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 acXg||&Ykag;Xx-1(>kg9Q`Yf|zx*E;a_1}n literal 0 HcmV?d00001 diff --git a/result_images/test_plotting/horizontal_bar_plot.png b/result_images/test_plotting/horizontal_bar_plot.png new file mode 100644 index 0000000000000000000000000000000000000000..a0c1645cedb0ecc7b628902e04290db44c4ff34b GIT binary patch literal 15540 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 acXg||&Ykag;Xx-1(>kg9Q`Yf|zx*E;a_1}n literal 0 HcmV?d00001 diff --git a/result_images/test_plotting/sample_histograms-expected.png b/result_images/test_plotting/sample_histograms-expected.png new file mode 100644 index 0000000000000000000000000000000000000000..31c68576652486ad057cd1bec54e6b620c16b1fc GIT binary patch literal 7475 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 literal 0 HcmV?d00001 diff --git a/result_images/test_plotting/sample_histograms.png b/result_images/test_plotting/sample_histograms.png new file mode 100644 index 0000000000000000000000000000000000000000..31c68576652486ad057cd1bec54e6b620c16b1fc GIT binary patch literal 7475 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 literal 0 HcmV?d00001 From ef643616e5c7e6f30c199a17071d584fe6420cd9 Mon Sep 17 00:00:00 2001 From: Will Usher Date: Thu, 26 Nov 2015 14:21:38 +0000 Subject: [PATCH 4/6] Removed TestCommand setup due to setuptools update --- setup.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/setup.py b/setup.py index 624928cd..3a98f48c 100644 --- a/setup.py +++ b/setup.py @@ -13,11 +13,6 @@ class NoseTestCommand(TestCommand): - def finalize_options(self): - TestCommand.finalize_options(self) - self.test_args = [] - self.test_suite = True - def run_tests(self): # Run nose ensuring that argv simulates running nosetests directly import nose From fad7355bfd42f7fcd24935faed53fdc6011c665b Mon Sep 17 00:00:00 2001 From: Will Usher Date: Thu, 26 Nov 2015 14:49:40 +0000 Subject: [PATCH 5/6] Workaround for bug #84 --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index 1cbbbd39..29c20913 100644 --- a/.travis.yml +++ b/.travis.yml @@ -29,6 +29,8 @@ install: - source activate testenv - python setup.py install - pip install coveralls + # Workaround for image_comparison issue in v1.5.0 of matplotlib + - pip install git+https://github.com/matplotlib/matplotlib.git script: - coverage run --source=SALib --omit=SALib/_version.py setup.py test after_success: From 4eaa4a747b04c54521227af2e9dbe96e78246e45 Mon Sep 17 00:00:00 2001 From: Will Usher Date: Thu, 26 Nov 2015 16:02:00 +0000 Subject: [PATCH 6/6] Workaround for #84 - matplotlib image_comparison --- .travis.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 29c20913..8fdebc56 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,7 +6,8 @@ python: - "3.3" env: - - DEPS="numpy scipy matplotlib" + # Workaround for image_comparison issue in v1.5.0 of matplotlib - fix matplotlib to 1.4.3 + - DEPS="numpy scipy matplotlib=1.4.3" install: - sudo apt-get update @@ -29,8 +30,6 @@ install: - source activate testenv - python setup.py install - pip install coveralls - # Workaround for image_comparison issue in v1.5.0 of matplotlib - - pip install git+https://github.com/matplotlib/matplotlib.git script: - coverage run --source=SALib --omit=SALib/_version.py setup.py test after_success: