allensdk.brain_observatory.ecephys.stimulus_analysis.receptive_field_mapping module¶
- class allensdk.brain_observatory.ecephys.stimulus_analysis.receptive_field_mapping.ReceptiveFieldMapping(ecephys_session, col_pos_x='x_position', col_pos_y='y_position', trial_duration=0.25, minimum_spike_count=10.0, mask_threshold=0.5, **kwargs)[source]¶
Bases:
StimulusAnalysisA class for computing single-unit metrics from the receptive field mapping stimulus of an ecephys session NWB file.
- To use, pass in a EcephysSession object::
session = EcephysSession.from_nwb_path(‘/path/to/my.nwb’) rf_analysis = ReceptiveFieldMapping(session)
- or, alternatively, pass in the file path::
rf_analysis = ReceptiveFieldMapping(‘/path/to/my.nwb’)
You can also pass in a unit filter dictionary which will only select units with certain properties. For example to get only those units which are on probe C and found in the VISp area:
rf_analysis = ReceptiveFieldMapping( session, filter={ 'location': 'probeC', 'ecephys_structure_acronym': 'VISp' } )
- To get a table of the individual unit metrics ranked by unit ID::
metrics_table_df = rf_analysis.metrics()
- property METRICS_COLUMNS¶
- property azimuths¶
Array of stimulus azimuths
- property elevations¶
Array of stimulus elevations
- classmethod known_stimulus_keys()[source]¶
Used for discovering the correct stimulus_name key for a given StimulusAnalysis subclass (when stimulus_key is not explicity set). Should return a list of “stimulus_name” strings.
- property metrics¶
Returns a pandas DataFrame of the stimulus response metrics for each unit.
- property name¶
Return the stimulus name.
- property null_condition¶
Stimulus condition ID for null stimulus (not used, so set to -1)
- property number_azimuths¶
Number of stimulus azimuths
- property number_elevations¶
Number of stimulus elevations
- property receptive_fields¶
Spatial receptive fields for N units (9 x 9 x N matrix of responses)
- allensdk.brain_observatory.ecephys.stimulus_analysis.receptive_field_mapping.convert_azimuth_to_degrees(azimuth_in_pixels, azimuth_offset_degrees=10)[source]¶
Converts a pixel-based azimuth into degrees relative to center of gaze
- Parameters:
- azimuth_in_pixelsfloat
- azimuth_offset_degrees: float
- Returns:
- azimuth_in_degreesfloat
- allensdk.brain_observatory.ecephys.stimulus_analysis.receptive_field_mapping.convert_elevation_to_degrees(elevation_in_pixels, elevation_offset_degrees=-30)[source]¶
Converts a pixel-based elevation into degrees relative to center of gaze
The receptive field computed by this class is oriented such that the pixel values are in the correct relative location when using matplotlib.pyplot.imshow(), which places (0,0) in the upper-left corner of the figure.
Therefore, we need to invert the elevation value prior to converting to degrees.
- Parameters:
- elevation_in_pixelsfloat
- elevation_offset_degrees: float
- Returns:
- elevation_in_degreesfloat
- allensdk.brain_observatory.ecephys.stimulus_analysis.receptive_field_mapping.convert_pixel_area_to_degrees(area_in_pixels)[source]¶
Converts a pixel-based area measure into degrees
Each pixel is a square with side of length <degrees_to_pixels_ratio>
So the area in degrees is area_in_pixels * <degrees to_pixels_ratio>^2
- Parameters:
- area_in_pixelsfloat
- Returns:
- area_in_degreesfloat
- allensdk.brain_observatory.ecephys.stimulus_analysis.receptive_field_mapping.convert_pixels_to_degrees(value_in_pixels, degrees_to_pixels_ratio=10)[source]¶
Converts a pixel-based distance into degrees
- Parameters:
- value_in_pixelsfloat
- degrees_to_pixels_ratio: float
- Returns:
- value in degreesfloat
- allensdk.brain_observatory.ecephys.stimulus_analysis.receptive_field_mapping.fit_2d_gaussian(matrix)[source]¶
Fits a receptive field with a 2-dimensional Gaussian distribution
- Parameters:
- matrixnumpy.ndarray
2D matrix of spike counts
- Returns:
- parameters - tuple
peak_height : peak of distribution center_y : y-coordinate of distribution center center_x : x-coordinate of distribution center width_y : width of distribution along x-axis width_x : width of distribution along y-axis
- success - bool
True if a fit was found, False otherwise
- allensdk.brain_observatory.ecephys.stimulus_analysis.receptive_field_mapping.gaussian_moments_2d(data)[source]¶
Finds the moments of a 2D Gaussian distribution, given an input matrix
- Parameters:
- datanumpy.ndarray
2D matrix
- Returns:
- peak_height
peak of distribution
- center_y
y-coordinate of distribution center
- center_x
x-coordinate of distribution center
- width_y
width of distribution along x-axis
- width_x
width of distribution along y-axis
- allensdk.brain_observatory.ecephys.stimulus_analysis.receptive_field_mapping.invert_rf(rf)[source]¶
Creates an inverted version of the receptive field
- Parameters:
- rf - matrix of spike counts at each stimulus position
- Returns:
- rf_inverted - new RF matrix
- allensdk.brain_observatory.ecephys.stimulus_analysis.receptive_field_mapping.is_rf_inverted(rf_thresh)[source]¶
Checks if the receptive field mapping timulus is suppressing or exciting the cell
- Parameters:
- rf_threshmatrix
matrix of spike counts at each stimulus position
- Returns:
- if_rf_invertedbool
True if the receptive field is inverted
- allensdk.brain_observatory.ecephys.stimulus_analysis.receptive_field_mapping.rf_on_screen(rf, center_y, center_x)[source]¶
Checks whether the receptive field is on the screen, given the center location.
- allensdk.brain_observatory.ecephys.stimulus_analysis.receptive_field_mapping.threshold_rf(rf, threshold)[source]¶
Creates a spatial mask based on the receptive field peak and returns the x, y coordinates of the center of mass, as well as the area.
- Parameters:
- rfnumpy.ndarray
2D matrix of spike counts
- thresholdfloat
Threshold as ratio of the RF’s standard deviation
- Returns:
- threshold_rfnumpy.ndarray
Thresholded version of the original RF
- center_xfloat
x-coordinate of mask center of mass
- center_yfloat
y-coordinate of mask center of mass
- areafloat
area of mask