PointProcessDecoder.Plot
0.1.1
dotnet add package PointProcessDecoder.Plot --version 0.1.1
NuGet\Install-Package PointProcessDecoder.Plot -Version 0.1.1
<PackageReference Include="PointProcessDecoder.Plot" Version="0.1.1" />
paket add PointProcessDecoder.Plot --version 0.1.1
#r "nuget: PointProcessDecoder.Plot, 0.1.1"
// Install PointProcessDecoder.Plot as a Cake Addin #addin nuget:?package=PointProcessDecoder.Plot&version=0.1.1 // Install PointProcessDecoder.Plot as a Cake Tool #tool nuget:?package=PointProcessDecoder.Plot&version=0.1.1
PointProcessDecoder
This repo contains a C# implementation of the Bayesian state space point process neural decoder. The code is based on the TorchSharp library for .NET/C# and is inspired by the replay_trajectory_classification repository from the Eden-Kramer Lab. It provides a flexible framework for performing neural decoding of observations from spike-train or clusterless mark data.
Overview
The goal of this software is to perform neural decoding. Bayesian state-space models, in particular, provide a framework to model the transitions between states based on neural activity and point processes capture the probabilistic relationship between neural activity and observations.
Features
- Flexible - many components of the model support custom or user-defined classes with the appropriate interface.
- TorchSharp integration - supports both CPU and GPU-acceleration
Steps to Build
Install .NET 8: Download the .NET SDK if you haven't already.
Clone the repository:
git clone https://github.com/ncguilbeault/PointProcessDecoder.cs
cd PointProcessDecoder
- Restore dependencies:
dotnet restore
- Build the solution:
dotnet build
Quickstart
Here is a minimal example of how to use the decoder in a console app:
using PointProcessDecoder.Core;
using PointProcessDecoder.Plot;
using PointProcessDecoder.Simulation;
namespace DecoderDemo
{
class Program
{
static void Main(string[] args)
{
// 1. Load data.
// Example: Generate simulated data
(position, spikeCounts) = Simulation.Utilities.InitializeSimulation1D(
numNeurons: 40,
placeFieldRadius: 0.8,
firingThreshold: 0.2
);
// 2. Create the model and select parameters.
var model = new PointProcessModel(
estimationMethod: Core.Estimation.EstimationMethod.KernelDensity,
transitionsType: Core.Transitions.TransitionsType.Uniform,
encoderType: Core.Encoder.EncoderType.SortedSpikeEncoder,
decoderType: Core.Decoder.DecoderType.StateSpaceDecoder,
stateSpaceType: Core.StateSpace.StateSpaceType.DiscreteUniformStateSpace,
likelihoodType: Core.Likelihood.LikelihoodType.Poisson,
minStateSpace: [0],
maxStateSpace: [120],
stepsStateSpace: [50],
observationBandwidth: [5],
stateSpaceDimensions: 1,
nUnits: 40
);
// 4. Encode neural data and observations
model.Encode(spikeCounts, position);
// 5. Predict or decode observations from spikes
var prediction = model.Decode(spikeCounts);
// 6. Display results
Heatmap plotPrediction = new(
xMin: 0,
xMax: steps * cycles,
yMin: 0,
yMax: 120,
title: "Prediction"
);
plotPrediction.Show<float>(
prediction
);
plotPrediction.Save(png: true);
}
}
}
References
This work is based on several previously published works. If you use this software, consider citing the following:
Denovellis, E. L., Gillespie, A. K., Coulter, M. E., Sosa, M., Chung, J. E., Eden, U. T., & Frank, L. M. (2021). Hippocampal replay of experience at real-world speeds. Elife, 10, e64505.
Sodkomkham, D., Ciliberti, D., Wilson, M. A., Fukui, K. I., Moriyama, K., Numao, M., & Kloosterman, F. (2016). Kernel density compression for real-time Bayesian encoding/decoding of unsorted hippocampal spikes. Knowledge-Based Systems, 94, 1-12.
Contributions and feedback are welcome!
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- OxyPlot.Core (>= 2.2.0)
- OxyPlot.SkiaSharp (>= 2.2.0)
- PointProcessDecoder.Core (>= 0.1.1)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on PointProcessDecoder.Plot:
Package | Downloads |
---|---|
PointProcessDecoder.Plot.Linux
A wrapper for HarfBuzzSharp.NativeAssets.Linux. Enables certain features of the PointProcessDecoder plotting package on linux. |
GitHub repositories
This package is not used by any popular GitHub repositories.