def uirdftn(inarray, ndim=None, *args, **kwargs): """N-dim real unitary discrete Fourier transform This transform consider the Hermitian property of the transform from complex to real real input. Parameters ---------- inarray : ndarray The array to transform. ndim : int, optional The `ndim` last axis along wich to compute the transform. All axes by default. Returns ------- outarray : array-like (the last ndim as (N - 1) * 2 lenght) """ if not ndim: ndim = inarray.ndim return dask_irfftn(inarray, axes=range(-ndim, 0), *args, ** kwargs) * da.sqrt( da.prod(da.asarray(inarray.shape[-ndim:-1])) * (inarray.shape[-1] - 1) * 2)
def estimate_log_joint_mark_intensity(decoding_marks, encoding_marks, mark_std, place_bin_centers, encoding_positions, position_std, occupancy, mean_rate, max_mark_value=6000, position_distance=None): """ Parameters ---------- decoding_marks : ndarray, shape (n_decoding_spikes, n_features) encoding_marks : ndarray, shape (n_encoding_spikes, n_features) mark_std : float or ndarray, shape (n_features,) place_bin_centers : ndarray, shape (n_position_bins, n_position_dims) encoding_positions : ndarray, shape (n_decoding_spikes, n_position_dims) position_std : float or ndarray, shape (n_position_dims,) occupancy : ndarray, shape (n_position_bins,) mean_rate : float is_track_interior : None or ndarray, shape (n_position_bins,) max_mark_value : int set_diag_zero : bool Returns ------- log_joint_mark_intensity : ndarray, shape (n_decoding_spikes, n_position_bins) """ # mark_distance: ndarray, shape (n_decoding_spikes, n_encoding_spikes) mark_distance = da.prod( normal_pdf_integer_lookup( np.expand_dims(decoding_marks, axis=1), np.expand_dims(encoding_marks, axis=0), std=mark_std, max_value=max_mark_value ), axis=-1 ) if decoding_marks is encoding_marks: np.fill_diagonal(mark_distance, 0.0) n_encoding_spikes = encoding_marks.shape[0] if position_distance is None: position_distance = estimate_position_distance( place_bin_centers, encoding_positions, position_std) return estimate_log_intensity( mark_distance @ position_distance / n_encoding_spikes, occupancy, mean_rate)