Skip to content

Conversation

@ncguilbeault
Copy link
Owner

Overview

This PR introduces several changes to PointProcessDecoder.Core, including the addition of new classes and modifications to existing ones. The changes focus on a new type of decoder, namely the HybridStateSpaceClassifier, which uses a hybrid state-space approach for both decoding and classifying the dynamics of the latent variable.

Summary of Changes

Addition of new Hybrid State-Space Classifier:

  • Added a new HybridStateSpaceClassifier class to the available decoder types, which includes a more advanced method for decoding. This class represents a hybrid state-space classifier that extends the StateSpaceDecoder model to include estimates of the discrete state of the dynamics: stationary, continuous, and fragmented.
  • Introduced the ClassifierData and DecoderData structs, which handle the initialization and calculation of posterior data. The DecoderData struct returns a posterior tensor, as well as useful statistics of the posterior such as the center of mass, maximum a posteriori estimate, and spread of the posterior distribution. The ClassifierData struct returns both a DecoderData struct and a StateProbabilities tensor which describes the marginal distribution of the discrete states over the full posterior state-space..
  • Modified the DecoderType enum to include a new type, HybridStateSpaceClassifier.
  • Updated the StateSpaceDecoder class to use tensor-based state transitions and added a method for updating the posterior distribution. Updated the IDecoder interface to use tensor arrays for state transitions instead of the IStateTransitions interface. This gives both the HybridStateSpaceClassifier and StateSpaceDecoder classes a standard interface to return an array of the internal transition matrices used by the model.

Updates to Model Components:

  • Renamed ClusterlessMarkEncoder to ClusterlessMarks and updated related references and documentation for consistency.
  • Renamed SortedSpikeEncoder to SortedSpikes and updated related references and documentation for consistency.
  • Renamed ClusterlessLikelihood to Clusterless and updated the related documentation.
  • Renamed PoissonLikelihood to Poisson and updated the related documentation.

…y conversion instead of having an additional generic `Show` method
…andPosition` methods for random position generation with optional seed support
…put from `PointProcessModel` using inserted simulated data
…into a single `Decoder`. Moved `ClassifierType` enum to `DecoderType` and updated `IDecoder` to use `Tensor[]` for transitions instead of IStateTransitions. Changed `ReplayClassifier` to `HybridStateSpaceReplayClassifier` and moved into `Decoder` namespace.
…mespaces to remove redundancy in class names (e.g. just `DiscreteUniform` instead of full `DiscreteUniformStateSpace` name)
…ifier` and optimized tensor operations for posterior calculations
…data, as well as tests to compare effects of sigma and stay probability
…y greater than 0 and less than 1. Created `UpdatePosterior` function for improved readability
…paceClassifier` decoder type with sorted units
@ncguilbeault ncguilbeault merged commit a217bdd into main Apr 9, 2025
@ncguilbeault ncguilbeault deleted the dev/hybrid-state-space-classifier branch April 9, 2025 11:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants