2017-02-26 3 views
1

이것은 약간의 특정 질문이지만, 누군가는 전에 이것을 했어야합니다. pubmed에서 최신 논문을 얻고 싶습니다. 특정 주제에 관한 논문이 아니라 모든 주제. 내가 수정 날짜 (mdat)에 따라 쿼리를 생각. biopython.py를 사용하고 내 코드는 다음과 같습니다.pubmed에서 최신 논문을 얻는 방법

handle = Entrez.egquery(mindate='2015/01/10',maxdate='2017/02/19',datetype='mdat') 
results = Entrez.read(handle) 
for row in results["eGQueryResult"]: 
     if row["DbName"]=="nuccore": 
      print(row["Count"]) 

그러나 결과적으로 용지가 없습니다. term = 'cancer'를 추가하면 문서의 힙이 생깁니다. 검색어에 검색어라는 키워드가 필요한 것 같습니다.하지만 특정 주제에 대한 논문이 아닌 모든 논문을 원합니다. 어떤 아이디어가 이것을 어떻게? 감사 칼

답변

2

termrequired parameter이다, 그래서 당신은 Entrez.egquery로 호출을 생략 할 수 없습니다. 당신은 지정된 기간 내의 모든 서류가 필요한 경우

, 당신은 아마 a local copy of MEDLINE and PubMed Central이 필요합니다 MEDLINE에 대한

, 이것은 license을 받고 포함한다. PubMed Central의 경우 은 ftp에 의해 오픈 액 세스 하위 집합을 라이센스없이 다운로드 할 수 있습니다.

+0

봐요 ... 감사 참조에 대한 많은 .. – carl

3

이것은 엉터리이며, 나는 의견을 듣고 싶습니다. 그러나 최신 pubmed id가 최신 종이 (같은 것이 확실하지 않습니다)와 같은 아이디어가있는 코드입니다. 기본적으로 최신 PMID에 대한 이진 검색을 수행 한 후 가장 최근에 n의 목록을 제공합니다. 이것은 날짜를 보지 않으며, 단지 PMID를 반환하기 때문에 적절한 답이라고는 확신 할 수 없지만 어쩌면 그 생각을 적용 할 수 있습니다.

CODE :

import urllib2 

def pmid_exists(pmid): 
    url_stem = 'https://www.ncbi.nlm.nih.gov/pubmed/' 
    query = url_stem+str(pmid) 
    try: 
     request = urllib2.urlopen(query) 
     return True 
    except urllib2.HTTPError: 
     return False 


def get_latest_pmid(max_exists = 27239557, min_missing = -1): 
    #print max_exists,'-->',min_missing 
    if abs(min_missing-max_exists) <= 1: 
     return max_exists 

    guess = (max_exists+min_missing)/2 
    if min_missing == -1: 
     guess = 2*max_exists 

    if pmid_exists(guess): 
     return get_latest_pmid(guess, min_missing) 
    else: 
     return get_latest_pmid(max_exists, guess) 

#Start of program 
if __name__ == '__main__': 
    n = 5 
    latest_pmid = get_latest_pmid() 
    most_recent_n_pmids = range(latest_pmid-n, latest_pmid) 
    print most_recent_n_pmids 

출력 :

[28245638, 28245639, 28245640, 28245641, 28245642] 
+0

너무 감사합니다 ... 정말 그들이 가지고있는 생각했을 것이다 pubmed에서 일부 일괄 다운로드 ... 최신 기사에 관심이있는 사람들이 있어야합니까? 이 일을하는 표준 방법이 없다고 나는 믿을 수 없다. – carl

관련 문제