moten.core module¶
-
moten.core.
compute_filter_responses
(stimulus, stimulus_fps, aspect_ratio='auto', filter_temporal_width='auto', quadrature_combination=<function sqrt_sum_squares>, output_nonlinearity=<function log_compress>, dozscore=True, dtype=<class 'numpy.float64'>, pyramid_parameters={})[source]¶ Compute the motion energy filters’ response to the stimuli.
- Parameters
stimulus (3D np.array (n, vdim, hdim)) – The movie frames.
stimulus_fps (scalar) – The temporal frequency of the stimulus
aspect_ratio (bool, or scalar) – Defaults to hdim/vdim. Otherwise, pass as scalar
filter_temporal_width (int, None) – The number of frames in one filter. Defaults to approximately 0.666[secs] (floor(stimulus_fps*(2/3))).
quadrature_combination (function, optional) – Specifies how to combine the channel reponses quadratures. The function must take the sin and cos as arguments in order. Defaults to: (sin^2 + cos^2)^1/2
output_nonlinearity (function, optional) – Passes the channels (after quadrature_combination) through a non-linearity. The function input is the (n,`nfilters`) array. Defaults to: ln(x + 1e-05)
dozscore (bool, optional) – Whether to z-score the channel responses in time
dtype (np.dtype) – Defaults to np.float64
pyramid_parameters (dict) – See
mk_moten_pyramid_params()
for details on parameters specifiying a motion energy pyramid.
- Returns
filter_responses
- Return type
np.array, (n, nfilters)
-
moten.core.
compute_spatial_gabor_responses
(stimulus, aspect_ratio='auto', spatial_frequencies=[0, 2, 4, 8, 16, 32], quadrature_combination=<function sqrt_sum_squares>, output_nonlinearity=<function log_compress>, dtype=<class 'numpy.float64'>, dozscore=True)[source]¶ Compute the spatial gabor filters’ response to each stimulus.
- Parameters
stimulus (3D np.array (n, vdim, hdim)) – The stimulus frames.
spatial_frequencies (array-like) – The spatial frequencies to compute. The spatial envelope is determined by this.
quadrature_combination (function, optional) – Specifies how to combine the channel reponses quadratures. The function must take the sin and cos as arguments in order. Defaults to: (sin^2 + cos^2)^1/2
output_nonlinearity (function, optional) – Passes the channels (after quadrature_combination) through a non-linearity. The function input is the (n,`nfilters`) array. Defaults to: ln(x + 1e-05)
dozscore (bool, optional) – Whether to z-score the channel responses in time
dtype (np.dtype) – Defaults to np.float64
- Returns
filter_responses
- Return type
np.array, (n, nfilters)
-
moten.core.
dotdelay_frames
(spatial_gabor_sin, spatial_gabor_cos, temporal_gabor_sin, temporal_gabor_cos, stimulus, masklimit=0.001)[source]¶ Convolve the motion energy filter with a stimulus
- Parameters
spatial_gabor_sin (np.array, (vdim,hdim)) –
spatial_gabor_cos (np.array, (vdim,hdim)) – Spatial gabor quadrature pair
temporal_gabor_sin (np.array, (temporal_filter_width,)) –
temporal_gabor_cos (np.array, (temporal_filter_width,)) – Temporal gabor quadrature pair
stimulus (2D np.array (nimages, vdim*hdim)) – The movie frames with the spatial dimension collapsed.
- Returns
channel_sin (np.ndarray, (nimages, ))
channel_cos (np.ndarray, (nimages, )) – The filter response to the stimulus at each time point The quadrature pair can be combined: (x^2 + y^2)^0.5
-
moten.core.
dotspatial_frames
(spatial_gabor_sin, spatial_gabor_cos, stimulus, masklimit=0.001)[source]¶ Dot the spatial gabor filters filter with the stimulus
- Parameters
spatial_gabor_sin (np.array, (vdim,hdim)) –
spatial_gabor_cos (np.array, (vdim,hdim)) – Spatial gabor quadrature pair
stimulus (2D np.array (nimages, vdim*hdim)) – The movie frames with the spatial dimension collapsed.
masklimit (float-like) – Threshold to find the non-zero filter region
- Returns
channel_sin (np.ndarray, (nimages, ))
channel_cos (np.ndarray, (nimages, )) – The filter response to each stimulus The quadrature pair can be combined: (x^2 + y^2)^0.5
-
moten.core.
generate_3dgabor_array
(vhsize=(576, 1024), stimulus_fps=24, aspect_ratio='auto', filter_temporal_width='auto', centerh=0.5, centerv=0.5, direction=45.0, spatial_freq=16.0, spatial_env=0.3, temporal_freq=2.0, temporal_env=0.3, phase_offset=0.0)[source]¶
-
moten.core.
mk_3d_gabor
(vhsize, stimulus_fps, aspect_ratio='auto', filter_temporal_width='auto', centerh=0.5, centerv=0.5, direction=45.0, spatial_freq=16.0, spatial_env=0.3, temporal_freq=2.0, temporal_env=0.3, spatial_phase_offset=0.0)[source]¶ Make a motion energy filter.
A motion energy filter is a 3D gabor with two spatial and one temporal dimension. Each dimension is defined by two sine waves which differ in phase by 90 degrees. The sine waves are then multiplied by a gaussian.
- Parameters
vhsize (tuple of ints, (vdim, hdim)) – Size of the stimulus in pixels (vdim, hdim) vdim : vertical dimension hdim : horizontal dimension
stimulus_fps (scalar, [Hz]) – Stimulus playback speed in frames per second.
centerv (scalar) – Vertical filter position from top of frame (min=0, max=1.0).
centerh (scalar) – Horizontal filter position from left of frame (min=0, max=aspect_ratio).
direction (scalar, [degrees]) – Direction of filter motion. Degree position corresponds to standard unit-circle coordinates (i.e. 0=right, 180=left).
spatial_freq (float, [cycles-per-image]) – Spatial frequency of the filter.
temporal_freq (float, [Hz]) – Temporal frequency of the filter
filter_temporal_width (int) – Temporal window of the motion energy filter (e.g. 10). Defaults to approximately 0.666[secs] (floor(stimulus_fps*(2/3))).
aspect_ratio (optional, 'auto' or float-like,) – Defaults to stimulus aspect ratio: hdim/vdim Useful for preserving the spatial gabors circular even when images have non-square aspect ratios. For example, a 16:9 image would have `aspect_ratio`=16/9.
spatial_env (float) – Spatial envelope (s.d. of the gaussian)
temporal_env (float) – Temporal envelope (s.d. of gaussian)
spatial_phase_offset (float, [degrees) – Phase offset for the spatial sinusoid
- Returns
spatial_gabor_sin (2D np.ndarray, (vdim, hdim))
spatial_gabor_cos (2D np.ndarray, (vdim, hdim)) – Spatial gabor quadrature pair.
spatial_gabor_cos
has a 90 degree phase offset relative tospatial_gabor_sin
temporal_gabor_sin (1D np.ndarray, (filter_temporal_width,))
temporal_gabor_cos (1D np.ndarray, (filter_temporal_width,)) – Temporal gabor quadrature pair.
temporal_gabor_cos
has a 90 degree phase offset relative totemporal_gabor_sin
Notes
Same method as Nishimoto, et al., 2011.
-
moten.core.
mk_moten_pyramid_params
(stimulus_fps, filter_temporal_width='auto', aspect_ratio='auto', temporal_frequencies=[0, 2, 4], spatial_frequencies=[0, 2, 4, 8, 16, 32], spatial_directions=[0, 45, 90, 135, 180, 225, 270, 315], sf_gauss_ratio=0.6, max_spatial_env=0.3, gabor_spacing=3.5, tf_gauss_ratio=10.0, max_temp_env=0.3, spatial_phase_offset=0.0, include_edges=False)[source]¶ Parametrize a motion energy pyramid that tiles the stimulus.
- Parameters
stimulus_fps (scalar, [Hz]) – Stimulus playback speed in frames per second.
spatial_frequencies (array-like, [cycles-per-image]) – Spatial frequencies for the filters
spatial_directions (array-like, [degrees]) – Direction of filter motion. Degree position corresponds to standard unit-circle coordinates (i.e. 0=right, 180=left).
temporal_frequencies (array-like, [Hz]) – Temporal frequencies of the filters
filter_temporal_width (int) – Temporal window of the motion energy filter (e.g. 10). Defaults to approximately 0.666[secs] (floor(stimulus_fps*(2/3))).
aspect_ratio (optional, 'auto' or float-like,) – Defaults to stimulus aspect ratio: hdim/vdim Useful for preserving the spatial gabors circular even when images have non-square aspect ratios. For example, a 16:9 image would have `aspect_ratio`=16/9.
sf_gauss_ratio (scalar) – The ratio of spatial frequency to gaussian s.d. This controls the number of cycles in a filter
max_spatial_env (scalar) – Defines the maximum s.d. of the gaussian
gabor_spacing (scalar) – Defines the spacing between spatial gabors (in s.d. units)
tf_gauss_ratio (scalar) – The ratio of temporal frequency to gaussian s.d. This controls the number of temporal cycles
max_temp_env (scalar) – Defines the maximum s.d. of the temporal gaussian
include_edges (bool) – Determines whether to include filters at the edge of the image which might be partially outside the stimulus field-of-view
- Returns
parameter_names (list of strings) – The name of the parameters
gabor_parameters (2D np.ndarray, (nfilters, 11)) – Parameters that define the motion energy filter Each of the nfilters has the following parameters:
centerv,centerh : y:vertical and x:horizontal position (‘0,0’ is top left)
direction : direction of motion [degrees]
spatial_freq : spatial frequency [cpi]
spatial_env : spatial envelope (gaussian s.d.)
temporal_freq : temporal frequency [Hz]
temporal_env : temporal envelope (gaussian s.d.)
filter_temporal_width : temporal window of filter [frames]
aspect_ratio : width/height
stimulus_fps : stimulus playback speed in frames per second
spatial_phase_offset : filter phase offset in [degrees]
Notes
Same method as Nishimoto, et al., 2011.
-
moten.core.
mk_spatiotemporal_gabor
(spatial_gabor_sin, spatial_gabor_cos, temporal_gabor_sin, temporal_gabor_cos)[source]¶ Make 3D motion energy filter defined by the spatial and temporal gabors.
Takes the output of
mk_3d_gabor()
and constructs the 3D filter. This is useful for visualization.- Parameters
spatial_gabor_sin (np.array, (vdim,hdim)) –
spatial_gabor_cos (np.array, (vdim,hdim)) – Spatial gabor quadrature pair
temporal_gabor_sin (np.array, (filter_temporal_width,)) –
temporal_gabor_cos (np.array, (filter_temporal_width,)) – Temporal gabor quadrature pair
- Returns
motion_energy_filter – The motion energy filter
- Return type
np.array, (vdim, hdim, filter_temporal_width)
-
moten.core.
project_stimulus
(stimulus, filters, quadrature_combination=<function sqrt_sum_squares>, output_nonlinearity=<function log_compress>, vhsize=(), dtype='float32')[source]¶ Compute the motion energy filter responses to the stimuli.
- Parameters
stimulus (np.ndarray, (nimages, vdim, hdim) or (nimages, npixels)) – The movie frames. If stimulus is two-dimensional with shape (nimages, npixels), then vhsize=(vdim,hdim) is required and npixels == vdim*hdim.
- Returns
filter_responses
- Return type
np.ndarray, (nimages, nfilters)
-
moten.core.
raw_project_stimulus
(stimulus, filters, vhsize=(), dtype='float32')[source]¶ Obtain responses to the stimuli from all filter quadrature-pairs.
- Parameters
stimulus (np.ndarray, (nimages, vdim, hdim) or (nimages, npixels)) – The movie frames. If stimulus is two-dimensional with shape (nimages, npixels), then vhsize=(vdim,hdim) is required and npixels == vdim*hdim.
- Returns
output_sin (np.ndarray, (nimages, nfilters))
output_cos (np.ndarray, (nimages, nfilters))