Die Datenbanken des US-Zentrums für Biotechnologieinformation per SOAP und PHP elegant remote abfragen

Remote abgefragt
Kommentare

„In der Wissenschaft gleichen wir alle nur den Kindern, die am Rande des Wissens hier und da einen Kiesel aufheben, während sich der weite Ozean des Unbekannten vor unseren Augen erstreckt.; Diese Worte sprach Sir Isaac Newton vor fast 300 Jahren, und noch immer versuchen wir, das Unbekannte zu ergründen und wissen oft gar nicht, was bekannt und was unbekannt ist. Im biomedizinischen Bereich steht mit der PubMed, der größten frei zugänglichen Literaturdatenbank in diesem Umfeld, eine wunderbare Navigationshilfe zur Verfügung.

Wer in der Wissenschaft überleben möchte, lernt am besten schnell die Regeln der Zunft: „Publish or perish“ also „publiziere oder gehe unter“, denn nur allzu oft werden Fördermittel für Arbeitsgruppen danach bemessen, wo und wie viel eine entsprechende Arbeitsgruppe oder Person veröffentlich hat. Publizieren heißt nun aber nicht nur, dass man einfach seine Forschungsergebnisse mal kurz niederschreibt und einem Verlag zum Veröffentlichen anbietet, sondern man muss in dem Artikel auch zeigen, dass man sich zum einen mit der Materie auseinander gesetzt hat und zum anderen in der Lage ist, aufzuzeigen, wie sich das zu präsentierende Ergebnis in den Gesamtkontext des Forschungsfeldes einordnen lässt. Dazu wird erwartet, dass man die einschlägige Literatur kennt und zu zitieren weiß. Heutzutage wäre dies ohne Literaturdatenbanken wie zum Beispiel die PubMed ein fast hoffnungsloses Unterfangen; denn für jedes Fachgebiet gibt es eine große Vielzahl von Zeitschriften. Ferner entziehen sich diverse Artikel dem Zielpublikum dadurch, dass hier fachspezifische Artikel in fachfremden Zeitschriften veröffentlich werden, wie das Beispiel zeigt, in dem ein Artikel zum Thema „text-mining techniques“ in der Zeitschrift Drug Discovery Today [2] veröffentlicht wurde.

17 Millionen Zeitschriftenartikel

Um in diesem Dschungel aus Autoren, Titeln und Zeitschriften den Überblick zu behalten, wurde 1991 erstmals von der National Library of Medicine eine CD-Rom vertrieben, auf der Daten von Nukleotidsequenzen, Gendaten und Literaturdaten aus dem kommerziellen Produkt MEDLINE enthalten waren. Die Medline-Datenbank entspricht in gedruckter Form dem Index Medicus und dient heute noch der Indexierung der Artikel. Damals entstand das Entrez-System, ein textbasiertes Such- und Retrievalsystem für verschiedene Datenbanken des National Center for Biotechnology Information. Mit der Zeit wurde das kostenpflichtige MEDLINE-System mehr und mehr in das freie und per Internet zugängliche PubMed-System integriert. Inzwischen umfasst der Fundus der PubMed mehr als 17 Millionen Artikel, aus über 5.100 Zeitschriften, wobei der Bereich Biologie und Medizin sehr weit gesteckt ist, und man durchaus auch Zeitschriften aus dem Sektor Informatik, Physik, Chemie, Ingenieurwesen etc. findet. Dabei verweisen 1.100.000 Datensätze der PubMed auf frei zugängliche Volltexte (abrufbar über PubMed Central), welche im Rahmen von Open Access publiziert worden sind.

Nur etwas für Wissenschaftler?

Zu den Benutzern dieser Literaturdatenbanken zählen dabei nicht nur Wissenschaftler, Ärzte oder Studenten verschiedener Disziplinen. Inzwischen nutzen immer häufiger auch Patienten diese Quelle, um sich über die aktuellen Ergebnisse medizinischer Forschung und Behandlungen zu informieren und behandelnde Ärzte mit peinlichem Faktenwissen über aktuelle Studien zu konfrontieren.

Wissenschaftliches, Kurioses und anderes aus der PubMed

