Data loss issue on recording actionpotential signals

Forum for software developers to discuss BCI2000 software development
Locked
slee87
Posts: 11
Joined: 20 Sep 2009, 15:49

Data loss issue on recording actionpotential signals

Post by slee87 » 04 Feb 2011, 16:15

I am working on developing neural recording system. The hardware we designed has a sampling rate of 540 k sample per second (540 kSps) consisting of 32 channels. Therefore, each channel has a sampling rate of 15 kSps. I made a source module in order to accept the data from our hardware. It works fine.

However, during the recording, data loss periodically occurs. For example, I did about 90 seconds of recording, but I chekced about 30 data loss points during this recording. In addition, the recorded data time is only 27seconds. One point I am not sure is that whether the data loss makes the shorter recording or latency between data acquisition and showing the data to the screen makes the shorter recording.

More than 10 kSps is not allowed to use in BCI2000?

I really want to eliminate this data loss points.
I found that high-end computer or minimizing display channel information is helpful to reduce data loss, but I cannot completely remove it.

I attached two photos showing 23 seconds of recorded data. You can clearly see the data loss points.

Image
Fig. 1. Two data loss points are showing.
Image
Fig. 2. Recorded data of 23 seconds althoguh the real recording time is 90 seconds.

gschalk
Posts: 615
Joined: 28 Jan 2003, 12:37

data loss ...

Post by gschalk » 04 Feb 2011, 19:42

Hi,

In your configuration, what are the values of:

Source->SourceCh
Source->SamplingRate
Source->SampleBlockSize
Visualize->VisualizeSourceDecimation



Gerv

slee87
Posts: 11
Joined: 20 Sep 2009, 15:49

Post by slee87 » 04 Feb 2011, 20:29

Thank you for reply,

SourceCh: 36
SamplingRate: 14799 Hz
SampleBlockSize: 64

VisualizeSourceDecimation: 1

I am not sure how much accurately SamplingRate should be set comparing to real sampling rate. Is it possible to make data loss if two values are different?

Thank you very much.

gschalk
Posts: 615
Joined: 28 Jan 2003, 12:37

data loss II

Post by gschalk » 04 Feb 2011, 21:58

Hi,

At present, you are updating the system (incl. signal processing, display, output) 235 times per second (15000/64). You are also drawing 15000*36 pixels of raw signals per second, and that 235 times per second. In other words, you are driving the system such that even a fast computer can't manage. Then, at some point, you start losing data. (You could check your processor load and at least one of the cores should be at 100%.)

Set SampleBlockSize to 512 and VisualizeSourceDecimation to 64 and you will be all set.

Check Timing Issues at

http://www.bci2000.org/wiki/index.php/User_FAQ

check also

http://www.bci2000.org/wiki/index.php/U ... Decimation

Report back whether it helped.

Which hardware are you interfacing?

Gerv

slee87
Posts: 11
Joined: 20 Sep 2009, 15:49

Post by slee87 » 06 Feb 2011, 02:04

It works!
Thank you very much.

How did you come up with the specific numbers, 512 and 64?

By the way, the hardware I am using is the custom designed receiver. Through wireless link, neural signals are received, demodulated, and send to FPGA board. FPGA converts the demodulated analog data to digital data, and sends to PC through USB communication.

gschalk
Posts: 615
Joined: 28 Jan 2003, 12:37

questions

Post by gschalk » 06 Feb 2011, 07:29

Hi,

SamplingRate/SampleBlockSize determines the "clock-rate" of the system. It usually is not necessary to perform signal processing, feedback, etc., at more than 30 times per second, so I picked a SampleBlockSize to get roughly 30 times per second.

For the decimation, you cannot see signals at 15 kHz in a time-domain signal (signals at high frequencies are tiny). Thus, I selected a "display-frequency" (which is different from the update rate described above) of about 250 Hz. Since 25kHz/decimation=250, you get the decimation rate. Oh, with the current settings (250 Hz display frequency), you may not see action potentials. In this case, simply reduce the decimation some. (I think decimation has to be an even divider of SampleBlockSize though.)

Gerv

Locked

Who is online

Users browsing this forum: No registered users and 1 guest