howto

바이오인포매틱스 웹서비스 살펴보기 - EMBL-EBI 서비스

hongiiv 2007. 10. 19. 09:10
반응형
바이오인포매틱스와 웹 서비스

분자생물학이나 바이오인포매틱스와 관련한 도구들이나 데이터베이스에 대한 웹 서비스는 꾸준히 늘어가고 있다. 대표적인 곳으로는 영국의 EMBL-EBI, 미국의 NCBI, 일본의 DDBJ와 PDBJ가 있으며, 그 외에도 연구소나 프로젝트별로 다양한 웹 서비스를 제공하고 있다.


주요 데이터 센터
  • EMBL-EBI, Cambridge, 영국 (http://www.ebi.ac.uk/Tools/webservices)
  • NCBI, 미국 (http://eutils.ncbi.nlm.nih.gov/entrez/query/static/esoap_help.html)
  • DDBJ, 일본 (http://xml.nig.ac.jp/index.html)
  • PDBJ, 일본 (http://pdbj.protein.osaka-u.ac.jp/SOAP)

소규모 연구소나 프로젝트
  • Kanehisa Laboratory, Kyoto, 일본 (http://www.genome.jp/kegg/soap/)
  • myGrid, Manchester, 영국 (http://phoebus.cs.man.ac.uk:8081/axis/)
  • University of Toronto, 캐나다 (http://soap.bind.ca/)
  • Broad Institute, Harvard/MIT, 미국 (http://www.broad.mit.edu/cancer/genecruiser/webServiceMain.jsp)
  • Genomics and Bioinformatics Group: Laboratory of Molecular Pharmacology, 미국 (http://discover.nci.nih.gov/gominer/goservice.jsp)
  • Virginia Bioinformatics Institute, 미국 (http://staff.vbi.vt.edu/pathport/services/)

EMBL-EBI

영국의 Hinxton에 위치한 EBI(European Bioinformatics Institute)는 EMBL(European Molecular Biology Laboratory, 유럽분자생물실험실)의 산하 기관으로 Bioinformatics에 관한 연구를 수행과 정보를 제공하고 있다. EBI에서는 EMBL DB, SWISS-PROT DB, PDB 등의 생물학 데이터베이스를 제고하고 있는데, 이러한 데이터베이스의 데이터를 검색(retrieval)하고 분석하기 위한 도구들을 웹 서비스로 제공하고 있으며, <표 1>은 EBI에서 제공하고 있는 웹 서비스 리스트로 이 외에도 많은 서비스들을 제공하고 있다.

표 1. EBI에서 제공하는 웹 서비스의 주요 서비스 목록
사용자 삽입 이미지

표 2. WSDbfecth로 검색 가능한 주요 데이터베이스
사용자 삽입 이미지

<리스트 1>은 WSDbfetch 서비스를 호출하는 Python 클라이언트로 uniprot 데이터베이스로부터 slpi_human에 대한 서열 정보를 raw 형태의 fasta 포맷으로 가져오는 코드이다. Python을 통해서 웹 서비스를 호출하기 위해서는 SOAPpy와 fpconst 패키지가 설치되어야 한다. 출력되는 결과는 raw 형태외에도 html 형태를 지원하고 있으며, fasta 포맷과 uniprot 고유 포맷을 지원하므로 인자를 바꾸어 가면서 호출해볼수 있다.


리스트 1. Python로 작성된 WSDbfetch 웹 서비스 클라이언트 (wsdbfetch.py)

      #!/opt/local/bin/python
      from SOAPpy import WSDL
      dbfetch = WSDL.Proxy("http://www.ebi.ac.uk/Tools/webservices/wsdl/WSDbfetch.wsdl")
      resultList = dbfetch.fetchData("uniprot:slpi_human","fasta","raw")
      for result in resultList:
       print result


리스트 2. WSDbfetch 웹 서비스 호출 결과

      # ./wsdbfetch.py
      >uniprot|P03973|SLPI_HUMAN Antileukoproteinase precursor (ALP) (Secretory leukocyte protease inhibitor) (HUSI-1) (Seminal proteinase inhibitor) (BLPI) (Mucus proteinase inhibitor) (MPI) (WAP four-disulfide core domain protein 4) (Protease inhibitor WAP4).
      MKSSGLFPFLVLLALGTLAPWAVEGSGKSFKAGVCPPKKSAQCLRYKKPECQSDWQCPGK
     KRCCPDTCGIKCLDPVDTPNPTRRKPGKCPVTYGQCLMLNPPNFCEMDGQCKRDLKCCMG
      MCGKSCVSPVKA

서열정렬(Sequence alignment)은 단백질 서열이나 핵산 서열 사이의 상관 관계를 나타내는 것으로 관심 대상의 서열과 유사성이 높은 서열을 찾아 그 서열의 기능을 유추하거나 관련되는 서열 사이의 진화적 연관성 같은 것을 예측하기 위해서 사용된다. 이러한 서열 정렬 방법에는 BLAST(The Basic Local Alignment Search Tool)나 FASTA 등의 프로그램들이 있다. BLAST 프로그램은 크게 <표 3>과 같이 질의 서열과 대상 데이터베이스에 따라 blastn, blastp, blastx,tblastn, tblastx로 구분된다.

표 3. BLAST 프로그램
사용자 삽입 이미지

<리스트 3>는 WSDbfetch의 결과로 가져온 단백질 서열에 대하여 Blast를 수행하는 코드로 데이터베이스는 단백질 데이터베이스인 SWISS-PROT, blastp 프로그램, 자신의 이메일주소를 인자로 사용한다. 실제 BLAST 작업을 수행하는 runNCBIBlast 메소드를 호출하면 해당 Blast 작업에 대한 job id를 할당 받게 된다. 추후 이 job id를 통해서 poll 메소드를 호출하여 해당 blast 작업의 결과를 가져올 수 있다.

표 4. WSNCBIBlast에서 사용 가능한 데이터베이스
사용자 삽입 이미지

리스트 3. Python으로 작성된 WSNCBIBlast 웹 서비스 클라이언트 (blast.py)

      #!/opt/local/bin/python

      import sys
      from SOAPpy import WSDL

      seq = ""
      dbfetch = WSDL.Proxy("http://www.ebi.ac.uk/Tools/webservices/wsdl/WSDbfetch.wsdl")
      dbfetch_resultList = dbfetch.fetchData("uniprot:slpi_human","fasta","raw")
      for dbfetch_result in dbfetch_resultList:
       seq = seq +  dbfetch_result +"\n"

      print seq

      blast_wsdUrl='http://www.ebi.ac.uk/Tools/webservices/wsdl/WSNCBIBlast.wsdl'
      server = WSDL.Proxy(blast_wsdUrl)

      blast_params = {'program':'blastp',
                     'database':'swissprot',
                     'email':'hongiiv@gmail.com',
                     'async':0}
      blast_data = [{'type':'sequence',
                    'content':seq}]
      jobid = server.runNCBIBlast(params=blast_params,content=blast_data)

      print jobid + "\n"

      sys.stdout.flush()
      result = server.poll(jobid,'tooloutput')

      print result
반응형