Example #1
0
void SpikeSortingDisplay::process(AudioSampleBuffer& buffer,
                                  MidiBuffer& events,
                                  int& nSamples)
{
    checkForEvents(events);

    if (redraw)
    {
        for (int i = 0; i < getNumElectrodes(); i++)
        {
            Electrode& e = electrodes.getReference(i);

            // transfer buffered spikes to spike plot
            for (int j = 0; j < e.currentSpikeIndex; j++)
            {
                //std::cout << "Transferring spikes." << std::endl;
                e.pcPlot->processSortedSpikeObject(e.mostRecentSortedSpikes[j]);
                e.currentSpikeIndex = 0;
            }

        }

        for (int i = 0; i < getNumElectrodes(); i++)
        {

            node->setParameter(1,i);
            //std::cout << node->plotRipple << " is the plotRipple" << std::endl;
            if (node->plotRipple)
            {

                Electrode& e = electrodes.getReference(i);
                e.forRasterPlot.startRipple = node->electrodes[i]->rippleStatus[1];
                e.forRasterPlot.stopRipple = node->electrodes[i]->rippleStatus[2];
                node->setParameter(0,i); //removing

                for (int j = 0; j < e.forRasterPlot.accruedRasterMarks.size(); j++)
                {
                    //cout << e.forRasterPlot.accruedRasterMarks[j].timestamp << " is the spike timestamp and " << e.forRasterPlot.startRipple << " is the ripple timestamp." <<std::endl;

                    if(e.forRasterPlot.accruedRasterMarks[j].timestamp <= e.forRasterPlot.startRipple || e.forRasterPlot.accruedRasterMarks[j].timestamp >= e.forRasterPlot.stopRipple)
                    {
                        RasterData dummy;
                        dummy.electrodeNum = -1;
                        dummy.neuronID = -1;
                        dummy.timestamp = -1;
                        e.forRasterPlot.accruedRasterMarks.setUnchecked(j,dummy);
                    }
                }

                e.pcPlot->processRasterPlot(e.forRasterPlot, i);
                e.forRasterPlot.accruedRasterMarks.clearQuick();
                //std::cout << "reached in plot ripple" << std::endl;
                node->setParameter(0,i);

            }
        }
        redraw = false;
    }
}
Example #2
0
void SpikeDisplayNode::setParameter(int param, float val)
{
    //std::cout<<"SpikeDisplayNode got Param:"<< param<< " with value:"<<val<<std::endl;

    if (param == 0) // stop recording
    {
        isRecording = false;
        signalFilesShouldClose = true;

    } else if (param == 1) // start recording
    {
        isRecording = true;

        dataDirectory = recordNode->getDataDirectory();

        if (dataDirectory.getFullPathName().length() == 0)
        {
            // temporary fix in case nothing is returned by the record node.
            dataDirectory = File::getSpecialLocation(File::userHomeDirectory); 
        }

        baseDirectory = dataDirectory.getFullPathName();

        for (int i = 0; i < getNumElectrodes(); i++)
        {
            openFile(i);
        }

    } else if (param == 2) // redraw
    {
        redrawRequested = true;

    }

}
Example #3
0
void SpikeDisplayNode::removeSpikePlots()
{
    for (int i = 0; i < getNumElectrodes(); i++)
    {
        Electrode& e = electrodes.getReference(i);
        e.spikePlot = nullptr;
    }
}
Example #4
0
void SpikeDisplayNode::process(AudioSampleBuffer& buffer, MidiBuffer& events, int& nSamples)
{

    checkForEvents(events); // automatically calls 'handleEvent

    if (signalFilesShouldClose)
    {
        for (int i = 0; i < getNumElectrodes(); i++)
        {
            closeFile(i);
        }

        signalFilesShouldClose = false;
    }

    if (redrawRequested)
    {
        // update incoming thresholds
        for (int i = 0; i < getNumElectrodes(); i++)
        {

            Electrode& e = electrodes.getReference(i);

            // update thresholds
            for (int j = 0; j < e.numChannels; j++)
            {
                e.displayThresholds.set(j, 
                e.spikePlot->getDisplayThresholdForChannel(j));

                e.spikePlot->setDetectorThresholdForChannel(j, e.detectorThresholds[j]);
            }

            // transfer buffered spikes to spike plot
            for (int j = 0; j < e.currentSpikeIndex; j++)
            {
                //std::cout << "Transferring spikes." << std::endl;
                e.spikePlot->processSpikeObject(e.mostRecentSpikes[j]);
                e.currentSpikeIndex = 0;
            }

        }

        redrawRequested = false;
    }

}
Example #5
0
void SpikeSortingDisplay::removePCPlots()
{
    for (int i = 0; i < getNumElectrodes(); i++)
    {
        Electrode& e = electrodes.getReference(i);
        e.pcPlot = nullptr;
    }
}