Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
neighbors = tree_xyz.query(z_array,
k=self.shuffle_neighbors,
p=np.inf,
eps=0.)[1].astype('int32')
null_dist = np.zeros(self.sig_samples)
for sam in range(self.sig_samples):
# Generate random order in which to go through indices loop in
# next step
order = np.random.permutation(T).astype('int32')
# print(order[:5])
# Select a series of neighbor indices that contains as few as
# possible duplicates
restricted_permutation = \
tigramite_cython_code._get_restricted_permutation_cython(
T=T,
shuffle_neighbors=self.shuffle_neighbors,
neighbors=neighbors,
order=order)
array_shuffled = np.copy(array)
for i in x_indices:
array_shuffled[i] = array[i, restricted_permutation]
null_dist[sam] = self.get_dependence_measure(array_shuffled,
xyz)
else:
null_dist = \
self._get_shuffle_dist(array, xyz,
self.get_dependence_measure,
"array length.")
patt = np.zeros((patt_time, N), dtype='int32')
weights_array = np.zeros((patt_time, N), dtype='float64')
patt_mask = np.zeros((patt_time, N), dtype='int32')
# Precompute factorial for c-code... patterns of dimension
# larger than 10 are not supported
fac = factorial(np.arange(10)).astype('int32')
# _get_patterns_cython assumes mask=0 to be a masked value
array_mask = (array_mask == False).astype('int32')
(patt, patt_mask, weights_array) = \
tigramite_cython_code._get_patterns_cython(array, array_mask,
patt, patt_mask,
weights_array, dim,
step, fac, N, T)
weights_array = np.asarray(weights_array)
patt = np.asarray(patt)
# Transform back to mask=1 implying a masked value
patt_mask = np.asarray(patt_mask) == False
if weights:
return (patt, patt_mask, patt_time, weights_array)
else:
return (patt, patt_mask, patt_time)