본문 바로가기
실용적인프로그래밍/R

[R] KEGGREST package

by 인포메틱스 2020. 10. 6.
반응형

KEGG는 일본에서 만든 pathway관련 데이터 베이스입니다.

 

www.genome.jp/kegg/

 

KEGG: Kyoto Encyclopedia of Genes and Genomes

 

www.genome.jp

위 사이트를 가시게 되면 연구되고 있고, 알려져 있는 대부분의 pathway를 잘 정리를 해놓았습니다.


pathway에 대해 모르시는 분들도 있을 것 같아. 간단하게 설명을 하면

 

생물체는 공장이라고 생각하시면 됩니다.  어떤 공장이든 특정 부분을 담당하는 기계 혹은 사람들이 있습니다.

 

그들 자체를 pathway라고 생각하시면 됩니다.

 

반복되는 일을 특정 사람, 기계가 하는 것이죠.

 

그리고 일이 시작되는 앞 혹은 뒤에서 일을 멈추거나 밀리게 되면, 알아서 쉬거나 혹은 다른 일을 찾는 일까지 가능하죠.

 

Glycosylphosphatidylnositol pathway (kegg에서 대충 아무거나 따옴)


  이러한 pathway에 대한 정보나 혹은 질병에 대한 정보, 약물에 대한 정보들을 잘 정리해 놓은 곳이 KEGG입니다.

 

 그렇기 때문에 KEGG는 다양한 분야에서 사용이 가능합니다.

 

 내가 찾은 특이한 발현을 하는 유전자들이 어떤 pathway에 속하는지, 내가 연구하는 약물들이 어떤 pathway에 속하는지 같은 일들을 할 수가 있죠.

 

 KEGG를 활용하기 위해서는 여러가지 방법이 있습니다.  KEGG FTP를 이용하여 데이터들을 모두 다운받을 수가 있고, 혹은 KEGG에서 제공되는 API를 이용하여 나온 R package를 이용하는 방법이 있습니다. (고게 바로 KEGGREST !)

 

 컴중알(컴퓨터 중간정도 앎)들은 이러한 KEGGREST같은 package를 이용하는 것을 추천드립니다.

 

자 일단 설치를 해봅시다. 이 package의 경우  Bioconductor를 통해서 다운이 됩니다.

 

예전에는 source('http://bioconductor.org/biocLite.R')이용해서 진행을 하였지만 최근에 바뀌었더군요. 아주 쉽게!!

 

KEGGREST package는 아주 기본적인 정보들을 가지고 올 수 있습니다.

 

BiocManager::install('KEGGREST')
library('KEGGREST')
kegg_db<-keggList('organism')
View(kegg_db)

 keggList를 통해 KEGG에서 어떤 데이터 베이스들이 있는지 확인이 가능합니다. (인간이나 쥐를 제외하고 대부분 자료가 제한적입니다.)

 

 

그리고 해당 organism에서 확인할 수 있는 자료들 리스트를 확인해보자면 listDatabases를 이용하면 됩니다.

listDatabases()
 [1] "pathway"  "brite"    "module"   "ko"       "genome"   "vg"       "ag"       "compound"
 [9] "glycan"   "reaction" "rclass"   "enzyme"   "disease"  "drug"     "dgroup"   "environ" 
[17] "genes"    "ligand"   "kegg"    
kegg_pathway<-keggList('pathway') # pathway이름 id확인
kegg_drug<-keggList('drug') # 약물 이름 id확인
kegg_genome<-keggList('genome') # 약물 이름 id확인
kegg_enzyme<-keggList('enzyme') # enzyme 이름 id확인
kegg_disease<-keggList('disease') # 질병 이름 id확인
kegg_compound<-keggList('compound') # 화합물 이름 id확인

 

keggList를 이용해서 kegg에서 공개한 데이터 id를 확인합니다. 만약에 없을 경우 아래와 같은 에러가 만들어집니다.

 

Error in .getUrl(url, .listParser, nameColumn = 1, valueColumn = 2) : 
  Bad Request (HTTP 400).

 

각 pathway, drug, disease에 대한 kegg id를 확인을 했다면, 관련 정보들을 가져오기 위하여 keggGet이라는 function을 이용합니다.

 

pathway1<-keggGet(names(kegg_pathway)[1])
drug1<-keggGet(names(kegg_drug)[1])
genome1<-keggGet(names(kegg_genome)[1])
enzyme1<-keggGet(names(kegg_enzyme)[1])
disease1<-keggGet(names(kegg_disease)[1])
compound1<-keggGet(names(kegg_compound)[1])

 

keggGet안에 kegg id를 추가하면 관련 정보들을 받을 수가 있습니다.

 

사람에 대한 정보들을 확인하고 싶을 경우 다음과 같이 진행하면 됩니다.

 

kegg_pathway<-keggList('pathway','hsa')
pathway1<-keggGet(names(kegg_pathway)[1])
pathway1[[1]]$GENE # 유전자 이름, id
pathway1[[1]]$DISEASE # pathway관련 질병
pathway1[[1]]$DRUG # pathway관련 약물
pathway1[[1]]$COMPOUND # pathway관련 화합물

 

유전자들의 경우 Gene symbol ; full name + Entez id 로 되어있습니다.

 

Gene<-pathway1[[1]]$GENE
Gene<-Gene[-seq(from=1,to=length(Gene),by=2)] # Gene symbol 이용시
library(stringr)
Gene<-str_split_fixed(Gene,';',2)[,1]

Gene<-Gene[seq(from=1,to=length(Gene),by=2)] # Entrez id 이용시

 

Drug에 대한 정보를 얻고 싶으면, 다음과 같이 진행하면 됩니다.

 

Drug<-pathway1[[1]]$DRUG
Drug_id=paste0('dr:',Drug[1])
Drug_info<-keggGet(Drug_id)

 


오늘은 여기까지 진행을 하도록 하겠습니다.

 

KEGGREST를 통해서 pathway에 대한 정보들을 확인할 수가 있고, 관련 약물, 화합물등의 정보들도 추가로 확인할 수가 있습니다.

 

 다음 포스팅은 pathview라는 package를 진행하겠습니다.

 

pathview package의 경우 pathway에 속한 유전자들의 발현률을 이용하여 그림으로 표현이 가능한 package입니다.

 

 


유용하셨거나, 잘 보셧다면 주변 광고 한번씩만 클릭 부탁드립니다! 감사합니다!

728x90
반응형

댓글