(Je nachdem, welche Kollektion Ihre Bibliothek abonniert hat, kommen Sie vielleicht auch an den Volltext heran.)

Jansz J, Tanis M. Appeal of playing online First Person Shooter Games. Cyberpsychol Behav. 2007 Feb;10(1):133-6. PMID: 17305460

Hasan M, Talukder MA, Islam K, Mustafa MF, Rahman MA. A case report of drinking glass in rectum. Mymensingh Med J. 2006 Jan;15(1):96-8., PMID: 16467772

Troxel MT, Poppenga RH. Kentucky Coffee Tree intoxication in a dog with cerebellovestibular signs, bradycardia, hypotension, and hypoglycemia. J Vet Intern Med. 2005 Jul-Aug;19(4):599-601 PMID: 16095181

Chadwick SJ, Dudley HA. Can malt whisky be discriminated from blended whisky? The proof. A modification of Sir Ronald Fisher’s hypothetical tea tasting experiment. Br Med J (Clin Res Ed). 1983 Dec 24-31;287(6409):1912-5. PMID: 6418270

Vom Suchen und Finden der Liebe

Unabhängig davon, ob man remote auf die Daten der PubMed zugreift oder per URL-kodiertem Link, oder ob man direkt auf der Weboberfläche arbeitet – wer Daten von der PubMed abrufen möchte, muss zuvor eine Suchanfrage senden. Dabei ist es am einfachsten, nur einen Term einzugeben und dieser wird dann über diverse Felder gesucht. Im Gegensatz zu Google und Co. liegen die Daten in der Literaturdatenbank (ähnlich wie in Bibliothekskatalogen) gut strukturiert vor, und so kann man sich bei einer Suche genau diese Struktur zum Einschränken der Suchergebnisse zunutze machen. Häufig bekommt man bei unspezifischen Suchanfragen hunderte oder tausende von Treffern zurück. Um also die Treffermenge weiter einzugrenzen, benutzt man bestimmte Tags in dem Suchanfrageterm und kann diese auch durch Boolesche Logikoperatoren wie OR oder AND miteinander verknüpfen. Als Beispiel: Der Term love ohne Einschränkung sucht über allen Feldern, wohingegen love[ti] das Wort love im Titel von Artikel sucht und love[au] gibt alle Autoren aus, die mit Nachnamen Love heißen.In der Tabelle Die wichtigsten Sucheinschränkungen bei PubMed sind die wichtigsten Suchtags aufgeführt.

Die wichtigsten Sucheinschränkungen bei PubMed
All Fields [ALL]
Author [AU]
Entrez Date [EDAT]
Journal Title [TA]
Language [LA]
MeSH Terms [MH]
Title [TI]
Title/Abstract [TIAB]
UID [PMID]
Filter loall[sb] – Link auf LinkOut-Objekt free full text[sb] – Link auf einen freien Volltext full text[sb] – Link auf einen Volltext
Strukturierte Daten – ein Eldorado

Mit dem Heranwachsen der freien Literaturdatenbank PubMed siedelten sich auch mehr und mehr Projekte rund um diese Daten an, denn nun gab es einen ausreichend großen Fundus an Daten, mit dem man arbeiten und experimentieren konnte. Dabei erweist sich die textuelle Zusammenfassung (Abstrakt), die für die meisten Artikel existiert, als wahres Paradies für Data Miner und Textverarbeiter. Endlich war es mit dieser umfassenden und strukturierten Datengrundlage möglich, Algorithmen zu entwickeln, welche Artikel automatisch klassifizieren, semantische Netze aufzuspannen oder neue Such- und Rankingalgorithmen zu testen. Die Struktur der Daten lässt sich ungefähr ermessen, wenn man einen Blick in den Kasten Das Rückgabeformat wirft.

Das Rückgabeformat

