Parkinson's disease (PD) is a chronic and progressive movement disorder, meaning that symptoms continue and worsen over time. Nearly one million people in the US are living with Parkinson's disease. The cause is unknown, and although there is presently no cure, there are treatment options such as medication and surgery to manage its symptoms. Currently, there aren’t many tools to diagnose this disease.
What it does
Parkinson's Diagnostic tool (PDT) helps us to detect whether a person is suffering from parkinson or not. Tremoring is one of the common symptoms for this disease. To diagnose the disease, we collect the position (x,y,z coordinates), acceleration and speed of one’s tremoring using their phone’s accelerometer. With the help of machine learning we decide whether the collected data resembles the tremors that characterize Parkinson's disease..
How we built it
- We built an android app to collect the 3 dimensional co-ordinates along with the acceleration and speed every 100 millisecond by holding the phone in your hands or attaching it to your wrist
- We built api’s using python and exposed it over the internet by using Amazon web services. These api’s were used by the android app to either send the training data or the data for prediction.
- We made use of octave to build up the neural network with forward and back propagation which has 500 input layers(coordinates, speed and acceleration of a tremor), 25 hidden layers used to predict more complex features with the features already available and 2 output units predicting if the test was positive or negative for parkinson. We used the training set collected using the android app and passed on to the server with the python api. Similarly the test data was passed from the android app to the neural network with the python api as the interface between.
- Technologies used: Android, python, Flask, Machine Learning, oct2py, Neural networks, Amazon web services.
Challenges we ran into
Being a diverse team and pretty new to the technologies used in the project, the initial part of the effort was loaded with challenges. We faced challenges like creating new training sets to train the algorithm, setting up the dependencies of the project on AWS, using octave with python, etc.
Accomplishments that we're proud of
We made an application which not only helped us to enhance our technical skills, but also helps society to diagnose parkinson's disease. Since there aren’t many commonly available tools to detect this disease, this tool can be used world wide.
What we learned
- Using octave with python to integrate a machine learning algorithm in a web application.
- Building our own machine learning REST apis.
- Using cell phone’s accelerometer to detect tremors.
What's next for Parkinson's Diagnostic Tool
Ultimately, there are numerous ways to diagnose Parkinson's disease. Our next steps are to make our tool as versatile as possible and to use multiple tests to help with diagnosis. The following are some things that we want to add:
- adding multi level classification with results such as: positive for parkinson’s disease, negative for parkinson’s disease, and parkinson’s under control (while medicated)
- using video recordings of walking posture to diagnose Parkinson's disease (Microsoft has some really great video analytics APIs)