(<-)

[../SwissProt]

[../]

[../GenBank]

(->)

Chap 3.3 PubMed

3.3.1 PubMed로 query 보내기

당신이 medical field 나 humna issue 에 관심이 있다면, (설사 그렇지 않다 할지라도) PubMed (http://www.ncbi.nlm.nih.gov/PubMed/) 는 모든 종류의 유익한 것들의 excellent source 이다. 다른 것들과 마찬가지로, 우리는 python script 안에서 그것을 쓰고, information을 얻고 싶다.

PubMed를 Biopython 으로 query 하는 것은 극히 편하다. Orchid (난초)에 대한 모든 article 의 ID를 얻기 위해서 해야 할 것은 단지 다음의 3 line 의 code 이다.

from Bio.Medline import PubMed
search_term = 'orchid'
orchid_ids = PubMed.search_for(search_term)

이것은 모든 orchid ID를 포함한 python list를 돌려준다.

['11070358', '11064040', '11028023', '10947239', '10938351', '10936520', 
'10905611', '10899814', '10856762', '10854740', '10758893', '10716342', 
...

이 ID 의 list를 가지고 우리는 record를 retrieving을 시작할 준비가 되었다. 그러므로 다음 section 으로 진행하라.

3.3.2 PubMed record 의 retrieving

바로 전의 section 은 article ID 의 다발을 어떻게 얻는가를 기술하였다. 이제 우리는 그것들을 가지고 있다. 우리는 명백하게 해당되는 Medline 의 record를 얻고 그것들로부터 information을 추출하기를 원한다.

PubMed 로부터 records를 retrieving 하는 interface 는 python programmer 들에게 매우 직관적이다. 그것은 python dictionary 의 model 이다. 이 interface를 set up 하기 위해서, 우리가 retrieve 한 결과를 parse 할 parser를 setup 할 필요가 있다. 아래의 code 가 모든 것을 set up 되게 한다.

from Bio.Medline import PubMed
from Bio import Medline

rec_parser = Medline.RecordParser()
medline_dict = PubMed.Dictionary(parser = rec_parser)

우리가 한 것은 medline_dict 라는 dictionary object를 생성한 것이다. Article을 얻기 위해서 우리는 medline_dict[id_to_get] 같은 식으로 access 한다. 이것이 하는 것은 PubMed 와 연결해서, 요청된 article을 가지고 얻어서, 그것을 record object 로 parsing 해서 돌려줄 것이다. 멋지다!

이제 어떤 ID 에 관한 정보들을 print 하기 위해서 이 멋진 dictionary를 어떻게 쓰는지를 보자. 우리는 단지 우리의 ID 에 대한 loop를 필요로 한다. (전 section 의 orchid_ids) 그리고 우리가 관심있는 정보를 print out 한다.

for id in orchid_ids[0:5]:
    cur_record = medline_dict[id]
    print 'title:', string.rstrip(cur_record.title)
    print 'authors:', cur_record.authors
    print 'source:', string.strip(cur_record.source)
    print

(역자주 : 이 code 만으로는 error 납니다. import string을 먼저 해 줘야지 error 가 나지 않습니다.)

이것에 대한 output 은 이와 같을 것이다.

title: Sex pheromone mimicry in the early spider orchid (ophrys sphegodes):
patterns of hydrocarbons as the key mechanism for pollination by sexual
deception [In Process Citation]
authors: ['Schiestl FP', 'Ayasse M', 'Paulus HF', 'Lofstedt C', 'Hansson BS', 
'Ibarra F', 'Francke W']
source: J Comp Physiol [A] 2000 Jun;186(6):567-74

특별히 주목할 재미있는 것은 list of authors 이다. 이것은 standard python list 로 반환된다. 이것은 standard python tool을 사용해서 다루고 찾는 것을 쉽게 만든다. 예를 들어, 우리는 다음의 code 로 모든 entry에 대한 loop를 통해서 특정 author를 찾을 수 있다.

search_author = 'Waits T'

for id in our_id_list:
    cur_record = medline_dict[id]
    
    if search_author in cur_record.authors:
        print "Author %s found: %s" % (search_author, string.strip(cur_record.source))

(역자주 : 이 code에서 our_id_list를 orchid_ids[:] 같은 식으로 바꿔 줘야 합니다.)

PubMed 와 Medline interface 는 매우 성숙하고 쓰기에 멋진다. 아마도 이 section 은 interface 의 power 에 대한 개념과 그것들이 어떻게 사용되어지는지를 보여주었을 것이다.

BioPythonTutorial/CookBook/PubMed (last edited 2011-08-03 11:01:11 by localhost)

web biohackers.net