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

[dbSNP] rsID 로 chromosome position, gene 찾기

by HanJoohyun 2017. 8. 4.
반응형





안녕하세요 한주현 입니다


개인유전체 시장이 열리면서 게놈 뿐만아니라 특정 위치의 알려진 변이를 나타내는 rsID를 생물정보학 분석가 뿐만 아니라 일반인들도 보실 기회가 점점 늘어 나고 있습니다


그런데 rsID 그 자체로는 "rs712829" 처럼 이것만 봐서는 무슨 의미인지 알 수가 없는데요,

그래서 rsID에서 의미를 찾아내는 포스팅을 시리즈로 작성하고 있습니다


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



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


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



출처: http://korbillgates.tistory.com/76 [생물정보학자의 블로그]

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



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


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



출처: http://korbillgates.tistory.com/76 [생물정보학자의 블로그]

첫 번째 시리즈는 지난 포스트에서 rsID 로 해당 chromosome의 position을 찾아내었는데요,

(해당 포스트: http://korbillgates.tistory.com/76 )


오늘은 rsID chromosome position에 맞는 gene을 얻는 방법을 소개해 드리겠습니다



방법

1. Ensembl API 를 사용하여 rsID 에 맞는 GRCh37 position을 찾습니다


2. Oncotator API 를 사용하여 Chromosome position에 해당하는 gene을 찾습니다




소스코드 - 파이썬3


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import sys
import urllib.request
import json
 
 
def readRSNumToEnsembl(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
 
def readPositionToOncotator(sPos):
    sChr = sPos.split(":")[0]
    sPos1 = sPos.split(":")[1].split("-")[0]
    sPos2 = sPos.split(":")[1].split("-")[1]
    sURL = "http://portals.broadinstitute.org/oncotator/genes/"+sChr+"_"+sPos1+"_"+sPos2
    dOncotator = json.loads(urllib.request.urlopen(sURL).read().decode('utf-8'))
    return dOncotator
#end: def readPositionToOncotator
 
def printResult(sPos, dOncotator):
    sGene = ""
    for s in dOncotator.keys():
        sGene += s
    print(sPos+" "+sGene)
#end: def printResult
 
if __name__ == "__main__":
    if len(sys.argv) != 2:
        print("#usage: python3",sys.argv[0],"<rs Number>")
        sys.exit()
    sRSNum = sys.argv[1]
    dRSNum = readRSNumToEnsembl(sRSNum)
    sPos = dRSNum['mappings'][0]['location']
    dOncotator = readPositionToOncotator(sPos)
    printResult(sPos, dOncotator)
#end: if __name__
 
cs



실행 예

$ python rsIDtoGene_GRCh37.py rs712829
7:55086755-55086755 EGFR


rsID에 해당하는 chromosome position과 gene이 잘 찍혀서 나오는군요 ㅎㅎ


그럼 다음 시간에 만나요~




반응형

댓글