본문 바로가기
생물정보학/Tools

[dbSNP] dbSNP rest API 사용법 - rsID 로 chromosome position 찾기

by HanJoohyun 2017. 4. 26.
반응형



안녕하세요


한주현 입니다


오늘은 dbSNP의 restAPI 사용법에 대하여 포스팅해보겠습니다



ensembl 서버에 dbSNP rs Number를 보내서 JSON 형태로 받아오도록 하는 것으로


간단히 도식화 하면 다음과 같습니다




사용 방법

http://grch37.rest.ensembl.org/variation/human/rs116035550?content-type=application/json


붉은색 부분을 rs number로 교체하면 아래와 같이 json이 반환됩니다



{"source":"Variants (including SNPs and indels) imported from dbSNP","mappings":[{"location":"11:212464-212464","assembly_name":"GRCh37","end":212464,"seq_region_name":"11","strand":1,"coord_system":"chromosome","allele_string":"G/A/C","start":212464}],"name":"rs116035550","MAF":null,"ambiguity":"V","var_class":"SNP","synonyms":[],"evidence":["Frequency","1000Genomes","ESP","ExAC"],"ancestral_allele":"G","minor_allele":null,"most_severe_consequence":"missense_variant"}




참고로 json 뿐 만 아니라 XML, jsonp 형식으로도 반환 할 수 있습니다


자세한 설명은 아래 URL 을 참고해 주세요 ㅎㅎ


http://grch37.rest.ensembl.org/documentation/info/variation_id




반환 된 json을 가지고 코딩을 조금 해보면, rsID 로 chromosome position 을 쉽게 찾을 수 있습니다


json 을 반환된 것을 python 이나 HTML로 받아오려면 아래와 같이 해봅시다 ㅎㅎ 



Python으로 구현

## 소스코드

import sys
import urllib.request
import json

def readRSNumToJson(sRSNum):
    sURL = "http://grch37.rest.ensembl.org/variation/human/"+sRSNum+"?content-type=application/json"
    dRSNum = json.loads(urllib.request.urlopen(sURL).read().decode('utf-8'))
    return dRSNum
#end: def readRSNumToJson

if __name__ == "__main__":
    if len(sys.argv) != 2:
        print("#usage: python3",sys.argv[0],"<rs Number>")
        sys.exit()
    sRSNum = sys.argv[1]
    dRSNum = readRSNumToJson(sRSNum)
    print(dRSNum)
#end: if __name__

## 실행 예


$ python dbSNP.py rs116035550

{'name': 'rs116035550', 'ancestral_allele': 'G', 'source': 'Variants (including SNPs and indels) imported from dbSNP', 'synonyms': [], 'mappings': [{'strand': 1, 'start': 212464, 'location': '11:212464-212464', 'allele_string': 'G/A/C', 'assembly_name': 'GRCh37', 'coord_system': 'chromosome', 'seq_region_name': '11', 'end': 212464}], 'evidence': ['Frequency', '1000Genomes', 'ESP', 'ExAC'], 'most_severe_consequence': 'missense_variant', 'ambiguity': 'V', 'minor_allele': None, 'var_class': 'SNP', 'MAF': None}



웹 구현


var sURL = "http://grch37.rest.ensembl.org/variation/human/"+rsNum.rsNum+"?content-type=application/json";
console.log(sURL)

$.getJSON(sURL, function(data){
  console.log(data);


  console.log(data.mappings[0]);
  console.log(data.ancestral_allele);
  $("#checkResult").val(rsNum.rsNum+"   chr"+data.mappings[0].location+"   "+data.ancestral_allele);
});


HTML script 부분에 요렇게 코딩을 해주시면 됩니다


간단히 설명 드리자면, API 에 접근하여 jquery 로 만들었습니다


필요한 값들만 가져와서 찍는 걸로 ㅎㅎ



그럼 다음시간에 만나요~





반응형

댓글