Allen voran steht folgendes: [„PubmedArticleSet“][„PubmedArticle“][„0“][„MedlineCitation“] Dann die einzelnen Einträge – hier ein stark gekürzter Auszug:  [„PMID“]=15980569  [„DateCreated“][„Year“]=2005  [„DateCreated“][„Month“]=06  [„DateCreated“][„Day;]=27  [„Article“][„Journal“][„ISSN“][„IssnType“]=Electronic  [„Article“][„Journal“][„ISSN“][„_“]=1362-4962  [„Article“][„Journal“][„JournalIssue“][„Issue“]=Web Server issue  [„Article“][„Journal“][„JournalIssue“][„PubDate“][„Year“]=2005  [„Article“][„Abstract“][„AbstractText“]= The growing amount of information resulting from the increasing number of publicly growing […]   [„Article“][„Affiliation“]=Bielefeld University, …  [„Article“][„AuthorList“][„Author“][„0“][„LastName“]=Goesmann  [„Article“][„AuthorList“][„CompleteYN“]=Y  [„Article“][„Language“]=eng  [„MeshHeadingList“][„MeshHeading“][„0“][„DescriptorName“][„MajorTopicYN“]=N  [„MeshHeadingList“][„MeshHeading“][„0“][„DescriptorName“][„_“]=Bacterial Proteins  [„0“][„PubmedData“][„PublicationStatus“]=ppublish  [„0“][„PubmedData“][„ArticleIdList“][„ArticleId“][„0“][„IdType“]=pii  … Diese Ausgabe eines Ergebnisses mit stark verschachtelten Arrays und Objekten wurde mit der in der Klasse entrez_eutils_soap zur Verfügung stehenden Methode print_rr realisiert. Als besonderer Hinweis sei die DOI erwähnt, mit der man den Link zum Volltext des Artikels bekommt. In diesem Fall wäre das http://dx.doi.org/10.1093/nar/gki400

SOAP oder NuSOAP

Lange Zeit konnte man nur über CGI-Programme ferngesteuert auf die Daten zugreifen. Dabei wurde dann als Suchergebnis eine XML-Datei zurückgeliefert, und es war einem selber überlassen, diese zu verarbeiten. Seit einiger Zeit steht auch eine SOAP-Schnittstelle zu diesem Dienst zur Verfügung, welche den Zugriff erheblich vereinfacht. Dabei sind SOAP-Schnittstellen im Bereich der Bioinformatik nichts Außergewöhnliches, wie dieser Link zeigt.

Das Problem SOAP und PHP4 wurde schon sehr früh von dem freien Paket NuSOAP, welches PHP um eine SOAP-Klasse erweiterte, gelöst (siehe auch [10]). Mit PHP5 kam dann eine einkompilierte Erweiterung (Extension) hinzu, die voraussetzt, dass das PHP5-Programm mit -enable-soap übersetzt wird und die libxml-2.5.4 eingebunden ist. Bei der Windows-Version muss man beherzt in der php.ini die Zeile php_soap.dll im Bereich Extensions auskommentieren. Die Funktion php_info gewährt einem Einblick, ob SOAP auf dem System verfügbar ist. Um diese Engstelle der verschiedenen Versionen zu umgehen, wurde der Programmcode der hier vorgestellten Klasse so entwickelt, dass er sowohl mit PHP in der 4er als auch in der 5er Version (mit oder ohne SOAP-Erweiterung) ohne Änderung am Klassencode ablauffähig ist.

Eine Klasse für sich

Wird beim Ablauf des Programms festgestellt, dass keine eingebaute SOAP-Erweiterung zur Verfügung steht, wird die NuSOAP-Bibliothek geladen und verwendet, dabei muss diese vorher einmalig von hier installiert werden. Der Benutzer muss sich dann nicht darum kümmern, was auf seinem System eingerichtet ist, denn dies wird zur Laufzeit ermittelt und verwendet. Dabei muss die entrez_eutils_soap-Klasse nicht nur die unterschiedlichen SOAP-Funktionsaufrufe handhaben, sondern auch das zurückkommende Ergebnis: NuSOAP gibt ein komplett aus assoziativen Arrays geformtes Ergebnis zurück, wohingegen die PHP5-SOAP-Erweiterung ein Gemisch aus assoziativen Arrays und Standardobjekten liefert. Die Klassenmethode _equalize() wandelt dies in ein reines assoziatives Array um und passt ein paar kleine Indexbenennungen an.

