인간 변이의 HGVS 표현의 변환(vep api)
변이 HGVS가 나타내는 상호 변환
지금까지 인간 게놈 변이의 HGVS 변환을 위해 시도변종 HGVS 표현의 상호 변환(Ensembl variant recorder)와변형 HGVS 표현의 변환(Pythn hgvs) 등
그러나 간편하다는 점에서vepapi를 이용할 수 없을 것 같습니다
vep restiful api를 이용한 variant recorder
변종 HGVS 표현의 상호 변환(Ensembl variant recorder)의 선택할 수 있는 지정과 통일하기 위해pythn을 사용하여 다음 코드를 제작합니다
Python의 Requests 모듈을 미리 설치하십시오
variant_recoder_rest.pyimport argparse
import json
import requests
server_grch37 = "https://grch37.rest.ensembl.org"
server_grch38 = "https://rest.ensembl.org"
variant_recoder_human = "/variant_recoder/human"
def variant_recoder(input_data, grch37, pretty):
server = server_grch38 if not grch37 else server_grch37
api_url = server + variant_recoder_human + '/' + input_data
result = requests.get(api_url, headers={"Content-Type": "application/json"})
if result.status_code != requests.codes.ok:
header = result.headers
ratelimit_remaining = int(header['X-RateLimit-Remaining'])
if ratelimit_remaining == 0:
print("You are not allowed to submit any request.")
raise ValueError(
"You've reached the rate limit of api. Please wait {} seconds.".format(header['X-RateLimit-Reset']))
raise ValueError(result.text)
if pretty:
print(json.dumps(result.json(), indent=4))
else:
print(json.dumps(result.json()))
def parse_args():
parser = argparse.ArgumentParser(description='vep recoder with ensembl vep API.')
parser.add_argument('--input_data', nargs=1, required=True,
help='hgvs string to convert')
parser.add_argument('--grch37', action='store_true',
help='Set genome version to GRCh37. (Default version is GRCh38)')
parser.add_argument('--pretty', action='store_true', help="Prettify JSON result")
return parser.parse_args()
if __name__ == "__main__":
args = parse_args()
input_data = args.input_data[0]
grch37 = args.grch37
pretty = args.pretty
variant_recoder(input_data=input_data, grch37=grch37, pretty=pretty)
Bug Fix(2019/12/18)
지난번에 똑같이 지정할 수 있는 옵션은 다음과 같다
옵션
설명
메모
--input_data
변환 원본 hgvs로 표시된 문자열
큰따옴표 또는 작은따옴표로 구분
--grch37
인간 유전자 그룹 지정 버전
지정하지 않은 경우 GRRCh38(hg38) 사용
--pretty
JSON 태그의 성형 표현 보기
GRCh37을 통해 가져오기
변이의 hgvs는'NM'을 나타낸다000603.4: c.894T>G에서 변환 결과 얻기$ python variant_recoder_rest.py \
--input_data 'NM_000603.4:c.894T>G' \
--grch37 \
--pretty
결과는 다음과 같다.[
{
"hgvsp": [
"ENSP00000297494.3:p.Asp298Glu",
"ENSP00000417143.1:p.Asp92Glu",
"ENSP00000420551.1:p.Asp298Glu",
"ENSP00000420215.1:p.Asp298Glu",
"NP_000594.2:p.Asp298Glu",
"NP_001153581.1:p.Asp298Glu",
"NP_001153582.1:p.Asp298Glu",
"NP_001153583.1:p.Asp298Glu"
],
"id": [
"rs1799983",
"CM981388"
],
"hgvsg": [
"NC_000007.13:g.150696111T>G"
],
"hgvsc": [
"ENST00000297494.3:c.894T>G",
"ENST00000461406.1:c.276T>G",
"ENST00000467517.1:c.894T>G",
"ENST00000484524.1:c.894T>G",
"NM_000603.4:c.894T>G",
"NM_001160109.1:c.894T>G",
"NM_001160110.1:c.894T>G",
"NM_001160111.1:c.894T>G"
],
"input": "NM_000603.4:c.894T>G"
}
]
GRRCh38을 통해 가져오기
--grch37
옵션을 생략한 상태에서 GRRCh38에서 변환 결과를 출력합니다.$ python variant_recoder_rest.py \
--input_data 'NM_000603.4:c.894T>G' \
--pretty
[
{
"hgvsc": [
"ENST00000297494.7:c.894T>G",
"ENST00000461406.5:c.276T>G",
"ENST00000467517.1:c.894T>G",
"ENST00000484524.5:c.894T>G",
"NM_000603.4:c.894T>G",
"NM_001160109.1:c.894T>G",
"NM_001160110.1:c.894T>G",
"NM_001160111.1:c.894T>G"
],
"input": "NM_000603.4:c.894T>G",
"hgvsp": [
"ENSP00000297494.3:p.Asp298Glu",
"ENSP00000417143.1:p.Asp92Glu",
"ENSP00000420551.1:p.Asp298Glu",
"ENSP00000420215.1:p.Asp298Glu",
"cds46555.1:p.Asp298Glu",
"cds46558.1:p.Asp298Glu",
"cds46557.1:p.Asp298Glu",
"cds46556.1:p.Asp298Glu"
],
"hgvsg": [
"NC_000007.14:g.150999023T>G"
],
"id": [
"rs1799983",
"CM981388"
]
}
]
hgvsg의 결과를 보면
import argparse
import json
import requests
server_grch37 = "https://grch37.rest.ensembl.org"
server_grch38 = "https://rest.ensembl.org"
variant_recoder_human = "/variant_recoder/human"
def variant_recoder(input_data, grch37, pretty):
server = server_grch38 if not grch37 else server_grch37
api_url = server + variant_recoder_human + '/' + input_data
result = requests.get(api_url, headers={"Content-Type": "application/json"})
if result.status_code != requests.codes.ok:
header = result.headers
ratelimit_remaining = int(header['X-RateLimit-Remaining'])
if ratelimit_remaining == 0:
print("You are not allowed to submit any request.")
raise ValueError(
"You've reached the rate limit of api. Please wait {} seconds.".format(header['X-RateLimit-Reset']))
raise ValueError(result.text)
if pretty:
print(json.dumps(result.json(), indent=4))
else:
print(json.dumps(result.json()))
def parse_args():
parser = argparse.ArgumentParser(description='vep recoder with ensembl vep API.')
parser.add_argument('--input_data', nargs=1, required=True,
help='hgvs string to convert')
parser.add_argument('--grch37', action='store_true',
help='Set genome version to GRCh37. (Default version is GRCh38)')
parser.add_argument('--pretty', action='store_true', help="Prettify JSON result")
return parser.parse_args()
if __name__ == "__main__":
args = parse_args()
input_data = args.input_data[0]
grch37 = args.grch37
pretty = args.pretty
variant_recoder(input_data=input_data, grch37=grch37, pretty=pretty)
$ python variant_recoder_rest.py \
--input_data 'NM_000603.4:c.894T>G' \
--grch37 \
--pretty
[
{
"hgvsp": [
"ENSP00000297494.3:p.Asp298Glu",
"ENSP00000417143.1:p.Asp92Glu",
"ENSP00000420551.1:p.Asp298Glu",
"ENSP00000420215.1:p.Asp298Glu",
"NP_000594.2:p.Asp298Glu",
"NP_001153581.1:p.Asp298Glu",
"NP_001153582.1:p.Asp298Glu",
"NP_001153583.1:p.Asp298Glu"
],
"id": [
"rs1799983",
"CM981388"
],
"hgvsg": [
"NC_000007.13:g.150696111T>G"
],
"hgvsc": [
"ENST00000297494.3:c.894T>G",
"ENST00000461406.1:c.276T>G",
"ENST00000467517.1:c.894T>G",
"ENST00000484524.1:c.894T>G",
"NM_000603.4:c.894T>G",
"NM_001160109.1:c.894T>G",
"NM_001160110.1:c.894T>G",
"NM_001160111.1:c.894T>G"
],
"input": "NM_000603.4:c.894T>G"
}
]
$ python variant_recoder_rest.py \
--input_data 'NM_000603.4:c.894T>G' \
--pretty
[
{
"hgvsc": [
"ENST00000297494.7:c.894T>G",
"ENST00000461406.5:c.276T>G",
"ENST00000467517.1:c.894T>G",
"ENST00000484524.5:c.894T>G",
"NM_000603.4:c.894T>G",
"NM_001160109.1:c.894T>G",
"NM_001160110.1:c.894T>G",
"NM_001160111.1:c.894T>G"
],
"input": "NM_000603.4:c.894T>G",
"hgvsp": [
"ENSP00000297494.3:p.Asp298Glu",
"ENSP00000417143.1:p.Asp92Glu",
"ENSP00000420551.1:p.Asp298Glu",
"ENSP00000420215.1:p.Asp298Glu",
"cds46555.1:p.Asp298Glu",
"cds46558.1:p.Asp298Glu",
"cds46557.1:p.Asp298Glu",
"cds46556.1:p.Asp298Glu"
],
"hgvsg": [
"NC_000007.14:g.150999023T>G"
],
"id": [
"rs1799983",
"CM981388"
]
}
]
단위 시간 요구의 제한
Ensembl API를 사용하여 시간당 사용 제한 설정
일반적으로 최대 3600초 동안 55000회이므로 제한에 도달하지 않을 수 있습니다. 그러나 제한에 도달하면 몇 초 동안 기다려야 복구할 수 있는 정보를 표시하는 것은 잘못된 것입니다.
이번엔 여기까지
Reference
이 문제에 관하여(인간 변이의 HGVS 표현의 변환(vep api)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/percipere/items/7dcc714a57161c5dc0b4
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(인간 변이의 HGVS 표현의 변환(vep api)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/percipere/items/7dcc714a57161c5dc0b4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)