PubMed Parser-это библиотека Python для анализа подмножества PubMed Open-Access (OA), репозитории Medline XML и утилиты программирования Entrez (E-UTILS). Он использует библиотеку lxml для разбора этой информации в словарь Python, который можно легко использовать для исследований, например, в конвейере и трубопроводах обработки естественного языка.
Для получения дополнительной информации для получения дополнительной информации для получения дополнительной информации для получения доступных API и подробностей о наборе данных, пожалуйста, смотрите нашу страницу вики или страницу документации. Ниже мы перечислим некоторые основные фонариальности и примеры кода.
path предоставляемый для функции, может быть пути к сжатому или несжатому XML -файлу. Мы предоставляем примеры файлов в папке data . Ниже мы перечислим доступных анализаторов из pubmed_parser .
Мы создали простой анализатор для подмножества PubMed Open Access, где вы можете дать XML -путь или строку для функции, называемой parse_pubmed_xml , которая вернет словарь со следующей информацией:
full_title : название статьиabstract : Аннотацияjournal : название журналаpmid : PubMed IDpmc : PubMed Central Iddoi : doi статьиpublisher_id : Идентификатор издателяauthor_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 : Список предметов, перечисленных в статье, разделенной Semicolon. Иногда он содержит только тип статьи, такой как исследовательская статья, обзор и т. Д. import pubmed_parser as pp
dict_out = pp . parse_pubmed_xml ( path ) Функция parse_pubmed_references будет обрабатывать PubMed Open Access File XML -файл и вернет список PMIDS, которые он цитирует. У каждого словаря есть ключи следующим образом
pmid : PubMed ID статьиpmc : PubMed Central Id статьиarticle_title : название цитируемой статьиjournal : название журналаjournal_type : тип журналаpmid_cited : PubMed ID статьи, в которой цитирует статьяdoi_cited : doi статьи в этой статье цитируетyear : Год публикации, как он появляется в ссылке (может включать в себя буквенную суффикс, 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 : ссылочный идентификатор для рисунка (используйте для ссылки в статье 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 : список справочного кода в этом параграфе. Эти идентификаторы могут сливаться с выводами от 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 : Lable of the Tabletable_columns : список имени столбцаtable_values : список значений внутри таблицыtable_xml : Raw XML -текст таблицы (return, если return_xml=True ) dicts_out = pp . parse_pubmed_table ( 'data/medline16n0902.xml.gz' , return_xml = False ) Medline XML имеет другой формат XML, чем PubMed Open Access. Структура XML -файлов можно найти в DTD Medline/PubMed. Вы можете использовать функцию parse_medline_xml для анализа этого формата. Эта функция вернет список словарей, где каждый элемент содержит:
pmid : PubMed IDpmc : PubMed Central Iddoi : doiother_id : другие идентификаторы найдены, каждая из которых разделен ;title : Название статьиabstract : Аннотация статьиauthors : авторы, каждый из которых разделен ;mesh_terms : список терминов сетки с соответствующим идентификатором сетки, каждый из которых разделен ; например 'D000161:Acoustic Stimulation; D000328:Adult; ...publication_types : список списка типов публикации каждый разделен ; например 'D016428:Journal Article'keywords : список ключевых слов, каждый из которых разделен ;chemical_list : список химических терминов, каждый из которых разделен ;pubdate : дата публикации. По умолчанию только в год информации.journal : Журнал данной статьиmedline_ta : это аббревиатура названия журналаnlm_unique_id : nlm уникальная идентификацияissn_linking : ISSN Связь, обычно используется для ссылки с набором данных Web of Sciencecountry : страна, извлеченная из области информационной информации журналаreference : строка PMID, каждая разделенная ; или список ссылок, сделанных в статьеdelete : Boolean, если False Mine Paper была обновлена, так что у вас может быть дваlanguages : Список языков, разделенный ;vernacular_title : народное название. По умолчанию пугать строку, когда не доступно.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 .
Используйте parse_grant_id , чтобы проанализировать идентификаторы грантов Medline из файла XML. Это вернет список словарей, каждый из которых содержит
pmid : PubMed IDgrant_id : идентификатор грантаgrant_acronym : аббревиатура грантаcountry : страна, где финансирование гранта отagency : грантовое агентство Если идентификатор гранта не найден, он не вернет None
Вы можете использовать PubMed Parser для анализа XML-файла из E-Outilities с использованием parse_xml_web . Для этой функции вы можете предоставить один 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 : doi статьиn_citations : количество цитат для данных статейpmc_cited : Список PMC, которые цитируют заданный PMC dict_out = pp . parse_citation_web ( doc_id , id_type = 'PMC' ) Функция parse_outgoing_citation_web позволяет получить статьи, которые цитирует данной статьей, с учетом идентификатора PubMed или PubMed Central Id. Это вернет словарь, который содержит следующие ключи
n_citations : количество цитируемых статейdoc_id : идентификатор документаid_type : тип данного идентификатора. Либо 'PMID' или 'PMC'pmid_cited : Список PMIDS, цитируемый статьей 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' }Это фрагмент для разбора всех PubMed Open Access Semble с использованием Pyspark 2.1
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Смотрите папку Scripts для получения дополнительной информации.
и участники
Если вы используете PubMed Parser, пожалуйста, укажите его от JOSS следующим образом
Achakulvisut et al., (2020). PubMed Parser: анализатор Python для PubMed Open-Access XML-подмножество и набор данных Medline XML XML. Журнал программного обеспечения с открытым исходным кодом, 5 (46), 1979, https://doi.org/10.21105/joss.01979
или используя бибтек
@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 Parser. Вы можете создавать проблемы GitHub для обсуждения вопросов или вопросов, связанных с репозиторием. Мы предлагаем вам прочитать наши рекомендательные принципы перед созданием проблем, отчетность об ошибках или внесение вклада в репозиторий.
Этот пакет разработан в лаборатории Конрада Кординг в Университете Пенсильвании. Мы хотели бы поблагодарить рецензентов и редактор от Joss, включая tleonardi , timClicks и majensen . Они сделали наш репозиторий намного лучше!
Лицензия MIT Copyright (C) 2015-2020 Titipat Achakulvisut, Daniel E. Acuna