PubMed-Baseline-Daten mit Python parsen
Möchten Sie mehr als eine PubMed-Datei parsen? Siehe auch unseren Folgebeitrag Alle PubMed-Baseline-Dateien parallel mit Python parsen
PubMed bietet einen Daten-Dump mit Metadaten aller PubMed-Artikel auf den NCBI-Servern.
In diesem Beispiel parsen wir eine der komprimierten Metadaten-XML-Dateien mit der pubmed_parser-Python-Bibliothek.
Laden Sie zuerst eine der .xml.gz-Dateien herunter. Für dieses Beispiel verwenden wir pubmed20n0001.xml.gz.
Nun können wir die benötigten Bibliotheken installieren:
pip install git+git://github.com/titipata/pubmed_parser.git six numpyNun können Sie unser Skript herunterladen und ausführen. Für dieses Beispiel extrahieren wir eine Liste von MeSH-Begriffen für jeden Artikel und geben die PubMed-ID und eine Liste von MeSH-IDs aus.
#!/usr/bin/env python3
import pubmed_parser as pp
# Autoren und Referenzen für dieses Beispiel nicht parsen, da wir sie nicht benötigen
dat = pp.parse_medline_xml("pubmed20n0001.xml.gz", author_list=False, reference_list=False)
# PubMed-Einträge aus dieser Datei iterieren
for entry in dat:
# entry["mesh_terms"] ist wie "D000818:Animal; ..."
# In diesem Beispiel sind wir nur an der MeSH-ID interessiert, wie D000818.
# Die PubMed-ID ausgeben, gefolgt von einer Liste von MeSH-Begriffen.
print(entry["pmid"], [
term.partition(":")[0].strip() for term in entry["mesh_terms"].split(";")
])Die Ausführung dieses Skripts dauert auf meinem Notebook 13,3 Sekunden, was etwa 1,4 MByte gzip-komprimierten Eingabedaten pro Sekunde entspricht. Beim Ausführen des Skripts sehen Sie Zeilen wie
30957 ['D000319', 'D001794', 'D003864', 'D006801', 'D006973', 'D007676', 'D010869']was bedeutet, dass der PubMed-Artikel mit der ID 30957 die MeSH-Begriffe ['D000319', 'D001794', 'D003864', 'D006801', 'D006973', 'D007676', 'D010869'] hat.
Siehe die pubmed_parser-Dokumentation, oder probieren Sie es einfach interaktiv aus, um weitere Informationen darüber zu erhalten, welche Felder in den Einträgen verfügbar sind, die Sie iterieren können.