Bachelorarbeit V ISUALISIERUNG VON P ROTEIN -P ROTEIN I NTERAKTIONS -N ETZWERKEN Jens Pöthig Humboldt Universität zu Berlin Institut für Informatik 29. Juni 2009 1 Inhaltsverzeichnis 1 Einleitung 3 2 Grundlagen 2.1 Protein-Protein-Interaktionen . . . . 2.2 Datenquellen . . . . . . . . . . . . . 2.3 PPI Datenbank . . . . . . . . . . . . 2.4 Anwendungssoftware . . . . . . . . . 2.5 Netzwerkmetriken/Zentralitätsmaße . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4 4 5 6 8 3 Implementierung 3.1 Zielstellung der Arbeit . . . . . . . . 3.2 Voraussetzungen . . . . . . . . . . . 3.3 Komponenten . . . . . . . . . . . . . 3.4 Realisierung . . . . . . . . . . . . . . 3.4.1 Grafische Benutzeroberfläche 3.4.2 Controller . . . . . . . . . . . 3.4.3 Hilfskomponenten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 9 9 9 11 11 14 14 4 Ergebnisse 17 5 Ausblick 20 6 Verzeichnisse 22 A Anhang 24 A.1 SQL Anfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 A.2 R-Skript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 A.3 Verwendete Software . . . . . . . . . . . . . . . . . . . . . . . . . 25 2 1 Einleitung Neben den Nucleinsäuren, Polysacchariden und Lipiden gehören Proteine zu der wichtigsten Gruppe der organischen Biomoleküle und bilden einen integralen Bestandteil der in lebenden Organismen stattfindenden Prozesse[1]. Sie bestehen aus einer Sequenz von Aminosäuren, wobei die genaue Reihenfolge als Primärstruktur bezeichnet wird. Helix- und blattartige Verbindungen dieser Peptidketten bilden die Sekundärstruktur, räumliche Faltungen die Tertiärstruktur[2]. In Organismen erfüllen Proteine eine Vielzahl von Funktionen. Hierzu gehören unter anderem die enzymatische Katalyse (nahezu alle Enzyme sind Proteine, die die chemische Umsetzung von Stoffen in Organismen steuern), die Erzeugung und Übertragung von Nervenimpulsen (spezifische Reize von Nervenzellen werden durch Rezeptorproteine vermittelt) sowie die Kontrolle von Wachstum und Differenzierung (Proteine regeln die koordinierte und zeitlich abgestimmte Expression von Geninformationen). Die medizinische Forschung beschäftigt sich fortwährend mit der Entschlüsselung der Erbinformation einer Vielzahl von Lebewesen. Nach dem aktuellen Stand sind im menschlichen Organismus etwa 25000 Gene für die Kodierung von Proteinen verantwortlich[3]. Die Bioinformatik bietet eine Reihe von Möglichkeiten die Funktionen dieser Proteine vorherzusagen[4]. Das geschied zum Beispiel durch die Integration und Analyse von heterogenen Datenquellen (Genexpressionsdaten, Daten aus Text-Mining, Proteininteraktionsdaten), die RNA Strukturanalyse, sowie den Vergleich und die Klassifikation von 3D Proteinstrukturen unter Verwendung vielfältigster Algorithmen und Modelle. Neben der Analyse von DNA- und Aminosäure-Sequenzen sowie der Molekülstrukturanalyse (Folding) ist die Betrachtung von Protein - Protein - Interaktionsnetzwerken ein vielversprechender Forschungszweig[5, 6]. Da es die Technik ermöglicht in kürzester Zeit die Erbinformation verschiedener Spezies zu sequenzieren, wächst die dem wissenschaftlichen Umfeld zur Verfügung stehende Datenbasis stetig. Sind innerhalb einer Spezies Annotationen vorhanden, tragen Proteininteraktionsdaten entscheidend dazu bei, über Orthologien auf die Funktionen von Proteinen einer anderen Spezies zu schließen, die Annotationen zu übertragen und somit den Informationsgehalt zu steigern[7]. Die Erkenntnisse, die bei diesem Prozess gewonnen werden dienen vor allem dem tieferen Verständnis der äußerst komplexen biochemischen Vorgänge in Organismen und im Zuge dessen der anwendungsspezifischen Entwicklung von Medikamenten bzw. der Verfeinerung von neuartigen Therapiemöglichkeiten[8]. 3 2 2.1 Grundlagen Protein-Protein-Interaktionen Für die Steuerung nahezu aller biochemischen Prozesse in Organismen sind nachweislich Proteinkomplexe verantwortlich. Wenn sich also mehrere Proteine zu einem Komplex verbinden spricht man von Protein-Protein-Interaktion (PPI). Je nach Struktur und Art der Verbindungen haben die Komplexe direkte oder transiente Auswirkungen auf die zellulären Vorgänge. PPIs spielen eine entscheidende Rolle bei vielen bekannten Polypeptiden, wie das Hämoglobin oder auch die RNA Polymerase, komplexere Strukturen finden sich bei verschiedenen metabolischen Enzymen und dem DNA Replikationskomplex einiger Bakterien. PPIs können unterschiedliche Effekte hervorrufen. Zum einen werden die kinetischen Eigenschaften von Proteinen verändert, was eine Änderung der Substratbindung oder auch eine Modifizierung der katalytischen Eigenschaften mit sich zieht. Weiterhin bestimmen PPIs die Art und Weise des zellulären Metabolismus (substrate channeling). Andere Teile des Wirkungsspektrums von PPIs ist die Schaffung von Bindungsstellen auf biomolekularer Ebene (ADP/ATP Bindungen), oder auch die Inaktivierung anderer Proteine (Inhibitorwirkung). Die zur Bestimmung von Protein-Protein-Interaktionen verwendeten Verfahrenstechniken lassen sich in drei Hauptgruppen unterteilen. Es kommen biochemische, literaturbasierte und genetische Methoden zur Anwendung. Biochemische Ansätze beinhalten unter anderem die Protein Affinitäts Chromatographie oder auch das Cross-Linking. Zu den literaturbasierten Verfahren zählen das Protein Probing oder auch das Phage Display. Genetische Methoden nutzen zur Erforschung von PPIs Extragenic Suppressors oder auch Synthetic Lethal Effects. Insbesondere kann durch wissenschaftliche Analysen und Verfahren ein Wirkungszusammenhang zwischen Proteinen und Krankheiten hergestellt werden. Da PPIs von äußeren und inneren Faktoren beeinflusst werden ist die Erfassung und Beschreibung der Zusammenhänge ein an Bedeutung gewinnender Forschungszweig. 2.2 Datenquellen Durch die fortwährende Verbesserung der Sequenzierungstechniken der Erbinformation verschiedenster Spezies wächst die dem wissenschaftlichen Umfeld zur Verfügung stehende Datenbasis stetig. Erklärtes Ziel ist es, das immense Datenvolumen leicht abrufbar und dadurch besser handhabbar zu machen. Im Zuge dessen ist eine Vielzahl von Datenbanken entstanden, welche mehrere Verfahren zur Datenverarbeitung nutzen wodurch sie sich in Typ und Quantität der Annotationen unterscheiden und jeweils ihre eigenen Funktionsmerkmale besitzen. Die Verfahren sind unter anderem die manuelle Annotation durch fachkundige Datenbankkuratoren, Textmining von spezifischen Artikeln der wissenschaftlichen Literatur und auch die computergestützte Vorhersage von Annotationen. Diese Datenbanken stellen eine wertvolle Quelle für die systematische Analyse der molekularen Netzwerke dar. 4 Wichtige, öffentlich verfügbare Datenbanken sind unter anderem die Human Protein Reference Database (HPRD), welche neben experimentell ermittelten Annotationen auch Interaktionen mit Nukleinsäuren und kleinen Molekülen enthält. Die Molecular INTeraction Database (MINT) legt ein besonderes Augenmerk auf Proteininteraktionen von Säugetieren, beinhaltet unter anderem auch Nicht-Proteine und RNA Transcripts und stellt für jede Interaktion einen Konfidenzwert bereit. Die Biomolecular Interaction Network Database (BIND) klassifiziert die Einträge in 3 Kategorien: binäre molekulare Interaktionen, molekulare Komplexe und Pathways, wobei die Daten aus der Literatur gewonnen wurden. Ein Beispiel für die manuelle Datenbearbeitung durch die Kuratoren ist die vom munich information center for protein sequences stammende Datenbank MIPS, sowie die Database of Interacting Proteins (DIP). Die MIPS Datenbank stellt Interaktionsdaten von Säugetieren zur Verfügung, die der wissenschaftlichen Literatur entnommen sind. Wenn verfügbar, sind Daten zum Experimenttyp, Art der Interaktion und Bindungsregionen vorhanden. Weiterhin können Interaktionsdaten von der Biological General Repository for Interaction Datasets (BioGRID) Datenbank akquiriert werden. Hier sind PPIs von 6 verschiedenen Spezies erfasst, die sowohl mit high-throughput als auch gezielten Studien gewonnen wurden. 2.3 PPI Datenbank Im Rahmen dieser Forschungsarbeit ist eine MySQL Datenbank entstanden, die PPI-Netzwerkdaten von 7 verschiedenen Quellen (BIND1 , BioGRID2 , DIP3 , HPRD4 , IntAct5 , MINT6 und MIPS7 ) integriert um eine möglichst breite Informationsbasis zu schaffen. Folgende Spezies sind erfasst: Caenorhabditis elegans, Drosophila melanogaster, Homo sapiens, Mus musculus, Rattus norvegicus und Saccharomyces cerevisiae. Die Datenbank unterliegt einem fortwährenden Entwicklungsprozess und besteht im aktuellen Zustand aus 32 Tabellen. Wie in den Artikeln von Jäger und Leser beschrieben, soll in einem in der Arbeitsgruppe laufenden Projekt versucht werden, bisher unbekannte Funktionen von Proteinen mit einer sehr hohen Genauigkeit vorherzusagen und somit die Annotierung zu verbessern. Für die Bachelorarbeit liegt, wie in Abbildung 1 zu sehen, der Fokus zunächst auf nur 8 der 32 Tabellen, da hierdurch die integralen Bestandteile der ProteinProtein-Interaktionsnetzwerke modelliert werden. Die Proteintabelle liefert alle wichtigen Merkmale eines Proteins. Dazu gehören neben dem Proteinnamen auch die UniPROT Kennung sowie die GENE Id und weitere Attribute. Über den künstlichen Schlüsselwert „protein_id“ wird eine Verbindung zur Interaktionstabelle hergestellt. Hier sind neben den Interaktionspartnern auch Informationen zu der jeweiligen Interaktion vermerkt. So 1 http://www.bind.ca/ Biomolecular Interaction Network Database General Repository for Interaction Datasets 3 http://dip.doe-mbi.ucla.edu/ Database of Interacting Proteins 4 http://www.hprd.org/ Human Protein Reference Database 5 http://www.ebi.ac.uk/intact 6 http://mint.bio.uniroma2.it/ Molecular INTeraction database 7 http://mips.gsf.de/genre/proj/yeast/ munich information center for protein sequences 2 http://www.thebiogrid.org/ 5 Abbildung 1: Datenbankschema können zum Beispiel anhand des Attributs „disease_ppi“ diejenigen Interaktionen ausgemacht werden, welche mit einer Krankheit assoziiert sind. Über eine Fremdschlüsselbeziehung kann die entsprechende Datenbankquelle (z.B. BioGRID) bestimmt werden. Im Rahmen der Bachelorarbeit sind vor allem solche PPIs von Interesse, die mit Krankheiten in Beziehung stehen. So fungiert die Tabelle „gad_rel“ als Bindeglied um die Proteine mit den Daten der Tabelle „gad“ zu verbinden. GAD steht hier für die Genetic Association Database. Eine weitere Datenquelle für Informationen über Krankheitsbeziehungen ist die OMIM (Online Mendelian Inheritance in Man) Datenbank. So lassen sich über die „omim_rel“ Tabelle die Proteine mit den Phenotypbeschreibungen aus der „omim_disease“ Tabelle zusammenführen. Die „gad_omim“ Tabelle stellt ein Mapping zwischen den beiden Quellen her. 2.4 Anwendungssoftware Die wissenschaftliche Erforschung der biomolekularen Prozesse von Organismen erfordert die Verwendung geeigneter Werkzeuge, die die (Bio-)Informatik zur Verfügung stellen kann. So ergeben sich mehrere Anwendungsszenarien, bei denen Softwaretools zur Anwendung kommen. Neben der Software zur Akquirierung des Datenmaterials aus Experimenten, zur Aufbereitung für die Datenbanken und individueller Forschungssoftware wird auch universelle Software benötigt um den Datenbestand besser zu verstehen. Im wissenschaftlichen Umfeld hat sich hier vor allem das freie OpenSource Softwarepaket Cytoscape etabliert. Es bietet überaus vielfältige Visualisierungs-, Modellierungs- und Analysemöglichkeiten und eignet sich deshalb sehr gut zur Unterstützung des Forschungsprozesses. 6 Cytoscape ist in der Lage verschiedenste biomolekulare Interaktionsnetzwerke zu verarbeiten und eignet sich besonders gut für die Forschungsarbeit im Verbund mit großen Protein-Protein oder auch Protein-DNA Datenbanken. Die Visualisierung der Netzwerke kann auf Basis der zur Verfügung stehenden Attribute individualisiert werden. Cytoscape basiert auf Java und gibt Softwareentwicklern die Möglichkeit über eine gut dokumentierte API, Plugins zu implementieren, die den Funktionsumfang von Cytoscape enorm erweitern. Derzeit werden auf der offiziellen Cytoscape Website 76 Plugins aus 7 verschiedenen Kategorien angeboten. Cytoscape hat eine breite Community und wird ständig weiterentwickelt. Die Visualisierung von Netzwerken kann einen guten Aufschluss über die Struktur und die Zusammenhangskomponenten geben. Darüber hinaus werden so für den Forscher Netzwerkmerkmale sichtbar, die zuvor in den Rohdaten verborgen lagen. „Graphics reveal data. Indeed graphics can be more precise and revealing than conventional statistical computations.“ Edward R. Tufte, The Visual Display of Quantitative Information. Cytoscape hält eine breite Palette von Layoutalgorithmen bereit, welche nach bestimmten Kriterien die Knoten und Kanten des Netzwerks anordnen. Force-directed/spring embedded Layout Wie der Name schon sagt, werden beim Force-directed oder auch spring-embedded Layout die Kanten des Netzwerks als Federn modelliert. So entsteht ein dynamisches System, bei dem versucht wird ein Gleichgewicht herzustellen. Verbundene Knoten ziehen sich an, nicht verbundene stoßen sich ab. Siehe hierzu Abbildung 12. Group Attributes Layout Der Anwender kann bei diesem Layout eines der zur Verfügung stehenden Knotenattribute wählen und dementsprechend entstehen diverse Kreise, die wie die Bezeichnung des Layouts vorgibt, das Netzwerk anhand des gewählten Attributs gruppiert. (vgl. Abb. 13) Modifizierung der Knoten- und Kantendarstellung Cytoscape bietet dem Benutzer die Möglichkeit jede Darstellungsoption der visuellen Repräsentation des Netzwerks anhand von gegebenen Netzwerkattributen zu verändern. Dazu wird der VizMapper verwendet. Es werden 3 verschiedene Möglichkeiten der Einflussnahme, im Folgenden Mappings genannt, angeboten. Das kontinuierliche Mapping erlaubt die Modifikation einer Darstellungsoption auf Basis eines nummerischen Attributintervalls. Es eignet sich zum Beispiel für die Anpassung der Darstellungsgröße der Netzwerkknoten. Beim diskreten Mapping kann für jeden einzelnen Attributwert die Option angepasst werden. Dieses Mapping bietet sich vor allem für Attribute an, deren Wertebereich ein überschaubares Maß besitzt. Das sogenannte Passthrough Mapping erlaubt dem Anwender die Netzwerkattribute direkt an die Visualisierung weiterzugeben. So können Knoten und Kantenbezeichnungen aus den Netzwerkattributen übernommen werden. 7 2.5 Netzwerkmetriken/Zentralitätsmaße Die aus der PPI Datenbank des Lehrstuhls extrahierten Netzwerke sind im Wesentlichen im biologischen Kontext attribuiert. Darüber hinaus erweist es sich als sinnvoll, die strukturinhärenten Netzwerkmerkmale mit den Mitteln der Graphentheorie zu bestimmen und das Netzwerk mit den gewonnenen Metadaten anzureichern. Dieses Vorgehen ermöglicht, die Visualisierungsfähigkeiten von Cytoscape zu erweitern, da durch die weiteren Attribute und die Anwendung des VizMappers (siehe Abschnitt „Modifizierung der Knoten- und Kantendarstellung“) direkt auf die visuelle Repräsentation des Netzwerks Einfluss genommen werden kann. Im Rahmen der Bachelorarbeit werden die folgenden 4 Maßzahlen verwendet. degree centrality Die degree centrality eines Knotens ist eine grundlegende Struktureigenschaft von Netzwerken. Sie gibt Auskunft über die Anzahl der mit dem Knoten verbundenen Kanten. Je höher die degree centrality, desto vernetzter ist der betreffende Knoten. Für einen Graph G := (V, E) mit n Knoten ist die degree centrality CD (v) eines Knotens v CD (v) = deg(v) n−1 betweenness centrality Die betweenness centrality ist ein Maß für die Wichtigkeit eines Knotens im Netzwerk. Je öfter sich der betreffende Knoten auf den kürzesten Pfaden zwischen zweier anderer Knoten befindet, desto höher ist sein betweenness centrality Wert. Für einen Graph G := (V, E) ; die Knoten s,t,v; σst der Summe der kürzesten Pfade zwischen s und t und σst (v) der Summe der kürzesten Pfade von s und t auf denen v liegt ist die betweenness centrality des Knotens v X CB (v) = s6=t6=v∈V,s6=t σst (v) σst closeness centrality Die closeness centrality ist eine weitere nützliche Maßzahl für Netzwerkknoten. Sie ist definiert durch das Inverse des mittleren geodätischen Abstandes des entsprechenden Knotens. n−1 t∈V |v dG (v, t) CC (v) = P PageRank Der PageRank gibt Auskunft über die Stärke der Bedeutung eines Knotens für das gesamte Netzwerk. Diese Maßzahl ist besonders populär im Kontext der Websuchmaschienen, hier insbesondere Google. Auch hier gilt, je höher der PageRank eines Knotens, desto wichtiger ist er für das Gesammtnetzwerk. 8 3 Implementierung 3.1 Zielstellung der Arbeit Im Rahmen der Forschungsarbeit am Lehrstuhl werden verschiedene, dem wissenschaftlichem Umfeld zur Verfügung stehende Datenquellen zu einer integrierten Datenbank zusammengefasst, welche Protein – Protein – Interaktionsnetzwerke modelliert. Zur Analyse und Visualisierung der Netzwerkstrukturen wird unter anderem auch das Softwarepaket Cytoscape verwendet. Dieses wiederum soll nun im Rahmen dieser Bachelorarbeit um einige Funktionalitäten erweitert werden um den Forschungsprozess effizienter unterstützen zu können. Das Cytoscape Plugin soll die folgenden Funktionen implementieren: • Anbindung von Cytoscape an die PPI Datenbank des Lehrstuhls • Suche nach Proteininteraktionen, die mit einer bestimmten Krankheit in Beziehung stehen • Extraktion von Interaktionsnetzwerken aus der Datenbank • Attribuierung des Netzwerks mit Metriken (Zentralitätsmaße) • Import und Visualisierung von eben diesen Interaktionsnetzwerken in Cytoscape 3.2 Voraussetzungen An das Zielsystem, auf dem das Plugin betrieben werden soll, werden einige Anforderungen gestellt. Um die uneingeschränkte Nutzung des Plugins zu gewährleisten muss das Zielsystem in der Lage sein, mit einem MySQL Server 5.1 oder höher zu kommunizieren. Das heißt, die Quelldatenbank muss entweder lokal oder über das Netzwerk erreichbar sein. Cytoscape Version 2.5 oder höher muss installiert sein. Eine lauffähige Version der Statistiksoftware R–2.8.0 oder höher mit installierter Library igraph v0.5.2 oder höher ist ebenfalls essenziell für den reibungslosen Programmablauf. 3.3 Komponenten Im Laufe des evolutionären Softwaredesigns haben sich für die Plugin Implementierung 3 Hauptkomponenten herausgebildet. Die grafische Benutzeroberfläche (GUI), die dem Benutzer die Dateneingabe und Programmablaufsteuerung ermöglicht. Der Controller, der im Hintergrund für den Datenaustausch unter den Komponenten zuständig ist und schließlich die Gruppe der Hilfskomponenten (im Folgenden Prozessoren genannt) welche ganz bestimmte Aufgaben während des Programmablaufs übernehmen. 9 Abbildung 2: Klassendiagramm des CyPPI Plugins 10 3.4 3.4.1 Realisierung Grafische Benutzeroberfläche Die GUI stellt ein aus Java Swing Elementen komponiertes Framework zur Verfügung, dass sich durch seine Simplizität leicht erweitern lässt. Die Hauptkomponente ist ein JFrame Gerüst, das eine JTabbedPane beinhaltet. Hier können beliebig viele Registerkarten, in diesem Fall JPanels, eingefügt werden, die bestimmte Programmfunktionen bereitstellen. Die aktuelle Plugin-Version implementiert 4 solcher Registerkarten: • configure database settings • SQL editor • database information • disease search Jede Registerkarte arbeitet unabhängig von den anderen, ist aber in der Lage über den Controller zu kommunizieren. So ist es möglich zwischen den Tabs zu wechseln, ohne dass der jeweilige innere Anwendungszustand verändert wird. Operationen, die einen Datenbankzugriff oder länger andauernde Berechnungen initiieren werden jeweils als SwingWorker Threads ausgeführt. Durch dieses Konzept wird der Event Dispatcher Thread (EDT) in dem die GUI ausgeführt wird stark entlastet, was dazu führt, dass die Benutzeroberfläche zu jedem Zeitpunkt responsiv bleibt. Es folgt eine genauere Darstellung der Programmfunktionen. configure database settings Nach der Initialisierung des Plugins ist dies die erste Registerkarte, die dem Benutzer zur Verfügung steht. Alle anderen Tabs sind gesperrt, da die Anwendungslogik zunächst valide Benutzerdaten für die Datenbankverbindung benötigt. Nach der Eingabe der Daten in die entsprechenden Textfelder wird durch einen Klick auf „Ok“ ein Array zusammen mit einem Identifier im Controller abgelegt und die restlichen Tabs werden aktiviert. Weiterhin wird geprüft, ob sich im Homeverzeichnis des Benutzers unter „/.cytoscape/“ bereits das Verzeichnis „CyPPi_data“ für die temporären Dateien befindet. Ist das nicht der Fall wird es angelegt und entsprechende Schreibrechte vergeben. Abbildung 3: Registerkarte configure database settings 11 SQL editor Das Plugin implementiert einen SQL Editor. Dieser ist über die ebenso benannte Registerkarte zu erreichen. Das dargestellte Fenster ist horizontal zweigeteilt und bietet dem Benutzer im oberen Bereich ein Eingabefeld für SQL Anfragen. Die Reichhaltigkeit der erlauben Ausdrücke ist einzig durch die dem Benutzer von der Datenbank erteilten Rechte limitiert. Anfragen werden durch Betätigung des „Ok“ Buttons an den Server übermittelt. Ein neuer SQLProcessor wird instanziiert, führt die an ihn übergebene Anfrage aus und liefert das Ergebnis in Form einer HashMap zurück. Im unteren Bereich des Fensters befindet sich eine Tabelle, die dem Benutzer das Anfrageergebnis darstellt. So wird die HashMap direkt an das Datenmodell Abbildung 4: Registerkarte SQL der Tabelle übergeben und die Tabellenansicht neu editor aufgebaut. Neben der Editorfunktionalität steht dem Anwender ein weiteres, äußerst nützliches Feature zur Verfügung. Zur ordnungsgemäßen Nutzung sind jedoch einige Kenntnisse der Anfragesprache SQL und ein genaues Wissen über die Datenbank erforderlich. Die Anwendungslogik orientiert sich sehr stark an den Strukturen, die von der PPI Datenbank des Lehrstuhls vorgegeben werden. Ein mögliches Szenario gestaltet sich wie folgt. Der Anwender extrahiert mit der Anfrage eine Liste von Proteinen, die sich durch bestimmte, vom Anwender vorgegebene Eigenschaften qualifizieren. Die Ergebnismenge wird im unteren Bereich dargestellt und der neue Button „Generate Network“ wird aktiv. Betätigt der Anwender den Button wird er durch ein Dialogfenster aufgefordert, die Tabellenspalte zu spezifizieren, welche die sogenannten Protein IDs (vgl. Abbildung 1, Proteintabelle, „protein_id“) enthält. Im Controller wird nun diese Proteinliste abgelegt und der NetworkGenerator wird instanziiert. Dieser bereitet die Protein- und Interaktionsdaten für die Berechnung der Metriken und den Import in Cytoscape vor und initiiert weitere Bearbeitungsschritte. Die genaue Funktionsweise wird im Abschnitt 3.4.3 dargelegt. Dieses Verfahren ermöglicht dem Anwender nach eigenen Kriterien Protein-Protein-Interaktionsnetzwerke aus der Datenbank in Cytoscape zu importieren. 12 database information Da die PPI Datenbank des Lehrstuhls einem stetigen Entwicklungsprozess unterliegt und demzufolge strukturelle Änderungen nicht ausgeschlossen sind, hat sich im Zuge des evolutionären Designs des Plugins gezeigt, dass sich die Arbeit mit der Software effizienter gestaltet, wenn sich der Benutzer einen Überblick über den aktuellen Datenbankzustand und im speziellen über die Tabellenstrukturen verschaffen kann. Diesen Zweck erfüllt die Registerkarte „database information“. Durch klicken des Buttons "get database information"wird eine Anfrage an den Systemkatalog der Zieldatenbank gesendet. Als Ergebnis erscheinen im oberen Bereich des Fensters alAbbildung 5: Registerkarte data- le, dem angemeldeten Benutzer zur Verfügung stebase information henden Datenbanktabellen. Durch einen Klick auf eine Tabellenzeile werden genauere Informationen zu dem gewählten Eintrag abgerufen und im unteren Bereich des Fensters dargestellt. Mit diesem einfachen Hilfsmittel erschließt sich schnell die gesamte Datenbankstruktur. Durch die Separierung der Registerkarten ist es möglich, während der Konstruktion einer Anfrage im „SQL editor“ Informationen zu weiteren Tabellen abzurufen. disease search Im Rahmen der Forschungsarbeit der Arbeitsgruppe am Lehrstuhl sind vor allem Protein-Protein-Interaktionsnetzwerke von besonderem Interesse, die mit bestimmten Krankheiten in Verbindung gebracht werden können. Aus diesem Grund implementiert die Registerkarte „disease search“ eine speziell auf die PPI Datenbank angepasste Suchmaske. Es stehen zwei Arten der Suche zur Verfügung. Zum einen kann nach Proteinen gesucht werden, die mit einer OMIM (Online Mendelian Inheritance in Man) Kennung versehen sind, zum Anderen ist es möglich eine Freitextsuche durchzuführen, die darüber hinaus auf den Phenotypbeschreibungen der GAD (Gene Association Database) Daten beruht. Eine detailliertere Beschreibung der zugrundeliegenden Anfragen befin- Abbildung 6: Registerkarte didet sich im Anhang. Hat sich der Anwender für eine sease search Suchmethode entschieden und die Anfrage durch betätigen des „search“ Buttons abgeschickt, erscheint in der Mitte des Fensters eine tabellarische Ansicht des Suchergebnisses. Hier werden der Proteinname, die UniProt sowie OMIM Kennung, eine Phenotypbeschreibung und die Quelle des jeweiligen Ergebnisses ausgegeben. Wünscht der Anwender die Visualisierung der Daten in Cytoscape kann, wie in der Registerkarte „SQL editor“, der Button „generate network“ betätigt werden. Zur Bestimmung des jeweiligen Suchergebnisses sind 2 komplexe SQL Anfragen nötig. Bei der Suche nach OMIM Kennnummern werden die Tabellen 13 „protein“, „omim_disease“ und „omim_rel“ angesprochen. Der Suchstring wird als Selektionskriterium auf die Attribute „omim_id“ aus „omim_disease“ und „omim_genotype“ aus „omim_rel“ angewendet. Die entsprechenden Tupel werden über die Joinbedingungen: Übereinstimmung der „omim_id“ in „omim_disease“ und „omim_rel“, sowie der Übereinstimmung der „omim_id“ mit der „org_specific_id“ aus der „protein“ Tabelle mit den Tupeln der „protein“ Tabelle verbunden. Diese Teilanfrage wird über eine Union mit dem Ergebnis der anderen Teilanfrage verschmolzen. Diese Anfrage wiederum bezieht die Daten aus den Tabellen „protein“, „gad“, „gad_omim“ und „gad_rel“. Die Tupel werden aus der „gad_omim“ Tabelle anhand der OMIM Kennung selektiert und entlang des Pfades „gad_omim“–“gad_rel“–“protein“ über die entsprechenden Schlüsselwerte zur Ergebnismenge konstruiert. Bei der Freitextsuche sind die SQL Anfragen dahingehend modifiziert, dass der Suchstring als Selektionskriterium auf die Attribute „broad_phenotype“ der „gad“ Tabelle und „phenotype_description“ der „omim_disease“ Tabelle angewendet werden. Diese Attribute enthalten textuelle Beschreibungen und werden mit einer gewissen Unschärfe zur Bestimmung der Ergebnismenge verwendet. Das bedeutet, dass der Suchstring von beliebigen Zeichenketten eingerahmt sein kann. Die SQL Anfragen befinden sich im Anhang. 3.4.2 Controller Neben der GUI wird beim Start des Plugins der Controller initialisiert. Er stellt das zentrale Kommunikationsmedium der einzelnen Komponenten dar. Um für zukünftige Entwicklungen die Limitationen möglichst gering zu halten, ist die Speicherstruktur als assoziative Objekt HashMap implementiert. Der Controller stellt mehrere Methoden bereit, die den Zugriff und die Manipulation der Daten erlauben. Des Weiteren ist der Controller in der Lage, die Spalteninhalte einer JTable zu extrahieren. 3.4.3 Hilfskomponenten Die Gruppe der Hilfskomponenten ist die Toolbox des Plugins. Jede der Komponenten erfüllt einen bestimmten Zweck und operiert weitgehend autonom. Das erleichtert die Weiterentwicklung und erhöht die Wiederverwendbarkeit der Komponenten. Sie beinhalten den Hauptteil der Anwendungslogik und stehen allen Plugin Komponenten über bestimmte Schnittstellen zur Verfügung. RProcessor Der RProcessor bildet die Schnittstelle zwischen dem Plugin und der Statistiksoftware R. Diese Komponente ist in der Lage, adaptiv auf die Laufzeitumgebung des Zielsystems zu reagieren. Unter Unix wird vorausgesetzt, R durch einen Shellaufruf zu starten. Sollte Windows detektiert werden, ist der Rprocessor fähig, aus der Windows Registry alle benötigten Parameter zu akquirieren und die entsprechenden Anwendungspfade zu setzten. Wird an einer Objektinstanz die Methode setExecScript aufgerufen wird aus dem Quellcode heraus ein R-Skript generiert und im Arbeitsverzeichnis des Plugins zur weiteren Verarbeitung abgelegt. Das Skript bestimmt den Programmablauf innerhalb von R. Zuerst wird die Bibliothek igraph geladen, welche für die Graphanalysen 14 benötigt wird. Danach wird das Arbeitsverzeichnis gesetzt und die vorbereiteten Quelldateien geladen. In R wird nun ein iGraph Objekt erzeugt, die Zentralitätsmaße Betweenness, Closeness und PageRank werden berechnet uns schließlich werden die Daten im GraphML Format in das Arbeitsverzeichnis exportiert. Im Anhang befindet sich das implementierte R-Skript. SQLProcessor Für die Anbindung des Plugins an eine MySQL Datenbank ist der SQLProcessor zuständig. Zur Verbindung wird der JDBC Datenbanktreiber von Java verwendet. Bei Instantiierung wird mit den Verbindungsdaten, die der Controller bereitstellt der Kontakt zur Zieldatenbank aufgebaut. Der SQLProcessor stellt zwei Methoden bereit, die mit der SQL Anfrage als Argument, eine Interaktion zwischen Plugin und Server ermöglichen. Die Methoden unterscheiden sich im Rückgabeformat, so kann die Ergebnismenge als HashMap oder als mehrdimensionales Array angefordert werden. Darüber hinaus ist der SQLProcessor in der Lage, die Anfragebearbeitung serverseitig abzubrechen, was bei vom Nutzer konstruierten Anfragen, die auch nach langer Bearbeitungszeit kein Ergebnis liefern durchaus von Nutzen sein kann. NetworkGenerator Der NetworkGenerator ist die zentrale Komponente des Plugins welche es ermöglicht aus der PPI Datenbank Interaktionsnetzwerke zu extrahieren und für die weitere Bearbeitung zur Verfügung zu stellen. Als Inputformat wird ein String aus Schlüsselwerten der Datenbank verwendet, der vom Controller bereitgestellt werden muss. Der NetworkGenerator nutzt als Hauptdatenstruktur das HashSet und macht sich hierbei die Eigenschaft der Duplikatfreiheit zunutze. Die Anwendungslogik ist speziell auf die Datenbankstruktur des Lehrstuhls angepasst und als mehrstufiger Prozess realisiert. Zunächst werden Netzwerkdaten vorbereitet und anschließend weiterverarbeitet. Die Vorbereitungsphase umfasst das Abrufen der vom Benutzer erstellten Liste der Schlüsselwerte für die Proteine. Diese Liste wird in eine SQL Anfrage integriert, welche aus der Interaktionstabelle alle passenden Einträge zurückliefert. Das Anfrageergebnis wird in Proteinschlüsselwerte und Interaktionsschlüsselwerte zerlegt und in den entsprechenden HashSets („prot_ids“ und „interaction_ids“) gespeichert. An diesem Punkt ist die Vorbereitungsphase beendet und dem NetworkGenerator stehen alle Daten für weitere Berechnungen zur Verfügung. Wird nun die Methode „processWithRandImport“ aufgerufen initiiert das zwei Subroutinen. Zunächst die „generateProteinDataset“ Methode, welche alle Einträge der Proteintabelle selektiert, die Proteine mit den Schlüsselwerten aus der „prot_ids“ Liste enthalten. Die Methode „generateInteractionDataset“ erzeugt auf gleichem Weg eine Ergebnismenge, die zu dem Schlüsselwerten der „interaction_ids“ Liste passt. Beide Ergebnismengen werden durch die Verwendung des IOProcessors im Arbeitsverzeichnis des Plugins als Datei im CSV Format abespeichert. Diese Dateien dienen als Input für die Berechnungen mit R. 15 XMLtoCytoConverter Der XMLtoCytoConverter stellt das Bindeglied zwischen den Quelldaten des Netzwerks und dem Netzwerkmodell von Cytoscape dar. Nachdem die Netzwerkdaten mit R verarbeitet wurden liegen sie im Arbeitsverzeichnis im GraphML Dateiformat vor. Anders als andere Dateiformate für Graphen, die eigene Syntax verwenden, basiert GraphML auf dem XML Standard. Mit GraphML lassen sich unter anderem gerichtete und ungerichtete Graphen, Daten zur visuellen Repräsentation sowie anwendungsspezifische Attributdaten modellieren. Die von R ausgegebene Datei weist folgende Struktur auf: Abbildung 7: XML Struktur der Datei Wird nun an einer Objektinstanz des Konverters die Methode „convertXMLtoCyto“ mit dem Dateinamen der Quelldaten und der Netzwerkbezeichnung für Cytoscape aufgerufen werden ein Netzwerkmodell (CyNetwork) und die Netzwerkattribute (CyAttributes) initialisiert und mithilfe des JDOM XML Parsers die Datei zur weiteren Verarbeitung vorbereitet. Die Knoten- und Kantenelemente werden in separaten Listen gesammelt und daraufhin die Subroutinen „createCyNodes“ und „createCyEdges“ aufgerufen, die jeweils iterativ die Elemente der übergebenen Listen auswerten, dem CyNetwork Knoten(CyNode) und Kanten (CyEdge) hinzu fügen und diese mit CyAttributes versehen. 16 4 Ergebnisse Der Prototyp des implementierten Plugins (CyPPI plugin) für Cytoscape erfüllt, die im Rahmen der Bachelorarbeit aufgestellten Zielstellungen. Durch die Verwendung des Java JDBC Datenbanktreibers ist es möglich, eine Kommunikationsverbindung des CyPPI plugins mit jeder beliebigen MySQL Datenbank aufzubauen. Die Datenbank kann lokal oder auch über die Netzwerkverbindung ansprechbar sein. Der implementierte SQL Editor erlaubt dem Benutzer die Interaktion mit der Datenbank, ungeachtet der zugrunde liegenden Tabellenstrukturen. Die Möglichkeiten des Benutzers werden ausschließlich durch das Rechtemanagement des Servers restringiert. Die weiteren Komponenten des CyPPI plugins sind jedoch im Kern auf die Struktur der vom Lehrstuhl zur Verfügung gestellten PPI Datenbank zugeschnitten. Die Vorstellung der Ergebnisse erfolgt im Folgenden exemplarisch anhand der Visualisierung des PPI Netzwerks für Lungenkrebs mit der OMIM Kennung #211980. Nachdem sich der Benutzer über das CyPPI plugin mit der Datenbank des Lehrstuhls verbunden hat wird die Registerkarte „disease search“ aufgerufen. Dort wird mithilfe der Suchoption „OMIM - search“ nach der Kennung „211980“ gesucht, da Lungenkrebs in der Online Mendelian Inheritance in Man Datenbank unter dieser ID gelistet wird. Abbildung 8: Suchergebnis für die OMIM ID 211980 Die Suchanfrage liefert insgesamt 6 Proteine zurück, die mit dieser Krankheit assoziiert sind. Nun werden die Netzwerkgenerierung, die Berechnung der Zentralitätsmaße sowie der Import in Cytoscape initiiert. Nach einem kurzen Moment stehen die Daten in Cytoscape zur Verfügung, ein Networkview wird erzeugt und das PPI Netz ist sichtbar. Durch die Berücksichtigung aller Interaktionspartner erster Ordnung (nächste Nachbarn) besteht das Netzwerk nunmehr aus 599 Konten und 846 Kanten. Die initiale Darstellung durch Cytoscape erfolgt in Form des GridLayouts. 17 Abbildung 9: Initiale Netzwerkdarstellung von Cytoscape Durch die Bearbeitung mit R wurden dem Netzwerk im Zuge des Imports folgende Zusatzattribute hinzugefügt: • betweenness centrality • betweenness centrality (normalisiert) • closeness centrality • degree centrality • PageRank Diese Metainformationen über die Netzwerkstruktur können nun zur Verbesserung der Visualisierung verwendet werden. Im vorliegenden Fall wird die visuelle Repräsentation mit den Attributen Cy_closeness und Cy_pagerank modifiziert um bedeutende Knoten (Proteine) hervorzuheben. Da es sich um nummerische Werte handelt, eignet sich im VizMapper die Option des Continous Mapping. Der Grafische Explorer erleichtert hierbei die Justierung der Farb- und Größenskale. Darüber hinaus werden die Knoten mit der UniProt Id beschriftet und im Tooltip eines jeden Knotens wird der Proteinname angezeigt. Das vorläufige Ergebnis der Visualisierung gibt mehr Aufschluss über die Graphenstruktur (vgl. Abb. 11). Abbildung 10: VizMapper Optionspanel 18 Abbildung 11: Modifikation der Darstellung des Netzwerks Im nächsten Schritt werden Layoutalgorithmen ausgeführt um die Positionierung der Knoten und Kanten zu verbessern. Mit dem Force-directed Layout werden die Netzwerkstrukturen besonders deutlich dargestellt. Somit ändert sich die zunächst gitterförmige Anordnung in die folgende: Abbildung 12: Anwendung des Force-directed Layouts (mit Detaildarstellung) 19 Durch die zusätzlichen Metainformationen lässt sich ein weiterer, äußerst nützlicher Layoutalgorithmus anwenden. Das Group Attributes Layout bildet anhand der Wertemenge des gewählten Attributs Gruppen von Kotenmengen und verteilt diese auf der sichtbaren Fläche. Beispielhaft wurde in der nächten Abbildung das Layout mit der degree centrality durchgeführt. Dadurch werden die entsprechenden Proteingruppen gut sichtbar. Abbildung 13: Anwendung des Group Attributes Layout 5 Ausblick Das im Rahmen der Bachelorarbeit stellt einen Prototyp dar. Es wurde versucht das Modell-View-Controller (MVC) Konzept zu berücksichtigen. Hierbei handelt es sich um ein Strukturkonzept des Softwaredesigns. Das Modell repräsentiert die zugrunde liegende Datenstruktur, die View oder auch Sicht ist für die Darstellung der Daten des Modells verantwortlich, der Controller steuert den Programmablauf und kann die Daten des Modells verändern. Das Plugin realisiert dieses Konzept nur rudimentär, weshalb es im nächsten Entwicklungszyklus anzuraten ist, die Komponenten dahingehend anzupassen. Das würde die Wartbarkeit und Wiederverwendbarkeit der bestehenden und zukünftigen Pluginkomponenten steigern. Ein nützliches und bereits partiell implementiertes Feature ist die Berücksichtigung eines Konfidenzlevels bei der Netzwerkgenerierung. Die aktuelle Pluginversion stellt lediglich die Eingabemaske zur Verfügung, welche jedoch keine Funktionalität bereitstellt. Das Konfidenzlevel soll bei der Netzwerkgenerierung die Akquirierung der Interaktionen limitieren. Dies soll nach der Maßgabe geschehen, dass nur solche Interaktionen selektiert werden, die in einer Mindestanzahl von Datenbankquellen zu finden sind. Ein Konfidenzlevel von 3 bedeutet also, dass eine Interaktion und demzufolge auch die Interaktionspartner in mindestens 3 Quelldatenbanken gelistet sein müssen um in das Zielnetzwerk aufgenommen zu werden. Das wiederum führt zu kleineren Netzwerken, die auf einer breiteren Wissensbasis beruhen. 20 Zur Effizienzsteigerung des Arbeitsablaufs könnte weiterhin die automatischen Anpassung der Visualisierungsoptionen verbessert werden. Der von Cytoscape bereitgestellte VizMapper verfügt über eine gut dokumentierte API, die es ermöglicht, während des Datenimports die Visualisierungseigenschaften festzulegen. So könnten von vornherein die Knoten des Netzwerks mit Beschriftungen versehen werden, oder auch die Kanten anhand der Datenbankquelle nach einer bestimmten Vorgabe eingefärbt werden. 21 6 Verzeichnisse Abbildungsverzeichnis 1 2 3 4 5 6 7 8 9 10 11 12 13 Datenbankschema . . . . . . . . . . . . . . . . . . . . . . . . . Klassendiagramm des CyPPI Plugins . . . . . . . . . . . . . . . Registerkarte configure database settings . . . . . . . . . . . . . Registerkarte SQL editor . . . . . . . . . . . . . . . . . . . . . . Registerkarte database information . . . . . . . . . . . . . . . . Registerkarte disease search . . . . . . . . . . . . . . . . . . . . XML Struktur der Datei . . . . . . . . . . . . . . . . . . . . . . Suchergebnis für die OMIM ID 211980 . . . . . . . . . . . . . . Initiale Netzwerkdarstellung von Cytoscape . . . . . . . . . . . VizMapper Optionspanel . . . . . . . . . . . . . . . . . . . . . . Modifikation der Darstellung des Netzwerks . . . . . . . . . . . Anwendung des Force-directed Layouts (mit Detaildarstellung) Anwendung des Group Attributes Layout . . . . . . . . . . . . . . . . . . . . . . . . . . 6 10 11 12 13 13 16 17 18 18 19 19 20 Literatur [1] C HRISTEN, Philipp ; JAUSSI, Rolf: Biochemie. Springer, 2005 (SpringerLehrbuch XVI). – 635 S. – ISBN: 978-3-540-21164-8 [2] U ETZ, Peter ; P OHL, Ehmke: Protein-Protein- und Protein-DNAInteraktionen. In: Wink et al., Molekulare Biotechnologie, Wiley-VCH (2004) [3] S ULTAN, Marc ; S CHULZ, Marcel H. ; R ICHARD, Hugues ; M AGEN, Alon ; K LINGENHOFF, Andreas ; S CHERF, Matthias ; S EIFERT, Martin ; B ORODINA, Tatjana ; S OLDATOV, Aleksey ; PARKHOMCHUK, Dmitri ; S CHMIDT, Dominic ; O’K EEFFE, Sean ; H AAS, Stefan ; V INGRON, Martin ; L EHRACH, Hans ; YASPO, Marie-Laure: A global view of gene activity and alternative splicing by deep sequencing of the human transcriptome. In: Science 321 (2008), Aug, Nr. 5891, 956–960. http://dx.doi.org/10.1126/science.1160342. – DOI 10.1126/science.1160342 [4] T RAJANOSKI, Z.: GEN-AU Projekt: Bioinformatik Integrationsnetzwerk. In: Interuniversitäre Forschungsprojekte (WS 05/06), S. 23–24 [5] S CHMITT, Stefan ; KUHN, Daniel ; K LEBE, Gerhard: A New Method to Detect Related Function Among Proteins Independent of Sequence and Fold Homology. In: Journal of Molecular Biology 323 (2002), Nr. 2, 387 - 406. http://dx.doi.org/DOI:10.1016/S0022-2836(02)00811-2. – DOI DOI: 10.1016/S0022–2836(02)00811–2. – ISSN 0022–2836 [6] ORF: ORF ON Science – Neues Verständnis für Proteinfunktionen. http: //science.orf.at/science/news/24146 [7] M ATHIVANAN, Suresh ; P ERIASWAMY, Balamurugan ; G ANDHI, TKB ; KAN DASAMY , Kumaran ; S URESH , Shubha ; M OHMOOD , Riaz ; R AMACHANDRA , 22 YL ; PANDEY, Akhilesh: An evaluation of human protein-protein interaction data in the public domain. In: BMC Bioinformatics 7 (2006), Nr. Suppl 5, S. S19. http://dx.doi.org/10.1186/1471-2105-7-S5-S19. – DOI 10.1186/1471–2105–7–S5–S19. – ISSN 1471–2105 [8] C LARKE, Paul A. ; P OELE, Robert te ; W OOSTER, Richard ; W ORKMAN, Paul: Gene expression microarray analysis in cancer biology, pharmacology, and drug development: progress and potential. In: Biochemical Pharmacology 62 (2001), Nr. 10, 1311 - 1336. http://dx.doi.org/DOI:10.1016/ S0006-2952(01)00785-7. – DOI DOI: 10.1016/S0006–2952(01)00785–7. – ISSN 0006–2952 23 A Anhang A.1 SQL Anfragen SQL Anfrage für die Suche nach einer OMIM ID. SELECT DISTINCT p . protein_name , p . p r i m a r y _ u n i p r o t _ i d , p . o r g _ s p e c i f i c _ i d , omdis . p h e n o t y p e _ d e s c r i p t i o n , " omim " AS Source FROM p r o t e i n p , omim_disease omdis , omim_rel omrel WHERE ( omdis . omim_id = SUCHSTRING or omrel . omim_genotype = SUCHSTRING) AND omrel . omim_id = omdis . omim_id AND ( omdis . omim_id = p . o r g _ s p e c i f i c _ i d or omrel . omim_genotype = p . o r g _ s p e c i f i c _ i d ) UNION SELECT DISTINCT p . protein_name , p . p r i m a r y _ u n i p r o t _ i d , p . o r g _ s p e c i f i c _ i d , g . broad_phenotype , " gad " AS Source FROM p r o t e i n p , gad_omim gom , gad g , g a d _ r e l gr WHERE gom . omim_id = SUCHSTRING AND gom . gad_id = g . gad_id AND gr . gad_id = g . gad_id AND gr . gene_id = p . gene_id ; SQL Anfrage für die Freitextsuche SELECT DISTINCT p . protein_name , p . p r i m a r y _ u n i p r o t _ i d , p . o r g _ s p e c i f i c _ i d , g . broad_phenotype , " gad " AS Source FROM p r o t e i n p , gad g , g a d _ r e l gr WHERE g . broad_phenotype LIKE "%SUCHSTRING%" AND g . gad_id = gr . gad_id AND gr . gene_id = p . gene_id UNION SELECT DISTINCT p . protein_name , p . p r i m a r y _ u n i p r o t _ i d , p . o r g _ s p e c i f i c _ i d , omdis . p h e n o t y p e _ d e s c r i p t i o n , " omim " AS Source FROM p r o t e i n p , omim_disease omdis WHERE omdis . p h e n o t y p e _ d e s c r i p t i o n LIKE "%SUCHSTRING%" AND omdis . omim_id = p . o r g _ s p e c i f i c _ i d ; 24 A.2 R-Skript library ( igraph ) setwd ( "<u s e r . home>/ . c y t o s c a p e / CyPPi _ data " ) network <− read . csv ( " Cy_raw_ i n t e r a c t i o n d a t a . c s v " , header=TRUE , sep=" \ t " ) nodes <− read . csv ( " Cy_raw_ p r o t e i n d a t a . c s v " , header=TRUE , sep=" \ t " ) g <− graph . data . frame ( network , d i r e c t e d=FALSE , v e r t i c e s=nodes ) V( g ) $Cy_ degree _ c e n t r a l i t y <− degree ( g ) / ( vcount ( g)−1) E ( g ) $Cy_ betweenness _ c e n t r a l i t y _ edge <− edge . betweenness ( g ) V( g ) $Cy_ betweenness _ c e n t r a l i t y <− betweenness ( g ) V( g ) $Cy_ betweenness _ c e n t r a l i t y _ normalized <− 2∗betweenness ( g ) / ( ( vcount ( g)−1)∗( vcount ( g) −2)) V( g ) $Cy_ c l o s e n e s s <− c l o s e n e s s ( g ) V( g ) $Cy_ pagerank <− page . rank ( g ) $ v e c t o r write . graph ( g , " Cy_ p r o c e s s e d _ Network . graphml " , " graphml " ) q() A.3 Verwendete Software • Cytoscape • Eclipse IDE • Microsoft Office • JUDE Professional (Trail) • TeXnicCenter 25