Skip to content
Snippets Groups Projects
Commit 58b1d6b9 authored by Aaron Cuevas Lopez's avatar Aaron Cuevas Lopez
Browse files

Merge remote-tracking branch 'upstream/master' into mastermerge

parents 192b6532 a23cc9d6
Branches
Tags
No related merge requests found
...@@ -29,7 +29,8 @@ ...@@ -29,7 +29,8 @@
SpikeDetector::SpikeDetector() SpikeDetector::SpikeDetector()
: GenericProcessor("Spike Detector"), : GenericProcessor("Spike Detector"),
overflowBuffer(2,100), dataBuffer(nullptr), overflowBuffer(2,100), dataBuffer(nullptr),
overflowBufferSize(100), currentElectrode(-1) overflowBufferSize(100), currentElectrode(-1),
uniqueID(0)
{ {
//// the standard form: //// the standard form:
electrodeTypes.add("single electrode"); electrodeTypes.add("single electrode");
...@@ -97,7 +98,7 @@ void SpikeDetector::updateSettings() ...@@ -97,7 +98,7 @@ void SpikeDetector::updateSettings()
} }
bool SpikeDetector::addElectrode(int nChans) bool SpikeDetector::addElectrode(int nChans, int electrodeID)
{ {
std::cout << "Adding electrode with " << nChans << " channels." << std::endl; std::cout << "Adding electrode with " << nChans << " channels." << std::endl;
...@@ -143,9 +144,9 @@ bool SpikeDetector::addElectrode(int nChans) ...@@ -143,9 +144,9 @@ bool SpikeDetector::addElectrode(int nChans)
newElectrode->numChannels = nChans; newElectrode->numChannels = nChans;
newElectrode->prePeakSamples = 8; newElectrode->prePeakSamples = 8;
newElectrode->postPeakSamples = 32; newElectrode->postPeakSamples = 32;
newElectrode->thresholds = new double[nChans]; newElectrode->thresholds.malloc(nChans);
newElectrode->isActive = new bool[nChans]; newElectrode->isActive.malloc(nChans);
newElectrode->channels = new int[nChans]; newElectrode->channels.malloc(nChans);
newElectrode->isMonitored = false; newElectrode->isMonitored = false;
for (int i = 0; i < nChans; i++) for (int i = 0; i < nChans; i++)
...@@ -155,6 +156,13 @@ bool SpikeDetector::addElectrode(int nChans) ...@@ -155,6 +156,13 @@ bool SpikeDetector::addElectrode(int nChans)
*(newElectrode->isActive+i) = true; *(newElectrode->isActive+i) = true;
} }
if (electrodeID > 0) {
newElectrode->electrodeID = electrodeID;
uniqueID = std::max(uniqueID, electrodeID);
} else {
newElectrode->electrodeID = ++uniqueID;
}
newElectrode->sourceNodeId = channels[*newElectrode->channels]->sourceNodeId; newElectrode->sourceNodeId = channels[*newElectrode->channels]->sourceNodeId;
resetElectrode(newElectrode); resetElectrode(newElectrode);
...@@ -505,7 +513,7 @@ void SpikeDetector::process(AudioSampleBuffer& buffer, ...@@ -505,7 +513,7 @@ void SpikeDetector::process(AudioSampleBuffer& buffer,
newSpike.source = i; newSpike.source = i;
newSpike.nChannels = electrode->numChannels; newSpike.nChannels = electrode->numChannels;
newSpike.sortedId = 0; newSpike.sortedId = 0;
newSpike.electrodeID = 0; newSpike.electrodeID = electrode->electrodeID;
newSpike.channel = 0; newSpike.channel = 0;
newSpike.samplingFrequencyHz = sampleRateForElectrode; newSpike.samplingFrequencyHz = sampleRateForElectrode;
...@@ -676,6 +684,7 @@ void SpikeDetector::saveCustomParametersToXml(XmlElement* parentElement) ...@@ -676,6 +684,7 @@ void SpikeDetector::saveCustomParametersToXml(XmlElement* parentElement)
electrodeNode->setAttribute("numChannels", electrodes[i]->numChannels); electrodeNode->setAttribute("numChannels", electrodes[i]->numChannels);
electrodeNode->setAttribute("prePeakSamples", electrodes[i]->prePeakSamples); electrodeNode->setAttribute("prePeakSamples", electrodes[i]->prePeakSamples);
electrodeNode->setAttribute("postPeakSamples", electrodes[i]->postPeakSamples); electrodeNode->setAttribute("postPeakSamples", electrodes[i]->postPeakSamples);
electrodeNode->setAttribute("electrodeID", electrodes[i]->electrodeID);
for (int j = 0; j < electrodes[i]->numChannels; j++) for (int j = 0; j < electrodes[i]->numChannels; j++)
{ {
...@@ -712,8 +721,9 @@ void SpikeDetector::loadCustomParametersFromXml() ...@@ -712,8 +721,9 @@ void SpikeDetector::loadCustomParametersFromXml()
std::cout << "ELECTRODE>>>" << std::endl; std::cout << "ELECTRODE>>>" << std::endl;
int channelsPerElectrode = xmlNode->getIntAttribute("numChannels"); int channelsPerElectrode = xmlNode->getIntAttribute("numChannels");
int electrodeID = xmlNode->getIntAttribute("electrodeID");
sde->addElectrode(channelsPerElectrode); sde->addElectrode(channelsPerElectrode, electrodeID);
setElectrodeName(electrodeIndex+1, xmlNode->getStringAttribute("name")); setElectrodeName(electrodeIndex+1, xmlNode->getStringAttribute("name"));
sde->refreshElectrodeList(); sde->refreshElectrodeList();
......
...@@ -38,11 +38,12 @@ struct SimpleElectrode ...@@ -38,11 +38,12 @@ struct SimpleElectrode
int prePeakSamples, postPeakSamples; int prePeakSamples, postPeakSamples;
int lastBufferIndex; int lastBufferIndex;
bool isMonitored; bool isMonitored;
int electrodeID;
int sourceNodeId; int sourceNodeId;
int* channels; HeapBlock<int> channels;
double* thresholds; HeapBlock<double> thresholds;
bool* isActive; HeapBlock<bool> isActive;
}; };
...@@ -102,7 +103,7 @@ public: ...@@ -102,7 +103,7 @@ public:
// CREATE AND DELETE ELECTRODES // // CREATE AND DELETE ELECTRODES //
/** Adds an electrode with n channels to be processed. */ /** Adds an electrode with n channels to be processed. */
bool addElectrode(int nChans); bool addElectrode(int nChans, int electrodeID = 0);
/** Removes an electrode with a given index. */ /** Removes an electrode with a given index. */
bool removeElectrode(int index); bool removeElectrode(int index);
...@@ -179,6 +180,7 @@ private: ...@@ -179,6 +180,7 @@ private:
int64 timestamp; int64 timestamp;
Array<SimpleElectrode*> electrodes; Array<SimpleElectrode*> electrodes;
int uniqueID;
// void createSpikeEvent(int& peakIndex, // void createSpikeEvent(int& peakIndex,
// int& electrodeNumber, // int& electrodeNumber,
......
...@@ -433,11 +433,11 @@ void SpikeDetectorEditor::refreshElectrodeList() ...@@ -433,11 +433,11 @@ void SpikeDetectorEditor::refreshElectrodeList()
} }
} }
bool SpikeDetectorEditor::addElectrode(int nChans) bool SpikeDetectorEditor::addElectrode(int nChans, int electrodeID)
{ {
SpikeDetector* processor = (SpikeDetector*) getProcessor(); SpikeDetector* processor = (SpikeDetector*) getProcessor();
if (processor->addElectrode(nChans)) if (processor->addElectrode(nChans, electrodeID))
{ {
refreshElectrodeList(); refreshElectrodeList();
return true; return true;
...@@ -544,7 +544,7 @@ void SpikeDetectorEditor::comboBoxChanged(ComboBox* comboBox) ...@@ -544,7 +544,7 @@ void SpikeDetectorEditor::comboBoxChanged(ComboBox* comboBox)
void SpikeDetectorEditor::checkSettings() void SpikeDetectorEditor::checkSettings()
{ {
electrodeList->setSelectedItemIndex(0); electrodeList->setSelectedId(0);
drawElectrodeButtons(0); drawElectrodeButtons(0);
CoreServices::updateSignalChain(this); CoreServices::updateSignalChain(this);
......
...@@ -60,7 +60,7 @@ public: ...@@ -60,7 +60,7 @@ public:
void channelChanged(int chan); void channelChanged(int chan);
bool addElectrode(int nChans); bool addElectrode(int nChans, int electrodeID = 0);
void removeElectrode(int index); void removeElectrode(int index);
void checkSettings(); void checkSettings();
......
...@@ -33,7 +33,7 @@ LfpDisplayNode::LfpDisplayNode() ...@@ -33,7 +33,7 @@ LfpDisplayNode::LfpDisplayNode()
//std::cout << " LFPDisplayNodeConstructor" << std::endl; //std::cout << " LFPDisplayNodeConstructor" << std::endl;
displayBuffer = new AudioSampleBuffer(8, 100); displayBuffer = new AudioSampleBuffer(8, 100);
arrayOfOnes = new float[5000]; arrayOfOnes.malloc(5000);
for (int n = 0; n < 5000; n++) for (int n = 0; n < 5000; n++)
{ {
......
...@@ -97,7 +97,7 @@ private: ...@@ -97,7 +97,7 @@ private:
int64 bufferTimestamp; int64 bufferTimestamp;
std::map<int, int> ttlState; std::map<int, int> ttlState;
float* arrayOfOnes; HeapBlock<float> arrayOfOnes;
int totalSamples; int totalSamples;
bool resizeBuffer(); bool resizeBuffer();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment