Beta Release of OpenSeizureDetector V2.5.1

I have just released a new Beta test release of OpenSeizureDetector on Google Play Store (V2.5.1).

The only change is an improvement to handling alarms from short duration seizures.   If a seizure is only detected for a short period, the previous version may only give a single set of Alarm beeps, which may be insufficient to alert a carer.

With the new version, if you enable “Latch Alarms” in the Alarms settings then when an alarm initiates, the alarm beeps will sound for the period specified in the “Latch Alarm Timer Duration” setting, even if the alarm resets quicker.

You can stop the alarm to silence the beeps earlier by pressing the Accept Alarm button.  This works both on the main OpenSeizureDetector app screen, and also if you are running it on another device using Network Datasource to provide alarm annunciation in a different part of the house.

This is as a result of the seizure Benjamin had last week, when we only got a single sent of alarm beeps.   This is fine if you are awake and alert, but if you are asleep it may not be enough to rouse you.   More details of this event on the Real Test of OpenSeizureDetector page.    A further update will follow fairly soon with an improved algorithm to detect seizures with lower frequency movement.

Real Test of OpenSeizureDetector

Summary

Benjamin had a seizure yesterday morning (03/05/2017).  It was not a ‘classic’ tonic clonic seizure (with rapid shaking of the arms).  Instead he was lying on his back with arms stiff in the air and ‘waving’.  This movement was on the borderline of detectability by OpenSeizureDetector.  It gave one WARNING and one ALARM.   On the positive side, it did detect the seizure.   On the negative, it only gave a single ALARM initiation, which might not be enough to wake you up if asleep.   Reducing the AlarmRatioThresh setting will increase sensitivity to improve detection reliability in the future.

Description

The seizure was not a ‘classic’ tonic clonic seizure (quite rapid shaking of the arms).  Instead Benjamin was lying on his back with arms stiff in the air and ‘waving’.

OpenSeizureDetector gave one WARNING notification at 06:24:24 on 03/05/2017 followed by a single ALARM initiation at 06:20:30, then it re-set.

The movement was right on the limit of detection using default settings which look at a frequency range of 3bHz to 8bHz as the Region of Interest.   The movement peak was at 4bHz, but there was quite a lot of power in the 1-3bHz range too and not much above.  This meant that the region of interest average power was quite low – see graph below showing the frequency spectrum of the movement during the alarm (the grey shaded area is the 3-8 Hz region of interest).

The calculated spectrum ratio (=10x[Region of Interest Power]/Spectrum Power) was 59, against a threshold of 56 (the threshold had been set higher than the default 50 to reduce false alarm rate).

We use a second android device running OpenSeizureDetector in ‘Network’ mode to relay the alarm notifications to other parts of the house over wifi.   The second device gave a WARNING but did not go into alarm.   I think this is because of a timing issue with the ALARM being raised for only a short period, so this is something to look at as we would have expected the alarm to sound on both devices.

Changes to Settings

Detection of this particular type of seizure could be improved by reducing the Region of Interest to be 3-6 Hz rather than 3-8 Hz, but this would reduce the sensitivity to seizures resulting in higher frequency movement.   Benjamin’s worst fits have been the higher frequency type, so I am minded to retain detection in that region so have retained 3-8 Hz region of interest for now.

I have reduce the AlarmRatioThreshold back to 50 rather than the 56 that we were using to increase sensitivity.

So the main settings we will be using for now are:

  • alarmFreqMin = 3 Hz
  • alarmFreqMax = 8 Hz
  • alarmRatioThresh = 50

Software Changes

I will update the phone app to give multiple alarm sounds rather than just 3 beeps in the near future to improve the chances of you noticing a single alarm annunciation.

In the meantime, users could consider switching on the Latch Alarms option in the Alarms settings – this will make the system alarm continuously until you press the ‘Accept Alarm’ button on the phone app.

Conclusion

OpenSeizureDetector did detect this slightly unusual seizure, but it was right on the limit of detection, so just gave a single WARNING and a single ALARM notification.

Increasing the sensitivity by reducing the AlarmRatioThresh setting should improve detection in the future.  Other changes would improve detection of this seizure type to the detriment of detection of higher frequency movement seizures, which is probably not a good idea.

Android Wear Version – Update 1

We have made some progress with an Android Wear version of OpenSeizureDetector (long train journeys for work have their uses!).  It is not ready for testing yet, but it is starting to take shape.   What we have got is:

  • A very simple Android Wear app that does the basic seizure detection calculations – collects acceleration data and does Fourier Analysis to get us a frequency spectrum.
  • Packages the analysis results into a message that is sent to the OpenSeizureDetector app on the phone.
  • The development version of the OpenSeizureDetector phone app (V3.0.0) has an ‘Android Wear’ data source that works in a similar way to the Pebble data source – it waits for the watch to send it data, and displays the data on the screen, raising alarms when necessary.
  • You can see it running on the phone and my Android Wear watch below

 

 

 

 

 

For those who are interested, the source code for the watch app is at https://github.com/openseizuredetector/AndroidWear_SD

and the updated phone app is the V3.0.x branch at https://github.com/OpenSeizureDetector/Android_Pebble_SD/tree/V3.0.x

Any offers of help would be gratefully received!!

What is left to do?

Plenty!:

  • Check the seizure detection calculations on Android Wear – I think the values are higher than the equivalent Pebble one, so we must have units wrong somewhere.
  • Provide a way of editing the seizure detection settings for the Android Wear seizure detector (They are hard coded at present – need to provide a user interface on the phone to edit settings, and ability to send settings to the watch), and maybe allow on-watch editing too?
  • Add ability to start the seizure detector watch app from the phone, so it starts when the OpenSeizureDetector phone app starts.
  • Add a user-interface to the watch like we have on pebble – ability to raise alarms manually, and mute alarms if you are doing something that is liable to trigger a false alarm.
  • Find out why it does odd things when I disconnect the debugger from the watch – it was working fine for half an hour with the USB debugger connected, and is showing FAULT now I have disconnected it….. (seemed to need a manual re-start…).    I think it may be going to sleep after a while….
  • Some Android Wear devices have heart rate monitors – maybe use that to look at heart rate and blood oxygen saturation too? (I’ll need to get a watch with these sensors to try that though – my Sony SmartWatch 3 does not have them).

Android Wear Version of OpenSeizureDetector?

With Pebble watches no longer being produced we will need a different hardware platform if we keep the OpenSeizureDetector project going.

We could just leave it and use the Embrace watch, but I am not that happy with Embrace for two reasons:

  • I am not convinced about its detection reliability – I can not make it go off doing what I think of as seizure-like movements (but other people report it working well for them, so it could just be me).
  • The alarm annunciation infrastructure is very complex – the watch talks to the paired phone, which uses a wifi or mobile internet connection to connect to the Empathica servers.  The servers then use the mobile phone infrastructure to make a phone call.   But I mostly want a device in the next room to go ‘beep’, so I would rather have a more direct connection (OpenSeizureDetector uses WiFi so avoids a lot of the infrastructure)

So, given that I am looking for an alternative platform for OpenSeizureDetector.   It is very tempting to try to make one – it would be fun to do the electronic design and firmware, but that would be a big undertaking, and not something I could do in my spare time, so I need a commercially available platform.

I have been looking at Android Wear, which has been suggested by a few people – I did not use this before because Android Wear devices are so much more expensive than Pebble Watches.  For Android Wear to be feasible, we need to confirm a couple of things:

  • We can obtain accelerometer readings at a high enough frequency (~50 Hz), and do Fourier analysis on it to do the seizure detection.
  • The battery consumption has to be reasonable.

I have made a proof-of-concept Android Wear app to test it out.   The App does the following:

  • Starts a background service that collects accelerometer data for about 5 seconds, then calculates a Fourier Transform of the data….then repeats indefinitely.
  • The activity connects to the service and shows the number of samples collected, so you can see it is doing something.

It does not look very exciting – see picture of it running on my Sony Smartwatch 3 above.
...but most importantly, it is surprisingly (suspiciously so if I am honest) frugal with the battery.   The second half of this trace has the new app running, and it is still only draining of the order 1% per hour.

So based on this, I think porting OpenSeizureDetector to Android Wear is feasible.   There is quite a lot to do to get it working though:

  • Communication to the phone (both settings and alarm status updates)
  • On-watch user interface (mute, manual alarm etc.)
  • Port Seizure Detection algorithm – the acceleration units are different in AndroidWear compared to Pebble, so we need to do some scaling so that the seizure detector settings can be the same.
  • Package the Android Wear App – it will probably be a different Google Play Store app, so we will need to integrate that into the OpenSeizureDetector Android App.

Fortunately there are a couple of other people interested in helping, so there is a fair chance of getting this finished this year.

 

Errors from Pebble Web Site

A user has reported getting errors from the Pebble web site while installing the Pebble App to connect the watch to the phone.

You seem to get this screen when you are creating a Pebble account as part of the set-up process.

Despite the error you can go back to the Pebble App and finish the set-up ok (it will update the watch firmware etc.), and OpenSeizureDetector will work ok.

So, although we get an error, it still works – OpenSeizureDetector does not need the Pebble web site once the watch has been connected to the phone ok.

Production Release of V2.3.2

I have just released V2.3.2 of OpenSeizureDetector as the main version of the App on Google Play Store.   The main changes in this version are:

  • Changes to the Watch App to improve efficiency (Note this will also make it more sensitive, so you may need to increase the Alarm Ratio Threshold setting from the default of 30 to between 50 and 60 to reduce false alarms).
  • Improved start-up screen that has buttons to help solve problems with set-up, and make initial set-up easier – updated installation instructions page to match.
  • Added an initial run message prompting user to subscribe to updates to this web site or the facebook page.
  • Added facility to auto-start the app on phone boot up.
  • Added GPS location information to SMS alarm notification messages.
  • See CHANGELOG.md for more details.

Next I will start work on converting OpenSeizureDetector to work with Android Wear and wrist worn Android Phone devices so it will continue to work once Pebble Watches are no longer available.

Implications of Pebble Sale to Fitbit on OpenSeizureDetector

A couple of weeks ago Pebble announced that they have been bought by Fitbit (who make fitness tracking devices), and no longer sell or support smart watches.

A few people have asked what this means for OpenSeizureDetector.    My thoughts are:

Short Term (around 1 year)

No change – if you already have a Pebble watch or can buy one, you will be able to install the Pebble Android App from Google Play Store to connect your pebble to the phone, and install OpenSeizureDetector on it.

It is possible that Pebbles may become scarce (or looking more positively, they may get cheap – Argos and Amazon are selling them for £49, and cheaper if you like pink!   Amazon.co.uk currently says they only have 5 in stock (17 December).

Medium Term (1-3 years)

The Pebble Android App and Pebble firmware may no longer be available from Pebble.   There is an open source project that implements the Bluetooth communication with the watch, so I think it will be possible to bypass the Pebble Android App and build this all into OpenSeizureDetector (OpenSeizureDetector does not need any of the Pebble web services to work) –  I will look at doing this over the winter while the Pebble software is still available.

Long Term (>3 years)

Pebble watches are unlikely to be available so we will need an alternative device.  The options are:

  1. If we are very lucky FitBit may release a pebble-like device with software development kit so you can program it like you can the Pebble, as they bought all the Pebble intellectual property.   I am not too hopeful about this – I did try to work out how to program a fitbit before I discovered Pebble, and it is all closed-source protocols….
  2. Android Wear – Android Wear watches such as Moto 360 should be capable of doing what OpenSeizureDetector does on the pebble, and use the same Android App infrastructure (since Verison 2 I have the internal structure of the code set up to use different devices).   I haven’t done this yet because Pebbles were so much cheaper than Android Wear devices, so no point using anything else….but now I’ll have to look at it.
  3. Embrace – the Embrace ‘watch’ is doing something very similar to OpenSeizureDetector and includes skin electrodes to detect stress.  This should give better false alarm discrimination than just using Acceleration like I do with the Pebble.   But, up to now I am not impressed with the reliability of the device – it drops bluetooth connections without any of the fault warning beeps that we have built into OpenSeizureDetector – I am minded to try to use Embrace as a data source for the OpenSeizureDetector alarm notification system rather than use their Android App, which relies on an active internet connection to raise alarms.
  4. Another Device – I had looked at AngelSensor, and I do have a device to work on, but I am not sure if the company still exists – no point developing for a device that no-one can get hold of….
  5. Anything else?  I’m open to suggestions for alternative devices with accelerometers that we could use the OpenSeizureDetector system with.

Conclusion

OpenSeizureDetector will continue to work while Pebble Watches are available (I  am confident enough that I just bought Benjamin two spares for when his current ones break).

But we need to decide what to do once Pebble Watches are not available any more…

New Features in OpenSeizureDetector V2.3.0

I have just published V2.3.0 of OpenSeizureDetector to the Google Play Store as a Beta test release.

This release introduces three changes requested by users:

  1. Add the user’s location to the SMS alarm notifications – it now sends two SMS messages – the first one gives the last known location (if we have one).  It then spends a minute trying to get the best location information it can, and sends that location as a second SMS after a minute.
  2. Added an option in the General Settings screen to auto-start the app when the phone boots.
  3. Improved Start-Up screen that now checks whether the Pebble App is installed and provides a button to install it for you if not.

To install this version you need to register as a Beta tester here.

Please let me know if you have any issues with this version.

(note on version numbering – I messed up the version numbers on the last few releases – the first two figures are supposed to match the version of the Pebble App that the Android App works with, but I forgot.    Version 2.3 of the Pebble App is included as part of the Android package, so the Android Package is V2.3.0).

Detection of Short Seizures

I originally set up OpenSeizureDetector to detect long (>1 minute) seizures so it waits to see seizure-like shaking for several seconds before raising alarms.

A couple of users said they would like to detect short (few second) seizures, so I have created a new version of the app that allows the sample period to be set by the user, so you can tell it to analyse data say every second rather than the default 5 seconds.

New settings in v2.0.7 - sample period and sample frequency.
New settings in v2.0.7 – sample period and sample frequency.

I suspect that doing this will give a lot of false alarms, but I have provided this so the users can try it and see if it works for them.

This feature is available in version 2.0.7 of the OpenSeizureDetector Android app, and version 2.3 of the watch app.  The correct version of the watch app is included in the Android package so you can install it from the OpenSeizureDetector menu.

It is available on the Beta testing channel of Google Play Store – subscribe here to access it.

As usual, feedback would be appreciated – if you do not change the settings, it should behave the same as before – please let me know if this is not the case.

Graham.

OpenSeizureDetector Reliability Issues?

We have been woken up during the last couple of nights with the annoying warning pip from OpenSeizureDetector.   I am not sure what the issue is because I don’t think any of the software has changed for a few weeks and it just started happening.

There have been two issues

  1. the ‘server’ phone disconnected from our home wifi for some reason and only re-connected when I turned its screen on (no idea why, but not too much of a worry – probably some sort of wifi interference from somewhere).
  2. the ‘server’ phone showed a ‘Fault’ warning with ‘Watch App Not Running’ – this means it has not received any data from the Pebble watch recently.   The watch appears to be working ok, so I don’t know if it is a problem with the watch not sending data, or the Android Pebble App on the phone not telling OpenSeizureDetector that it has received some data for it.

I have set up our spare watch and phone to see if they do the same – I might end up swapping over the watches – the spare is older though and its battery is not as good and its screen keeps corrupting, which might annoy Benjamin…..

Is anyone else seeing similar problems?  Please let me know (graham@openseizuredetector.org.uk or the OpenSeizureDetector Facebook page).

Thanks!

 

Graham.