-
Faculteit Toegepaste Wetenschappen
Vakgroep Toegepaste Wiskunde en Informatica
Voorzitter: Prof. dr. ir. G. Vanden Berghe
Vakgroep Moleculaire Genetica
Voorzitter: Prof. dr. Anna Depicker
BiNGO: een Cytoscape-plugin voor
functionele annotatie van genclusters
door Karel Heymans
Promotor: Prof. dr. V. Fack
Scriptiebegeleider: Dhr. Steven Maere
Afstudeerwerk ingediend tot het behalen van de graad van
licentiaat in
de informatica, optie: toepassingsgerichte informatica
Academiejaar 2003–2004
-
Toelating tot bruikleen
De auteur geeft de toelating deze scriptie voor consultatie
beschikbaar te stellen en delen van
het afstudeerwerk te kopiëren voor persoonlijk gebruik.
Elk ander gebruik valt onder de beperkingen van het
auteursrecht, in het bijzonder met be-
trekking tot de verplichting de bron uitdrukkelijk te vermelden
bij het aanhalen van resultaten
uit dit afstudeerwerk.
Karel Heymans 25 mei 2004
i
-
Dankwoord
Graag zou ik iedereen willen bedanken die heeft bijgedragen tot
de verwezenlijking van dit
eindwerk, in het bijzonder dank ik:
• mijn promotor, Prof. dr. V. Fack, die mij de kans heeft
aangereikt deze scriptie aan tevatten;
• mijn scriptiebegeleider, dhr. Steven Maere, die met veel
enthousiasme en zo mogelijk metnog meer vakkennis mijn werken
richting heeft gegeven;
• mijn vriendin, Mieke Jacob, voor het vinden van een coole en
catchy naam voor mijnCytoscape-plugin, met name: BiNGO;
• mijn ouders voor de steun tijdens mijn studies;
• mijn zus, Reinhilde, voor het nalezen op dt-fouten.
ii
-
BiNGO: een Cytoscape-plugin voor functionele annotatie van
genclusters
door
Karel Heymans
Afstudeerwerk ingediend tot het behalen van de graad van
licentiaat in de informatica, optie:
toepassingsgerichte informatica
Academiejaar 2003–2004
Universiteit Gent
Faculteit Toegepaste Wetenschappen
Promotor: Prof. dr. V. Fack
Samenvatting
Het doel van deze scriptie is het schrijven van een programma
met als functionaliteit het bereke-
nen en visueel voorstellen van overrepresentatie van functionele
klassen in een cluster genen die
de gebruiker selecteert in een graaf. BiNGO (Biological Network
Gene Ontology), de software
die in het kader van deze scriptie werd ontwikkeld, is opgevat
als een plugin voor Cytoscape,
een bestaand pakket voor visualisatie van biologische netwerken.
Zowel plugin als moederpro-
gramma zijn in Java geprogrammeerd.
Voor de berekeningen wordt er gebruik gemaakt van statistische
testen (hypergeometrische test,
binomiale test) en ook van multiple testing correcties
(Benjamini & Hochberg correctie van de
False Discovery Rate, Bonferroni correctie van de Family-Wise
Error Rate).
Bij de visualisatie van de netwerken in Cytoscape wordt er
gebruik gemaakt van het grafische
pakket GINY (Graph INterface librarY). De plugin maakt hier ook
gebruik van.
Trefwoorden: Cytoscape, Java, overrepresentatie, visualisatie,
statistiek.
iii
-
Inhoudsopgave
1 Inleiding 1
1.1 Het biologische luik . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 2
1.1.1 Het centrale dogma . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 2
1.1.2 Biologische achtergrond . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 2
1.2 Gene Ontology (GO) . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 4
1.2.1 Wat is een ontologie? . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 4
1.2.2 De verschillende ontologieën in GO . . . . . . . . . . .
. . . . . . . . . . . 4
1.2.3 Hoe zien ontologieën eruit? . . . . . . . . . . . . . . .
. . . . . . . . . . . 5
1.2.4 Wat is een annotatie? . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 6
1.3 Waarom is deze scriptie belangrijk? . . . . . . . . . . . .
. . . . . . . . . . . . . . 6
1.4 Korte beschrijving van de BiNGO-functionaliteit . . . . . .
. . . . . . . . . . . . 7
1.5 Vergelijking met andere GO-tools . . . . . . . . . . . . . .
. . . . . . . . . . . . . 8
1.5.1 Introductie GO-tools . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 9
1.5.2 Vergelijking GO-tools . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 10
2 Introductie Cytoscape 13
2.1 Wat is Cytoscape? . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 13
2.2 Hoe is Cytoscape ontstaan? . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 13
2.3 De Cytoscape “Core”-functionaliteit en -architectuur . . . .
. . . . . . . . . . . . 14
2.3.1 Data-integratie . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 14
2.3.2 Annotatietransfer . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 15
2.3.3 Graaf lay-out . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 15
2.3.4 Attribuut-Naar-Visueel mapping . . . . . . . . . . . . . .
. . . . . . . . . 15
2.3.5 Graafselectie en -filteren . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 16
2.3.6 Plugin-interface . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 16
2.4 Graph INterface librarY (GINY) . . . . . . . . . . . . . . .
. . . . . . . . . . . . 16
2.5 De Cytoscape “Core”-Objecten . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 17
2.5.1 CyNetwork . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 18
2.5.2 CyWindow . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 19
iv
-
2.5.3 CytoscapeObj . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 19
3 Statistische analyse 21
3.1 Algemene principes toetsen van hypothesen . . . . . . . . .
. . . . . . . . . . . . 21
3.2 Bespreking van de verschillende gëımplementeerde testen . .
. . . . . . . . . . . . 23
3.2.1 Hypergeometrische test . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 24
3.2.2 Binomiale test . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 25
3.2.3 χ2-test . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 25
3.3 Bespreking van de verschillende correcties . . . . . . . . .
. . . . . . . . . . . . . 26
3.3.1 Bonferroni controle van de Family-Wise Error Rate . . . .
. . . . . . . . . 27
3.3.2 Benjamini & Hochberg controle van de False Discovery
Rate . . . . . . . 27
4 Implementatie van BiNGO 29
4.1 Plugin-architectuur in Cytoscape . . . . . . . . . . . . . .
. . . . . . . . . . . . . 29
4.1.1 Overzicht van het maken van een Cytoscape-plugin . . . . .
. . . . . . . . 29
4.1.2 Stap 1: Extend AbstractPlugIn . . . . . . . . . . . . . .
. . . . . . . . . 30
4.1.3 Stap 2: Creëer een Jar-file . . . . . . . . . . . . . . .
. . . . . . . . . . . . 31
4.1.4 Stap 3: Obfusceren van de plugin . . . . . . . . . . . . .
. . . . . . . . . . 31
4.1.5 Concrete implementatie van de plugin-architectuur in
BiNGO: BiNGO-
plugin.java . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 31
4.2 SettingsPanel: de gebruikersinstellingen . . . . . . . . . .
. . . . . . . . . . . . 31
4.2.1 SettingsOpenPanel, SettingsSavePanel: het kiezen van de
bestanden 32
4.2.2 HelpMenuBar: het help-menu . . . . . . . . . . . . . . . .
. . . . . . . . . 33
4.2.3 SettingsPanelActionListener: de luisteraar . . . . . . . .
. . . . . . . 33
4.3 Implementatie van de testen . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 35
4.3.1 DistributionCount: het tellen van de genen . . . . . . . .
. . . . . . . . 35
4.3.2 Implementatie van de hypergeometrische test . . . . . . .
. . . . . . . . . 36
4.3.3 Implementatie van de binomiale test . . . . . . . . . . .
. . . . . . . . . . 38
4.4 Implementatie van de correcties . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 38
4.4.1 Implementatie van de Bonferroni correctie van de
Family-wise Error Rate 38
4.4.2 Implementatie van de Benjamini & Hochberg correctie
van de False Dis-
covery Rate . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 39
4.5 DisplayBiNGOWindow: de visualisatie . . . . . . . . . . . .
. . . . . . . . . . . . . 39
4.6 CreateBiNGOFile: het gegevensbestand over de
overrepresentatie . . . . . . . . . 41
5 Handleiding BiNGO 43
5.1 Het BiNGO-venster met zijn opties . . . . . . . . . . . . .
. . . . . . . . . . . . . 43
5.2 Richtlijnen voor de combinatie statistische testen en
correcties . . . . . . . . . . 45
v
-
5.3 Het aantal categorieën . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 45
5.4 Testen tegenover genoom of graaf? . . . . . . . . . . . . .
. . . . . . . . . . . . . 45
5.5 Het ontologiebestand en het annotatiebestand . . . . . . . .
. . . . . . . . . . . . 46
5.6 Het SIF-bestand . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 47
5.7 Het databestand . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 48
5.8 De visualisatie . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 49
6 Clusteronderzoek met BiNGO 52
6.1 Inleiding . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 52
6.2 Bespreking van de geselecteerde cluster . . . . . . . . . .
. . . . . . . . . . . . . . 53
6.3 Screenshots van het onderzoek van de cluster met BiNGO . . .
. . . . . . . . . . 54
6.3.1 Screenshots van het testen tegenover het genoom . . . . .
. . . . . . . . . 54
6.3.2 Screenshots van het testen tegenover de graaf . . . . . .
. . . . . . . . . . 55
6.4 Bespreking van het onderzoek van de geselecteerde cluster .
. . . . . . . . . . . . 55
7 Besluit 70
7.1 Conclusies . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 70
7.2 Distributie via website en cd-rom . . . . . . . . . . . . .
. . . . . . . . . . . . . . 71
7.3 BiNGO in de toekomst . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 71
vi
-
Lijst van figuren
1.1 Voorbeeld van een microarray-compendium . . . . . . . . . .
. . . . . . . . . . . 3
2.1 Grafische voorstelling van de Cytoscape “Core” . . . . . . .
. . . . . . . . . . . . 17
5.1 Het BiNGO-venster met zijn opties . . . . . . . . . . . . .
. . . . . . . . . . . . . 43
6.1 Screenshot: De graaf met test-data . . . . . . . . . . . . .
. . . . . . . . . . . . . 52
6.2 Screenshot: De graaf met test-data met geselecteerde cluster
. . . . . . . . . . . 53
6.3 Screenshot: De te onderzoeken cluster . . . . . . . . . . .
. . . . . . . . . . . . . 53
6.4 Screenshot: Hypergeometrische test tegenover het hele genoom
. . . . . . . . . . 58
6.5 Screenshot: Hypergeometrische test, Benjamini &
Hochberg, genoom . . . . . . . 59
6.6 Screenshot: Hypergeometrische test, Bonferroni, genoom . . .
. . . . . . . . . . . 60
6.7 Screenshot: Binomiale test tegenover het hele genoom . . . .
. . . . . . . . . . . 61
6.8 Screenshot: Binomiale test, Benjamini & Hochberg, genoom
. . . . . . . . . . . . 62
6.9 Screenshot: Binomiale test, Bonferroni, genoom . . . . . . .
. . . . . . . . . . . . 63
6.10 Screenshot: Hypergeometrische test tegenover de genen in de
graaf . . . . . . . . 64
6.11 Screenshot: Hypergeometrische test, Benjamini &
Hochberg, graaf . . . . . . . . 65
6.12 Screenshot: Hypergeometrische test, Bonferroni, graaf . . .
. . . . . . . . . . . . 66
6.13 Screenshot: Binomiale test tegenover de genen in de graaf .
. . . . . . . . . . . . 67
6.14 Screenshot: Binomiale test, Benjamini & Hochberg, graaf
. . . . . . . . . . . . . 68
6.15 Screenshot: Binomiale test, Bonferroni, graaf . . . . . . .
. . . . . . . . . . . . . 69
vii
-
Lijst van tabellen
1.1 Vergelijking GO-Tools . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 12
3.1 Beslissingsmogelijkheden bij nulhypothesen . . . . . . . . .
. . . . . . . . . . . . 23
3.2 Dataorganisatie voor χ2-test . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 25
4.1 Vergelijking uitvoeringstijden hypergeometrische
distributie. . . . . . . . . . . . . 37
5.1 Corpus van het databestand in BiNGO . . . . . . . . . . . .
. . . . . . . . . . . 51
6.1 Tabel met de genen en hun functies uit de geselecteerde
cluster . . . . . . . . . . 57
viii
-
Hoofdstuk 1
Inleiding
BiNGO staat voor Biological Network Gene Ontology en voldoet aan
de ongeschreven wet dat
tools van zijn soort de twee letters ’GO’ in hun naam dragen
(cf. FatiGO, GOTM, GOSurfer,
GoMiner, ... voor een beschrijving van deze tools zie sectie
1.5.1 op pagina 9). BiNGO is opgevat
als een plugin voor Cytoscape, een bestaand pakket voor
visualisatie van biologische netwerken
dat een goede plugin-architectuur bevat.
Cytoscape is een programma waar elke dag nog aan gewerkt wordt.
Het is een programma
dat elke dag evolueert, er elke dag nieuwe concepten bijkrijgt.
Gedurende dit academiejaar
is Cytoscape ook geëvolueerd. Zo is bijvoorbeeld besloten over
te stappen van het grafische
pakket Y-files naar het grafische pakket GINY. Ook conceptuele
veranderingen in de architectuur
hebben zich dit jaar voorgedaan in Cytoscape. Als voorbeeld
hiervan kan men zeggen dat men
de grote klasse CytoscapeWindow opgesplitst heeft in
verschillende kleinere klassen (zoals onder
andere CyWindow, CyNetwork, ...). BiNGO is compatibel gemaakt
met elke versie die dit
jaar uitgekomen is en is compatibel met Cytoscape 2.0, ALPHA1.
Op 11 mei echter is de versie
Cytoscape 2.0, ALPHA2 ter beschikking gesteld op een apart
gedeelte van de site1, een deel
speciaal voor de ontwikkelaars van Cytoscape en voor de
programmeurs van plugins voor het
moederprogramma, waar trouwens ook de versie Cytoscape 2.0,
ALPHA1 gepubliceerd is. De
nieuwe versie bevat echter te veel veranderingen in klassen die
essentieel zijn voor de plugin
zoals die er nu uitziet om deze nog compatibel te krijgen vóór
het inleveren van de scriptie.
De veranderingen situeren zich vooral rond de klasse CyNetwork
besproken in sectie 2.5.1 op
pagina 18. In een latere versie van BiNGO zal de plugin wel
bruikbaar zijn met de recentste
versie, maar momenteel is er wegens de naderende deadline enkel
compatibiliteit met de vorige
ALPHA versie. De BiNGO-plugin en de versie Cytoscape 2.0, ALPHA1
staan ter beschikking
op de
site2.1http://www.cytoscape.org/alpha.html2http://www.psb.ugent.be/cbd/BiNGO/BiNGO.html
1
-
De taak van de plugin bestaat uit het berekenen en visueel
voorstellen van overrepresentatie
van functionele klassen van genen. Het berekenen gebeurt aan de
hand van statistische tests en
multiple testing correcties. Het visueel voorstellen gebeurt aan
de hand van het grafisch pakket
dat reeds gebruikt wordt door Cytoscape.
In het eerste hoofdstuk wordt de biologische kant van de zaak
belicht en wordt er ook een
korte beschrijving gegeven van de functionaliteiten van BiNGO.
Tevens wordt BiNGO daar
vergeleken met andere GO-tools die ook overrepresentatie van
functionele klassen van genen
nagaan. Het tweede hoofdstuk behandelt het moederprogramma van
de plugin: Cytoscape. Het
geeft aan hoe het programma ontstaan is, wat de belangrijkste
functionaliteiten zijn en hoe het
geconcipieerd is. Hoofdstuk drie vertelt ons de theoretische
opbouw van de statistische analyse
van de data. Hierin wordt speciaal aandacht geschonken aan de
gëımplementeerde statistische
tests en multiple testing correcties. In hoofdstuk vier wordt de
implementatie van de plugin
behandeld. Elke klasse wordt er uitvoerig besproken. Het vijfde
hoofdstuk bevat de handleiding
voor BiNGO en het zesde hoofdstuk bevat het onderwerpen van
BiNGO aan een testcluster
van genen geselecteerd in een netwerk. De conclusies,
distributie en toekomstperspectieven in
verband met BiNGO worden besproken in het zevende en laatste
hoofdstuk.
1.1 Het biologische luik
1.1.1 Het centrale dogma
Alle informatie voor de bouw en functie van een cel en zijn
componenten zit vervat in het
DNA, onder de vorm van genen. Die worden eerst, onder de invloed
van eiwitten die bekend
staan als transcriptiefactoren, overgeschreven (getranscribeerd)
naar mRNA. Dit mRNA wordt
uiteindelijk vertaald in eiwitten, de functionele eenheden
(werkpaarden) van de cel. Elke stap van
DNA naar eiwit wordt bëınvloed door regulatorische processen
die de intermediaire componenten
bewerken, knippen, modificeren of degraderen. Ook de
functionaliteit van de eindproducten, de
eiwitten, wordt continu gestuurd door regulatorische
processen.
1.1.2 Biologische achtergrond
Eén van de belangrijkste doelstellingen van de moleculaire
biologie vandaag is het ontrafelen en
in kaart brengen van de complexe interacties tussen DNA, RNA en
eiwitten die de functionaliteit
van een organisme bepalen. De laatste jaren is onder impuls van
technologische ontwikkelingen
enerzijds en de beschikbaarheid van volledig gesequeneerde
genomen anderzijds een drastische
verschuiving in aanpak opgetreden. Daar waar genen, eiwitten en
hun interacties vroeger als
onafhankelijke entiteiten werden bestudeerd, treedt nu meer en
meer een globale benadering
op de voorgrond: systeembiologie. De grootschalige experimenten
die daarmee gepaard gaan,
2
-
zoals expressie-profiling met microarrays (zie figuur 1.1 op
pagina 3), genereren een enorme
hoeveelheid data die met de huidige methodes niet adequaat kan
geanalyseerd worden. Vaak
gaat het om datasets met honderden datapunten voor duizenden
genen, een complexiteit die een
nieuwe dimensie geeft aan data-analyse. Om het onderliggende
netwerk van interacties op te
stellen, te visualiseren en te analyseren is de ontwikkeling van
nieuwe concepten en technologie
vereist. Het uiteindelijke doel van systeembiologie is om op
basis van het netwerk van interacties
tussen cellulaire componenten de functie van elke component en
de respons op een verstoring
van die component te achterhalen.
Figuur 1.1: Voorbeeld van een microarray-compendium [Hea00]. Dit
is een hiërarchisch geclusterdeweergave van de respons van de
ongeveer 6000 genen in gist (horizontaal) op 300
perurbatie-experimenten(verticaal). De kleur geeft weer in welke
mate een bepaald gen tot expressie komt (men meet mRNAniveau’s) in
een bepaald experiment in vergelijking met de controleconditie.
Rood is overgeëxpresseerd,groen is ondergeëxpresseerd.
Systeembiologie is een jong en sterk interdisciplinair
onderzoeksveld. Niet alleen de moleculaire
biologie speelt in dit veld een belangrijke rol, maar ook
wiskunde, statistiek, fysica en informa-
tica. Een van de kernvragen is hoe men verschillende types van
informatie kan samenbrengen en
analyseren als een overzichtelijk geheel. Grafen blijken uiterst
nuttig te zijn om fundamenteel ver-
schillende types van informatie in eenzelfde formaat bij elkaar
te brengen. Eiwit-interactiedata,
signaaltransductiecascades, transcriptiefactornetwerken en
metabolische pathways hebben een
3
-
vanzelfsprekende grafische voorstelling. Ook transcriptoomdata
kunnen grafisch vertaald wor-
den. De uitdaging is nu om deze verschillende netwerken verder
te integreren en te annoteren.
De technologie daarvoor moet nog grotendeels ontwikkeld worden,
hoewel veel basistechnieken
kunnen ontleend worden aan de discrete wiskunde, meer bepaald de
logica, grafentheorie en
combinatorische statistiek.
Het is belangrijk om alle beschikbare informatie over de genen
in het netwerk te verwerken.
Ongetwijfeld de belangrijkste bron van informatie bij het
analyseren en annoteren van genoom-
wijde datasets is het uitgebreide corpus van functionele
informatie dat in de laatste 30 jaar
werd verzameld. De laatste jaren werden een aantal initiatieven
ontwikkeld om die informatie
samen te brengen en gestructureerd aan te bieden onder de vorm
van een gecontroleerd vocab-
ularium. Een van de belangrijkste initiatieven daaromtrent is
Gene Ontology (GO). GO is een
hiërarchische structuur van termen in drie grote
onderverdelingen: biologisch proces, moleculaire
functie en cellulair compartiment. Elk gen wordt op basis van
literatuurinformatie geannoteerd
op een of meerdere nodes van elke klasse. In sectie 1.2 op
pagina 4 wordt Gene Ontology
besproken.
1.2 Gene Ontology (GO)
Het Gene Ontology (GO) project is ontstaan om aan de nood van
een consistente omschrij-
ving van genproducten in verschillende databanken te voldoen.
Een genproduct is een RNA- of
protëıneproduct dat door een gen geëncodeerd is. De
GO-medewerkers hebben drie structuren,
drie ontologieën ontwikkeld die genproducten omschrijven inzake
hun biologische processen, cel-
lulaire componenten en moleculaire functies. Deze zijn
ontwikkeld op een species-onafhankelijke
manier. [ABB+01] [ABB+00]
1.2.1 Wat is een ontologie?
Ontologie betekent de kunst (of de wetenschap) om alles een
juiste naam te geven. Ontolo-
gieën zijn specificaties van een relationeel vocabularium. Met
andere woorden het zijn sets van
gedefinieerde termen zoals men die in een woordenboek zou
vinden, maar met die aanpassing dat
de termen in een netwerk zitten. De termen in een gegeven
ontologie zijn beperkt tot diegene die
in een bepaald gebied gebruikt worden. In het geval van GO zijn
de termen allemaal biologisch.
1.2.2 De verschillende ontologieën in GO
GO is georganiseerd in drie structuren: molecular function,
biological process en cellular com-
ponent. Een genproduct heeft één of meerdere moleculaire
functies en wordt gebruikt in één of
meerdere biologische processen. Het kan tevens geassocieerd zijn
met één of meerdere cellulaire
4
-
componenten. Zo kan bijvoorbeeld cytochrome c beschreven worden
door de moleculaire functie
electron transporter activity, door de biologische processen
oxidative mitochondrial matrix en in-
duction of cell death en door de cellulaire componenten
mitochondrial matrix en mitochondrial
inner membrane.
Moleculaire functie
Moleculaire functies beschrijven activiteiten, zoals
catalysatorische of bindende activiteiten, op
het moleculaire niveau. De termen in de GO-moleculaire functies
stellen eerder deze activiteiten
voor dan de entiteiten die deze acties uitvoeren. Ze
specificeren niet waar of wanneer of in welke
context de acties plaatsvinden. Algemeen beschouwd
corresponderen moleculaire functies met
activiteiten die door een individueel genproduct kunnen
uitgevoerd worden, maar sommige ac-
tiviteiten worden uitgevoerd door een verzameling van
genproducten (complexes of gene product
groups genaamd). Voorbeelden van veel voorkomende functionele
termen zijn catalytic activity,
transporter activity en binding, voorbeelden van minder
voorkomende functionele termen zijn
adenylate cyclase activity en Toll receptor binding.
Biologisch proces
Een biologisch proces wordt bereikt door één of meerdere
geordende moleculaire functies. Voor-
beelden van veel voorkomende biologische processen zijn celgroei
en maintenance or signal trans-
duction. Voorbeelden van meer specifieke termen zijn pyrimidine
metabolism en alpha-glucoside
transport. Het kan moeilijk zijn om onderscheid te maken tussen
moleculaire functies en bio-
logische processen maar de algemene regel is dat een proces meer
dan één afzonderlijke stap
bezit.
Cellulaire component
Een cellulaire component is wat de benaming al aangeeft,
namelijk een deel van een cel maar met
de eigenschap dat het deel uitmaakt van een groter object. Dat
groter object kan een anatomische
structuur (bijvoorbeeld rough endoplasmic reticulum of nucleus)
of een genproductverzameling
(bijvoorbeeld ribosoom, proteasome of een protein dimer)
zijn.
1.2.3 Hoe zien ontologieën eruit?
GO-termen zijn georganiseerd in een structuur die men een
gerichte acyclische graaf noemt
(Directed Acyclic Graph (DAG)). Deze structuur verschilt van een
hiërarchie (of boomstructuur)
in het feit dat een kind (meer bepaald een term) meerdere ouders
kan hebben. Elke GO-term
moet ook beantwoorden aan de zogenaamde ”true path”-regel. Deze
regel zegt dat als een kind-
term het genproduct beschrijft, al de ouders ervan ook van
toepassing moeten zijn voor dat
5
-
genproduct.
1.2.4 Wat is een annotatie?
GO op zich is enkel een systeem om genen en protëınen te
annoteren, het zorgt niet voor het
relateren van databankelementen (genen) aan een annotatiewaarde.
Hier komen de annotatiebe-
standen in het spel, deze zorgen voor additionele informatie bij
de GO-bestanden. De termen van
de Gene Ontology worden gebruikt in de annotatie van
genproducten in biologische databanken.
GO-annotaties zijn associaties die gemaakt worden tussen
genproducten en de GO-termen die
deze beschrijven. Elk gen wordt op één of meerdere GO-termen
geannoteerd.
1.3 Waarom is deze scriptie belangrijk?
Het aantal genen in sets van genen kan zeer groot zijn en de
functionele data die met elk gen
kunnen geassocieerd worden zijn nogal complex. Het zoeken naar
patronen en het evalueren van
de functionele significantie van deze patronen voor grote
groepen van genen is een grote uitda-
ging voor biologen en is ook uiterst tijdrovend. Om dit te
kunnen verwezenlijken in een kortere
tijdspanne zijn er biologische tools nodig, software die de
onderzoeker helpt bij het functioneel
profileren van deze grote genen-sets. [ZSKS04]
Binnen deze scriptie werd een tool ontwikkeld om het
GO-initiatief ten volle te benutten bij het
functioneel annoteren van grafen en het opstellen van genetische
netwerken. Traditioneel wordt
de graaf eerst geclusterd in geconnecteerde componenten. Op de
methodes die hiervoor ont-
wikkeld werden wordt verder niet ingegaan. Verdere functionele
annotatie van de data gebeurt
dan door voor elke cluster na te gaan welke functionele klassen
(vb. GO-categorieën) statistisch
oververtegenwoordigd zijn.
Van bijzonder belang bij GO-overrepresentatie analyse is de
statistiek en de voorstelling van
de resultaten. Meestal worden enkel categorieën op een bepaald
intermediair niveau in de GO-
hiërarchie getest, waardoor het aantal tests (en de bijhorende
correctie) beperkt blijft. Tegelijk
wordt echter de rijke hiërarchische structuur afgevlakt en gaat
de samenhang tussen de func-
tionele klassen verloren. Binnen dit project werd de
methodologie ontwikkeld om genen of
clusters functioneel te annoteren op alle niveaus in de
GO-structuur, en vervolgens de anno-
taties voor verschillende genen of clusters te vergelijken.
Wanneer categorieën op alle niveaus
in de Gene Ontology getest worden is het van belang om de
p-waarden in de juiste context
te bekijken. Dat kan door de resultaten als subgraaf op de
hiërarchische structuur te map-
pen. Omdat per cluster meerdere tests worden uitgevoerd (soms
enkele honderden) moet ook
bijzondere aandacht besteed aan het multiple testing probleem.
Omdat traditionele correcties
zoals de Bonferroni correctie van de Family-Wise Error Rate
meestal te conservatief zijn, wor-
6
-
den veelal minder strenge correcties gebruikt. Voor de bioloog
wegen een aantal vals positief
gëıdentificeerde categorieën immers niet op tegen de
mogelijkheid een hypothetische functie voor
een onbekend gen te identificeren. Dit maakt het des te meer
noodzakelijk om te voorzien in
statistische testen die tegelijk gevoelig en toch verantwoord
zijn.
Een ander punt is de nood om de gebruiker te voorzien van
ergonomische tools. Command-
line gestuurde tools zijn meestal onbruikbaar voor de
doorsnee-bioloog. Enkel vlot bruikbare
tools met een intüıtieve interface kennen een wijd verspreid
gebruik onder biologen. Boven-
dien worden zowel Windows, Mac als Unix algemeen gebruikt in de
moleculaire biologie. Een
programmeur moet dan ook veel oog hebben voor
software-ontwikkeling, compatibiliteit en ge-
bruiksvriendelijkheid. Deze plugin zorgt er dus voor dat de
onderzoeker op een handige manier
een hele set van genen kan verwerken en dan uit de grafische
voorstelling van het resultaat een
juiste conclusie kan trekken met betrekking tot het al dan niet
overgerepresenteerd zijn van de
verschillende functionele klassen. Met ander woorden de
gebruiker zal te weten komen tot welke
functionele klasse(n) de geselecteerde genen het meeste kans
maken te behoren.
Zoals men in de sectie “Vergelijking met andere GO-tools” zal
merken, zijn er al verschei-
dene tools ontwikkeld die deze functionaliteiten voorzien. Maar
eigen aan de in dit document
voorgestelde tool is dat het ingebouwd is in een heus
netwerk-tool (met name Cytoscape, zie
het hoofdstuk over Cytoscape), zodat de gebruiker een cluster
genen kan selecteren in een graaf
en nog vele andere hulpmiddelen kan gebruiken die in deze
netwerk-tool aangereikt worden, dit
allemaal in combinatie met de plugin. Ook de visualisatie op het
einde van het proces is uniek
dankzij de mogelijkheid om de structuur te bekijken aan de hand
van een boom, die men dan
kan bewaren, editeren, ...
1.4 Korte beschrijving van de BiNGO-functionaliteit
De eerste stap om overrepresentatie van functionele categorieën
na te gaan is natuurlijk het
selecteren van de cluster genen waarin men gëınteresseerd is.
In Cytoscape kan dit zoals je in
Windows Verkenner bijvoorbeeld een aantal mappen selecteert om
te kopiëren. De knopen van
de graaf die men te zien krijgt in het Cytoscape-venster kunnen
genen of eiwitten zijn; beide
worden met dezelfde canonische (dus unieke) naam geadresseerd.
De bogen in de graaf kunnen
eiwit-eiwit-interacties, DNA-eiwit-interacties of andere
correlaties zijn.
Van de geselecteerde knopen kunnen we de canonische naam
opvragen. Via hun annotatie is het
mogelijk aan de hand van deze naam de functionele annotaties van
deze knopen op te vragen.
De volgende stap in ons overrepresentatieproces is het uitvoeren
van een statistische test op de
genen. De distributie (bijvoorbeeld de hypergeometrische
distributie) berekent in welke mate de
7
-
geselecteerde genen tot een bepaalde GO-categorie behoren, de
distributie wordt gebruikt om te
bepalen of een bepaalde categorie significant
overgerepresenteerd is in de geselecteerde cluster.
De waarde die men bekomt is dus een probabilistische waarde en
wordt meestal de “p-value”
genoemd. Men kan deze statistische test uitvoeren tegenover het
hele genoom of tegenover
de graaf van waaruit de cluster genen geselecteerd is.
Vervolgens kan men optioneel nog een
multiple testing correctie (bv. de Benjamini & Hochberg
correctie van de False Discovery Rate)
toepassen op deze distributie. Gezien een groot aantal
GO-categorieën getest worden, is dit
noodzakelijk. De waarden die na correctie bekomen worden,
krijgen meestal de naam “adjusted
p-values” of dus gecorrigeerde p-waarden.
De volgende fase behelst het vergelijken van de verkregen
waarden (al dan niet gecorrigeerd)
met een door de gebruiker vooropgestelde significantiegrens α.
Wanneer deze drempelwaarde
niet overschreden wordt, dan is de categorie in kwestie
significant overgerepresenteerd in deze
cluster. Gangbare waarden voor α zijn vooral 0.05 of 0.01 maar
waarden die veel kleiner zijn,
zijn niet uitzonderlijk en verhogen natuurlijk de
significantie.
De bekomen resultaten kunnen vervolgens visueel voorgesteld
worden. Eerst en vooral moet een
deelboom van de ontologieboom opgebouwd worden. Dit gebeurt door
de categorieën waarvoor
een p-value berekend is naar boven te laten propageren tot aan
de wortel van de ontologieboom.
Alle gevonden knopen en bogen worden opgenomen in de deelboom.
Men kan er echter voor
opteren om enkel deze knopen die overgerepresenteerd zijn voor
of na correcties naar boven te
laten propageren . Wanneer een categorie overgerepresenteerd is,
kan men die knoop een ander
kleurtje geven (bijvoorbeeld rood) zodat het goed opvallend is
voor de gebruiker. Ook kan men
de grootte van de knopen laten variëren naargelang het aantal
genen dat tot deze categorie
behoort. Tevens is er de optie voorzien om een gegevensbestand
aan te maken met daarin alle
belangrijke informatie in verband met het gedane onderzoek.
Om deze tool voor overrepresentatie te integreren in Cytoscape
wordt er gebruik gemaakt van
de handige plugin-architectuur (in sectie 4.1 op pagina 29 wordt
dit in detail besproken). Eens
de plugin geladen is via enkele klikken in het menu, vindt men
BiNGO in de menubalk onder
het menu-item “Plugins” en de berekeningen en visualisatie van
de overrepresentatie van een
cluster genen kan beginnen.
1.5 Vergelijking met andere GO-tools
In de wereld van de bio-informatica zijn er natuurlijk nog
mensen die op het idee gekomen zijn
om een soortgelijke tool te ontwikkelen. Meestal gaat dit echter
over een stand-alone tool of
eentje met een web-interface. Een Cytoscape-plugin bestond nog
niet. In deze sectie worden
8
-
eerst de verschillende tools voorgesteld en vervolgens worden
deze onderling vergeleken en ze
worden ook vergeleken met BiNGO.
1.5.1 Introductie GO-tools
FatiGO
FatiGO3 is een web-based tool van de bio-informatica groep op
CNIO (Spanje) die aan een
gegeven set van genen representatieve functionele informatie
(onder- of overgerepresenteerde
Gene Ontology termen) toewijst. De statistische significantie
wordt bereikt door gebruik te
maken van multiple-testing correctie. FatiGO is ontworpen voor
functionele annotatie van DNA
microarray data en is gelinkt aan GEPAS (Gene Expression Pattern
Analysis Suite)4. FatiGO
maakt gebruik van IDs van genen van de belangrijkste genoom en
proteomische databanken
(GeneBank5, UniProt Knowledgebase6, Unigene7, Ensembl8, etc.).
[ASDUD04]
Onto-Express
Onto-Express9 vertaalt lijsten van genen die differentieel
gereguleerd bevonden zijn in “high
througput”-gen-expressie experimenten, in functionele profielen
gebaseerd op GO. De statis-
tische significantiewaarde wordt berekend en de resultaten
worden grafisch voorgesteld als staaf-
diagrammen, taartvoorstellingen en ook hiërarchische GO-bomen.
Onto-Express is beschikbaar
bij “Intelligent Systems and Bioinformatics Laboratory”, Wayne
State University. [KDOK02]
GOSurfer
GoSurfer10 maakt gebruik van informatie over Gene Ontology in de
analyse van sets van genen
van “genome-wide” experimenten, micro-array analyse of andere
zeer parallelle methoden. Deze
tool maakt gebruik van rigoureuze statistische testen,
interactieve grafieken en geautomatiseerde
updating van de beschikbare annotaties voor de meest gebruikte
gen-identificatoren (UniGene,
LocusLink [PM01]) of Affymetrix probes. GoSurfer is gemaakt op
“Harvard School of Public
Health”.3http://fatigo.bioinfo.cnio.es/;
FatiGO4http://gepas.bioinfo.cnio.es/;
GEPAS5http://www.ncbi.nlm.nih.gov/Genbank/;
GeneBank6http://www.ebi.ac.uk/uniprot/; UniProt
Knowledgebase7http://www.ncbi.nlm.nih.gov/books/bv.fcgi?call=bv.View..ShowSection&rid=handbook.chapter.8578http://www.ensembl.org/;
Ensembl9http://vortex.cs.wayne.edu/projects.htm#Onto-Express;
Onto-Express
10http://www.biostat.harvard.edu/complab/gosurfer/; GOSurfer
9
-
GoMiner
GoMiner11 is een in Java geprogrammeerd pakket dat lijsten van
“interessante” genen organiseert
(bijvoorbeeld naar boven of naar beneden gereguleerde genen van
een micro-array experiment)
om zo biologische interpretatie in de context van Gene Ontology
toe te laten. Ook verschaft
deze tool kwantitatieve en statistische uitvoerbestanden en twee
bruikbare visualisaties: ten
eerste een boomachtige structuur en ten tweede een compacte,
dynamische interactieve gerichte
acyclische graaf. De genen die voorgesteld worden in GoMiner
zijn gelinkt met de belangrijkste
publieke bio-informaticabronnen. Een tool, MatchMiner, kan
gebruikt worden als preprocessor
om de namen van de genen te bekomen die als invoer kunnen dienen
voor GoMiner en andere
GO-tools. [ZFW+03]
GOTM (GOTree Machine)
GOTM of voluit Gene Ontology Tree Machine12 is een web-based
tool voor data-analyse en
datavisualisatie voor sets van genen. Deze tool zorgt voor het
genereren van een GOTree, een
boomachtige structuur om te kunnen navigeren in de Gene Ontology
gerichte acyclische graaf
voor een “input gene set”. Dit systeem zorgt voor een
gebruiksvriendelijke datanavigatie en vi-
sualisatie. Statistische analyse helpt de gebruikers de
belangrijkste “Gene Ontology”-categorieën
te identificeren voor een invoerset en er worden ook biologische
gebieden gesuggereerd waarvoor
verdere studie interessant is. [ZSKS04]
EASE
EASE13 is een standalone softwarepakket van NIAID14 voor Windows
besturingssystemen. Wan-
neer een genenlijst die resulteert uit een microarray of een
ander experiment gegeven is kan EASE
op een snelle manier voor elke mogelijke GO-term
overrepresentatiestatistieken berekenen ten
opzichte van alle genen die voorkomen in de dataset.
[HDS+03]
1.5.2 Vergelijking GO-tools
In tabel 1.1 op pagina 12 staat een vergelijking tussen de
verschillende tools die in de vorige
sectie besproken zijn en de voor deze scriptie ontwikkelde
Cytoscape-plugin BiNGO. Een eerste
element dat opvalt is dat BiNGO weliswaar gebruik maakt van
Cytoscape maar dat Cytoscape
op zich platformonafhankelijk is aangezien het volledig in Java
geprogrammeerd is. BiNGO kan
dus net zoals de web-gebaseerde tools op gelijk welk
besturingssysteem lopen, dit in tegenstelling
tot GoSurfer en EASE die enkel onder Windows draaien en GoMiner
die enkel op Windows of11http://discover.nci.nih.gov/gominer/;
GoMiner12http://www.gotm.net/; GOTM13http://www.ease.org.uk/;
EASE14http://www.niaid.nih.gov/; NIAID
10
-
Mac werkt.
Net zoals de meeste tools, enkel FatiGO is hier een
uitzondering, biedt de plugin een multi-level
analysis aan. Men moet dus niet zoals bij FatiGO op voorhand een
bepaald niveau van de
GO-hiërarchie specificeren, alle niveau’s worden
onderzocht.
Voor de visualisatie van de overgerepresenteerde categorieën
wordt er in BiNGO gebruik gemaakt
van een gerichte acyclische graaf die bekomen wordt door de
bladeren naar boven te laten
propageren tot men aan de root komt. Er is voor deze aanpak
gekozen omdat het zo voor
de gebruiker duidelijk is waar de origine ligt van een
overgerepresenteerde categorie. Ook is
er geopteerd om deze categorieën in een rode kleur voor te
stellen, ze dus te “highlighten” en
tevens wordt er een indicatie voor het aantal genen van de
cluster in die categorie weergegeven,
dit dan in de grootte van de knoop. Andere tools doen ongeveer
hetzelfde, maar geen enkele
heeft de unieke combinatie van kleur en grootte van de
knoop.
Voor de statistische analyse werd in BiNGO geopteerd voor de
hypergeometrische test en de
binomiale test. In een latere versie komt daar dan nog de
χ2-test bij. De hypergeometrische test
is echter de belangrijkste. Hij is immers een speciaal geval van
de in de literatuur veel besproken
Fisher-test en is tevens nauwkeuriger dan de χ2-test of de
binomiale test en dit vooral wanneer
het aantal genen in de graaf of het genoom klein is.
Omdat er gebruik gemaakt wordt van herhaalde testen om na te
gaan welke categorieën over-
gerepresenteerd zijn (Fishing), is het noodzakelijk om ten
minste de mogelijkheid aan te bieden
tot multiple testing correctie. Volgens de makers van FatiGO
gaat deze hogere nauwkeurigheid
ten koste van de snelheid, maar in de praktijk is er van deze
slechtere performantie niets te
merken. Toch is multiple testing correctie om deze reden niet
gëımplementeerd in GOTM.
Wat ook nog een voordeel is voor de nieuw ontwikkelde plugin is
dat BiNGO en het moe-
derprogramma Cytoscape volledig gratis zijn, dit in
tegenstelling tot Onto-Express dat slechts
gedeeltelijk gratis is.
Het laatste en tevens grootste voordeel bij BiNGO is dat het
gëıntegreerd is in een breder visuali-
satieproduct (Cytoscape). Zo kunnen clusters makkelijk
gëımporteerd worden, makkelijk op een
natuurlijke wijze geselecteerd worden in de grafische omgeving
die het moederprogramma aan-
biedt. Ook de export van de resultaten kan zo op een duidelijke
manier gebeuren door gebruik te
maken van de grafische mogelijkheden van Cytoscape. Er is op
deze manier ook mogelijkheid tot
combinatie met andere tools en plugins. Zo kan bijvoorbeeld in
de toekomst BiNGO uitgebreid
worden met graaf-clustering, scriptie-onderwerp voor het
academiejaar 2004-2005.
11
-
Tab
el1.
1:V
erge
lijki
ngG
O-T
ools
Fati
GO
Ont
o-E
xpre
ssG
oSur
fer
GoM
iner
GO
TM
EA
SEB
iNG
O
Inte
rfac
e/O
SW
ebW
ebW
indo
ws
Win
dow
s/M
acW
ebW
indo
ws
alle
OS
Mu l
ti-lev
elan
alys
isN
eeJa
JaJa
JaJa
Ja
Vis
ualis
atie
van
decl
assi
ficat
ie
Staa
fdia
gram
,ta
bel,
fixed
tree
Staa
fdia
gram
,ta
bel
Fix
edtr
eeE
xpan
dabl
etr
ee,
geri
chte
acyc
lisch
egr
aaf
Exp
anda
ble
Tre
e,st
aafd
i-ag
ram
,fix
edtr
ee
data
best
and
Fix
edtr
ee,
data
best
and
Stat
isti
sche
anal
yse
Fis
her’
sex
act
test
Bin
omia
lte
st,
χ2
test
,Fis
her’
sex
act
test
χ2-t
est
Fis
her’
sex
act
test
Hyp
erge
o-m
etri
sche
test
Hyp
erge
o-m
etri
sche
test
Hyp
erge
o-m
etri
sche
test
,B
inom
iale
test
(,χ
2-t
est)
Cor
rect
ievo
orm
ulti
-pl
ete
stin
g
JaJa
Nee
Nee
Nee
JaJa
Vis
ualis
atie
van
deov
erge
re-
pres
ente
erde
GO
-ca
tego
rieë
n
Staa
fdia
gram
,ta
bel
Staa
fdia
gram
,ta
bel
Hig
hlig
htin
devo
lledi
geG
OTre
e
Hig
hlig
htin
dege
rich
teac
yclis
che
graa
f
Hig
hlig
htin
dege
rich
teac
y-cl
isch
egr
aaf,
staa
fdia
gram
data
best
and
Hig
hlig
htin
dege
rich
teac
yclis
che
graa
f
Kos
tpri
jsG
rati
sG
edee
ltel
ijkgr
atis
Gra
tis
Gra
tis
Gra
tis
Gra
tis
Gra
tis
Inte
grat
iein
bred
ervi
sual
isat
iepa
kket
Nee
Nee
Nee
Nee
Nee
Nee
Ja:
Cyt
osca
pe
12
-
Hoofdstuk 2
Introductie Cytoscape
2.1 Wat is Cytoscape?
Cytoscape is een open source en platformonafhankelijk
computerprogramma dat gebruikt wordt
voor het integreren van biomoleculaire interactienetwerken met
“high-throughput”-expressiedata
en andere moleculaire data tot een globaal conceptueel
framework. Het programma is toepasbaar
op om het even welk moleculair systeem van componenten en
interacties, maar is het krachtigst
wanneer het gebruikt wordt voor grote databanken van
protëıne-protëıne, protëıne-DNA en
genetische interacties die steeds in grotere mate beschikbaar
zijn voor mens- en modelorganis-
men. Een software “Core” verschaft een basisfunctionaliteit voor
lay-out en bevraging van het
netwerk voor visuele integratie van het netwerk met
expressieprofielen, fenotypen en andere
moleculaire toestanden en voor het linken van netwerken met
databanken van functionele an-
notaties. De “Core” is uitbreidbaar door een ongecompliceerde
plug-in architectuur, die snelle
ontwikkeling van extra “features” en nieuwe computationele
analyses toelaat. De Cytoscape
Core is platformonafhankelijk en kan dus worden uitgevoerd op de
meeste besturingssystemen.
Bovendien is ze gratis ter beschikking op de Cytoscape website
(www.cytoscape.org) als een
open source Java Application. Het programma is ook uitvoerbaar
vanop het web dankzij Java
Web Start. Het grootste deel van dit hoofdstuk is gebaseerd op
[SMO+03].
2.2 Hoe is Cytoscape ontstaan?
Door de exponentiële groei van experimentele technologieën om
moleculaire interacties en toe-
standen te karakteriseren, ontstond de nood aan software tools
om de enorme hoeveelheid data te
verwerken en te analyseren. Om data van moleculaire interacties
te organiseren en voor te stellen
in een tweedimensionaal netwerk zijn er viewers beschikbaar die
voor meerdere doeleinden bruik-
baar zijn (bijvoorbeeld: Pajek [BM98], Graphlet1, daVinci2).
Meer gespecialiseerde tools
zoals1http://www.infosun.fmi.uni-passau.de/Graphlet/; Graphlet
Toolkit 5.0.12http://www.informatik.uni-bremen.de/daVinci/; daVinci
V2.1
13
-
Osprey3 en PIMrider4 verschaffen ook deze functionaliteiten,
maar linken ook het netwerk aan
moleculaire interactie-databanken en functionele databanken
zoals BIND [BDW+01], DIP [XE01]
of TRANSFAC [WCF+01]. Vergelijkbaar zijn er voor
gen-expressieprofielen en andere molecu-
laire data verschillende programma’s ter beschikking voor
clustering, classificatie en visualisatie
(bijvoorbeeld: GeneCluster [TDM+99], TreeView [ESBB98],
GeneSpring5). Ondanks deze vele
toepassingen blijft er nog de dringende nood aan software die
zowel moleculaire interacties als
metingen van de moleculaire toestand (zoals bijvoorbeeld mate
van gen-expressie) integreren in
een gemeenschappelijk framework, om dan deze data te beschrijven
met een wijd assortiment van
modelparameters en andere biologische attributen. Bovendien is
een flexibel en open systeem
nodig om algemene en uitbreidbare berekeningen op het
interactienetwerk te kunnen imple-
menteren [Kar01]. Want het is door deze berekeningen dat
“high-level” (dus meer algemene)
interactie data kunnen gekoppeld worden aan, en een drijfveer
zijn voor, de ontwikkeling van
“low-level” (dus meer specifieke) fysico-chemische modellen. Om
aan deze noden te voldoen, is
Cytoscape ontwikkeld door The Institute for Systems Biology in
samenwerking met The Uni-
versity of California te San Diego en The Memorial
Sloan-Kettering Cancer Center.
2.3 De Cytoscape “Core”-functionaliteit en -architectuur
De basisvoorstelling van biologische data in Cytoscape is een
graaf, met de moleculaire entiteiten
(i.e. eiwitten of genen) voorgesteld door knopen en de
intermoleculaire interacties voorgesteld
door bogen tussen de knopen. De Cytoscape Core software voorziet
basisfunctionaliteit voor het
integreren van arbitraire data in de graaf, representatie van de
graaf en de gëıntegreerde data,
selectie- en filtertools en een interface naar externe methodes
gëımplementeerd als plugins.
2.3.1 Data-integratie
Bijkomende data zijn gëıntegreerd in het graafmodel door
gebruik te maken van attributen. Dit
zijn (naam, waarde)-paren die knopen of bogen mappen op
specifieke datawaarden. Bijvoor-
beeld, de knoop met de naam “GAL4” kan een attribuut hebben dat
“expression ratio” heet en
een waarde van 3,41 heeft. De attribuutwaarden kunnen van gelijk
welk type zijn (bijvoorbeeld:
strings, discrete of continue getallen, URLs of lists) en ze
worden ofwel geladen van een data-
bank, ofwel dynamisch gegenereerd in de sessie zelf. Grafische
browsers laten de gebruiker toe
alle attributen van de op dat moment geselecteerde knopen en
bogen te onderzoeken.3http://biodata.mshri.on.ca/; Osprey Network
Visualization System4http://pim.hybrigenics.com/;
PIMRider5http://www.silicongenetics.com/; GeneSpring 5.0
14
-
2.3.2 Annotatietransfer
Waar een attribuut één enkel predicaat van een knoop of boog
voorstelt, representeert een on-
tologie een hiërarchische classificatie (vormelijk een gerichte
acyclische graaf) van progressief
meer specifieke beschrijvingen van eigenschappen van knopen of
bogen. Typisch corresponderen
ontologieën met een bestaande kennisbank die groot, complex en
relatief statisch is, zoals bij-
voorbeeld de “Gene Ontology”-database [ABB+01]. “Hexose
metabolism”, dat gedefinieerd
is op niveau 6, bijvoorbeeld, vertakt op niveau 7 in meer
specifieke processen zoals “galactose
metabolism” en “glucose metabolism”. Cytoscape integreert
annotaties met andere netwerk-
datatypes door de gewenste niveau’s van annotatie in de
ontologie te transfereren op knoop-
of boogattributen. Door gebruik te maken van de “annotation
controller” is het mogelijk om
meerdere niveau’s actief en in beeld te hebben op hetzelfde
moment, elk als een verschillend
attribuut van de knopen en bogen waarin men gëınteresseerd
is.
2.3.3 Graaf lay-out
Eén van de meest fundamentele tools voor het interpreteren van
moleculaire interactiedata is de
visualisatie van knopen en bogen door een tweedimensionaal
netwerk [TBET99]. De vroegere
versie van Cytoscape ondersteunde verscheidene geautomatiseerde
algoritmen voor netwerklay-
out zoals spring-embedded lay-out, hiërarchische lay-out en
circulaire lay-out. Van deze is spring-
embedded layout de meest gebruikte methode voor het opstellen
van algemene tweedimensionale
grafen [Ead84]. Deze methode modeleert een mechanisch systeem in
hetwelke de bogen van de
graaf corresponderen met Hookse veren, die een
aantrekkingskracht uitoefenen tussen knopen
die ver uiteen liggen en een afstotende kracht tussen knopen die
dicht bij elkaar liggen. Voorlopig
is enkel deze spring-embedded lay-out gëımplementeerd in de
nieuwste versie van Cytoscape, al
bestaat er wel al een plugin die de functionaliteit van een
hiërarchische lay-out aanbiedt.
2.3.4 Attribuut-Naar-Visueel mapping
Zoals de lay-out de locatie van de knopen en de bogen in het
venster bepaalt, laat een attribuut-
naar-visueel mapping data-attributen toe het uitzicht van de met
die attributen geassocieerde
knopen en bogen te controleren. Cytoscape ondersteunt een grote
verscheidenheid aan visuele
eigenschappen zoals kleur, vorm en grootte van de knopen; kleur
en dikte van de knooprand en
kleur, dikte en stijl van de bogen. Een data-attribuut wordt
gemapt op een visuele eigenschap
door gebruik te maken van ofwel een “lookup table”, ofwel
interpolatie, afhankelijk van het
discreet of continu zijn van de waarde van het attribuut. Door
visueel expressiewaarden te
plaatsen op de interactiepaden die verondersteld zijn die
waarden te reguleren, connecteren
attribuut-naar-visueel mappings de geobserveerde data
rechtstreeks met een onderliggend model.
15
-
2.3.5 Graafselectie en -filteren
Om de complexiteit van een groot netwerk van moleculaire
interacties te verminderen, is het
noodzakelijk om selectief subsets van knopen en bogen voor te
stellen. Knopen en bogen kunnen
geselecteerd worden volgens een grote variëteit aan criteria,
zoals selectie via naam, via een
lijst van namen of op basis van een attribuut. Meer complexe
netwerkselectie-queries worden
ondersteund door een filter-toolbox die bestaat uit onder andere
een “dichtste buur”-filter, die
knopen selecteert met een minimum aantal buren binnen een vooraf
bepaalde afstand in het
netwerk; een “Local Distance”-filter, die knopen selecteert
binnen een gespecificeerde afstand
van een groep van vooraf geselecteerde knopen; een “Differential
Expression”-filter, die knopen
selecteert volgens de met hen geassocieerde expressie-data; een
combinerende filter, die knopen
selecteert via arbitraire AND/OR-combinaties van andere
filters.
2.3.6 Plugin-interface
Plugin-modulen verschaffen een krachtige manier om de Cytoscape
Core uit te breiden om
nieuwe algoritmen, additionele netwerkanalyses en/of biologische
semantiek te implementeren.
Plugins krijgen toegang tot het netwerkmodel van de “Core” en
kunnen ook de voorstelling van
het netwerk beheren. Ook al is de Cytoscape Core open source,
toch zijn plugins afzonderlijke
stukken software die beschermd kunnen zijn door gelijk welke
licentie die de plugin-auteur ver-
langt. De reeds genoemde hiërarchische lay-out (sectie 2.3.3 op
pagina 15) is een voorbeeld van
een dergelijke plugin en ook het programma dat het doel is van
deze scriptie is een plugin voor
Cytoscape. In sectie 4.1 op pagina 29 gaan we verder in op
plugins en wordt er ook besproken
hoe deze te implementeren.
2.4 Graph INterface librarY (GINY)
Cytoscape maakt voor de visualisatie van grafen gebruik van een
grafische bibliotheek: Graph
INterface librarY of kortweg GINY6. GINY implementeert een zeer
innovatief systeem voor
deelgrafen en laat verbluffende visualisatie toe. Bovendien is
deze bibliotheek open source (net
zoals Cytoscape dus), is ze voorzien van een aantal
lay-outalgoritmen en is ze ontworpen met
een zeer intüıtieve API. Andere grafische pakketten hebben niet
al deze voordelen. Zo zijn
bijvoorbeeld Y-Files7 en Tom Sawyer8 duur en dat hoge
prijskaartje vormt een barrière om
onafhankelijke programmeurs aan een applicatie of plugin te
laten werken die deze pakketten
gebruikt. Ook is het onmogelijk om de code van het pakket te
modifiëren voor eigen gebruik6http://csbi.sourceforge.net/;
GINY7http://www.yworks.com/en/products yfiles about.htm;
Y-Files8http://www.tomsawyer.com/home/index.php; Tom Sawyer
16
-
gezien het geen open source bibliotheken betreft. Vroeger was
Cytoscape opgebouwd met het
grafische pakket Y-Files, maar wegens de kostprijs is dit pakket
in de recentste versie van
Cytoscape volledig vervangen door GINY. JGraph9 beantwoordt ook
niet echt aan de noden
van Cytoscape. JGraph is wel meer design-georiënteerd, maar
komt tekort inzake operaties op
de grafen. GINY specifieert bovendien enkel een set van
interfaces, zo kunnen andere pakketten
geadapteerd worden om GINY-interfaces te implementeren.
2.5 De Cytoscape “Core”-Objecten
Cytoscape bevat verscheidene “Core”-objecten10 die de
essentiële datastructuren en venster- en
user interface-objecten inhouden. Deze objecten worden gebruikt
door de andere objecten van
Cytoscape en door de plugins. Vroeger bestond er één
monolithische klasse CytoscapeWindow,
maar bij het heropbouwen van Cytoscape zonder Y-Files heeft men
ervoor geopteerd om meerdere
objecten te maken. In deze sectie gaan we kort kennismaken met
deze “Core”-objecten. Een
grafische voorstelling van de Cytoscape “Core” ziet u in figuur
2.1 op pagina 17.
Figuur 2.1: Grafische voorstelling van de Cytoscape “Core”
9http://www.jgraph.com/;
JGraph10http://projects.systemsbiology.net/cytoscape/coreDesign/coreObjects.html;
“Core”-Objects
17
-
2.5.1 CyNetwork
De klasse CyNetwork representeert een graaf/netwerk en de
daarmee geassocieerde data. Dit ob-
ject is het centrale data-object van Cytoscape. CyNetwork bevat
een referentie naar de volgende
objecten:
• De graaf wordt voorgesteld door het grafische pakket GINY. Een
graafmodel in GINY,dat natuurlijk bestaat uit knopen en bogen
tussen die knopen, wordt opgesplitst in Root-
Graphs en GraphPerspectives. De RootGraphs bevatten alle knopen
en bogen in een
graaf, terwijl de GraphPerspectives een subset van die knopen en
bogen bevatten (gelijk
welke GraphPerspective mag alle knopen en bogen van zijn
RootGraph bevatten, maar
het hoeft dat niet te doen). Elke GraphPerspective heeft exact
één RootGraph, maar de
Rootgraphs mogen gelijk welke hoeveelheid aan GraphPerspectives
hebben. Een Graph-
Perspective wordt bijvoorbeeld gebruikt wanneer men heel het
interactienetwerk van gist
inlaadt en men enkel de GAL-genen wil bekijken. Dit gebeurt door
het inladen van het
hele netwerk in de RootGraph en van dit netwerk dan een
GraphPerspective verkrijgen
die enkel de GAL-genen bevat.
• Twee instanties van het GraphObjAttributes-object (met name
nodeAttributes en edge-Attributes) bevatten de data-attributen die
horen bij de knopen en bogen.
• Het ExpressionData-object tenslotte bevat een bundel van
expressie-data metingen zoalsmicroarray-data. De klasse
ExpressionData voorziet de gebruiker van een parser voor
het gebruikelijke bestandsformaat voor expressie-data en een
interface voor het toegang
verschaffen tot de data. Onder het gebruikelijke bestandsformaat
voor expressie-data
verstaan we dat “tokens” alfanummerieke waarden zijn die
gescheiden worden door wit-
spaties, dat alle lijnen (buiten de hoofding) hetzelfde aantal
tokens bevatten met informatie
over de genen en dat de hoofding de eerste lijn van het bestand
is. Natuurlijk moeten alle
lijnen met informatie over de genen en ook de hoofding voldoen
aan bepaalde vormeisen,
maar daar dieper op ingaan zou ons te ver leiden. Dit object kan
ook andere data dan
expressiedata voorstellen.
De klasse CyNetwork heeft een listener-architectuur voor het op
de hoogte stellen van luiste-
raars wanneer iemand operaties aan het uitvoeren is op het
netwerk. Algoritmen moeten de
beginActivity-methode aanroepen vóór er op het netwerk gewerkt
wordt en de endActivity-
methode aanroepen wanneer de bewerkingen gedaan zijn.
18
-
2.5.2 CyWindow
CyWindow bevat alle “view”- en “user interface”-componenten die
geassocieerd worden met het
voorstellen van de graaf en het beheren van de user interface.
Het is het meest gecompliceerde ob-
ject dat uit CytoscapeWindow is voortgevloeid, aangezien het
alles bevat waarvoor de ontwikke-
laars nergens anders een gepast plekje vonden. Later kunnen de
ontwikkelaars van Cytoscape
er toch nog voor opteren om bepaalde delen van CyWindow op te
delen in kleinere stukken. Een
reeds bestaand voorbeeld hiervan is de klasse CyMenus, die de
creatie van alle menu’s en tool-
bars voor zich neemt. Het CyWindow-object bevat een referentie
naar onder andere de volgende
objecten:
• Het CyNetwork-object van sectie 2.5.1 op pagina 18.
• Het CyMenus-object waarvan sprake in deze sectie.
• Het GraphView-object van GINY dat instaat voor de
visualisatie, dus het tekenen van degraaf.
• Het “visual mapping system” dat zegt hoe de knopen en de bogen
van de graaf getekendmoeten worden. Het maakt gebruik van functies
die door de gebruikers gedefinieerd zijn
om waarden van verscheidene attributen (zoals bijvoorbeeld de
kleur ervan) te berekenen
door gebruik te maken van data-attributen die aan elke knoop en
boog vastgehangen
zijn. Hier wordt de “Attribuut-Naar-Visueel mapping” uit sectie
2.3.4 op pagina 15 dus
gëımplementeerd.
2.5.3 CytoscapeObj
De CytoscapeObj-klasse wordt op dit moment gebruikt als een
container die alles bevat wat niet
bij een netwerk- of vensterklasse past. Dit zijn over het
algemeen objecten die uniek zijn binnen
één instantie van Cytoscape en het zijn ook objecten waartoe
iedereen toegang wil hebben. Het
CytoscapeObj-object bevat een referentie naar de volgende
objecten die de zojuist beschreven
eigenschappen bezitten:
• Het CytoscapeConfig-object: Om Cytoscape te laten lopen worden
er een aantal para-meters gebruikt die door de gebruiker kunnen
opgeroepen worden en die gebruikt worden
om te bepalen wat er moet gedaan worden. Bijvoorbeeld of er
bepaalde “features” moeten
toegepast worden (enabled) of niet (disabled), welke data er
moeten opgeladen worden
en waar deze bestanden te vinden zijn, welke plugins er moeten
geladen worden, . . . De
meeste van deze parameters zitten in het CytoscapeConfig-object.
Dit object bestaat
voornamelijk uit boolese vlaggen of String-variabelen die
aangeven wat er moet gebeuren.
19
-
• Het BioDataServer-object: De BioDataServer is een complex
systeem dat informatieverschaft over bepaalde objecten. Algemeen
beschouwd kan men via de naam van een
entiteit (dit is een gen of een eiwit of een sequentie) en de
species tot dewelke het behoort,
verscheidene soorten informatie bekomen die met deze naam
gerelateerd zijn. Men kan
bijvoorbeeld een lijst van gekende synoniemen voor een
dergelijke entiteit opzoeken. Ook
de canonische naam die met een bepaald synoniem geassocieerd is,
kan verkregen worden
met behulp van dit object. Bovendien kan men wanneer de naam van
een ontologie
(bijvoorbeeld “GO Biological Process”) gegeven is, toegang
krijgen tot de boom van de
annotatie-informatie voor een entiteit, inzake de gewenste
ontologie.
• Het CalculatorCatalog-object: Voor elk venster is er een eigen
“visual mapper” omhet uiterlijk van de knopen en de bogen te
bepalen. Om alle gekende visualisatiestij-
len die gebruikt worden te bewaren, bestaat er één enkel
globaal object, met name het
CalculatorCatalog-object.
20
-
Hoofdstuk 3
Statistische analyse
In dit hoofdstuk wordt de theoretische uiteenzetting gegeven van
de statistische analyse van de
data. Eerst wordt er algemeen uiteengezet wat het toetsen
(testen) van hypothesen behelst.
Een tweede deel gaat over de verschillende testen die in BiNGO
gëımplementeerd zijn. Elke
test heeft eigen karakteristieken en dus werd er geopteerd om de
gebruiker zelf de keuze te laten
tussen de verscheidene distributies die hem of haar aangereikt
worden. De derde sectie van dit
hoofdstuk gaat over correcties voor multiple testing. De
gebruiker is vrij om te kiezen of hij een
correctie op deze testen wil of niet en zo ja welke correctie
zijn voorkeur wegdraagt.
3.1 Algemene principes toetsen van hypothesen
In de wereld van de wetenschap, biologie, farmacie, . . .moeten
er dikwijls binaire beslissingen
genomen worden. Er moet dan een keuze gemaakt worden tussen Ja
en Nee. Enkele voorbeelden
die in de praktijk veel voorkomen:
• Is deze man de vader van deze jongen?
• Is deze man HIV-positief?
• . . .
• en ook is een bepaalde groep genen die tot een bepaalde
categorie behoort overgerepre-senteerd?
In de gegeven voorbeelden is er altijd sprake van “een effect of
associatie” van één variabele met
een andere in de doelpopulatie. In de wetenschap kan de bewering
dat de ene variabele met de
andere geassocieerd is, onderzocht worden door het al dan niet
verwerpen van de nulhypothese
dat er geen associatie zou zijn tussen de twee variabelen. Op
basis van lukrake observaties
21
-
beslist men dan om al dan niet de nulhypothese te verwerpen in
het voordeel van de alternatieve
hypothese. Als men niet de hele populatie observeert, bestaat
steeds een kans op een foute
beslissing met betrekking tot die populatie. Een goed
uitgevoerde statistische toets zal de kans
op belangrijke fouten a priori berekenen en binnen
gecontroleerde grenzen houden.
Concreet wordt bij een statistische toetsingsprocedure eerst een
nulhypothese (H0) en een alter-
natieve hypothese (HA) opgesteld. De nulhypothese zal men wensen
te verwerpen ten voordele
van de alternatieve hypothese. Een voorbeeld van een dergelijke
nulhypothese is:
• H0: de groep genen die tot een bepaalde categorie behoort is
overgerepresenteerd.
• HA: de groep genen die tot een bepaalde categorie behoort is
niet overgerepresenteerd.
De volgend stap is een eenvoudige toetsingsgrootheid T
definiëren, een variabele die men op
basis van de observaties kan berekenen (zoals bijvoorbeeld de
hypergeometrische distributie). T
moet zodanig gekozen zijn dat:
• er zoveel mogelijk informatie met betrekking tot de
discriminatie tussen nulhypothese enalternatief in T is
samengevat,
• de theoretische verdeling van T (bij benadering) gekend is in
de veronderstelling dat denulhypothese waar is.
De derde stap is een beslissingscriterium definiëren voor de
toets. Als de geobserveerde waarde
van T “te extreem” ligt ten opzichte van haar verdeling onder
H0, zal men H0 verwerpen ten
voordele van het alternatief. Een goed gedefinieerde
toetsingsprocedure moet a priori aangeven
wanneer H0 verworpen wordt ten voordele van HA, bijvoorbeeld van
zodra men onder H0hoogstens 5% kans heeft om een uitkomst te
observeren die minstens zo extreem is als de
geobserveerde T -waarde. Door de beslissing op deze laatste
manier te nemen, aanvaardt men
een gecontroleerde kans op een type I-fout : H0 verwerpen op
basis van de geobserveerde gegevens
terwijl H0 in de doelpopulatie in werkelijkheid toch waar is,
dit is dus een vals positief. Hierboven
werd de kans op een type I-fout kleiner of gelijk aan 5%
genomen. In het algemeen wordt die
maximaal getolereerde kans met α aangeduid en wordt ze de
betrouwbaarheid(sdrempel) of het
significantieniveau (significance level) van de toets
genoemd.
De vierde en laatste stap is het beperken van de kans op een
type II-fout : H0 niet verwerpen op
basis van de geobserveerde gegevens terwijl H0 in de
doelpopulatie toch NIET waar is maar het
alternatief HA geldt, dit komt dus overeen met een vals
negatief. Een andere manier om een type
II-fout in woorden te omschrijven is: niet in staat zijn om een
echt alternatief HA te ontdekken.
De kans op een type II-fout voor een specifiek alternatief wordt
meestal met β aangeduid en
1−β (de kans om dat specifieke alternatief wel te ontdekken)
wordt het onderscheidingsvermogen
22
-
(power) van een toets genoemd.
De volgende tabel vat de beslissingsmogelijkheden nog eens
samen:
Tabel 3.1: Beslissingsmogelijkheden bij nulhypothesen
H0 is waar HA is waar
H0 verworpen type I-fout correcte uitspraak
kans α kans 1− β
H0 niet verwor-
pen
correcte uitspraak type II-fout
kans 1− α kans β
In het algemeen wenst men een statistische toets te hanteren die
zowel de type I-fout als de
type II-fout zo klein mogelijk maakt. Maar als α kleiner wordt,
verwerpt men de nulhypothese
minder vaak en wordt β automatisch groter. We zullen daarom
eerst α fixeren en daarna op
zoek gaan naar een test die voor die vaste α een zo klein
mogelijke β heeft, en dus de power zo
groot mogelijk maakt.
Een toets waarbij slechts een alternatief in één richting
wordt beschouwd noemt men éénzijdige
toets in tegenstelling tot een tweezijdige toets waarbij men
niet a priori aangeeft in welke richting
men een verschil verwacht.
De p − waarde van een test geeft de kleinste α-waarde aan
waarbij de test H0 nog net zouverwerpen. Of anders uitgedrukt: de
p-waarde van een uitgevoerde toets is de kans onder de
nulhypothese om een toetsresultaat te bekomen dat evenzeer of
meer extreem is dan dat wat
geobserveerd werd. Dus als de p-waarde zeer klein is, wordt
zelfs bij een zeer strenge grens op de
type I-fout (kleine α) de nulhypothese toch nog verworpen. Hoe
kleiner de p-waarde hoe meer
“significant” het testresultaat afwijkt van de verwachting onder
de nulhypothese. Het aangeven
van een p-waarde voor een toets geeft meer informatie over het
resultaat dan een eenvoudige
verklaring van al dan niet significant op een vast gekozen
α-niveau. [VVDVA03]
3.2 Bespreking van de verschillende gëımplementeerde testen
Er kunnen verschillende statistische benaderingen gebruikt
worden om een p-value te berekenen
voor elke functionele categorie F. Stel dat er N genen op de
graaf gebruikt worden. Om het
even welk gen heeft de eigenschap dat die ofwel tot categorie F
behoort ofwel er geen lid van
is. Met andere woorden kan men dus stellen dat de N genen uit
twee categorieën bestaan: F
23
-
en niet-F (NF ). De onderzoekers gebruiken de data-analyse
methode van hun keuze om die
genen te selecteren die voor hun experiment kunnen dienen. In
Cytoscape kan men bijvoorbeeld
manueel de knopen in de graaf selecteren waarvan men wil weten
of ze overgerepresenteerd zijn.
Laat ons veronderstellen dat ze een subset van X genen gekozen
hebben. We stellen vast dat x
van deze X genen tot F behoren en we willen uitzoeken wat de
probabiliteit is dat dit gebeurt.
Dus onze vraag is: gegeven N genen van de welke er n tot F
behoren en N - n tot NF behoren,
we nemen op een willekeurige manier X genen en we vragen ons af
wat de probabiliteit is dat
we x genen of meer van type F hebben.
3.2.1 Hypergeometrische test
We kunnen dit aanpakken als bemonsteren zonder terugzetten. Dan
kan de kans dat een
bepaalde categorie x keer voorkomt worden berekend met de
hypergeometrische distributie met
de parameters (X, N, n) [THC+99]:
P (x|X, N, n) = (nx)(N−nX−x)
(NX)
Voortgaande op deze formule kan de p-value die uitdrukt of er
x-1 genen of minder behoren tot
F, berekend worden door het optellen van de probabiliteiten van
een willekeurige lijst van X
genen met 1, 2, . . . , x genen die behoren tot categorie F
[CB02] [THC+99]:
p =x−1∑i=0
(ni )(N−nX−i )(NX)
Dit komt overeen met een éénzijdige test in dewelke kleine
waarden voor p overeenkomen met
ondergerepresenteerde categorieën. De waarden voor p voor
overgerepresenteerde categorieën
kunnen berekend worden met:
p = 1−x−1∑i=0
(ni )(N−nX−i )(NX)
De uitkomst wordt dan vergeleken met een drempelwaarde α die als
veel gebruikte waarden 0.05
en 0.01 heeft. Stel men heeft een significantiegrens van 0.01 of
dus 1%, dan zoekt men naar
instanties waarvan de probabiliteit dat de overeenkomst
toevallig is, kleiner is dan 1%. Wanneer
bovenstaande som kleiner is dan die α heeft men te maken met
overrepresentatie. [DKM+03] De
test meet of een cluster meer genen bevat van een bepaalde
categorie dan er verwacht wordt bij
toeval. Bijvoorbeeld als de meerderheid van genen die in een
cluster voorkomen tot één categorie
behoren dan is de probabiliteit laag dat dit gebeurt door toeval
en heeft p een waarde dicht bij
nul. [WHD+02] [Fel68]
De hypergeometrische test is een specifiek geval van de in de
literatuur veel voorkomende Fisher’s
24
-
Exact test [KKF+81]. Bij deze test moet er een tweede cluster
opgegeven worden. Wanneer
men voor die cluster al de genen kiest die niet tot X maar wel
tot N behoren (dus tot N-X )
dan bekomt men de hypergeometrische test. Om deze reden en ook
omdat nog een extra cluster
selecteren niet interessant is voor de gebruiker, heb ik
geopteerd om deze test niet in de plugin
op te nemen.
3.2.2 Binomiale test
Het is algemeen geweten dat wanneer N groot is, de
hypergeometrische test naar de binomiale
test gaat. In tegenstelling tot de hypergeometrische test is dit
een test mét terugleggen. Wanneer
de binomiale test gebruikt wordt, wordt de probabiliteit dat er
x genen behoren tot F in een
set van X willekeurig gekozen genen, berekend door middel van de
klassieke formule van de
binomiale kans. In deze formule wordt de kans op het extraheren
van één gen uit F, geschat
door de verhouding n/N,
P (x|X, n/N) =(
Xx
) (nN
)x (1− nN )X−x ,en de p-value kan dan berekend worden door:
p = 1−x−1∑i=0
(Xi
) (nN
)i (1− nN )X−iDeze test levert een betere rekentijd op dan de
hypergeometrische en zoals gezegd is ze voor
grote sets zelfs hetzelfde. Het spreekt dus voor zich dat deze
test vooral toepassingen vindt
wanneer men met grote hoeveelheden gegevens werkt.
3.2.3 χ2-test
Een alternatieve benadering van ons probleem is de χ2-test voor
gelijkheid van proporties [FvB93].
Om deze test toe te passen kan er gebruik gemaakt worden van een
dataorganisatie zoals in on-
derstaande tabel.
Tabel 3.2: Dataorganisatie voor χ2-test
Genes on chip Differentially re-
gulated genes
Having function F n11 n12 N1. =∑2
j=1 n1j
Not having F n11 n11 N2. =∑2
j=1 n2j
N.1 =∑2
i=1 ni1 N.2 =∑2
i=1 ni2 N.. =∑
i,j nij
25
-
De punt-notatie in de tabel in de index van sommige variabelen
wordt gebruikt om de som-
matie naar deze index aan te duiden. Bij deze notatie wordt het
aantal genen op de micro-array
voorgesteld door N = N.1, het aantal van deze genen dat tot
categorie F behoort wordt gerepre-
senteerd door n = n11. Het aantal geselecteerde genen wordt
voorgesteld door X = N.2 en het
aantal van deze genen dat tot categorie F behoort wordt
voorgesteld door x = n12. De andere
elementen uit de tabel zijn te verklaren aan de hand van de
hierboven aangehaalde notaties.
Gebruik makend van deze notatie kan men de waarde van de
χ2-statistiek , die nodig is voor de
χ2-test, als volgt berekenen:
χ2 =N..(|n11n22−n12n21|−N..2 )
2
N1.N2.N.1N.2
De waarde die men zo bekomt kan dan vergeleken worden met de
kritische waarden die men kan
bekomen via de χ2-distributie met df = (2− 1).(2− 1).
In de huidige versie van BiNGO is deze statistische test nog
niet gëımplementeerd. In een la-
tere versie zal deze test zeker opgenomen worden. Gezien de
architectuur van de plugin is het
toevoegen van een statistische test geen probleem (zie sectie
4.3 op pagina 35).
3.3 Bespreking van de verschillende correcties
“Multiple testing corrections” (zoals de correcties eigenlijk
voluit noemen) stellen de p-waarde
bij die men heeft afgeleid uit de gebruikte statistische test en
dienen om het voorkomen van
vals positieven te corrigeren. Wanneer er immers getest wordt om
potentiële significantie na te
gaan, wordt elke GO-categorie afzonderlijk van de rest
beschouwd. Met andere woorden een
test wordt op elke individuele categorie uitgevoerd. Het
voorkomen van vals positieven of met
andere woorden genen die valselijk overgerepresenteerd genoemd
worden (een type I-fout dus)
is proportioneel ten opzichte van het aantal uitgevoerde testen
en het significantieniveau α.
Om dit te verduidelijken kunnen we een doos nemen met twintig
knikkers, waarvan er 19 blauw
zijn en één rood. Wat is dan de kans dat men de rode eruit
haalt? Juist, één op twintig. Stel
nu dat men twintig keer een knikker uit de doos haalt (en er
terug instopt). Zo zal er natuurlijk
een grotere kans zijn om de rode knikker uit de doos te halen.
Dit is één min de kans dat men
20 keer een blauwe knikker trekt of dus 1− (19/20)20 = 64%.
Exact hetzelfde gebeurt wanneerenkele honderden categorieën
terzelfder tijd getest worden. Stel dat de blauwe knikkers
“true
positive test results” zijn en de rode knikker een vals positief
testresultaat is, dan is de kans
dat er vals positieven optreden groter naarmate het aantal
categorieën toeneemt waarop men
een statistische test toepast. Stel men heeft één test met α =
0, 05 dan is er 5% kans op een
type I-fout. Wanneer men dan 100 testen heeft (meerdere testen
uitvoeren na elkaar krijgt de
26
-
benaming ’fishing’), dan is het gemiddeld aantal type I-fouten
gelijk aan 5 (i.e. 0, 05×100). Zijnhet 1000 testen dan stijgt het
aantal type I-fouten tot 50. Bij de laatste reeks testen zouden
er
dan ongeveer 50 categorieën een vals postief testresultaat
opleveren.
Men heeft verschillende soorten correcties, elk met hun maat van
strengheid. Hoe strenger een
multiple testing correction is, hoe minder vals positieve genen
er toegestaan worden. Maar ook
deze medaille heeft zijn keerzijde aangezien deze strenge
correcties een zeer grote hoeveelheid vals
negatieven (genen die niet significant genoemd worden en het
toch zijn) genereren. Hieronder
worden de correcties besproken die gëımplementeerd zijn in
BiNGO.
3.3.1 Bonferroni controle van de Family-Wise Error Rate
Deze correctie behoort tot de groep die de Family-Wise Error
Rate of kortweg FWER binnen
de perken wil houden. De FWER wordt gedefinieerd als de kans op
ten minste één fout van het
type I, i.e.:
FWER = Pr(V > 0)
waarbij V de type I-fout voorstelt en dus gelijk is aan het
aantal verworpen juiste nulhypothe-
sen. Voor een sterke controle van de FWER op niveau α is er de
Bonferroni-procedure. Dit
is misschien wel de meest gekende bij multiple testing. Deze
procedure is tevens een single-
step-procedure. Hiermee bedoelt men dat voor alle hypothesen
gelijkwaardige multipliciteits-
aanpassingen gedaan worden, ongeacht de volgorde van de
teststatistieken of ruwe p-waarden.
De Bonferroni procedure verwerpt elke hypothese Hi met p-value
lager of gelijk aan α/m. De
hiermee corresponderende Bonferroni single-step adjusted
p-values worden dus gegeven door:
p̃i = min(mpi, 1)
[GDS03] [Bon35] [Bon36].
De Bonferroni correctie van de FWER is uiterst conservatief en
zeer streng. Stel dat men
bijvoorbeeld duizend categorieën tegelijk test met een
significantieniveau van 0.05. De hoogst
aanvaardbare p-waarde is dan 0.00005, wat dus daadwerkelijk zeer
streng is. Met een FWER
van 0.05 is het verwachte aantal vals positieven in dit
voorbeeld gelijk aan 0.05 (1000 categorieën
× 0.00005).
3.3.2 Benjamini & Hochberg controle van de False Discovery
Rate
De meest natuurlijke manier om False Discovery Rate (of kortweg
FDR) te definiëren zou
E(V/R) zijn, namelijk de verwachtingswaarde van de proportie van
type I errors (V ) binnen de
verworpen hypothesen (R). Maar verschillende methodes om het
geval R = 0 te behandelen,
27
-
leiden tot verschillende definities. Wanneer men stelt dat V/R =
0 als R = 0 dan bekomt men
de FDR-definitie van Benjamini & Hochberg [BH95], i.e.:
FDR = E(
VR1{R>0}
)= E
(VR |R > 0
)Pr (R > 0)
Wanneer het totaal aantal nulhypothesen (m) gelijk is aan het
totaal aantal juiste nulhypothesen
(m0), ook wel de complete nulhypothese genoemd, dan is FDR =
FWER.
Benjamini & Hochberg hebben een step-up-procedure ontwikkeld
voor een sterke controle van
de FDR. Step-wise procedures zijn krachtiger dan
single-step-procedures en behouden toch de
type I error rate controle. De verwerping van een bepaalde
hypothese is hierbij niet alleen
gebaseerd op het totaal aantal hypothesen maar ook op het
resultaat van de tests van andere
hypothesen. Step-down-procedures ordenen de p-values (of
statistische tests), beginnende met
de meest significante, terwijl step-up-procedures (waarvan hier
dus sprake) beginnen met de
minst significante.
Stel dat de p-values als volgt geordend zijn: pr1 ≤ pr2 ≤ . . .
≤ prm . Als men dan vertrekt vani = m en dan als volgende i = m− 1
neemt, dan kan men zo verder gaat totdat men een i∗ kandefiniëren
die het eerste geheel getal i is waarvoor geldt dat pri ≤ imα. Als
i
∗ niet gedefinieerd
is dan wordt er geen enkele nulhypothese verworpen. Anders, als
i∗ dus wel gedefinieerd is,
dan moeten alle hypothesen Hri met i = 1, . . . , i∗ verworpen
worden. De met de Benjamini &
Hochberg procedure corresponderende “adjusted p-values” kunnen
dus als volgt bekomen wor-
den:
p̃ri = mink=i,...,m{min
(mk prk , 1
)}[GDS03].
Deze correctie is minder streng en conservatief dan de
Bonferroni correctie en laat dus meer
vals positieven toe. Hierbij zijn we niet gëınteresseerd in
één vals positief, maar willen we er-
voor zorgen dat de proportie van positieve categorieën die vals
positief is kleiner is dan het
significantieniveau. Stel dat men als α een waarde 0.05 heeft,
dan is 5% van de categorieën die
statistisch als significant beschouwd wordt na toepassen van
deze correctie door toeval aangeduid
en dus een vals positief.
28
-
Hoofdstuk 4
Implementatie van BiNGO
In dit hoofdstuk wordt de implementatie van de plugin besproken.
Eerst wordt de architectuur
van de plugin besproken zoals die vereist is om in te laden in
Cytoscape. In de daaropvolgende
secties worden de overige delen van BiNGO besproken zoals
bijvoorbeeld de implementatie van
de statistische analyse, de implementatie van de visuele
voorstelling van de overrepresentatie,
. . .
4.1 Plugin-architectuur in Cytoscape
Cytoscape ondersteunt een handige Plugin-architectuur die ervoor
zorgt dat er op een makkelijke
manier extra functionaliteit aan het moederprogramma kan
toegevoegd worden. Deze sectie
behandelt de theoretische uitwerking om zo een plugin te
schrijven en legt er de basisbeginselen
van uit. Ook wordt dit dan concreet toegepast op de
implementatie van BiNGO.
4.1.1 Overzicht van het maken van een Cytoscape-plugin
Er zijn drie basisstappen in het bouwproces van een
Cytoscape-plugin:
• Creëer eerst een klasse die de Cytoscape
AbstractPlugin-klasse uitbreidt.
• Creëer vervolgens een Jar-file voor de plugin.
• Als men de plugin wil publiceren (kenbaar maken aan het
publiek) moet je je plugin nog“obfusceren” (i.e. onleesbaar maken
voor de buitenwereld).
Elk van deze stappen wordt in de volgende secties
verduidelijkt.
29
-
4.1.2 Stap 1: Extend AbstractPlugIn
In de eerste stap moet dus een nieuwe klasse gemaakt worden die
de Cytoscape AbstractPlugin-
klasse uitbreidt (extends). De source code voor AbstractPlugIn
vindt men hieronder:
package cytoscape;
/**
* AbstractPlugin is the class that all plugins must
subclass;
* the interface is simple - the constructor must take a
single
* {@link cytoscape.CytoscapeWindow CytoscapeWindow} argument,*
and there must be a {@link #describe describe} method* returning a
String description of the plugin.
*/
public abstract class AbstractPlugin {/**
* this method’s presence is superfluous;
* it is only here so that you don’t have to
* call super(cytoscapeWindow) in your ctor.
*/
public AbstractPlugin() { }/**
* required constructor for plugins takes a single
* {@link cytoscape.CyWindow CyWindow} argument.*/
public AbstractPlugin(CyWindow cyWindow) { }/**
* method returning a String description of the plugin.
*/
public String describe() { return new String("No description.");
}}
Zoals u in de code hierboven kan zien, hebben plugins twee zaken
nodig:
• Eerst en vooral moet de klasse van een constructor voorzien
zijn die een CyWindow-object(zie sectie 2.5.2 op pagina 19) kan
ontvangen. Het CyWindow is een belangrijke Cytoscape-
klasse en voorziet toegang tot het hele gamma van
Cytoscape-menu’s en grafische objecten.
• Ten tweede moet de klasse voorzien zijn van een implementatie
van de describe-methode.Deze methode moet een korte omschrijving
weergeven (return) van wat de plugin werkelijk
30
-
doet.
4.1.3 Stap 2: Creëer een Jar-file
Cytoscape heeft de mogelijkheid om plugins rechtstreeks te laden
via Jar-files. Om van deze
functionaliteit gebruik te maken, moet de plugin in één
Jar-file gestopt worden. Dit kan gebeuren
via de “command line”, via een “makefile” of via een “Ant build
file”. Vervolgens kan men dan
nagaan of de Jar-file wel degelijk werkt. Daarvoor moet
Cytoscape opgestart worden en moet
de plugin geladen worden via het Plugins-menu. Om de plugin te
laden moet men volgende
stappen ondernemen: Plugins → Load Plugin from Jar File en dan
natuurlijk de plugin-jar inkwestie selecteren. Eens de plugin
geladen is, moet er op het menu-item van de geladen plugin
in het Plugins-menu geklikt worden en de plugin wordt
uitgevoerd.
4.1.4 Stap 3: Obfusceren van de plugin
Deze stap is in de huidige fase van Cytoscape niet meer nodig.
Vroeger was het verplicht voor
elke plugin-maker om zijn code te obfusceren, onleesbaar te
maken voor de buitenwereld, wegens
de licentie-overeenkomst met het grafische (en tevens te
betalen) pakket Y-Files. Maar aangezien
in de meest recente versie van Cytoscape Y-Files volledig
verwijderd is en integraal vervangen
is door GINY, is deze laatste fase in het proces om een plugin
te schrijven niet meer nodig (zie
tevens sectie 2.4 op pagina 16).
4.1.5 Concrete implementatie van de plugin-architectuur in
BiNGO: BiN-
GOplugin.java
BiNGOplugin.java breidt dus de klasse AbstractPlugin van
Cytoscape uit (extends). Aan
het CyWindow wordt een menu-item met het label “BiNGO-plugin”
toegevoegd onder het menu
Plugins. Het toe-eigenen van het label “BiNGO-plugin” aan het
menu-item gebeurt echter in
de interne listener-klasse BiNGOpluginAction, meer bepaald in de
defaultconstructor. Deze
“luisteraar” produceert een event wanneer er op het menu-item
geklikt is in het Cytoscape-
menu. Ook zit in deze klasse de verplichte describe-methode.
Wanneer er nu op het menu-
item geklikt wordt, dan wordt de actionPerformed-methode
uitgevoerd. Hierdoor wordt het
SettingsPanel (zie sectie 4.2 op pagina 31) op het scherm
getoverd.
4.2 SettingsPanel: de gebruikersinstellingen
In de BiNGO-plugin moet de gebruiker de mogelijkheid hebben om
bepaalde keuzes te maken,
keuzes die afhangen van het soort experiment dat men wil
uitvoeren of van de persoonlijk