Skip to main content

Package for loading and processing fiber photometry data

Project description

fiberphotopy

Code for analyzing fiber photometry data collected on the Doric Fiber Photometery acquisition system.

Import the package as follows:

import fiberphotopy as fp

Installation

The easiest way to install fiberphotopy is with pip.

pip install fiberphotopy

If you are using poetry, you can use the most up-to-date version by cloning the repo and running

make install

Features

Loading data

Whole session data should be stored in a directory and can be loaded like this:

fp.load_session_data(...)
  • Args can be used to modify the name of the signal and reference wavelengths as well as to specify the input channel on the photoreceiver and the output channel for the two excitation LEDs.
  • By default, this function calls trim_ttl_data which looks for a TTL pulse that indicates the start and end of a behavioral session. This is optional and be turned off by setting TTL_trim=False.
  • By default, this function also downsamples the data to 10 Hz. This is controlled by the downsample=True argument and the associated freq argument.
  • By default, this function uses the standard method of motion correction for photometry data. It fits a linear model to the reference channel (e.g., 405nm) to predict the fluoresence in the signal channel (e.g., 465nm). Next, it calculates a dFF as: 100*(Y-Y_pred)/Y_pred
  • By default, the 'Animal' column will be populated with the name of the associated data file. This column can be renamed by creating a dict of {'filename': 'subject_id'} mappings and passed into load_session_data with the subject_dict argument.

Visualizing session data

The entire session can be visualized by running:

fp.plot_fp_session(...)

This generates a two-panel plot. The top panel plot the raw reference and signal fluorescene values on the same plot, and the bottom panel plots the dFF calculated from those reference and signal values.

Trial-level data

These functions have only been tested on auditory fear conditioning experiments (trace or delay FC). Please check the function documentation for more information.

For trace fear condtioning (TFC) experiments, you can get trial-level data by calling

fp.tfc_trials_df(...)
  • This function takes a DataFrame as input (e.g., from load_session_data) and creates a trial-level DataFrame with a new column 'Trial' containing the trial number and 'time_trial' containing a standardized time array for extracting identical events across trials.
  • By default, this function provides two methods of trial-normalized data:
    1. 'dFF_znorm': z-score values computed across the entire trial period.
    2. 'dFF_baseline_norm': baseline-normalized values. Computed as (x - mean(baseline))/std(baseline)

Visualizing trial data

There are 3 main functions to visualize trial-level data:

fp.plot_trial_avg(...)

This will plot the trial-average for the specified yvar. Data is averaged across trials for each subject, and these subject trial-averages are used to calculate the trial-level error for plotting.

fp.plot_trial_indiv(...)

This will generate a figure with m x n subplots. The shape of the figure is controlled with the subplot_params argument to indicate how many rows and columns to use for the figure.

fp.plot_trial_heatmap(...)

This will generate a heatmap of the data across trials. If the input DataFrame contains multiple subjects it will calculate the average values for each time bin before generating the heatmap.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fiberphotopy-0.2.31.tar.gz (20.2 kB view hashes)

Uploaded Source

Built Distribution

fiberphotopy-0.2.31-py3-none-any.whl (21.4 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page