Skip to content

Commit 405691c

Browse files
committed
Fix reloading SpikeDetector thresholds
1 parent fffd835 commit 405691c

1 file changed

Lines changed: 32 additions & 12 deletions

File tree

Plugins/BasicSpikeDisplay/SpikeDetector/SpikeDetector.cpp

Lines changed: 32 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -845,20 +845,15 @@ void SpikeDetector::saveCustomParametersToXml (XmlElement* xml)
845845
void SpikeDetector::loadCustomParametersFromXml(XmlElement* xml)
846846
{
847847

848-
//std::cout << "Spike detector loading params" << std::endl;
849-
850848
Array<const DataStream*> availableStreams = getDataStreams();
851849

852850
for (auto* spikeParamsXml : xml->getChildIterator())
853851
{
854-
//std::cout << spikeParamsXml->getTagName() << std::endl;
855852

856853
if (spikeParamsXml->hasTagName("SPIKE_CHANNEL"))
857854
{
858855
String name = spikeParamsXml->getStringAttribute("name", "");
859856

860-
//std::cout << "SPIKE CHANNEL NAME: " << name << std::endl;
861-
862857
double sample_rate = spikeParamsXml->getDoubleAttribute("sample_rate", 0.0f);
863858
String stream_name = spikeParamsXml->getStringAttribute("stream_name", "");
864859
int stream_source = spikeParamsXml->getIntAttribute("stream_source", 0);
@@ -871,25 +866,50 @@ void SpikeDetector::loadCustomParametersFromXml(XmlElement* xml)
871866

872867
if (streamId > 0)
873868
{
874-
//std::cout << "STREAM ID: " << streamId << std::endl;
875-
869+
//Create new spike channel with thresholder set to abs value
876870
SpikeChannel* spikeChannel = addSpikeChannel(type, streamId, -1, name);
877871

872+
//Load local channels
878873
spikeChannel->getParameter("local_channels")->fromXml(spikeParamsXml);
879-
880874
SelectedChannelsParameter* param = (SelectedChannelsParameter*)spikeChannel->getParameter("local_channels");
881875
param->getSpikeChannel()->localChannelIndexes = param->getArrayValue();
882-
883-
spikeChannel->getParameter("thrshlder_type")->fromXml(spikeParamsXml);
884-
885-
for (int ch = 0; ch < SpikeChannel::getNumChannels(type); ch++)
876+
877+
// Load abs threshold parameters
878+
for (int ch = 0; ch < spikeChannel->getNumChannels(); ch++)
886879
{
887880
spikeChannel->getParameter("abs_threshold" + String(ch+1))->fromXml(spikeParamsXml);
881+
spikeChannel->thresholder->setThreshold(
882+
ch,
883+
(float) spikeChannel->getParameter("abs_threshold" + String(ch+1))->getValue());
884+
}
885+
886+
// Load std dev threshold parameters
887+
spikeChannel->thresholder.reset();
888+
spikeChannel->thresholder =
889+
std::make_unique<StdDevThresholder>(
890+
spikeChannel->getNumChannels());
891+
for (int ch = 0; ch < spikeChannel->getNumChannels(); ch++)
892+
{
888893
spikeChannel->getParameter("std_threshold" + String(ch+1))->fromXml(spikeParamsXml);
894+
}
895+
896+
// Load dynamic threshold parameters
897+
spikeChannel->thresholder.reset();
898+
spikeChannel->thresholder =
899+
std::make_unique<DynamicThresholder>(
900+
spikeChannel->getNumChannels());
901+
for (int ch = 0; ch < spikeChannel->getNumChannels(); ch++)
902+
{
889903
spikeChannel->getParameter("dyn_threshold" + String(ch+1))->fromXml(spikeParamsXml);
890904
}
905+
906+
//Load saved thresholder type
907+
spikeChannel->getParameter("thrshlder_type")->fromXml(spikeParamsXml);
908+
parameterValueChanged(spikeChannel->getParameter("thrshlder_type"));
891909

910+
//Load saved waveform type
892911
spikeChannel->getParameter("waveform_type")->fromXml(spikeParamsXml);
912+
parameterValueChanged(spikeChannel->getParameter("waveform_type"));
893913
}
894914
}
895915
}

0 commit comments

Comments
 (0)