Mit dieser Grundlagenkonstruktion ist ein Maximum an Kompatibilität bei der Entwicklung von SOAP-Funktionen gewährleistet. Die search1-Funktion ist so parametrisiert, dass sie alle Datensätze bis zu dem Limit von 500 komplett abruft.

Wer diese entrez-Klasse in einem Projekt benutzen möchte, sollte in den Kopf der Klasse noch vor dem Produktiveinsatz eine Kontakt-E-Mail-Adresse und einen Projektnamen eintragen. Es hilft den Entwicklern am NCBI, Kontakt aufzunehmen und eventuelle Fehler besser und schneller beheben zu können. Ferner sollte man einmal geladene Datensätze lokal speichern, um einen schnelleren Zugriff bei einem erneuten Abruf zu gewährleisten.

beispiel.php
require_once('entrez_eutils.class.php');

$pubart = new entrez_dbs();

$result = $pubart -> searchPubmed("Malaria[ti] AND 2007[edat] AND free full text[sb]");
$pubart->print_rr($result);

$result = $pubart -> searchPubmed("Video Games[MH]");
$pubart->print_rr($result);
?>
Fazit

Wie die Datei beispiel.php zeigt, kann man sich mit der entrez_dbs-Klasse ganz auf die Weiterverarbeitung der Daten konzentrieren und kann sich von dem Gedanken „wie komme ich automatisiert an die Daten ran“ lösen. Dabei ist es unerheblich, ob man von der PubMed Literaturdaten, von PubMed-Central Artikel im Volltext oder Sequenzdaten aus der Proteindatenbank abruft.

Die Klassen entrez_eutils_soap und entrez_dbs – Schnittstellen zu den Datenbanken

Die Klasse entrez_dbs ist eine Erweiterung der Klasse entrez_eutils_soap und stellt exemplarisch drei Schnittstellen zu den einzelnen Datenbanken des NCBI her. Es existieren noch weitere Datenbanken am NCBI, die per SOAP zugänglich sind, wobei viele „nur“ für Bioinformatiker interessant sind. Jedoch kann man mit der vorgestellten SOAP-Schnittstelle und einer kleinen Ergänzung in der Klasse entrez_dbs auch hier elegant auf die Datensätze zugreifen. Beide Klassen können Sie übrigens auch der Heft-CD entnehmen.

Richtlinien für den Remotezugriff auf die Datenbanken der NCBI

Die Richtlinien sind nicht nur als Bitte zu verstehen, denn eine Missachtung kann auch dazu führen, dass die IP des Rechners für den Zugriff auf die Seiten der NCBI gesperrt wird. Falls die Absenderadresse dann die IP-Adresse eines Proxy-Servers ist, kann das mehr als peinlich werden, wenn ganze Abteilungen ausgeschlossen werden. Zwar hilft eine nette Mail an die Administratoren des NCBI, um die Sperre wieder zurücksetzen zu lassen, aber das lässt sich vermeiden, wenn man folgende Regeln einhält:

  • Skripte, die große Datenmengen oder Anfragen abrufen, sollten am Wochenende gestartet werden oder zwischen 21 Uhr und 5 Uhr (Amerikanischer Zeit) laufen
  • ;li>Alle 3 Sekunden nur eine Anfrage

  • Belegen der URL-Parameter email und tool, damit bei Problemen die Admins vom NCBI Kontakt aufnehmen können.
  • Falls der Dienst die Daten selber wiederum im Web zur Verfügung stellt, muss auf den NCBI-Disclaimer und das Copyright hingewiesen werden.
Glossar
COBRA Common Object Request Broker Architecture
DOI Digital Object Identifier
MEDLINE Medical Literature Analysis and Retrieval System Online
MeSH Mecial Subject Headings (Schlagwortkatalog)
NCBI National Center for Biotechnology Information
NHL National Library of Medicine
PMID, UID PubMed Identifier, Unified Identifer (eindeutige Nummer eines Datensatzes)
PMC PubMed Central (speichert Artikel vom Volltext)
SOAP Simple Object Access Protocol
WSDL Web Services Description Language
XML-RPC Extensible Markup Language Remote Procedure Call
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -