Python autograd.numpy.hstack() Examples
The following are 26
code examples of autograd.numpy.hstack().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
autograd.numpy
, or try the search function
.
Example #1
Source File: fdfd.py From ceviche with MIT License | 6 votes |
def _make_A(self, eps_vec): eps_vec_xx, eps_vec_yy = self._grid_average_2d(eps_vec) eps_vec_xx_inv = 1 / (eps_vec_xx + 1e-5) # the 1e-5 is for numerical stability eps_vec_yy_inv = 1 / (eps_vec_yy + 1e-5) # autograd throws 'divide by zero' errors. indices_diag = npa.vstack((npa.arange(self.N), npa.arange(self.N))) entries_DxEpsy, indices_DxEpsy = spsp_mult(self.entries_Dxb, self.indices_Dxb, eps_vec_yy_inv, indices_diag, self.N) entires_DxEpsyDx, indices_DxEpsyDx = spsp_mult(entries_DxEpsy, indices_DxEpsy, self.entries_Dxf, self.indices_Dxf, self.N) entries_DyEpsx, indices_DyEpsx = spsp_mult(self.entries_Dyb, self.indices_Dyb, eps_vec_xx_inv, indices_diag, self.N) entires_DyEpsxDy, indices_DyEpsxDy = spsp_mult(entries_DyEpsx, indices_DyEpsx, self.entries_Dyf, self.indices_Dyf, self.N) entries_d = 1 / EPSILON_0 * npa.hstack((entires_DxEpsyDx, entires_DyEpsxDy)) indices_d = npa.hstack((indices_DxEpsyDx, indices_DyEpsxDy)) entries_diag = MU_0 * self.omega**2 * npa.ones(self.N) entries_a = npa.hstack((entries_d, entries_diag)) indices_a = npa.hstack((indices_d, indices_diag)) return entries_a, indices_a
Example #2
Source File: tm.py From autohmm with BSD 2-Clause "Simplified" License | 6 votes |
def _ntied_transmat_prior(self, transmat_val): # TODO: document choices transmat = np.empty((0, self.n_components)) for r in range(self.n_unique): row = np.empty((self.n_chain, 0)) for c in range(self.n_unique): if r == c: subm = np.array(sp.diags([transmat_val[r, c], 1.0], [0, 1], shape=(self.n_chain, self.n_chain)).todense()) else: lower_left = np.zeros((self.n_chain, self.n_chain)) lower_left[self.n_tied, 0] = 1.0 subm = np.kron(transmat_val[r, c], lower_left) row = np.hstack((row, subm)) transmat = np.vstack((transmat, row)) return transmat
Example #3
Source File: fdfd.py From ceviche with MIT License | 6 votes |
def _solve_fn(self, eps_vec, entries_a, indices_a, Mz_vec): # convert the Mz current into Jx, Jy eps_vec_xx, eps_vec_yy = self._grid_average_2d(eps_vec) Jx_vec, Jy_vec = self._Hz_to_Ex_Ey(Mz_vec, eps_vec_xx, eps_vec_yy) # lump the current sources together and solve for electric field source_J_vec = npa.hstack((Jx_vec, Jy_vec)) E_vec = sp_solve(entries_a, indices_a, source_J_vec) # strip out the x and y components of E and find the Hz component Ex_vec = E_vec[:self.N] Ey_vec = E_vec[self.N:] Hz_vec = self._Ex_Ey_to_Hz(Ex_vec, Ey_vec) return Ex_vec, Ey_vec, Hz_vec
Example #4
Source File: geometry.py From AeroSandbox with MIT License | 6 votes |
def get_mcl_normal_direction_at_chord_fraction(self, chord_fraction): # Returns the normal direction of the mean camber line at a specified chord fraction. # If you input a single value, returns a 1D numpy array with 2 elements (x,y). # If you input a vector of values, returns a 2D numpy array. First index is the point number, second index is (x,y) # Right now, does it by finite differencing camber values :( # When I'm less lazy I'll make it do it in a proper, more efficient way # TODO make this not finite difference epsilon = np.sqrt(np.finfo(float).eps) cambers = self.get_camber_at_chord_fraction(chord_fraction) cambers_incremented = self.get_camber_at_chord_fraction(chord_fraction + epsilon) dydx = (cambers_incremented - cambers) / epsilon if dydx.shape == 1: # single point normal = np.hstack((-dydx, 1)) normal /= np.linalg.norm(normal) return normal else: # multiple points vectorized normal = np.column_stack((-dydx, np.ones(dydx.shape))) normal /= np.expand_dims(np.linalg.norm(normal, axis=1), axis=1) # normalize return normal
Example #5
Source File: fdfd.py From ceviche with MIT License | 5 votes |
def _make_A(self, eps_vec): C = - 1 / MU_0 * self.Dxf.dot(self.Dxb) \ - 1 / MU_0 * self.Dyf.dot(self.Dyb) entries_c, indices_c = get_entries_indices(C) # indices into the diagonal of a sparse matrix entries_diag = - EPSILON_0 * self.omega**2 * eps_vec indices_diag = npa.vstack((npa.arange(self.N), npa.arange(self.N))) entries_a = npa.hstack((entries_diag, entries_c)) indices_a = npa.hstack((indices_diag, indices_c)) return entries_a, indices_a
Example #6
Source File: ex1_vary_n.py From kernel-gof with MIT License | 5 votes |
def job_mmd_opt(p, data_source, tr, te, r): """ MMD test of Gretton et al., 2012 used as a goodness-of-fit test. Require the ability to sample from p i.e., the UnnormalizedDensity p has to be able to return a non-None from get_datasource() With optimization. Gaussian kernel. """ data = tr + te X = data.data() with util.ContextTimer() as t: # median heuristic pds = p.get_datasource() datY = pds.sample(data.sample_size(), seed=r+294) Y = datY.data() XY = np.vstack((X, Y)) med = util.meddistance(XY, subsample=1000) # Construct a list of kernels to try based on multiples of the median # heuristic #list_gwidth = np.hstack( (np.linspace(20, 40, 10), (med**2) # *(2.0**np.linspace(-2, 2, 20) ) ) ) list_gwidth = (med**2)*(2.0**np.linspace(-4, 4, 30) ) list_gwidth.sort() candidate_kernels = [kernel.KGauss(gw2) for gw2 in list_gwidth] mmd_opt = mgof.QuadMMDGofOpt(p, n_permute=300, alpha=alpha, seed=r) mmd_result = mmd_opt.perform_test(data, candidate_kernels=candidate_kernels, tr_proportion=tr_proportion, reg=1e-3) return { 'test_result': mmd_result, 'time_secs': t.secs}
Example #7
Source File: ex2_prob_params.py From kernel-gof with MIT License | 5 votes |
def job_mmd_opt(p, data_source, tr, te, r): """ MMD test of Gretton et al., 2012 used as a goodness-of-fit test. Require the ability to sample from p i.e., the UnnormalizedDensity p has to be able to return a non-None from get_datasource() With optimization. Gaussian kernel. """ data = tr + te X = data.data() with util.ContextTimer() as t: # median heuristic pds = p.get_datasource() datY = pds.sample(data.sample_size(), seed=r+294) Y = datY.data() XY = np.vstack((X, Y)) med = util.meddistance(XY, subsample=1000) # Construct a list of kernels to try based on multiples of the median # heuristic #list_gwidth = np.hstack( (np.linspace(20, 40, 10), (med**2) # *(2.0**np.linspace(-2, 2, 20) ) ) ) list_gwidth = (med**2)*(2.0**np.linspace(-3, 3, 30) ) list_gwidth.sort() candidate_kernels = [kernel.KGauss(gw2) for gw2 in list_gwidth] mmd_opt = mgof.QuadMMDGofOpt(p, n_permute=300, alpha=alpha, seed=r+56) mmd_result = mmd_opt.perform_test(data, candidate_kernels=candidate_kernels, tr_proportion=tr_proportion, reg=1e-3) return { 'test_result': mmd_result, 'time_secs': t.secs} # Define our custom Job, which inherits from base class IndependentJob
Example #8
Source File: goftest.py From kernel-gof with MIT License | 5 votes |
def optimize_auto_init(p, dat, J, **ops): """ Optimize parameters by calling optimize_locs_widths(). Automatically initialize the test locations and the Gaussian width. Return optimized locations, Gaussian width, optimization info """ assert J>0 # Use grid search to initialize the gwidth X = dat.data() n_gwidth_cand = 5 gwidth_factors = 2.0**np.linspace(-3, 3, n_gwidth_cand) med2 = util.meddistance(X, 1000)**2 k = kernel.KGauss(med2*2) # fit a Gaussian to the data and draw to initialize V0 V0 = util.fit_gaussian_draw(X, J, seed=829, reg=1e-6) list_gwidth = np.hstack( ( (med2)*gwidth_factors ) ) besti, objs = GaussFSSD.grid_search_gwidth(p, dat, V0, list_gwidth) gwidth = list_gwidth[besti] assert util.is_real_num(gwidth), 'gwidth not real. Was %s'%str(gwidth) assert gwidth > 0, 'gwidth not positive. Was %.3g'%gwidth logging.info('After grid search, gwidth=%.3g'%gwidth) V_opt, gwidth_opt, info = GaussFSSD.optimize_locs_widths(p, dat, gwidth, V0, **ops) # set the width bounds #fac_min = 5e-2 #fac_max = 5e3 #gwidth_lb = fac_min*med2 #gwidth_ub = fac_max*med2 #gwidth_opt = max(gwidth_lb, min(gwidth_opt, gwidth_ub)) return V_opt, gwidth_opt, info
Example #9
Source File: goftest.py From kernel-gof with MIT License | 5 votes |
def power_criterion(p, dat, b, c, test_locs, reg=1e-2): k = kernel.KIMQ(b=b, c=c) return FSSD.power_criterion(p, dat, k, test_locs, reg) #@staticmethod #def optimize_auto_init(p, dat, J, **ops): # """ # Optimize parameters by calling optimize_locs_widths(). Automatically # initialize the test locations and the Gaussian width. # Return optimized locations, Gaussian width, optimization info # """ # assert J>0 # # Use grid search to initialize the gwidth # X = dat.data() # n_gwidth_cand = 5 # gwidth_factors = 2.0**np.linspace(-3, 3, n_gwidth_cand) # med2 = util.meddistance(X, 1000)**2 # k = kernel.KGauss(med2*2) # # fit a Gaussian to the data and draw to initialize V0 # V0 = util.fit_gaussian_draw(X, J, seed=829, reg=1e-6) # list_gwidth = np.hstack( ( (med2)*gwidth_factors ) ) # besti, objs = GaussFSSD.grid_search_gwidth(p, dat, V0, list_gwidth) # gwidth = list_gwidth[besti] # assert util.is_real_num(gwidth), 'gwidth not real. Was %s'%str(gwidth) # assert gwidth > 0, 'gwidth not positive. Was %.3g'%gwidth # logging.info('After grid search, gwidth=%.3g'%gwidth) # V_opt, gwidth_opt, info = GaussFSSD.optimize_locs_widths(p, dat, # gwidth, V0, **ops) # # set the width bounds # #fac_min = 5e-2 # #fac_max = 5e3 # #gwidth_lb = fac_min*med2 # #gwidth_ub = fac_max*med2 # #gwidth_opt = max(gwidth_lb, min(gwidth_opt, gwidth_ub)) # return V_opt, gwidth_opt, info
Example #10
Source File: geometry.py From AeroSandbox with MIT License | 5 votes |
def get_downsampled_mcl(self, mcl_fractions): # Returns the mean camber line in downsampled form mcl = self.mcl_coordinates # Find distances along mcl, assuming linear interpolation mcl_distances_between_points = np.sqrt( np.power(mcl[:-1, 0] - mcl[1:, 0], 2) + np.power(mcl[:-1, 1] - mcl[1:, 1], 2) ) mcl_distances_cumulative = np.hstack((0, np.cumsum(mcl_distances_between_points))) mcl_distances_cumulative_normalized = mcl_distances_cumulative / mcl_distances_cumulative[-1] mcl_downsampled_x = np.interp( x=mcl_fractions, xp=mcl_distances_cumulative_normalized, fp=mcl[:, 0] ) mcl_downsampled_y = np.interp( x=mcl_fractions, xp=mcl_distances_cumulative_normalized, fp=mcl[:, 1] ) mcl_downsampled = np.column_stack((mcl_downsampled_x, mcl_downsampled_y)) return mcl_downsampled
Example #11
Source File: fdfd.py From ceviche with MIT License | 5 votes |
def _make_A(self, eps_vec): # notation: C = [[C11, C12], [C21, C22]] C11 = -1 / MU_0 * self.Dyf.dot(self.Dyb) C22 = -1 / MU_0 * self.Dxf.dot(self.Dxb) C12 = 1 / MU_0 * self.Dyf.dot(self.Dxb) C21 = 1 / MU_0 * self.Dxf.dot(self.Dyb) # get entries and indices entries_c11, indices_c11 = get_entries_indices(C11) entries_c22, indices_c22 = get_entries_indices(C22) entries_c12, indices_c12 = get_entries_indices(C12) entries_c21, indices_c21 = get_entries_indices(C21) # shift the indices into each of the 4 quadrants indices_c22 += self.N # shift into bottom right quadrant indices_c12[1,:] += self.N # shift into top right quadrant indices_c21[0,:] += self.N # shift into bottom left quadrant # get full matrix entries and indices entries_c = npa.hstack((entries_c11, entries_c12, entries_c21, entries_c22)) indices_c = npa.hstack((indices_c11, indices_c12, indices_c21, indices_c22)) # indices into the diagonal of a sparse matrix eps_vec_xx, eps_vec_yy, eps_vec_zz = self._grid_average_3d(eps_vec) entries_diag = - EPSILON_0 * self.omega**2 * npa.hstack((eps_vec_xx, eps_vec_yy)) indices_diag = npa.vstack((npa.arange(2 * self.N), npa.arange(2 * self.N))) # put together the big A and return entries and indices entries_a = npa.hstack((entries_diag, entries_c)) indices_a = npa.hstack((indices_diag, indices_c)) return entries_a, indices_a
Example #12
Source File: standard_models.py From pyhawkes with MIT License | 5 votes |
def add_data(self, F, S): T = F.shape[0] assert S.shape == (T,) and S.dtype in (np.int, np.uint, np.uint32) if F.shape[1] == self.K * self.B: F = np.hstack([np.ones((T,)), F]) else: assert F.shape[1] == 1 + self.K * self.B self.data_list.append((F, S))
Example #13
Source File: test_systematic.py From autograd with MIT License | 5 votes |
def test_hstack_3d(): combo_check(np.hstack, [0])([R(2, 3, 4), (R(2, 1, 4), R(2, 5, 4))])
Example #14
Source File: test_systematic.py From autograd with MIT License | 5 votes |
def test_hstack_2d(): combo_check(np.hstack, [0])([R(3, 2), (R(3, 4), R(3, 5))])
Example #15
Source File: test_systematic.py From autograd with MIT License | 5 votes |
def test_hstack_1d(): combo_check(np.hstack, [0])([R(2), (R(2), R(2))])
Example #16
Source File: tm.py From autohmm with BSD 2-Clause "Simplified" License | 5 votes |
def _ntied_transmat(self, transmat_val): # TODO: document choices # +-----------------+ # |a|1|0|0|0|0|0|0|0| # +-----------------+ # |0|a|1|0|0|0|0|0|0| # +-----------------+ # +---+---+---+ |0|0|a|b|0|0|c|0|0| # | a | b | c | +-----------------+ # +-----------+ |0|0|0|e|1|0|0|0|0| # | d | e | f | +----> +-----------------+ # +-----------+ |0|0|0|0|e|1|0|0|0| # | g | h | i | +-----------------+ # +---+---+---+ |d|0|0|0|0|e|f|0|0| # +-----------------+ # |0|0|0|0|0|0|i|1|0| # +-----------------+ # |0|0|0|0|0|0|0|i|1| # +-----------------+ # |g|0|0|h|0|0|0|0|i| # +-----------------+ # for a model with n_unique = 3 and n_tied = 2 transmat = np.empty((0, self.n_components)) for r in range(self.n_unique): row = np.empty((self.n_chain, 0)) for c in range(self.n_unique): if r == c: subm = np.array(sp.diags([transmat_val[r, c], 1 - transmat_val[r, c]], [0, 1], shape=(self.n_chain, self.n_chain)).todense()) else: lower_left = np.zeros((self.n_chain, self.n_chain)) lower_left[self.n_tied, 0] = 1.0 subm = np.kron(transmat_val[r, c], lower_left) row = np.hstack((row, subm)) transmat = np.vstack((transmat, row)) return transmat
Example #17
Source File: rnn.py From autograd with MIT License | 5 votes |
def concat_and_multiply(weights, *args): cat_state = np.hstack(args + (np.ones((args[0].shape[0], 1)),)) return np.dot(cat_state, weights) ### Define recurrent neural net #######
Example #18
Source File: geometry.py From AeroSandbox with MIT License | 5 votes |
def repanel_current_airfoil(self, n_points_per_side=100): # Returns a repaneled version of the airfoil with cosine-spaced coordinates on the upper and lower surfaces. # Inputs: # # n_points_per_side is the number of points PER SIDE (upper and lower) of the airfoil. 100 is a good number. # Notes: The number of points defining the final airfoil will be n_points_per_side*2-1, # since one point (the leading edge point) is shared by both the upper and lower surfaces. upper_original_coors = self.upper_coordinates() # Note: includes leading edge point, be careful about duplicates lower_original_coors = self.lower_coordinates() # Note: includes leading edge point, be careful about duplicates # Find distances between coordinates, assuming linear interpolation upper_distances_between_points = np.sqrt( np.power(upper_original_coors[:-1, 0] - upper_original_coors[1:, 0], 2) + np.power(upper_original_coors[:-1, 1] - upper_original_coors[1:, 1], 2) ) lower_distances_between_points = np.sqrt( np.power(lower_original_coors[:-1, 0] - lower_original_coors[1:, 0], 2) + np.power(lower_original_coors[:-1, 1] - lower_original_coors[1:, 1], 2) ) upper_distances_from_TE = np.hstack((0, np.cumsum(upper_distances_between_points))) lower_distances_from_LE = np.hstack((0, np.cumsum(lower_distances_between_points))) upper_distances_from_TE_normalized = upper_distances_from_TE / upper_distances_from_TE[-1] lower_distances_from_LE_normalized = lower_distances_from_LE / lower_distances_from_LE[-1] # Generate a cosine-spaced list of points from 0 to 1 s = cosspace(n_points=n_points_per_side) x_upper_func = sp_interp.PchipInterpolator(x=upper_distances_from_TE_normalized, y=upper_original_coors[:, 0]) y_upper_func = sp_interp.PchipInterpolator(x=upper_distances_from_TE_normalized, y=upper_original_coors[:, 1]) x_lower_func = sp_interp.PchipInterpolator(x=lower_distances_from_LE_normalized, y=lower_original_coors[:, 0]) y_lower_func = sp_interp.PchipInterpolator(x=lower_distances_from_LE_normalized, y=lower_original_coors[:, 1]) x_coors = np.hstack((x_upper_func(s), x_lower_func(s)[1:])) y_coors = np.hstack((y_upper_func(s), y_lower_func(s)[1:])) coordinates = np.column_stack((x_coors, y_coors)) self.coordinates = coordinates
Example #19
Source File: standard_models.py From pyhawkes with MIT License | 5 votes |
def add_data(self, S, F=None): """ Add a data set to the list of observations. First, filter the data with the impulse response basis, then instantiate a set of parents for this data set. :param S: a TxK matrix of of event counts for each time bin and each process. """ assert isinstance(S, np.ndarray) and S.ndim == 2 and S.shape[1] == self.K \ and np.amin(S) >= 0 and S.dtype == np.int, \ "Data must be a TxK array of event counts" T = S.shape[0] if F is None: # Filter the data into a TxKxB array Ftens = self.basis.convolve_with_basis(S) # Flatten this into a T x (KxB) matrix # [F00, F01, F02, F10, F11, ... F(K-1)0, F(K-1)(B-1)] F = Ftens.reshape((T, self.K * self.B)) assert np.allclose(F[:,0], Ftens[:,0,0]) if self.B > 1: assert np.allclose(F[:,1], Ftens[:,0,1]) if self.K > 1: assert np.allclose(F[:,self.B], Ftens[:,1,0]) # Prepend a column of ones F = np.hstack((np.ones((T,1)), F)) for k,node in enumerate(self.nodes): node.add_data(F, S[:,k])
Example #20
Source File: geometry.py From AeroSandbox with MIT License | 4 votes |
def draw(self): # Draw the airplane in a new window. # Using PyVista Polydata format vertices = np.empty((0, 3)) faces = np.empty((0)) for wing in self.wings: wing_vertices = np.empty((0, 3)) wing_tri_faces = np.empty((0, 4)) wing_quad_faces = np.empty((0, 5)) for i in range(len(wing.xsecs) - 1): is_last_section = i == len(wing.xsecs) - 2 le_start = wing.xsecs[i].xyz_le + wing.xyz_le te_start = wing.xsecs[i].xyz_te() + wing.xyz_le wing_vertices = np.vstack((wing_vertices, le_start, te_start)) wing_quad_faces = np.vstack(( wing_quad_faces, np.expand_dims(np.array([4, 2 * i + 0, 2 * i + 1, 2 * i + 3, 2 * i + 2]), 0) )) if is_last_section: le_end = wing.xsecs[i + 1].xyz_le + wing.xyz_le te_end = wing.xsecs[i + 1].xyz_te() + wing.xyz_le wing_vertices = np.vstack((wing_vertices, le_end, te_end)) vertices_starting_index = len(vertices) wing_quad_faces_reformatted = np.ndarray.copy(wing_quad_faces) wing_quad_faces_reformatted[:, 1:] = wing_quad_faces[:, 1:] + vertices_starting_index wing_quad_faces_reformatted = np.reshape(wing_quad_faces_reformatted, (-1), order='C') vertices = np.vstack((vertices, wing_vertices)) faces = np.hstack((faces, wing_quad_faces_reformatted)) if wing.symmetric: vertices_starting_index = len(vertices) wing_vertices = reflect_over_XZ_plane(wing_vertices) wing_quad_faces_reformatted = np.ndarray.copy(wing_quad_faces) wing_quad_faces_reformatted[:, 1:] = wing_quad_faces[:, 1:] + vertices_starting_index wing_quad_faces_reformatted = np.reshape(wing_quad_faces_reformatted, (-1), order='C') vertices = np.vstack((vertices, wing_vertices)) faces = np.hstack((faces, wing_quad_faces_reformatted)) plotter = pv.Plotter() wing_surfaces = pv.PolyData(vertices, faces) plotter.add_mesh(wing_surfaces, color='#7EFC8F', show_edges=True, smooth_shading=True) xyz_ref = pv.PolyData(self.xyz_ref) plotter.add_points(xyz_ref, color='#50C7C7', point_size=10) plotter.show_grid(color='#444444') plotter.set_background(color="black") plotter.show(cpos=(-1, -1, 1), full_screen=False)
Example #21
Source File: mmd.py From kernel-gof with MIT License | 4 votes |
def perform_test(self, dat, candidate_kernels=None, return_mmdtest=False, tr_proportion=0.2, reg=1e-3): """ dat: an instance of Data candidate_kernels: a list of Kernel's to choose from tr_proportion: proportion of sample to be used to choosing the best kernel reg: regularization parameter for the test power criterion """ with util.ContextTimer() as t: seed = self.seed p = self.p ds = p.get_datasource() p_sample = ds.sample(dat.sample_size(), seed=seed+77) xtr, xte = p_sample.split_tr_te(tr_proportion=tr_proportion, seed=seed+18) # ytr, yte are of type data.Data ytr, yte = dat.split_tr_te(tr_proportion=tr_proportion, seed=seed+12) # training and test data tr_tst_data = fdata.TSTData(xtr.data(), ytr.data()) te_tst_data = fdata.TSTData(xte.data(), yte.data()) if candidate_kernels is None: # Assume a Gaussian kernel. Construct a list of # kernels to try based on multiples of the median heuristic med = util.meddistance(tr_tst_data.stack_xy(), 1000) list_gwidth = np.hstack( ( (med**2) *(2.0**np.linspace(-4, 4, 10) ) ) ) list_gwidth.sort() candidate_kernels = [kernel.KGauss(gw2) for gw2 in list_gwidth] alpha = self.alpha # grid search to choose the best Gaussian width besti, powers = tst.QuadMMDTest.grid_search_kernel(tr_tst_data, candidate_kernels, alpha, reg=reg) # perform test best_ker = candidate_kernels[besti] mmdtest = tst.QuadMMDTest(best_ker, self.n_permute, alpha=alpha) results = mmdtest.perform_test(te_tst_data) if return_mmdtest: results['mmdtest'] = mmdtest results['time_secs'] = t.secs return results
Example #22
Source File: ex1_vary_n.py From kernel-gof with MIT License | 4 votes |
def job_fssdJ1q_opt(p, data_source, tr, te, r, J=1, null_sim=None): """ FSSD with optimization on tr. Test on te. Use a Gaussian kernel. """ if null_sim is None: null_sim = gof.FSSDH0SimCovObs(n_simulate=2000, seed=r) Xtr = tr.data() with util.ContextTimer() as t: # Use grid search to initialize the gwidth n_gwidth_cand = 5 gwidth_factors = 2.0**np.linspace(-3, 3, n_gwidth_cand) med2 = util.meddistance(Xtr, 1000)**2 k = kernel.KGauss(med2) # fit a Gaussian to the data and draw to initialize V0 V0 = util.fit_gaussian_draw(Xtr, J, seed=r+1, reg=1e-6) list_gwidth = np.hstack( ( (med2)*gwidth_factors ) ) besti, objs = gof.GaussFSSD.grid_search_gwidth(p, tr, V0, list_gwidth) gwidth = list_gwidth[besti] assert util.is_real_num(gwidth), 'gwidth not real. Was %s'%str(gwidth) assert gwidth > 0, 'gwidth not positive. Was %.3g'%gwidth logging.info('After grid search, gwidth=%.3g'%gwidth) ops = { 'reg': 1e-2, 'max_iter': 30, 'tol_fun': 1e-5, 'disp': True, 'locs_bounds_frac':30.0, 'gwidth_lb': 1e-1, 'gwidth_ub': 1e4, } V_opt, gwidth_opt, info = gof.GaussFSSD.optimize_locs_widths(p, tr, gwidth, V0, **ops) # Use the optimized parameters to construct a test k_opt = kernel.KGauss(gwidth_opt) fssd_opt = gof.FSSD(p, k_opt, V_opt, null_sim=null_sim, alpha=alpha) fssd_opt_result = fssd_opt.perform_test(te) return {'test_result': fssd_opt_result, 'time_secs': t.secs, 'goftest': fssd_opt, 'opt_info': info, }
Example #23
Source File: ex2_prob_params.py From kernel-gof with MIT License | 4 votes |
def job_fssdJ1q_opt(p, data_source, tr, te, r, J=1, null_sim=None): """ FSSD with optimization on tr. Test on te. Use a Gaussian kernel. """ if null_sim is None: null_sim = gof.FSSDH0SimCovObs(n_simulate=2000, seed=r) Xtr = tr.data() with util.ContextTimer() as t: # Use grid search to initialize the gwidth n_gwidth_cand = 5 gwidth_factors = 2.0**np.linspace(-3, 3, n_gwidth_cand) med2 = util.meddistance(Xtr, 1000)**2 k = kernel.KGauss(med2*2) # fit a Gaussian to the data and draw to initialize V0 V0 = util.fit_gaussian_draw(Xtr, J, seed=r+1, reg=1e-6) list_gwidth = np.hstack( ( (med2)*gwidth_factors ) ) besti, objs = gof.GaussFSSD.grid_search_gwidth(p, tr, V0, list_gwidth) gwidth = list_gwidth[besti] assert util.is_real_num(gwidth), 'gwidth not real. Was %s'%str(gwidth) assert gwidth > 0, 'gwidth not positive. Was %.3g'%gwidth logging.info('After grid search, gwidth=%.3g'%gwidth) ops = { 'reg': 1e-2, 'max_iter': 40, 'tol_fun': 1e-4, 'disp': True, 'locs_bounds_frac':10.0, 'gwidth_lb': 1e-1, 'gwidth_ub': 1e4, } V_opt, gwidth_opt, info = gof.GaussFSSD.optimize_locs_widths(p, tr, gwidth, V0, **ops) # Use the optimized parameters to construct a test k_opt = kernel.KGauss(gwidth_opt) fssd_opt = gof.FSSD(p, k_opt, V_opt, null_sim=null_sim, alpha=alpha) fssd_opt_result = fssd_opt.perform_test(te) return {'test_result': fssd_opt_result, 'time_secs': t.secs, 'goftest': fssd_opt, 'opt_info': info, }
Example #24
Source File: ex3_vary_nlocs.py From kernel-gof with MIT License | 4 votes |
def job_fssdq_opt(p, data_source, tr, te, r, J, null_sim=None): """ FSSD with optimization on tr. Test on te. Use a Gaussian kernel. """ if null_sim is None: null_sim = gof.FSSDH0SimCovObs(n_simulate=2000, seed=r) Xtr = tr.data() with util.ContextTimer() as t: # Use grid search to initialize the gwidth n_gwidth_cand = 5 gwidth_factors = 2.0**np.linspace(-3, 3, n_gwidth_cand) med2 = util.meddistance(Xtr, 1000)**2 k = kernel.KGauss(med2*2) # fit a Gaussian to the data and draw to initialize V0 V0 = util.fit_gaussian_draw(Xtr, J, seed=r+1, reg=1e-6) list_gwidth = np.hstack( ( (med2)*gwidth_factors ) ) besti, objs = gof.GaussFSSD.grid_search_gwidth(p, tr, V0, list_gwidth) gwidth = list_gwidth[besti] assert util.is_real_num(gwidth), 'gwidth not real. Was %s'%str(gwidth) assert gwidth > 0, 'gwidth not positive. Was %.3g'%gwidth logging.info('After grid search, gwidth=%.3g'%gwidth) ops = { 'reg': 1e-2, 'max_iter': 50, 'tol_fun': 1e-4, 'disp': True, 'locs_bounds_frac': 10.0, 'gwidth_lb': 1e-1, 'gwidth_ub': 1e3, } V_opt, gwidth_opt, info = gof.GaussFSSD.optimize_locs_widths(p, tr, gwidth, V0, **ops) # Use the optimized parameters to construct a test k_opt = kernel.KGauss(gwidth_opt) fssd_opt = gof.FSSD(p, k_opt, V_opt, null_sim=null_sim, alpha=alpha) fssd_opt_result = fssd_opt.perform_test(te) return {'test_result': fssd_opt_result, 'time_secs': t.secs, 'goftest': fssd_opt, 'opt_info': info, }
Example #25
Source File: integrate.py From autograd with MIT License | 4 votes |
def grad_odeint(yt, func, y0, t, func_args, **kwargs): # Extended from "Scalable Inference of Ordinary Differential # Equation Models of Biochemical Processes", Sec. 2.4.2 # Fabian Froehlich, Carolin Loos, Jan Hasenauer, 2017 # https://arxiv.org/abs/1711.08079 T, D = np.shape(yt) flat_args, unflatten = flatten(func_args) def flat_func(y, t, flat_args): return func(y, t, *unflatten(flat_args)) def unpack(x): # y, vjp_y, vjp_t, vjp_args return x[0:D], x[D:2 * D], x[2 * D], x[2 * D + 1:] def augmented_dynamics(augmented_state, t, flat_args): # Orginal system augmented with vjp_y, vjp_t and vjp_args. y, vjp_y, _, _ = unpack(augmented_state) vjp_all, dy_dt = make_vjp(flat_func, argnum=(0, 1, 2))(y, t, flat_args) vjp_y, vjp_t, vjp_args = vjp_all(-vjp_y) return np.hstack((dy_dt, vjp_y, vjp_t, vjp_args)) def vjp_all(g): vjp_y = g[-1, :] vjp_t0 = 0 time_vjp_list = [] vjp_args = np.zeros(np.size(flat_args)) for i in range(T - 1, 0, -1): # Compute effect of moving measurement time. vjp_cur_t = np.dot(func(yt[i, :], t[i], *func_args), g[i, :]) time_vjp_list.append(vjp_cur_t) vjp_t0 = vjp_t0 - vjp_cur_t # Run augmented system backwards to the previous observation. aug_y0 = np.hstack((yt[i, :], vjp_y, vjp_t0, vjp_args)) aug_ans = odeint(augmented_dynamics, aug_y0, np.array([t[i], t[i - 1]]), tuple((flat_args,)), **kwargs) _, vjp_y, vjp_t0, vjp_args = unpack(aug_ans[1]) # Add gradient from current output. vjp_y = vjp_y + g[i - 1, :] time_vjp_list.append(vjp_t0) vjp_times = np.hstack(time_vjp_list)[::-1] return None, vjp_y, vjp_times, unflatten(vjp_args) return vjp_all
Example #26
Source File: geometry.py From AeroSandbox with MIT License | 4 votes |
def get_repaneled_airfoil(self, n_points_per_side=100): # Returns a repaneled version of the airfoil with cosine-spaced coordinates on the upper and lower surfaces. # Inputs: # # n_points_per_side is the number of points PER SIDE (upper and lower) of the airfoil. 100 is a good number. # Notes: The number of points defining the final airfoil will be n_points_per_side*2-1, # since one point (the leading edge point) is shared by both the upper and lower surfaces. upper_original_coors = self.upper_coordinates() # Note: includes leading edge point, be careful about duplicates lower_original_coors = self.lower_coordinates() # Note: includes leading edge point, be careful about duplicates # Find distances between coordinates, assuming linear interpolation upper_distances_between_points = np.sqrt( np.power(upper_original_coors[:-1, 0] - upper_original_coors[1:, 0], 2) + np.power(upper_original_coors[:-1, 1] - upper_original_coors[1:, 1], 2) ) lower_distances_between_points = np.sqrt( np.power(lower_original_coors[:-1, 0] - lower_original_coors[1:, 0], 2) + np.power(lower_original_coors[:-1, 1] - lower_original_coors[1:, 1], 2) ) upper_distances_from_TE = np.hstack((0, np.cumsum(upper_distances_between_points))) lower_distances_from_LE = np.hstack((0, np.cumsum(lower_distances_between_points))) upper_distances_from_TE_normalized = upper_distances_from_TE / upper_distances_from_TE[-1] lower_distances_from_LE_normalized = lower_distances_from_LE / lower_distances_from_LE[-1] # Generate a cosine-spaced list of points from 0 to 1 s = cosspace(n_points=n_points_per_side) x_upper_func = sp_interp.PchipInterpolator(x=upper_distances_from_TE_normalized, y=upper_original_coors[:, 0]) y_upper_func = sp_interp.PchipInterpolator(x=upper_distances_from_TE_normalized, y=upper_original_coors[:, 1]) x_lower_func = sp_interp.PchipInterpolator(x=lower_distances_from_LE_normalized, y=lower_original_coors[:, 0]) y_lower_func = sp_interp.PchipInterpolator(x=lower_distances_from_LE_normalized, y=lower_original_coors[:, 1]) x_coors = np.hstack((x_upper_func(s), x_lower_func(s)[1:])) y_coors = np.hstack((y_upper_func(s), y_lower_func(s)[1:])) coordinates = np.column_stack((x_coors, y_coors)) # Make a new airfoil with the coordinates name = self.name + ", repaneled to " + str(n_points_per_side) + " pts" new_airfoil = Airfoil(name=name, coordinates=coordinates, repanel=False) return new_airfoil