Эффективное получение идентификаторов из PubMed

В настоящее время я работаю над поиском прямых связей между цитированием в PubMed/MEDLINE и регистрацией клинических испытаний. В частности, учитывая один PMID, я хочу найти все идентификаторы цитирования в любом реестре клинических испытаний. (Например, см. PMID 29593018 с идентификатором ACTRN12616000470493)

В настоящее время я ищу только ссылки на ClinicalTrials.gov (форма идентификатора: NCT, за которым следует 8-значный номер (например, NCT01435343)) с использованием следующего регулярного выражения:

attributes = {'mdTitle': 'High-dose versus standard-dose amoxicillin/clavulanate for clinically-diagnosed acute bacterial sinusitis: A randomized clinical trial.', 'mdAbstract': 'BACKGROUND: The recommended treatment for acute bacterial sinusitis in adults, amoxicillin with clavulanate, provides only modest benefit. OBJECTIVE: To see if a higher dose of amoxicillin will lead to more rapid improvement. DESIGN, SETTING, AND PARTICIPANTS: Double-blind randomized trial in which, from November 2014 through February 2017, we enrolled 315 adult outpatients diagnosed with acute sinusitis in accordance with Infectious Disease Society of America guidelines. INTERVENTIONS: Standard-dose (SD) immediate-release (IR) amoxicillin/clavulanate 875 /125 mg (n = 159) vs. high-dose (HD) (n = 156). The original HD formulation, 2000 mg of extended-release (ER) amoxicillin with 125 mg of IR clavulanate twice a day, became unavailable half way through the study. The IRB then approved a revised protocol after patient 180 to provide 1750 mg of IR amoxicillin twice a day in the HD formulation and to compare Time Period 1 (ER) with Time Period 2 (IR). MAIN MEASURE: The primary outcome was the percentage in each group reporting a major improvement-defined as a global assessment of sinusitis symptoms as "a lot better" or "no symptoms"-after 3 days of treatment. KEY RESULTS: Major improvement after 3 days was reported during Period 1 by 38.8% of ER HD versus 37.9% of SD patients (P = 0.91) and during Period 2 by 52.4% of IR HD versus 34.4% of SD patients, an effect size of 18% (95% CI 0.75 to 35%, P = 0.04). No significant differences in efficacy were seen at Day 10. The major side effect, severe diarrhea at Day 3, was reported during Period 1 by 7.4% of HD and 5.7% of SD patients (P = 0.66) and during Period 2 by 15.8% of HD and 4.8% of SD patients (P = 0.048). CONCLUSIONS: Adults with clinically diagnosed acute bacterial sinusitis were more likely to improve rapidly when treated with IR HD than with SD but not when treated with ER HD. They were also more likely to suffer severe diarrhea. Further study is needed to confirm these findings. TRIAL REGISTRATION: ClinicalTrials.gov Identifier: NCT02340000.', 'mdMesh': '', 'mdPMID': '29738561', 'mdPublicationType': ['Journal Article'], 'mdAuthor': ['Matho A', 'Mulqueen M', 'Tanino M', 'Quidort A', 'Cheung J', 'Pollard J', 'Rodriguez J', 'Swamy S', 'Tayler B', 'Garrison G', 'Ata A', 'Sorum P'], 'mdDataPublished': '2018', 'mdPMC': '', 'mdSI': ['ClinicalTrials.gov/NCT02340000'], 'mdAID': ['10.1371/journal.pone.0196734 [doi]', 'PONE-D-17-43190 [pii]'], 'mdDOI': ['10.1371/journal.pone.0196734 [doi]', 'PONE-D-17-43190 [pii]'], 'mdSO': 'PLoS One. 2018 May 8;13(5):e0196734. doi: 10.1371/journal.pone.0196734. eCollection 2018.', 'mdLanguage': ['English']}

dictString = ', '.join("{!s}={!r}".format(key,val) for (key,val) in attributes.items())
for each in dictString.split(' '):
    if re.match(r'(NCT)\d{8}', each):
        print (each.strip('.\','))

Однако PubMed/MEDLINE также содержит 40 других регистрационных идентификаторов клинических испытаний. Я также хочу получить эти идентификаторы. Как я могу сделать это более эффективно, чем писать еще 40 операторов регулярных выражений?

Примечание. Чтобы уточнить, мне нужно идентифицировать каждый идентификатор и тело каждого идентификатора. (например, ClinicalTrials.Gov для NCT01435343 или Реестр клинических испытаний Австралии и Новой Зеландии для ACTRN12616000470493)


person jdoe    schedule 10.05.2018    source источник


Ответы (1)


Я не просматривал кучу, чтобы узнать, применяется ли один и тот же шаблон, но если они всегда следуют за текстом, который говорит «ПРОБНЫЙ РЕГИСТРАЦИОННЫЙ НОМЕР:» внутри тегов html <h4>, вы можете проанализировать фактический документ html на наличие тегов <h4>, содержащих этот термин, тогда взять текст из следующего абзаца в тегах <p>. BeautifulSoup делает это относительно простым.

Но опять же, вы показали только один пример. Я не знаю, всегда ли он следует этому шаблону или нет. Оттуда они кажутся разделенными точкой с запятой, что легко разделить.

person Arthur Dent    schedule 10.05.2018