Python numpy.gradient() Examples
The following are 30
code examples of numpy.gradient().
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
numpy
, or try the search function
.
Example #1
Source File: strategy_gen_4.py From btgym with GNU Lesser General Public License v3.0 | 6 votes |
def get_external_state(self): x_sma = np.stack( [ np.frombuffer(self.data.sma_16.get(size=self.time_dim)), np.frombuffer(self.data.sma_32.get(size=self.time_dim)), np.frombuffer(self.data.sma_64.get(size=self.time_dim)), np.frombuffer(self.data.sma_128.get(size=self.time_dim)), np.frombuffer(self.data.sma_256.get(size=self.time_dim)), ], axis=-1 ) # Gradient along features axis: diff = np.gradient(x_sma, axis=-1) * self.p.state_ext_scale diff = tanh(diff) avg = np.gradient(x_sma, axis=0) * self.p.state_ext_scale avg = tanh(avg) return {'avg': avg[:, None, :], 'diff': diff[:, None, :]}
Example #2
Source File: test_function_base.py From Mastering-Elasticsearch-7.0 with MIT License | 6 votes |
def test_specific_axes(self): # Testing that gradient can work on a given axis only v = [[1, 1], [3, 4]] x = np.array(v) dx = [np.array([[2., 3.], [2., 3.]]), np.array([[0., 0.], [1., 1.]])] assert_array_equal(gradient(x, axis=0), dx[0]) assert_array_equal(gradient(x, axis=1), dx[1]) assert_array_equal(gradient(x, axis=-1), dx[1]) assert_array_equal(gradient(x, axis=(1, 0)), [dx[1], dx[0]]) # test axis=None which means all axes assert_almost_equal(gradient(x, axis=None), [dx[0], dx[1]]) # and is the same as no axis keyword given assert_almost_equal(gradient(x, axis=None), gradient(x)) # test vararg order assert_array_equal(gradient(x, 2, 3, axis=(1, 0)), [dx[1]/2.0, dx[0]/3.0]) # test maximal number of varargs assert_raises(TypeError, gradient, x, 1, 2, axis=1) assert_raises(np.AxisError, gradient, x, axis=3) assert_raises(np.AxisError, gradient, x, axis=-3) # assert_raises(TypeError, gradient, x, axis=[1,])
Example #3
Source File: nifti_viewer.py From simnibs with GNU General Public License v3.0 | 6 votes |
def check_segmentation(fn_subject): from scipy import ndimage import matplotlib.pylab as pl from matplotlib.colors import ListedColormap files = simnibs.SubjectFiles(fn_subject + '.msh') T1 = nib.load(files.T1) masks = nib.load(files.final_contr).get_data() lines = np.linalg.norm(np.gradient(masks), axis=0) > 0 print(lines.shape) viewer = NiftiViewer(T1.get_data(), T1.affine) cmap = pl.cm.jet my_cmap = cmap(np.arange(cmap.N)) my_cmap[:,-1] = np.linspace(0, 1, cmap.N) my_cmap = ListedColormap(my_cmap) viewer.add_overlay(lines, cmap=my_cmap) viewer.show()
Example #4
Source File: test_function_base.py From recruit with Apache License 2.0 | 6 votes |
def test_args(self): dx = np.cumsum(np.ones(5)) dx_uneven = [1., 2., 5., 9., 11.] f_2d = np.arange(25).reshape(5, 5) # distances must be scalars or have size equal to gradient[axis] gradient(np.arange(5), 3.) gradient(np.arange(5), np.array(3.)) gradient(np.arange(5), dx) # dy is set equal to dx because scalar gradient(f_2d, 1.5) gradient(f_2d, np.array(1.5)) gradient(f_2d, dx_uneven, dx_uneven) # mix between even and uneven spaces and # mix between scalar and vector gradient(f_2d, dx, 2) # 2D but axis specified gradient(f_2d, dx, axis=1) # 2d coordinate arguments are not yet allowed assert_raises_regex(ValueError, '.*scalars or 1d', gradient, f_2d, np.stack([dx]*2, axis=-1), 1)
Example #5
Source File: ecg_delineate.py From NeuroKit with MIT License | 6 votes |
def _ecg_delineator_peak_T_offset(rpeak, heartbeat, R, T): if T is None: return np.nan segment = heartbeat.iloc[R + T :] # Select left of P wave try: signal = signal_smooth(segment["Signal"].values, size=R / 10) except TypeError: signal = segment["Signal"] if len(signal) < 2: return np.nan signal = np.gradient(np.gradient(signal)) T_offset = np.argmax(signal) return rpeak + T + T_offset # ============================================================================= # Internals # =============================================================================
Example #6
Source File: test_function_base.py From vnpy_crypto with MIT License | 6 votes |
def test_specific_axes(self): # Testing that gradient can work on a given axis only v = [[1, 1], [3, 4]] x = np.array(v) dx = [np.array([[2., 3.], [2., 3.]]), np.array([[0., 0.], [1., 1.]])] assert_array_equal(gradient(x, axis=0), dx[0]) assert_array_equal(gradient(x, axis=1), dx[1]) assert_array_equal(gradient(x, axis=-1), dx[1]) assert_array_equal(gradient(x, axis=(1, 0)), [dx[1], dx[0]]) # test axis=None which means all axes assert_almost_equal(gradient(x, axis=None), [dx[0], dx[1]]) # and is the same as no axis keyword given assert_almost_equal(gradient(x, axis=None), gradient(x)) # test vararg order assert_array_equal(gradient(x, 2, 3, axis=(1, 0)), [dx[1]/2.0, dx[0]/3.0]) # test maximal number of varargs assert_raises(TypeError, gradient, x, 1, 2, axis=1) assert_raises(np.AxisError, gradient, x, axis=3) assert_raises(np.AxisError, gradient, x, axis=-3) # assert_raises(TypeError, gradient, x, axis=[1,])
Example #7
Source File: ecg_delineate.py From NeuroKit with MIT License | 6 votes |
def _ecg_delineator_peak_P_onset(rpeak, heartbeat, R, P): if P is None: return np.nan segment = heartbeat.iloc[:P] # Select left of P wave try: signal = signal_smooth(segment["Signal"].values, size=R / 10) except TypeError: signal = segment["Signal"] if len(signal) < 2: return np.nan signal = np.gradient(np.gradient(signal)) P_onset = np.argmax(signal) from_R = R - P_onset # Relative to R return rpeak - from_R
Example #8
Source File: test_function_base.py From Mastering-Elasticsearch-7.0 with MIT License | 6 votes |
def test_args(self): dx = np.cumsum(np.ones(5)) dx_uneven = [1., 2., 5., 9., 11.] f_2d = np.arange(25).reshape(5, 5) # distances must be scalars or have size equal to gradient[axis] gradient(np.arange(5), 3.) gradient(np.arange(5), np.array(3.)) gradient(np.arange(5), dx) # dy is set equal to dx because scalar gradient(f_2d, 1.5) gradient(f_2d, np.array(1.5)) gradient(f_2d, dx_uneven, dx_uneven) # mix between even and uneven spaces and # mix between scalar and vector gradient(f_2d, dx, 2) # 2D but axis specified gradient(f_2d, dx, axis=1) # 2d coordinate arguments are not yet allowed assert_raises_regex(ValueError, '.*scalars or 1d', gradient, f_2d, np.stack([dx]*2, axis=-1), 1)
Example #9
Source File: test_function_base.py From recruit with Apache License 2.0 | 6 votes |
def test_specific_axes(self): # Testing that gradient can work on a given axis only v = [[1, 1], [3, 4]] x = np.array(v) dx = [np.array([[2., 3.], [2., 3.]]), np.array([[0., 0.], [1., 1.]])] assert_array_equal(gradient(x, axis=0), dx[0]) assert_array_equal(gradient(x, axis=1), dx[1]) assert_array_equal(gradient(x, axis=-1), dx[1]) assert_array_equal(gradient(x, axis=(1, 0)), [dx[1], dx[0]]) # test axis=None which means all axes assert_almost_equal(gradient(x, axis=None), [dx[0], dx[1]]) # and is the same as no axis keyword given assert_almost_equal(gradient(x, axis=None), gradient(x)) # test vararg order assert_array_equal(gradient(x, 2, 3, axis=(1, 0)), [dx[1]/2.0, dx[0]/3.0]) # test maximal number of varargs assert_raises(TypeError, gradient, x, 1, 2, axis=1) assert_raises(np.AxisError, gradient, x, axis=3) assert_raises(np.AxisError, gradient, x, axis=-3) # assert_raises(TypeError, gradient, x, axis=[1,])
Example #10
Source File: strategy.py From btgym with GNU Lesser General Public License v3.0 | 6 votes |
def get_data_model_state(self): """ Spread stochastic model parameters. """ state = self.data_model.s.process.get_state() cross_corr = cov2corr(state.filtered.covariance)[[0, 0, 1], [1, 2, 2]] update = np.concatenate( [ state.filtered.mean.flatten(), state.filtered.variance.flatten(), cross_corr, ] ) self.external_model_state = np.concatenate( [ self.external_model_state[1:, :, :], update[None, None, :] ], axis=0 ) # self.external_model_state = np.gradient(self.external_model_state, axis=-1) return self.external_model_state
Example #11
Source File: test_function_base.py From vnpy_crypto with MIT License | 6 votes |
def test_args(self): dx = np.cumsum(np.ones(5)) dx_uneven = [1., 2., 5., 9., 11.] f_2d = np.arange(25).reshape(5, 5) # distances must be scalars or have size equal to gradient[axis] gradient(np.arange(5), 3.) gradient(np.arange(5), np.array(3.)) gradient(np.arange(5), dx) # dy is set equal to dx because scalar gradient(f_2d, 1.5) gradient(f_2d, np.array(1.5)) gradient(f_2d, dx_uneven, dx_uneven) # mix between even and uneven spaces and # mix between scalar and vector gradient(f_2d, dx, 2) # 2D but axis specified gradient(f_2d, dx, axis=1) # 2d coordinate arguments are not yet allowed assert_raises_regex(ValueError, '.*scalars or 1d', gradient, f_2d, np.stack([dx]*2, axis=-1), 1)
Example #12
Source File: seismic.py From burnman with GNU General Public License v2.0 | 6 votes |
def bullen(self, depth): """ Returns the Bullen parameter only for significant arrays """ assert(len(depth) > 3) v_phi = self.v_phi(depth) density = self.density(depth) phi = v_phi * v_phi kappa = phi * density try: dkappadP = np.gradient(kappa, edge_order=2) / \ np.gradient(self.pressure(depth), edge_order=2) dphidz = np.gradient(phi, edge_order=2) / np.gradient(depth, edge_order=2) / self.gravity(depth) except: dkappadP = np.gradient(kappa) / np.gradient(self.pressure(depth)) dphidz = np.gradient(phi) / np.gradient(depth) / self.gravity(depth) bullen = dkappadP - dphidz return bullen
Example #13
Source File: strategy.py From btgym with GNU Lesser General Public License v3.0 | 6 votes |
def get_external_state(self): """ Attempt to include avg decomp. of original normalised spread """ x_sma = np.stack( [ feature.get(size=self.p.time_dim) for feature in self.data.features ], axis=-1 ) scale = 1 / np.clip(self.data.std[0], 1e-10, None) x_sma *= scale # <-- more or less ok # Gradient along features axis: dx = np.gradient(x_sma, axis=-1) # TODO: different conv. encoders for these two types of features: x = np.concatenate([x_sma, dx], axis=-1) # Crop outliers: x = np.clip(x, -10, 10) return x[:, None, :]
Example #14
Source File: strategy_gen_2.py From btgym with GNU Lesser General Public License v3.0 | 6 votes |
def get_external_state(self): # Use Hi-Low median as signal: x = ( np.frombuffer(self.data.high.get(size=self.time_dim)) + np.frombuffer(self.data.low.get(size=self.time_dim)) ) / 2 # Differences along time dimension: d_x = np.gradient(x, axis=0) * self.p.cwt_signal_scale # Compute continuous wavelet transform using Ricker wavelet: cwt_x = signal.cwt(d_x, signal.ricker, self.cwt_width).T # Note: differences taken once again along channels axis, # apply weighted scaling to normalize channels norm_x = np.gradient(cwt_x, axis=-1) norm_x = zscore(norm_x, axis=0) * self.p.state_ext_scale #out_x = tanh(norm_x) out_x = np.clip(norm_x, -10, 10) return out_x[:, None, :]
Example #15
Source File: test_function_base.py From lambda-packs with MIT License | 6 votes |
def test_specific_axes(self): # Testing that gradient can work on a given axis only v = [[1, 1], [3, 4]] x = np.array(v) dx = [np.array([[2., 3.], [2., 3.]]), np.array([[0., 0.], [1., 1.]])] assert_array_equal(gradient(x, axis=0), dx[0]) assert_array_equal(gradient(x, axis=1), dx[1]) assert_array_equal(gradient(x, axis=-1), dx[1]) assert_array_equal(gradient(x, axis=(1, 0)), [dx[1], dx[0]]) # test axis=None which means all axes assert_almost_equal(gradient(x, axis=None), [dx[0], dx[1]]) # and is the same as no axis keyword given assert_almost_equal(gradient(x, axis=None), gradient(x)) # test vararg order assert_array_equal(gradient(x, 2, 3, axis=(1, 0)), [dx[1]/2.0, dx[0]/3.0]) # test maximal number of varargs assert_raises(SyntaxError, gradient, x, 1, 2, axis=1) assert_raises(ValueError, gradient, x, axis=3) assert_raises(ValueError, gradient, x, axis=-3) assert_raises(TypeError, gradient, x, axis=[1,])
Example #16
Source File: strategy_gen_4.py From btgym with GNU Lesser General Public License v3.0 | 6 votes |
def get_external_state(self): x_sma = np.stack( [ np.frombuffer(self.data.sma_16.get(size=self.time_dim)), np.frombuffer(self.data.sma_32.get(size=self.time_dim)), np.frombuffer(self.data.sma_64.get(size=self.time_dim)), np.frombuffer(self.data.sma_128.get(size=self.time_dim)), np.frombuffer(self.data.sma_256.get(size=self.time_dim)), ], axis=-1 ) # Gradient along features axis: dx = np.gradient(x_sma, axis=-1) * self.p.state_ext_scale x = tanh(dx) return x[:, None, :]
Example #17
Source File: strategy_gen_4.py From btgym with GNU Lesser General Public License v3.0 | 6 votes |
def get_external_state(self): x = np.stack( [ np.frombuffer(self.data.open.get(size=self.time_dim)), np.frombuffer(self.data.sma_4.get(size=self.time_dim)), np.frombuffer(self.data.sma_8.get(size=self.time_dim)), np.frombuffer(self.data.sma_16.get(size=self.time_dim)), np.frombuffer(self.data.sma_32.get(size=self.time_dim)), np.frombuffer(self.data.sma_64.get(size=self.time_dim)), np.frombuffer(self.data.sma_128.get(size=self.time_dim)), np.frombuffer(self.data.sma_256.get(size=self.time_dim)), ], axis=-1 ) # Gradient along features axis: x = np.gradient(x, axis=1) * self.p.state_ext_scale # Log-scale: x = log_transform(x) return x[:, None, :]
Example #18
Source File: pmlib.py From sea_ice_drift with GNU General Public License v3.0 | 6 votes |
def get_hessian(ccm, hes_norm=True, hes_smth=False, **kwargs): """ Find Hessian of the input cross correlation matrix <ccm> Parameters ---------- ccm : 2D numpy array, cross-correlation matrix hes_norm : bool, normalize Hessian by AVG and STD? hes_smth : bool, smooth Hessian? """ if hes_smth: ccm2 = nd.filters.gaussian_filter(ccm, 1) else: ccm2 = ccm # Jacobian components dcc_dy, dcc_dx = np.gradient(ccm2) # Hessian components d2cc_dx2 = np.gradient(dcc_dx)[1] d2cc_dy2 = np.gradient(dcc_dy)[0] hes = np.hypot(d2cc_dx2, d2cc_dy2) if hes_norm: hes = (hes - np.median(hes)) / np.std(hes) return hes
Example #19
Source File: test_function_base.py From auto-alt-text-lambda-api with MIT License | 6 votes |
def test_specific_axes(self): # Testing that gradient can work on a given axis only v = [[1, 1], [3, 4]] x = np.array(v) dx = [np.array([[2., 3.], [2., 3.]]), np.array([[0., 0.], [1., 1.]])] assert_array_equal(gradient(x, axis=0), dx[0]) assert_array_equal(gradient(x, axis=1), dx[1]) assert_array_equal(gradient(x, axis=-1), dx[1]) assert_array_equal(gradient(x, axis=(1, 0)), [dx[1], dx[0]]) # test axis=None which means all axes assert_almost_equal(gradient(x, axis=None), [dx[0], dx[1]]) # and is the same as no axis keyword given assert_almost_equal(gradient(x, axis=None), gradient(x)) # test vararg order assert_array_equal(gradient(x, 2, 3, axis=(1, 0)), [dx[1]/2.0, dx[0]/3.0]) # test maximal number of varargs assert_raises(SyntaxError, gradient, x, 1, 2, axis=1) assert_raises(ValueError, gradient, x, axis=3) assert_raises(ValueError, gradient, x, axis=-3) assert_raises(TypeError, gradient, x, axis=[1,])
Example #20
Source File: LSDMappingTools.py From LSDMappingTools with MIT License | 6 votes |
def Hillshade(raster_file, azimuth, angle_altitude): array = ReadRasterArrayBlocks(raster_file,raster_band=1) x, y = np.gradient(array) slope = np.pi/2. - np.arctan(np.sqrt(x*x + y*y)) aspect = np.arctan2(-x, y) azimuthrad = np.azimuth*np.pi / 180. altituderad = np.angle_altitude*np.pi / 180. shaded = np.sin(altituderad) * np.sin(slope)\ + np.cos(altituderad) * np.cos(slope)\ * np.cos(azimuthrad - aspect) return 255*(shaded + 1)/2 #==============================================================================
Example #21
Source File: layer.py From burnman with GNU General Public License v2.0 | 6 votes |
def bullen(self): """ Returns the Bullen parameter across the layer. The Bullen parameter assess if compression as a function of pressure is like homogeneous, adiabatic compression. Bullen parameter =1 , homogeneous, adiabatic compression Bullen parameter > 1 , more compressed with pressure, e.g. across phase transitions Bullen parameter < 1, less compressed with pressure, e.g. across a boundary layer """ kappa = self.bulk_sound_velocity * self.bulk_sound_velocity * self.density phi = self.bulk_sound_velocity * self.bulk_sound_velocity try: dkappadP = np.gradient(kappa, edge_order=2) / \ np.gradient(self.pressures, edge_order=2) dphidr = np.gradient(phi,edge_order=2) / np.gradient(self.radii,edge_order=2) / self.gravity except: dkappadP = np.gradient(kappa) / \ np.gradient(self.pressures) dphidr = np.gradient(phi) / np.gradient(self.radii) / self.gravity bullen = dkappadP + dphidr return bullen
Example #22
Source File: dynamical_imaging.py From eht-imaging with GNU General Public License v3.0 | 6 votes |
def RdS_gradient(Frame_List, Prior_List, embed_mask_List, entropy="simple", norm_reg=True, **kwargs): #The Jacobian_Factor is already part of the entropy gradient that this function calls N_frame = Frame_List.shape[0] S_List = [static_regularizer(np.array([Frame_List[j]]), np.array([Prior_List[j]]), np.array([embed_mask_List[j]]), Prior_List[0].total_flux(), Prior_List[0].psize, entropy=entropy, norm_reg=norm_reg, **kwargs) for j in range(len(Frame_List))] S_grad_List = np.array([static_regularizer_gradient(np.array([Frame_List[j]]), np.array([Prior_List[j]]), np.array([embed_mask_List[j]]), Prior_List[0].total_flux(), Prior_List[0].psize, entropy=entropy, norm_reg=norm_reg, **kwargs) for j in range(len(Frame_List))]) grad = np.copy(S_grad_List)*0.0 for i in range(1,N_frame): grad[i] = grad[i] + 2.0*(S_List[i] - S_List[i-1])*S_grad_List[i] for i in range(N_frame-1): grad[i] = grad[i] + 2.0*(S_List[i] - S_List[i+1])*S_grad_List[i] return np.concatenate([grad[i] for i in range(N_frame)]) ######## Rdt, RdI, and Rflow master functions ########
Example #23
Source File: stochastic_optics.py From eht-imaging with GNU General Public License v3.0 | 5 votes |
def Wrapped_Gradient(M): G = np.gradient(np.pad(M,((1, 1), (1, 1)), 'wrap')) Gx = G[0][1:-1,1:-1] Gy = G[1][1:-1,1:-1] return (Gx, Gy)
Example #24
Source File: strategy.py From btgym with GNU Lesser General Public License v3.0 | 5 votes |
def get_internal_broker_state(self): stat_lines = ('value', 'unrealized_pnl', 'realized_pnl', 'cash', 'exposure') x_broker = np.stack( [np.asarray(self.broker_stat[name]) for name in stat_lines], axis=-1 ) # self.log.warning('broker: {}'.format(x_broker)) # self.log.warning('Ns: {}'.format(self.normalisation_state)) # x_broker = np.gradient(x_broker, axis=-1) return np.clip(x_broker[:, None, :], -100, 100)
Example #25
Source File: strategy_gen_4.py From btgym with GNU Lesser General Public License v3.0 | 5 votes |
def get_external_state(self): x_sma = np.stack( [ feature.get(size=self.time_dim) for feature in self.data.features ], axis=-1 ) # Gradient along features axis: dx = np.gradient(x_sma, axis=-1) * self.p.state_ext_scale # In [-1,1]: x = tanh(dx) return x[:, None, :]
Example #26
Source File: strategy.py From btgym with GNU Lesser General Public License v3.0 | 5 votes |
def get_external_2_state(self): x = np.stack( [ np.frombuffer(self.data.high.get(size=self.time_dim)), np.frombuffer(self.data.open.get(size=self.time_dim)), np.frombuffer(self.data.low.get(size=self.time_dim)), np.frombuffer(self.data.close.get(size=self.time_dim)), ], axis=-1 ) # # Differences along features dimension: d_x = np.gradient(x, axis=-1) * self.p.cwt_signal_scale # Compute continuous wavelet transform using Ricker wavelet: # cwt_x = signal.cwt(d_x, signal.ricker, self.cwt_width).T norm_x = d_x # Note: differences taken once again along channels axis, # apply weighted scaling to normalize channels # norm_x = np.gradient(cwt_x, axis=-1) # norm_x = zscore(norm_x, axis=0) * self.p.state_ext_scale # norm_x *= self.p.state_ext_scale out_x = tanh(norm_x) # out_x = np.clip(norm_x, -10, 10) return out_x[:, None, :]
Example #27
Source File: strategy.py From btgym with GNU Lesser General Public License v3.0 | 5 votes |
def get_external_ssa_state(self): """ Spread SSA decomposition. """ x_upd = np.stack( [ np.asarray(self.datas[0].get(size=self.p.skip_frame)), np.asarray(self.datas[1].get(size=self.p.skip_frame)) ], axis=0 ) # self.log.warning('x_upd: {}'.format(x_upd.shape)) self.data_model.update(x_upd) x_ssa = self.data_model.s.transform(size=self.p.time_dim).T #* self.normalizer # Gradient along features axis: # dx = np.gradient(x_ssa, axis=-1) # # # Add up: gradient along time axis: # # dx2 = np.gradient(dx, axis=0) # # x = np.concatenate([x_ssa_bank, dx], axis=-1) # Crop outliers: x_ssa = np.clip(x_ssa, -10, 10) # x_ssa = np.clip(dx, -10, 10) return x_ssa[:, None, :]
Example #28
Source File: strategy.py From btgym with GNU Lesser General Public License v3.0 | 5 votes |
def get_external_state(self): # Use Hi-Low median as signal: x = ( np.frombuffer(self.data.high.get(size=self.time_dim)) + np.frombuffer(self.data.low.get(size=self.time_dim)) ) / 2 # Differences along time dimension: d_x = np.gradient(x, axis=0) * self.p.cwt_signal_scale # Compute continuous wavelet transform using Ricker wavelet: cwt_x = signal.cwt(d_x, signal.ricker, self.cwt_width).T norm_x = cwt_x # Note: differences taken once again along channels axis, # apply weighted scaling to normalize channels # norm_x = np.gradient(cwt_x, axis=-1) # norm_x = zscore(norm_x, axis=0) * self.p.state_ext_scale # norm_x *= self.p.state_ext_scale out_x = tanh(norm_x) # out_x = np.clip(norm_x, -10, 10) # return out_x[:, None, :] return out_x[..., None]
Example #29
Source File: strategy.py From btgym with GNU Lesser General Public License v3.0 | 5 votes |
def get_external_state(self): """ Attempt to include avg decomp. of original normalised spread """ x_sma1 = np.stack( [ feature.get(size=self.p.time_dim) for feature in self.data.features1 ], axis=-1 ) scale = 1 / np.clip(self.data.std1[0], 1e-10, None) x_sma1 *= scale # <-- more or less ok # Gradient along features axis: dx1 = np.gradient(x_sma1, axis=-1) dx1 = np.clip(dx1, -10, 10) x_sma2 = np.stack( [ feature.get(size=self.p.time_dim) for feature in self.data.features2 ], axis=-1 ) scale = 1 / np.clip(self.data.std2[0], 1e-10, None) x_sma2 *= scale # <-- more or less ok # Gradient along features axis: dx2 = np.gradient(x_sma2, axis=-1) dx2 = np.clip(dx2, -10, 10) return {'asset1': dx1[:, None, :], 'asset2': dx2[:, None, :],}
Example #30
Source File: strategy.py From btgym with GNU Lesser General Public License v3.0 | 5 votes |
def get_single_external_state(self, key): # Use Hi-Low median as signal: x = ( np.frombuffer(self.data_streams[key].high.get(size=self.time_dim)) + np.frombuffer(self.data_streams[key].low.get(size=self.time_dim)) ) / 2 # Differences along time dimension: d_x = np.gradient(x, axis=0) * self.p.cwt_signal_scale # Compute continuous wavelet transform using Ricker wavelet: cwt_x = signal.cwt(d_x, signal.ricker, self.cwt_width).T norm_x = cwt_x # Note: differences taken once again along channels axis, # apply weighted scaling to normalize channels # norm_x = np.gradient(cwt_x, axis=-1) # norm_x = zscore(norm_x, axis=0) * self.p.state_ext_scale norm_x *= self.p.state_ext_scale[key] out_x = tanh(norm_x) # out_x = np.clip(norm_x, -10, 10) # return out_x[:, None, :] return out_x[:, None, :]