From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

Life Science

cancel
Showing results for 
Search instead for 
Did you mean: 

Processing acquired data for a medical application (Epilepsy)

Lynn Hi -

First of all i would like to thank you for your last mail , it helped me to get starting with solving my problem.

I will also fix the other comments after i will finish with my main problem - to synchoronize between my application and the producer\consumer pattern.

Lynn, i'll be really greatfull if you can help me to do so, with the producer/consumer pattern or a different solution.

Last mail you wrote me that you've used also an application that need to analyaze the data from the acquire loop - maybe you can send something similiar to me, or look at my application (i've added the full llb in one of my latest mails, as you requested)

Once again, thanks for your time and have a great weekend -

Jonathan

0 Kudos
Message 11 of 14
(4,342 Views)
Try using 'event' structures to speed up processes! It will also reduce
overhead on the cpu. Use built in help in LV to learn more.
Tim J>

student 16 wrote:
> Hello!!
> the project :I am a student working on a bio-feedback application which 'know' how to identify pulse seizures on mice brain   slices(epilepsy), and if a seizure have been identified another pulse is sent automatically to depress it!
>  
> the problem : Basically the application showing good results, but with one major problem:
>  When i recognize a seizure i have to immediately react and try to depress it .
>  That's mean that if each trace contains(for example) 500 scans , and the 'seizure' have been identified on scan
>  number 250 , i need the application to react on scan number 250 and not to wait for the end of the trace.
>  Right now the application reacts only after all the specific  trace scans are completed wasting precious time.
>  My application first do the 'acquire phase' for all the scans and only afterwards it starts to examine each 
>  scan in the trace -  this i know. But how can i avoid it?
>  
> info about the attachment : in the attachment you can see the main vi(combaineallthree.vi), which is based on an example
> called- 'acquire N mutidigital trig.vi' , and includes the acquire part of the application. Inside  a sub vi called   'artifact 4.vi'   where i deal with the identification and reaction to the seizure .
>  
> additional info : right now i am working with traditional NI-DAQ.
>                             Lab View 7.1, PCI 6014
>  
>  I'll be REALLY happy if someone can help me, it's very important for me.
> I'll be happy to try and add more info if needed.
> Good daySmiley Happy    
> jonathan (student 16)                                    Message Edited by student 16 on 01-01-2006 07:59 AM
>
>
> combaineallthree.vi:
> http://forums.ni.com/attachments/ni/170/158812/1/combaineallthree.vi
>
>
> artifact4.vi:
> http://forums.ni.com/attachments/ni/170/158812/2/artifact4.vi
0 Kudos
Message 12 of 14
(4,228 Views)

hello jonathan,

we are using labview to monitor seizure in mice and rats for 24 hours. currently we are testing the application. email me at petar@programmer.net and maybe we can share some ideas.

thanks,

petar

0 Kudos
Message 13 of 14
(4,205 Views)
Jonathon,

Sorry about the delay. I lost track of this thread.

Here is how I approached the EEG analysis for theta wave conditioned stimuli.

1. Set up a data acquisition loop which acquires data in small "chunks." The "chunks" are probably ~ 1-5 ms. The data is placed into a LV2 style global (VI with uninitialized shift register) (also known as a functional global). Make sure the loop has a small wait (1 or 0 ms is probably appropriate).
2. In an independent loop retrieve the data from the global and put it into a circular buffer. (The global could be the buffer, but it may be easier to understand and to implement if we talk about separate data structures.) Every time a few milliseconds of data are appended to the buffer, analyze the latest 100 or 500 ms of data for the 'epileptic signal.' If found send the stimulus and clear the buffer (so you do not continue to analyze the data with the 'epileptic signal'). If not found repeat the append and analyze cycle. This loop must also have a small wait.

This implements a sliding window. You analyze the most recent ~100-500 ms of data every 5 ms until you find the desired pattern. Thus you have enough data to analyze while still being responsive to rapidly changing events. You may need to modify the numbers I used in the example to fit your experimental needs.

The program I did this with is large and not well structured by today's standards so I do not have anything to show you. It is written in LV5 and is a direct descendent of a program that was developed in LV1 and significantly rewritten in LV3.

Lynn
0 Kudos
Message 14 of 14
(4,208 Views)