The goal of this project is to build a GA4GH API wrapper around the 23andMe REST API. The work will result in a server that can be started by a user. The user will be required to provide their 23andMe credentials. The server will then use those to connect with the 23andMe REST interface. The server will then respond to GA4GH variant API requests from that user only. There are many people who have used 23andMe and this project will allow any GA4GH API compatible application to run against their 23andMe variant information.
The purpose of this project is to allow individuals to retrieve information about their personal genomics from 23andMe and receive a Global Alliance for Genomic Health (GA4GH) response. GA4GH aims to create a standard for how genomic data is organized with the hopes of simplifying the reception and exhange of genomic data. You can read more about GA4GH here.
Disclaimer: These instructions work as of March 2017. 23andMe may change how their application registration works and that may in turn change how this application works. If you run into a problem, feel free to open up an issue and I'll try my best to resolve it in a timely manner. Thanks!
To begin, you should clone this repository. If you don't know how to do that, you can just download the code to your Desktop.
If you don't have a 23andMe account already, you can register a developer account here. If you just want to test drive this program and haven't actually sampled your genome with 23andMe, that's fine too. 23andMe has sample information with every account.
If this is your first time registering a client to 23andMe, you will see a page like the one below.
You can fill out the parameters exactly as I have. Here they are if you'd like to copy/paste:
GA4GH
GA4GHandMe
names, basic, email, genomes
Web
Before opening any of the files you will have to register an API client with 23andMe. You can use the same parameters in the image below:
Here are the parameters if you'd like to copy/paste:
GA4GHandMe
http://localhost:5000/oauth
A GA4GH wrapper for the 23andMe API
Once you have done this, 23andMe will give you two credentials: a client id, and a client secret. Put both of these in keys.py, along with a sessions key for flask. The sessions key can be anything.
Once that's setup, make a virtual environment.
If you don't have virtual environment already
pip install virtualenv
Once you have that you can make a virtual environment
virtualenv env_name
And then start the virtual environment
source env_name/bin/activate
With the virual environment running, go ahead and install the requirements.txt.
You should also make sure you have the GA4GH server setup.
pip install --upgrade -r requirements.txt
pip install ga4gh-server
After this is all complete, you can start up the server.
python server.py
Once that's up and running you can navigate to localhost:5000 in your web browser. The only thing you need to do from here is follow the prompts. Enjoy!
This project was made possible thanks to 23andMe's python oauth/flask example, w3school's sample data table, and the help of Kevin Osborn and David Steinberg.