PubMed Parser는 PubMed Open-Access (OA) 서브 세트, Medline XML 리포지토리 및 Entrez 프로그래밍 유틸리티 (E-Etils)를 구문 분석하기위한 파이썬 라이브러리입니다. lxml 라이브러리를 사용 하여이 정보를 텍스트 마이닝 및 자연어 처리 파이프 라인과 같이 연구에 쉽게 사용할 수있는 Python 사전으로 구문 분석합니다.
사용 가능한 API 및 데이터 세트에 대한 자세한 내용은 Wiki 페이지 또는 문서 페이지를 참조하십시오. 다음은 핵심 기능 및 코드 예제 중 일부를 나열합니다.
path 압축 또는 압축되지 않은 XML 파일로가는 경로 일 수 있습니다. data 폴더에 예제 파일을 제공합니다. 아래에는 pubmed_parser 에서 사용 가능한 파서를 나열합니다.
PubMed Open Access 서브 세트 용 간단한 구문 분석기를 만들었습니다. 여기서 XML 경로 또는 문자열을 parse_pubmed_xml 이라는 기능에 제공 할 수있는 다음 정보로 사전을 반환 할 수 있습니다.
full_title : 기사 제목abstract : 초록journal : 저널 이름pmid : PubMed IDpmc : PubMed Central IDdoi : 기사의 doipublisher_id : 게시자 IDauthor_list : 다음 형식의 제휴 키가있는 저자 목록 [[ 'last_name_1' , 'first_name_1' , 'aff_key_1' ],
[ 'last_name_1' , 'first_name_1' , 'aff_key_2' ],
[ 'last_name_2' , 'first_name_2' , 'aff_key_1' ], ...]affiliation_list : 다음 형식의 제휴 키 및 제휴 문자열 목록 [[ 'aff_key_1' , 'affiliation_1' ],
[ 'aff_key_2' , 'affiliation_2' ], ...]publication_year : 출판 연도subjects : 세미콜론에 의해 분리 된 기사에 나열된 주제 목록. 때로는 연구 기사, 검토 절차 등과 같은 기사의 유형 만 포함됩니다. import pubmed_parser as pp
dict_out = pp . parse_pubmed_xml ( path ) parse_pubmed_references 함수는 PubMed Open Access XML 파일을 처리하고 인용 된 PMID 목록을 반환합니다. 각 사전에는 다음과 같이 키가 있습니다
pmid : 기사의 PubMed IDpmc : 기사의 PubMed Central IDarticle_title : 인용 된 기사 제목journal : 저널 이름journal_type : 저널 유형pmid_cited : 기사가 인용 한 기사의 PubMed IDdoi_cited : 기사가 인용 한 기사의 doiyear : 참조에 나타나는 출판 연도 (문자 접미사, EG2007A 포함) dicts_out = pp . parse_pubmed_references ( path ) # return list of dictionary 함수 parse_pubmed_caption 함수는 주어진 경로에서 XML 파일로 이미지 캡션을 구문 분석 할 수 있습니다. 실제 이미지를 다시 참조 할 수있는 참조 인덱스를 반환합니다. 함수는 다음 키가있는 사전 목록을 반환합니다.
pmid : PubMed IDpmc : PubMed Central IDfig_caption : 캡션 문자열fig_id : 그림에 대한 참조 ID (XML 기사 참조 사용)fig_label : 그림의 레이블graphic_ref : PubMed OA에서 제공 한 이미지 파일 이름에 대한 참조 dicts_out = pp . parse_pubmed_caption ( path ) # return list of dictionary 인용을 둘러싼 텍스트를 구문 분석하는 데 관심이있는 사람의 경우 도서관은 해당 기능을 제공합니다. parse_pubmed_paragraph 사용하여 텍스트를 구문 분석하고 pmids를 참조 할 수 있습니다. 이 기능은 사전 목록을 반환합니다. 여기서 각 항목은 다음 키가 있습니다.
pmid : PubMed IDpmc : PubMed Central IDtext : 단락의 전문reference_ids : 해당 단락 내에서 참조 코드 목록. 이 ID는 parse_pubmed_references 의 출력과 병합 될 수 있습니다.
section : 단락 섹션 (예 : 배경, 토론, 부록 등) dicts_out = pp . parse_pubmed_paragraph ( 'data/6605965a.nxml' , all_paragraph = False ) parse_pubmed_table 사용하여 XML 파일에서 테이블을 구문 분석 할 수 있습니다. 이 기능은 각각 키가있는 사전 목록을 반환합니다.
pmid : PubMed IDpmc : PubMed Central IDcaption : 테이블의 캡션label : 테이블의 labletable_columns : 열 이름 목록table_values : 테이블 내부의 값 목록table_xml : 테이블의 RAW XML 텍스트 ( return_xml=True 인 경우 return) dicts_out = pp . parse_pubmed_table ( 'data/medline16n0902.xml.gz' , return_xml = False ) Medline XML은 PubMed Open Access와 다른 XML 형식을 가지고 있습니다. XML 파일의 구조는 Medline/PubMed DTD에서 찾을 수 있습니다. parse_medline_xml 함수를 사용하여 해당 형식을 구문 분석 할 수 있습니다. 이 함수는 각 요소가 포함 된 사전 목록을 반환합니다.
pmid : PubMed IDpmc : PubMed Central IDdoi : doiother_id : 각각 분리 된 기타 ID가 발견되었습니다 ;title : 기사 제목abstract : 기사의 초록authors : 저자, 각각 분리 된 ;mesh_terms : 해당 메쉬 ID가있는 메쉬 항의 목록, 각각 분리 ; 예를 들어 'D000161:Acoustic Stimulation; D000328:Adult; ...publication_types : 각각 분리 된 출판 유형 목록 목록 ; 예 : 'D016428:Journal Article'keywords : 각각 분리 된 키워드 목록 ;chemical_list : 각각 분리 된 화학 용어 목록 ;pubdate : 출판 날짜. 기본값은 연도 정보 전용입니다.journal : 주어진 논문의 저널medline_ta : 이것은 저널 이름의 약어입니다nlm_unique_id : NLM 고유 식별issn_linking : ISSN LINGAGE, 일반적으로 Web of Science 데이터 세트와 연결하는 데 사용됩니다.country : 저널 정보 분야에서 추출 된 국가reference : 각각 분리 된 pMID 문자열 ; 또는 기사에 대한 참조 목록delete : False 가 종이를 업데이트 한 경우 부울languages : 구분 된 언어 목록 ;vernacular_title : Vernacular 제목. 불가능할 때마다 기본값이 빈 문자열로 표시됩니다.같은 용지의 XML. 삭제 된 용지의 레코드가 업데이트되었으므로 삭제할 수 있습니다.
dicts_out = pp . parse_medline_xml ( 'data/medline16n0902.xml.gz' ,
year_info_only = False ,
nlm_category = False ,
author_list = False ,
reference_list = False ) # return list of dictionary PubDate에서 월과 일의 정보를 추출하려면 year_info_only=True 설정하십시오. 또한 구문 분석 구조화 된 초록을 허용하며 nlm_category 인수를 변경하여 각 섹션 또는 레이블의 표시를 제어 할 수 있습니다.
XML 파일에서 Medline Grant ID를 구문 분석하려면 parse_grant_id 사용하십시오. 이것은 각각 포함 된 사전 목록을 반환합니다
pmid : PubMed IDgrant_id : grant idgrant_acronym : 보조금의 약어country : 보조금 자금 지원 국가agency : Grant Agency 보조금 ID가 없으면 반환되지 None
PubMed Parser를 사용하여 parse_xml_web 사용하여 e-utilities에서 XML 파일을 구문 분석 할 수 있습니다. 이 기능의 경우 단일 pmid 입력으로 제공하고 다음 키로 사전을 얻을 수 있습니다.
title : 제목abstract : 초록journal : 저널affiliation : 첫 번째 저자의 제휴authors : 분리 된 저자의 문자열 ;year : 출판 연도keywords : 기사의 키워드 또는 메쉬 용어 dict_out = pp . parse_xml_web ( pmid , save_xml = False ) parse_citation_web 함수를 사용하면 주어진 PubMed ID 또는 PubMed Central ID에 인용을받을 수 있습니다. 이것은 다음 키가 포함 된 사전을 반환합니다.
pmc : PubMed Central IDpmid : PubMed IDdoi : 기사의 doin_citations : 주어진 기사에 대한 인용 수pmc_cited : 주어진 PMC를 인용하는 PMC 목록 dict_out = pp . parse_citation_web ( doc_id , id_type = 'PMC' ) parse_outgoing_citation_web 함수를 사용하면 PubMed ID 또는 PubMed Central ID가 주어지면 주어진 기사가 인용 한 기사를 얻을 수 있습니다. 이것은 다음 키가 포함 된 사전을 반환합니다.
n_citations : 인용 된 기사 수doc_id : 주어진 문서 식별자id_type : 주어진 식별자 유형. 'PMID' 또는 'PMC' 중 하나pmid_cited : 기사에서 인용 한 PMID 목록 dict_out = pp . parse_outgoing_citation_web ( doc_id , id_type = 'PMID' ) 식별자는 문자열로 전달되어야합니다. PubMed Central ID는 기본적이며 'PMC' 접두사 없이 문자열로 전달되어야합니다. 인용이 발견되지 않았거나 표시된 데이터베이스에서 doc_id 와 일치하는 기사가 없으면 None 반환하지 않습니다.
저장소에서 직접 패키지의 가장 많은 업데이트 버전을 설치할 수 있습니다.
pip install git+https://github.com/titipata/pubmed_parser.git또는 PYPI 사용으로 최근 릴리스를 설치하십시오
pip install pubmed-parser 또는 저장소를 복제하고 pip 사용하여 설치하십시오
git clone https://github.com/titipata/pubmed_parser
pip install ./pubmed_parser 리포지토리의 루트에서 pytest --cov=pubmed_parser tests/ --verbose 실행하여 설치를 테스트 할 수 있습니다.
예제 사용은 다음과 같이 표시됩니다
import pubmed_parser as pp
path_xml = pp . list_xml_path ( 'data' ) # list all xml paths under directory
pubmed_dict = pp . parse_pubmed_xml ( path_xml [ 0 ]) # dictionary output
print ( pubmed_dict )
{ 'abstract' : u"Background Despite identical genotypes and ..." ,
'affiliation_list' :
[[ 'I1' : 'Department of Biological Sciences, ...' ],
[ 'I2' : 'Biology Department, Queens College, and the Graduate Center ...' ]],
'author_list' :
[[ 'Dennehy' , 'John J' , 'I1' ],
[ 'Dennehy' , 'John J' , 'I2' ],
[ 'Wang' , 'Ing-Nang' , 'I1' ]],
'full_title' : u'Factors influencing lysis time stochasticity in bacteriophage u03bb ' ,
'journal' : 'BMC Microbiology' ,
'pmc' : '3166277' ,
'pmid' : '21810267' ,
'publication_year' : '2011' ,
'publisher_id' : '1471-2180-11-174' ,
'subjects' : 'Research Article' }Pyspark 2.1을 사용하여 모든 PubMed Open Access 서브 세트를 구문 분석하는 스 니펫입니다.
import os
import pubmed_parser as pp
from pyspark . sql import Row
path_all = pp . list_xml_path ( '/path/to/xml/folder/' )
path_rdd = spark . sparkContext . parallelize ( path_all , numSlices = 10000 )
parse_results_rdd = path_rdd . map ( lambda x : Row ( file_name = os . path . basename ( x ),
** pp . parse_pubmed_xml ( x )))
pubmed_oa_df = parse_results_rdd . toDF () # Spark dataframe
pubmed_oa_df_sel = pubmed_oa_df [[ 'full_title' , 'abstract' , 'doi' ,
'file_name' , 'pmc' , 'pmid' ,
'publication_year' , 'publisher_id' ,
'journal' , 'subjects' ]] # select columns
pubmed_oa_df_sel . write . parquet ( 'pubmed_oa.parquet' , mode = 'overwrite' ) # write dataframe자세한 내용은 스크립트 폴더를 참조하십시오.
그리고 기고자들
PubMed Parser를 사용하는 경우 다음과 같이 Joss에서 인용하십시오.
Achakulvisut et al., (2020). PubMed Parser : PubMed Open-Access XML 서브 세트 및 Medline XML 데이터 세트 XML 데이터 세트 용 Python Parser. 오픈 소스 소프트웨어 저널, 5 (46), 1979, https://doi.org/10.21105/joss.01979
또는 Bibtex 사용
@article{Achakulvisut2020,
doi = {10.21105/joss.01979},
url = {https://doi.org/10.21105/joss.01979},
year = {2020},
publisher = {The Open Journal},
volume = {5},
number = {46},
pages = {1979},
author = {Titipat Achakulvisut and Daniel Acuna and Konrad Kording},
title = {Pubmed Parser: A Python Parser for PubMed Open-Access XML Subset and MEDLINE XML Dataset XML Dataset},
journal = {Journal of Open Source Software}
}
우리는 PubMed 파서를 향상시키고 싶은 사람의 기여를 환영합니다. 저장소와 관련된 질문이나 문제를 논의하기 위해 GitHub 문제를 만들 수 있습니다. 문제를 만들기 전에 기고 가이드 라인을 읽거나 버그를보고하거나 리포지토리에 기여하기 전에 기여한 가이드 라인을 읽는 것이 좋습니다.
이 패키지는 펜실베이니아 대학교의 Konrad Kording의 실험실에서 개발되었습니다. 우리는 tleonardi , timClicks 및 majensen 포함한 Joss의 검토 자와 편집자에게 감사의 말씀을 전합니다. 그들은 우리의 저장소를 훨씬 더 좋게 만들었습니다!
MIT 라이센스 저작권 (C) 2015-2020 Titipat Achakulvisut, Daniel E. Acuna