This is an API which is used to pull down results from the GoDMC meta analysis of genetic influences on DNA methylation levels.
Most methods are using get
- you put in a specific query and the result is returned.
There are also more complex queries that can be obtained using post
. Here a json file needs to be built that describes the query.
All results are json format. At the bottom of this page we describe how you can use R to access the API.
/v0.1/cohorts
e.g. http://api.godmc.org.uk/v0.1/cohorts
/v0.1/assoc_meta/cpg/<cpgid>
/v0.1/assoc_meta/rsid/<rsid>
/v0.1/assoc_meta/snp/<snpid>
e.g. http://api.godmc.org.uk/v0.1/assoc_meta/cpg/cg17242362
e.g. http://api.godmc.org.uk/v0.1/assoc_meta/rsid/rs6602381
e.g. http://api.godmc.org.uk/v0.1/assoc_meta/snp/chr10:10000018:SNP
The -log10(p-values) for all associations with a particular SNP or CpG can be obtained in bed or BigBed format as:
/v0.1/dl/<format>/cpg/<cpgid>
/v0.1/dl/<format>/snp/<snpid>
e.g. http://api.godmc.org.uk/v0.1/dl/bigbed/cpg/cg17242362
e.g. http://api.godmc.org.uk/v0.1/dl/bed/snp/chr10:10000018:SNP
/v0.1/assoc_meta/range/<attribute>/<chrrange>
Note: this is a bit slow due to database, needs to be improved
e.g. http://api.godmc.org.uk/v0.1/assoc_meta/range/cpg/10:10000000-10100000
e.g. http://api.godmc.org.uk/v0.1/assoc_meta/range/snp/10:10000000-10100000
/v0.1/assoc_meta/gene/<attribute>/<gene>
Note: this is a bit slow due to database, needs to be improved
e.g. http://api.godmc.org.uk/v0.1/assoc_meta/gene/cpg/A1BG
e.g. http://api.godmc.org.uk/v0.1/assoc_meta/gene/snp/A1BG
/v0.1/list/gene
e.g. http://api.godmc.org.uk/v0.1/list/gene
/v0.1/info/<attribute>/<item>
e.g. http://api.godmc.org.uk/v0.1/info/cpg/cg26866020
e.g. http://api.godmc.org.uk/v0.1/info/gene/A1BG
e.g. http://api.godmc.org.uk/v0.1/info/rsid/rs234
e.g. http://api.godmc.org.uk/v0.1/info/snp/chr7:105561135:SNP
There is a limit to the length of a URL, so if you want to extract a large list of SNPs then we need to post the query details through a file. This can be done through curl
e.g. using:
curl -i -H "Content-Type: application/json" -X POST -d @test.json http://api.godmc.org.uk/v0.1/query
Here we are posting the test.json
file that contains the details of the query. Examples below
Query multiple SNPs, test.json
:
{
"snps": ["chr10:100003302:SNP", "chr10:99954538:INDEL", "chr10:99981275:SNP"]
}
Query multiple rsids, test.json
:
{
"rsids": ["rs6602381", "rs72828459", "rs234"]
}
Query multiple CpGs, test.json
:
{
"cpgs": ["cg14380065", "cg12715136"]
}
Query mQTLs for rsids and CpGs, (i.e. get all results where an mQTL contains a SNP and a CpG specified in the lists), test.json
:
{
"rsids": ["rs6602381", "rs72828459", "rs234"],
"cpgs": ["cg14380065", "cg12715136"]
}
As in the third example but set p-value threshold, only return cis effects, return only clumped rows, and specify which columns to return, test.json
:
{
"cpgs": ["cg02518338", "cg12715136"],
"pval": 1e-10,
"cistrans": "cis",
"clumped": 1,
"columns": "pval, cpg, cistrans, clumped"
}
Note that if the clumped
and cistrans
fields are not set then no filtering is done. If clumped = 0
then only the unclumped results are returned. If cistrans = ""
then both cis and trans results are returned. Similarly, if the pval
field is not set then no filter is applied.
You can access the data through GET
methods, as demonstrated in the following example:
if(!require(jsonlite)){
install.packages("jsonlite")
}
library(jsonlite)
mqtl_data <- fromJSON("http://api.godmc.org.uk/v0.1/assoc_meta/cpg/cg17242362")
i.e. you are just getting JSON downloads from the URL. You can also run more complex queries following the POST
format:
if(!require(httr)){
install.packages("httr")
}
if(!require(dplyr)){
install.packages("dplyr")
}
library(httr)
library(dplyr)
query <- list(
cpgs = c("cg02518338", "cg12715136"),
pval = 1e-10,
clumped = 1
)
res <- POST("http://api.godmc.org.uk/v0.1/query", body = query, encode = "json")
content(res) %>% lapply(., as_data_frame) %>% bind_rows