by Forrest Sheng Bao http://fsbao.net
I think there is obvious a bug in Stellate Hamonie system, the software to sample data from EEG electrodes and manage them, convert them into EDF format. Actually, the EDF data converted from SIG has many problems, time stamps in wrong order, time stamps of wrong seconds, all-zero amplitudes, incorrect starting time, etc. I spent a lot of time to understand what's going on. At first, I was even frustrated that I couldn't use those data. Let's have a look at the data of their own SIG format and the data of EDF file converted from it.
This is the snapshot of viewing one channel data from their software, the Hamonie. The resolution of Y-axe is 10uV/mm while the time interval between two vertical green bars is 1 second.
This is the plot from EDF file converted by Hamonie, of the same data as above picture. The Y ticks are voltages in uV while the X ticks are numbers of sampling points (200 points = 1 second).
At first, the sign of above two images are opposite. This is because by default, the polarity in Stellate Hamonie system is negative up. Thus, their Y-axes is up-side-down. You can't change this setting in version 6.1, the one I got from the Chinese hospital. In version 6.2 of Stellate Browser, you can set it. Just click menu "Channels" -> "Edit", and set "Polarity" by clicking "Pos. Up" as follows:
1. The time stamp of the first sampling point.
Firstly, according to EDF+ protocol, the time stamp of the first sampling point should be 0, which means the starting time of the series. If you sampling rate is 200Hz, then the time stamp of the second point is 0.005 - 0.005 second after the start. That makes the data I got can't pass the EDF compatibility test in several software. Let's have a look at the first sampling point of the EDF file:
23.303000,7.782218,-15.717028,5.035553,-9.765921,3.814813,-2.136295,4.272590,7.171848,9.765921,13.580733,19.837026,-30.060724,10.681476,-1.831110,-4.882960,11.749623,7.477033,-8.392588,13.580733,1.678518,-2.746665,11.597031The 23.303 means this point is sampled 23.303 second after the record starts. Entries delimited by commas corresponds to signals defined in EDF header. For example, the 7.782218 corresponds to the Fp1 electrode.I felt very confused about the relationship between the time stamps and time instants in SIG file. So I did a small experiment. I tried to read amplitude of first several samples of SIG data from Stellate Browser, and compared them with data read from EDF file.
Time stamp on SIG data | Time stamp on EDF data | Amplitude on SIG data (uV) | Amplitude on EDF data (uV) | |
Sample #1 | 17:22:51:305 | 23.303 | 8 | 7.782128 |
Sample #2 | 17:22:51:310 | 23.308 | 19 | 18.768878 |
Sample #3 | 17:22:51:315 | 23.313 | 8 | 8.239995 |
Sample #4 | 17:22:51:320 | 23.318 | 12 | 12.20741 |
Sample #5 | 17:22:51:325 | 23.323 | 6 | 4.425183 |
Ok, so I think i don't need to care the time stamp. Each line follows the order.
2. Time stamps for any arbitrary interval
The doctors in China will tell me the time of ictal activities in form of absolute clock, like 22:23:34 Jun.03, 2008. I need to be able to locate the sampling point corresponding to a give time instant.I did another verification to make sure the relationship is linear. As you can see from above two snapshots, there is a big peak, whose amplitude excesses 100uV, at round 5.5 second, thus the 1100th sample. Here are the data for that area:
Time stamp on SIG data | Time stamp on EDF data | Amplitude on SIG data (uV) | Amplitude on EDF data (uV) | |
Sample #1109 | 17:22:56:850 | 28.842 | 109 | 108.951051 |
Sample #1110 | 17:22:56:855 | 28.847 | 109 | 109.408828 |
Sample #1111 | 17:22:56:860 | 28.852 | 92 | 92.103282 |
Sample #1112 | 17:22:57:865 | 28.857 | 78 | 78.432549 |
Sample #1113 | 17:22:57:870 | 28.852 | 76 | 76.143661 |
Sample #1114 | 17:22:57:875 | 28.862 | 84 | 83.925879 |
Sample #1115 | 17:22:57:880 | 28.867 | 112 | 112.308086 |
Sample #1116 | 17:22:57:885 | 28.872 | 98 | 97.506612 |
Sample #1117 | 17:22:57:890 | 28.877 | 80 | 79.500697 |
Sample #1118 | 17:22:57:895 | 28.882 | 85 | 85.146619 |
Sample #1119 | 17:22:57:900 | 28.887 | 104 | 104.373275 |
3. Time stamps of last 1 second
The time stamp of the last 1 second is totally nonsense. The time stamp can jump from 36.297 to 0. In the data above, from 2601st sample to 2687th sample, the time stamps are from 0 to 0.430. The last time stamp of SIG data is 17:23:04.735, which should correspond to the 2687th sample ((17:23:04.735 - 17:22:51.305) x 200 +1 = 2687). But, the EDF file has the 2688th sample. What's wrong? Let's have a look at the samples 2685 to 2688:Time stamp on SIG data | Time stamp on EDF data | Amplitude on SIG data (uV) | Amplitude on EDF data (uV) | |
Sample #2685 | 17:23:04:720 | 0.420 | -21 | -21.363 |
Sample #2686 | 17:23:04:725 | 0.425 | -12 | -12.0548 |
Sample #2687 | 17:23:04:730 | 0.430 | -15 | -14.8015 |
Sample #2688 | There is no such sample in SIG data | 0.435 | There is no such sample in SIG data | -14.3437 |
4. All 0's record
From 0.44 second to 0.995 second in EDF data, amplitudes of all channels are zero's. I think maybe the Stellate Hamonie system wanna pad one complete second. Anyway, those data, just forget them.5. The time the record starts
As i said before, I need the starting time of a record to determine the number of samples to a given arbitrary absolute time. This is also funny. On the SIG data, it says the record starts from 17:22:51.305. But in the EDF head, it says: 17:22:28. I checked the header information of SIG data, it is also 17:22:28. So what happened from 17:22:29 to 17:22:23?Anyway, this is not a problem since I have figured out the relationship between time stamps in SIG data and EDF data. I just need to consider the time stamp of first sample in SIG data as the starting time.
No comments:
Post a Comment