DeepInsight is a deep learning-based decoding framework for discovering and characterizing the neural correlates of behavior and stimuli in unprocessed neural data. This tool allows raw data usage directly as input, removing the traditional step of spike-sorting. This provides a more objective way of measuring decoding performance.

The network requires little user input and generalizes across stimuli, behaviors, brain regions, and recording techniques. Once the neural network is trained, it can be analyzed to determine elements of the neural code that are informative about a given variable.

Paper: https://www.biorxiv.org/content/10.1101/871848v1.full

Paper PDF: https://www.biorxiv.org/content/10.1101/871848v1.full.pdf

Github: https://github.com/CYHSM/DeepInsight

Jupyter Notebook: https://github.com/CYHSM/DeepInsight/blob/master/notebooks/deepinsight_example_usage.ipynb

Installation

For now install DeepInsight with the following command:

pip install -e git+https://github.com/CYHSM/DeepInsight.git#egg=DeepInsight

Example (Copied from Github)

import deepinsight # Load your electrophysiological or calcium-imaging data (raw_data, raw_timestamps, output, output_timestamps, info) = deepinsight.util.tetrode.read_tetrode_data(fp_raw_file) # Transform raw data to frequency domain deepinsight.preprocess.preprocess_input(fp_deepinsight, raw_data, sampling_rate=info['sampling_rate'], channels=info['channels']) # Prepare outputs deepinsight.util.tetrode.preprocess_output(fp_deepinsight, raw_timestamps, output, output_timestamps, sampling_rate=info['sampling_rate']) # Train the model deepinsight.train.run_from_path(fp_deepinsight, loss_functions, loss_weights) # Get loss and shuffled loss for influence plot losses, output_predictions, indices = deepinsight.analyse.get_model_loss(fp_deepinsight, stepsize=10) shuffled_losses = deepinsight.analyse.get_shuffled_model_loss(fp_deepinsight, axis=1, stepsize=10) # Plot influence across behaviours deepinsight.visualize.plot_residuals(fp_deepinsight, frequency_spacing=2)