Closed sahin-ozsoy closed 6 years ago
Yes. That is true. However, if your clock sync is timing out all the time, you can't synchronize your data anyway so there would be no need to run 'HandleClockSynchronization', true.
One feature that would be nice in xdf would be the ability to set 'HandleClockSynchronization' and 'HandleJitterRemoval' on a stream by stream basis. In that sense, this is an xdf issue, not an LSL issue.
Also, if time_correction() is timing out /every/ time, you either have the timeout set to some very (too) small value in your config file, or your network is super buggy and you aren't pushing the data in a timely fashion either.
On 8/7/2018 2:09 PM, sahin-ozsoy wrote:
Hi, I have realized that, the Labrecorder may never record a Clock synchronization chunk into the xdf file, if the time_correction() function timeouts all the time during the acquisition:
image https://user-images.githubusercontent.com/23072504/43774844-8a994af4-9a18-11e8-85d5-6f4a4774fc3c.png
then, when you try to import the data using load_xdf(), the default HandleClockSynchronization setting is true. And the following code block runs:
try clock_times = temp(k).clock_times; clock_values = temp(k).clock_values; catch disp(['No clock offsets were available for stream "' streams{k}.info.name '"']); continue; end
Here, the temp(k).clock_times and temp(k).clock_values fields are empty but existing fields. Therefore, try block runs with success. But since clock_times and clock_values arrays are empty, robust_fit function fails with a message "matrix must be positive definite".
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/sccn/labstreaminglayer/issues/329, or mute the thread https://github.com/notifications/unsubscribe-auth/ADch7uwD03Tz_sRNGPabHqG7KWtPPv_yks5uOYNigaJpZM4VyCU0.
Understand, But I still think that load_xdf should not fail if there are no clock synchronizations in the xdf file. I believe the try cathc block:
try clock_times = temp(k).clock_times; clock_values = temp(k).clock_values; catch disp(['No clock offsets were available for stream "' streams{k}.info.name '"']); continue; end
is trying to do that. But it will never get into the catch block, because in line 33: temp(id).clock_times = []; temp(id).clock_values = [];
Moreover, think of a lsl scenario and there is only one stream with a fixed sampling rate. there is no need for clock synch, therefore there is no need to include clock synch chunks in the xdf file.
Yes. I agree that this can be improved, but at the very least load_xdf should shout a very loud warning whenever this happens. It is a strong indication that the data is seriously messed up.
Again, this is an issue with xdf not LSL. I am going to close this issue. If you'd like to continue this conversation, I propose moving it to the xdf repository.
On 8/7/2018 4:35 PM, sahin-ozsoy wrote:
Understand, But I still think that load_xdf should not fail if there are no clock synchronizations in the xdf file. I believe the try cathc block:
try clock_times = temp(k).clock_times; clock_values = temp(k).clock_values; catch disp(['No clock offsets were available for stream "' streams{k}.info.name '"']); continue; end
is trying to do that. But it will never get into the catch block, because in line 33: temp(id).clock_times = []; temp(id).clock_values = [];
Moreover, think of a lsl scenario and there is only one stream with a fixed sampling rate. there is no need for clock synch, therefore there is no need to include clock synch chunks in the xdf file.
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/sccn/labstreaminglayer/issues/329#issuecomment-411078874, or mute the thread https://github.com/notifications/unsubscribe-auth/ADch7qGZVldKSbL4wO7IYbZ4zrT4GhOwks5uOaW-gaJpZM4VyCU0.
OK. Just wanted to point out that load_xdf will never give the warning message (No clock offsets were available for stream). It will instead say "matrix must be positive definite", which will direct the user in the wrong direction, and leave him/her puzzled as to where the issue is.
Hi, I have realized that, the Labrecorder may never record a Clock synchronization chunk into the xdf file, if the time_correction() function timeouts all the time during the acquisition:
then, when you try to import the data using load_xdf(), the default HandleClockSynchronization setting is true. And the following code block runs:
try clock_times = temp(k).clock_times; clock_values = temp(k).clock_values; catch disp(['No clock offsets were available for stream "' streams{k}.info.name '"']); continue; end
Here, the temp(k).clock_times and temp(k).clock_values fields are empty but existing fields. Therefore, try block runs with success. But since clock_times and clock_values arrays are empty, robust_fit function fails with a message "matrix must be positive definite".