From 46d4a11eb3f41a680defa132e558f23192b15dd2 Mon Sep 17 00:00:00 2001 From: ncguilbeault Date: Wed, 19 Feb 2025 21:58:58 +0000 Subject: [PATCH 1/2] Fixed issue when constructing density estimation without passing kernel limit parameter. --- .../Configuration/PointProcessModelConfiguration.cs | 5 +++++ .../Encoder/ClusterlessMarkEncoder.cs | 4 +++- src/PointProcessDecoder.Core/Encoder/SortedSpikeEncoder.cs | 1 + src/PointProcessDecoder.Core/PointProcessModel.cs | 2 ++ 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/PointProcessDecoder.Core/Configuration/PointProcessModelConfiguration.cs b/src/PointProcessDecoder.Core/Configuration/PointProcessModelConfiguration.cs index 2325383..5454099 100644 --- a/src/PointProcessDecoder.Core/Configuration/PointProcessModelConfiguration.cs +++ b/src/PointProcessDecoder.Core/Configuration/PointProcessModelConfiguration.cs @@ -97,6 +97,11 @@ public class PointProcessModelConfiguration /// public double? SigmaRandomWalk { get; set; } + /// + /// The kernel limit of the model. + /// + public int? KernelLimit { get; set; } + /// /// The scalar type of the model. /// diff --git a/src/PointProcessDecoder.Core/Encoder/ClusterlessMarkEncoder.cs b/src/PointProcessDecoder.Core/Encoder/ClusterlessMarkEncoder.cs index 1149482..954ef22 100644 --- a/src/PointProcessDecoder.Core/Encoder/ClusterlessMarkEncoder.cs +++ b/src/PointProcessDecoder.Core/Encoder/ClusterlessMarkEncoder.cs @@ -98,6 +98,7 @@ public ClusterlessMarkEncoder( _observationEstimation = new KernelDensity( bandwidth: observationBandwidth, dimensions: _stateSpace.Dimensions, + kernelLimit: kernelLimit, device: device, scalarType: scalarType ); @@ -106,7 +107,8 @@ public ClusterlessMarkEncoder( { _markEstimation[i] = new KernelDensity( bandwidth: bandwidth, - dimensions: jointDimensions, + dimensions: jointDimensions, + kernelLimit: kernelLimit, device: device, scalarType: scalarType ); diff --git a/src/PointProcessDecoder.Core/Encoder/SortedSpikeEncoder.cs b/src/PointProcessDecoder.Core/Encoder/SortedSpikeEncoder.cs index a205c00..d00e4f5 100644 --- a/src/PointProcessDecoder.Core/Encoder/SortedSpikeEncoder.cs +++ b/src/PointProcessDecoder.Core/Encoder/SortedSpikeEncoder.cs @@ -112,6 +112,7 @@ private static IEstimation GetEstimationMethod( EstimationMethod.KernelDensity => new KernelDensity( bandwidth: bandwidth, dimensions: dimensions, + kernelLimit: kernelLimit, device: device, scalarType: scalarType ), diff --git a/src/PointProcessDecoder.Core/PointProcessModel.cs b/src/PointProcessDecoder.Core/PointProcessModel.cs index fb92527..32e1ff8 100644 --- a/src/PointProcessDecoder.Core/PointProcessModel.cs +++ b/src/PointProcessDecoder.Core/PointProcessModel.cs @@ -181,6 +181,7 @@ public PointProcessModel( DistanceThreshold = distanceThreshold, IgnoreNoSpikes = ignoreNoSpikes, SigmaRandomWalk = sigmaRandomWalk, + KernelLimit = kernelLimit, ScalarType = scalarType }; } @@ -272,6 +273,7 @@ public override void Save(string basePath) distanceThreshold: configuration.DistanceThreshold, ignoreNoSpikes: configuration.IgnoreNoSpikes, sigmaRandomWalk: configuration.SigmaRandomWalk, + kernelLimit: configuration.KernelLimit, device: device, scalarType: configuration.ScalarType ); From 8a11304166245236ebf75138102bdf25d1c7fce0 Mon Sep 17 00:00:00 2001 From: ncguilbeault Date: Sun, 23 Feb 2025 17:14:28 +0000 Subject: [PATCH 2/2] Made channel estimates readonly --- src/PointProcessDecoder.Core/Encoder/ClusterlessMarkEncoder.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/PointProcessDecoder.Core/Encoder/ClusterlessMarkEncoder.cs b/src/PointProcessDecoder.Core/Encoder/ClusterlessMarkEncoder.cs index 954ef22..e228a59 100644 --- a/src/PointProcessDecoder.Core/Encoder/ClusterlessMarkEncoder.cs +++ b/src/PointProcessDecoder.Core/Encoder/ClusterlessMarkEncoder.cs @@ -34,7 +34,7 @@ public class ClusterlessMarkEncoder : ModelComponent, IEncoder private Tensor _markIntensities = empty(0); private Tensor _channelIntensities = empty(0); private Tensor _observationDensity = empty(0); - private Tensor[] _channelEstimates = []; + private readonly Tensor[] _channelEstimates = []; private Tensor _spikeCounts = empty(0); private Tensor _samples = empty(0);