Bekijk online - Universiteit Gent

Evolutionaire reconstructie door clustering van het
bacteriële peptidoom
Toon Willems
Promotoren: prof. dr. Peter Dawyndt, prof. dr. ir. Jan Fostier
Begeleider: Bart Mesuere
Masterproef ingediend tot het behalen van de academische graad van
Master of Science in de ingenieurswetenschappen: computerwetenschappen
Vakgroep Toegepaste Wiskunde, Informatica en Statistiek
Voorzitter: prof. dr. Willy Govaerts
Vakgroep Informatietechnologie
Voorzitter: prof. dr. ir. Daniël De Zutter
Faculteit Ingenieurswetenschappen en Architectuur
Academiejaar 2013-2014
Evolutionaire reconstructie door clustering van het
bacteriële peptidoom
Toon Willems
Promotoren: prof. dr. Peter Dawyndt, prof. dr. ir. Jan Fostier
Begeleider: Bart Mesuere
Masterproef ingediend tot het behalen van de academische graad van
Master of Science in de ingenieurswetenschappen: computerwetenschappen
Vakgroep Toegepaste Wiskunde, Informatica en Statistiek
Voorzitter: prof. dr. Willy Govaerts
Vakgroep Informatietechnologie
Voorzitter: prof. dr. ir. Daniël De Zutter
Faculteit Ingenieurswetenschappen en Architectuur
Academiejaar 2013-2014
Voorwoord
Een thesis in die bio-informatica is een niet voor de hand liggende keuze, het is een hele reis geweest
waarbij ik voortdurend in onbekende wateren vaarde. Gelukkig hebben mijn promotoren er altijd voor
gezorgd dat het schip de juiste koers vaarde.
Ik wil dan ook in de eerste plaats mijn promotoren en mijn thesisbegeleider bedanken voor de steun
en begeleiding die ze mij gegeven hebben. Het is een zeer leerrijke ervaring geweest en dat heb ik
voornamelijk aan hen te danken.
Verder wil ik ook graag de mensen die dicht bij mij staan bedanken. Mijn ouders, die me jaar naar jaar
ondersteunden. Ook was het nooit gelukt zonder de aanmoedigingen van Febe, bedankt allemaal.
Het afsluiten van deze thesis is niet het einde, maar juist het begin. De toekomst lonkt, en ik kijk met
grote ogen vooruit. Om het met de woorden van Buzz Lightyear te zeggen: “To infinity and beyond!”
Toon Willems, mei 2014
Toelating tot bruikleen
“De auteur geeft de toelating deze scriptie voor consultatie beschikbaar te stellen en delen van de scriptie
te kopi¨eren voor persoonlijk gebruik.
Elk ander gebruik valt onder de beperkingen van het auteursrecht, in het bijzonder met betrekking tot de
verplichting de bron uitdrukkelijk te vermelden bij het aanhalen van resultaten uit deze scriptie.”
Toon Willems, juni 2014
Evolutionaire reconstructie door clustering
van het bacteri¨ele peptidoom
door
Toon Willems
Scriptie ingediend tot het behalen van de academische graad van
burgerlijk ingenieur in de computerwetenschappen
Academiejaar 2013–2014
Promotor: Prof. Dr. P. DAWYNDT
Promotor: Prof. Dr. Ir. J. FOSTIER
Scriptiebegeleider: Ir. B. MESUERE
Faculteit Toegepaste Wetenschappen
Universiteit Gent
Vakgroep Toegepaste Wiskunde, Informatica en Statistiek
Voorzitter: Prof. Dr. W. Govaerts
Vakgroep Informatietechnologie
Voorzitter: Prof. Dr. Ir. D. DE ZUTTER
Samenvatting
Het analyzeren en vergelijken van genomen wordt vandaag meestal met BLAST gedaan. Wij stellen in
deze thesis een clusteringstechniek voor gebaseerd op het tryptisch peptidoom. We bieden een interactive
webapplicatie aan die onderzoekers de mogelijkheid geeft gegevens snel en interactief te analyzeren. We
voegen nog een extra component die zeer grote analyses toelaat vanop de commandolijn.
Trefwoorden
automatisering, interactive visualisatie, commandolijn, tryptisch peptidoom
Evolutionary reconstruction by clustering the
bacterial peptidome
Toon Willems
Supervisor(s): prof dr. Peter Dawyndt, prof. dr. ir. Jan Fostier
Abstract—
Comparing and analyzing genomes is usually done using
BLAST [6]. We propose a novel technique based on the
trypic peptidome of fully mapped genomes. By providing
an interactive end-user application to researchers, we enable
them to construct and analyze datasets much faster. Adding
a second component for rapid automated analysis delivers a
massive boost in productivity. This enables researchers to
peer into data, otherwise infeasible to analyze by hand.
Keywords—automation, interactive visualisation, commandline, tryptic peptidome
I. Introduction
The unipept platform is developed to map the diversity in large and complex metaproteomic samples. The
indexstructure of the underlying database has been finetuned to allow quick retrieval of all proteins containing a
certain tryptic peptide. the taxon-specificity of a tryptic
peptide can be determined based on the taxonomy information from Uniprot. The lowest common ancestor or LCA is
calculated using an robust algorithm, capable of handling
wrong taxonomic classification, wrong identification and
irregularities. Failing to correctly handle these problems
would lead to a drastic loss in valuable information.
We extend this platform with two separate components. One provides an intuitive web-frontend for analyzing genomes based on the tryptic peptidome calculated
from the coding parts of the genome. We propose a clustering technique which quickly analyses the entire peptidome
and constructs a similarity matrix for the selected genomes.
In addition a phylogenetic tree is constructed based on this
matrix using the UPGMA [3] algorithm.
The other component provides a HTTP interface which
allows rapid analysis of very large (200 million peptides
per day) datasets. We show that using techniques such as
batch processing and parallellism, it is possible to obtain a
dramatic speedup compared to a naive implementation.
To supplement the HTTP interface a reference implementation is provided, in the form of a command-line tool.
This tool fully supports all functionality available in the
HTTP API. Using these tools it is possible to construct
large and complex pipelines to process large datasets. Figure 1 illustrates how such pipelines can be constructed. The
case study explains in great detail how these commands can
be combined to provide a metagenomics analysis pipeline.
II. Similarity based on the tryptic peptidome
A pairwise similarity matrix for a dataset of genomes
is constructed using the genome similarity. As previously
Fig. 1. Overview of possible pipeline constructions for a metagenomics sample
stated this similarity is calculated based on the tryptic peptidome of the genome. The similarity of two genomes gi
and gj based on their tryptic peptidome pi and pj is calculated using the following formula.
s(gi , gj ) =
|pi ∩ pj |
|pi ∪ pj |
The intersection of the peptidomes is calculated using
exact matching, meaning that no similarity measure is defined for peptides.
After constructing a complete similarity matrix using the
above formula, we use an iterative approach based on UPGMA to construct a hierachical cluster. In each iteration
we combine the two genomes with the highest similarity
resulting in a phylogenetic tree.
The above information is displayed as an interactive webapplication, shown in figure 2. We are able to obtain
results within seconds, instead of days when using a more
traditional BLAST approach.
III. Clustering implementation
The entire application was integrated in the current
Unipept platform, this meant fully implementing the necessary algorithms in JavaScript. All calculations are done
within the browser, as modern browsers prove more than
capable of handling the computational needs of our application.
20/05/14 11:29
A. baumannii ZW85-1
A. baumannii SDF
A. baumannii MDR-ZJ06
A. baumannii TYTH-1
A. baumannii MDR-TJ
A. baumannii 1656-2
A. baumannii ACICU
A. baumannii TCDC-AB0715
A. baumannii AB307-0294
A. baumannii AB0057
A. baumannii AYE
A. baumannii ATCC 17978
A. baumannii D1279779
A. baumannii D1279779
A. baumannii ATCC 17978
A. baumannii AYE
A. baumannii AB0057
A. baumannii AB307-0294
A. baumannii TCDC-AB0715
A. baumannii ACICU
A. baumannii 1656-2
A. baumannii MDR-TJ
A. baumannii TYTH-1
A. baumannii MDR-ZJ06
A. baumannii SDF
A. baumannii ZW85-1
Fig. 2. Visualisation of the peptidome clustering of Acinetobacter
Baumannii. The phylogenetic tree (left) with the similarity matrix on the right
Unipept
Pept2prot
Unipept Web
application
Unipept
Database
Ruby On Rails
application
file:///Users/nudded/Projects/thesis/fig/matrix-tree-vis.svg
Unipept
Taxonomy
Browser
Unipept HTTP
API
Commandline
interface
Page 1 of 1
quest involves a lot of overhead. We observed that, up to
a certain threshold, the input size did not have a significant impact on the execution time of database queries. So
instead of only processing one input value per request we
choose to process 100. After evaluation this choice results
in a speedup of factor 50, mostly related to HTTP and
connection overhead.
The full API documentation is published online and can
be found at http://unipept.ugent.be/apidoc/v1.
V. Command-line application implementation
To simplify matters for researchers we implemented a
command-line interface for the HTTP API. This component was developed in Ruby and is distributed as a Ruby
Gem. This makes installation very convenient and allows
us to push updates to provide new functionality.
We provide four commands to the end-user:
uniprot Basic command which interfaces directly with the
Uniprot webservice.
prot2pept Simple utility to split proteins into tryptic peptides.
peptfilter Utility to filter peptides based on length and
amino acids.
unipept Interface to the Unipept HTTP API.
After observing some requests taking an above average
time, and hereby limiting the overall throughput, we tried
optimizing the commandline interface by making multiple
HTTP requests in parallel. As the server is capable of
handling multiple requests, it makes sense to use this processing power to speed up our application.
VI. Evaluation
A. Clustering implementation
Fig. 3. Unipept architecture
Nevertheless, a lot of effort was spent on optimizing the
appliction. The end-user experience is of utmost importance. To achieve these goals we used a modern web technology called Web Workers. This allows us to execute
JavaScript in a parallel fashion, this means the computations won’t lock up the browser.
A custom visualisation was implemented to visualise the
results. D3.js [4] and SVG proved to be best suited for this
task. D3.js is developed with interactivity in mind, producing attractive graphics which adapt nicely to changes.
IV. HTTP interface implementation
Whereas the previous part discussed a client-side browser
implementation, the HTTP interface had to be incorporated on the server-side. The current server-side of the
Unipept platform is written in Ruby On Rails [5], a mature web framework built in Ruby. Speed was the number
one priority for this component. Figure 3 shows how both
components fit into the existing Unipept architecture.
Optimization is rather difficult as there are a lot of moving parts involved in modern web frameworks. We based
our implementation on the observation that a HTTP re-
The clustering implementation performs well for datasets
upto 50 genomes. Within this limit, results can be obtained within several seconds. However the visualisation
has not been designed to handle larger datasets very well.
For larger datasets the matrix becomes too crowded. A
potential solution would be to hide the matrix and only
draw the resulting phylogenetic tree.
B. HTTP and command-line interface
Processing an initial metagenomics sample indicated
that our tool was able to process about 200 million peptides per day. This is the equavalent of 3200 peptides per
second. When comparing our parallel implementation to
the implementation that makes a single HTTP request per
peptide we observed a speedup of factor 500.
The above benchmarks were run on moderate hardware
(16 Gigabytes RAM) and it is expected that actual througput will increase tenfold when run on production hardware
(128 Gigabytes RAM).
VII. conclusion
We provide an interactive application which provides results in an attractive and easy to use interface. The HTTP
API on the other hand demonstrates that providing tools
for power-users, helps a great deal in processing very large
datasets. By providing the tools to process very large
datasets we allow a peek into data otherwise left unexplored.
References
[1] Mesuere B, Devreese B, Debyser G, Aerts M, Vandamme P, Dawyndt P (2012). Unipept: Tryptic
Peptide-Based Biodiversity Analysis of Metaproteome
Samples. Journal of Proteome Research, 11(12), 5773–
5780.
[2] The UniProt Consortium (2014). Activities at the Universal Protein Resource (UniProt). Nucleic Acids Research 42, D191–D198.
[3] Sokal, R. R. and C. D. Michener. 1958. A statistical
method for evaluating systematic relationships. University of Kansas Science Bulletin 38: 1409-1438.
[4] http://d3js.org
[5] http://rubyonrails.org
[6] Altschul SF, Gish W, Miller W, Myers EW, Lipman
DJ. Basic local alignment search tool.
INHOUDSOPGAVE
INHOUDSOPGAVE
Inhoudsopgave
1
Inleiding
1
2
Peptidoom-gebaseerde clustering van volledige genoomsequenties
4
2.1
Implementatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.1.1
UPGMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
2.1.2
Peptidoom clustering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
2.1.3
Newick Tree formaat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
2.2.1
Web Workers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
2.2.2
Client.js . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
2.2.3
Calculation.js . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
2.2.4
Object-gerichte implementatie . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
2.2.5
Integratie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
Visualisatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
2.3.1
D3.js . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
2.3.2
SVG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
2.3.3
Matrix visualisatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
2.3.4
Boomvisualisatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
Case studie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
2.4.1
Toekomstige features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
Resultaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
2.2
2.3
2.4
2.5
3
Unipept API: web services en commandolijninterface
26
3.1
Web Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
3.1.1
27
De methode pept2taxa . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
i
INHOUDSOPGAVE
3.1.2
De methode pept2lca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
3.1.3
De methode pept2prot . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
3.1.4
De methode taxa2lca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
3.1.5
De methode taxonomy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
Commandolijninterface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
3.2.1
Unix principes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
3.2.2
Installatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
3.2.3
Het commando uniprot . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
3.2.4
Het commando prot2pept . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
3.2.5
Het commando peptfilter . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
3.2.6
Het commando unipept . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
3.3
Batchverwerking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
3.4
Resultaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
3.5
Toekomstige features en bedenkingen . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
3.2
4
INHOUDSOPGAVE
Unipept API case studies
42
4.1
Metaproteoomanalyse van de biodiversiteit in omgevingsstalen . . . . . . . . . . . . . .
42
4.1.1
Taxonomische identificatie van een tryptische peptide . . . . . . . . . . . . . . .
43
4.1.2
Taxonomische analyse van een metaproteomics experiment . . . . . . . . . . . .
55
Metagenoomanalyse van de biodiversiteit in omgevingsstalen . . . . . . . . . . . . . . .
62
4.2.1
De Unipept Shotgun Metagenomics Analysis Pipeline . . . . . . . . . . . . . .
63
4.2.2
Taxonomische analyse van metagenomics experimenten . . . . . . . . . . . . .
76
Toekomstige ontwikkelingen van Unipept en de Unipept API . . . . . . . . . . . . . . .
95
4.2
4.3
ii
INLEIDING
Hoofdstuk 1
Inleiding
De Unipept webtoepassing [1] werd ontwikkeld om de biodiversiteit in grote en complexe metaproteoomstalen in kaart te kunnen brengen. De indexstructuur van de onderliggende databank werd geoptimaliseerd om snel alle eiwitten die een gegeven tryptische peptide bevatten (exact matching) te kunnen
terugvinden in de Uniprot databank [2]. Op basis van de taxonomische informatie die uit Uniprot kan
opgevraagd worden over de gevonden eiwitten, kan dan de taxon-specificiteit van de tryptische peptide
bepaald worden. Hiervoor wordt gebruik gemaakt van een algoritme voor het bepalen van de laagste gemeenschappelijke voorouder (lowest common ancestor; LCA), dat speciaal voor Unipept werd opgesteld
en dat robuust is voor verkeerde taxonomische indelingen, verkeerde identificaties en onnauwkeurigheden. Het negeren van deze ruis in de taxonomische informatie zou anders leiden tot een drastisch verlies
aan informatie.
In het kader van deze thesis werd Unipept uitgebreid met twee componenten. Als eerste werd een component ontwikkeld om organismen te clusteren op basis van een schatting van hun evolutionaire afstand.
Hiertoe werd een afstandsmaat gedefinieerd die de fractie gemeenschappelijke tryptische peptiden uitdrukt in twee organismen. De schatting van de evolutionaire afstand wordt gemaakt door het volledige
proteoom op te splitsen in een verzameling tryptische peptiden (het tryptisch peptidoom).
Deze component werd ge¨ıntegreerd in de Unique Peptide Finder. Dit is een reeds bestaande component
die voor een gegeven lijst van organismen de peptidesamenstelling kan analyseren. Zo kan men met deze
component opzoeken hoeveel peptiden er gemeenschappelijk zijn. Op figuur 1.1 zien we het resultaat van
de analyse van alle genomen van Acinetobacter Baumannii a.d.h.v. de Unique Peptide Finder. Op deze
grafiek wordt de grootte van het totale peptidoom weergegeven als de blauwe lijn, het “pan peptidome”.
De gele lijn, het “core peptidome”, duidt de grootte aan van de doorsnede van de peptidomen. De groene
1
INLEIDING
24/05/14 10:20
Number of peptides
genome peptidome
pan peptidome
core peptidome
unique peptidome
120,000
100,000
80,000
60,000
40,000
20,000
9
77
12
iD
iM
ni
ni
an
m
um
rb
au
ba
te
ac
ba
Ac
in
e
to
b
to
in
e
79
DR
-
H
YT
an
an
ct
er
te
r
ac
ob
Ac
et
in
Ac
TJ
-1
6
ni
iT
DR
um
ba
an
m
au
rb
te
ob
ac
et
in
Ac
-Z
J0
ni
iA
YE
ni
iM
m
an
au
rb
te
ac
et
ob
in
Ac
ba
er
ct
ob
a
B0
7
-A
DC
ni
iT
um
an
ba
te
r
ac
et
Ac
in
C
an
um
au
ob
et
in
Ac
15
2
6i1
ni
m
an
65
ni
iS
-0
07
rb
te
ac
et
ob
au
DF
4
29
7
ni
an
m
in
Ac
rb
te
ac
to
b
in
e
Ac
iA
an
um
ba
er
ct
ba
to
in
e
Ac
B3
iA
ni
ni
an
um
ba
te
r
ac
ob
et
in
Ac
05
C
iA
17
C
ni
iA
TC
an
m
au
rb
te
ac
et
ob
in
Ac
B0
IC
97
8
U
0
Figuur 1.1: Analyse van alle Refseq genomen van de bacteri¨ele soort Acinetobacter Baumannii.
lijn, het “unique peptidome”, geeft aan hoeveel peptiden uniek zijn voor dit organisme.
Om grote hoeveelheden omgevingsstalen in bulk te kunnen analyseren, moeten zoveel mogelijk verwerkingsstappen geautomatiseerd worden. Daarom werd in het kader van deze thesis een API (web services
en commandolijninterface) ontwikkeld voor de functionaliteit die wordt aangeboden door Unipept. Waar
de webinterface kan gebruikt worden voor de analyse van individuele stalen, kan de API gebruikt worden om specifieke pipelines te bouwen voor de analyse van metagenomics en metaproteomics datasets.
Deze op maat gemaakte pipelines kunnen daardoor op een gestroomlijnde manier gebruik maken van de
bestaande Unipept functionaliteit. De webinterface en de API spreken dezelfde onderliggende databank
aan via een aantal gedeelde web services, waardoor de functionaliteit gegarandeerd consistent is.
Figuur 1.2 illustreert
hoe deze componenten ingebouwd worden in de bestaande architectuur.PageDe
Unipept
file:///Users/nudded/Downloads/unique_peptides_graph.svg
1 of 1
databank bestaat uit een opgekuiste versie van de NCBI taxonomy databank en een indexstructuur die het
mogelijk maakt snel op te zoeken tot welke eiwitten een bepaalde peptide behoort. De HTTP API wordt
ge¨ıncorporeerd in de bestaande Ruby On Rails component. Om het bevragen van de API te versnellen
werd ook een commandolijninterface ontwikkeld. Deze staat los van de Unipept web applicatie en word
beschikbaar gesteld als een Ruby Gem.
2
INLEIDING
Unipept
Pept2prot
Unipept Web
applicatie
Unipept
Databank
Unipept
Taxonomy
Browser
Ruby On Rails
applicatie
Unipept HTTP
API
Commandolijn
interface
Figuur 1.2: Overzicht van de Unipept architectuur
3
PEPTIDOOM-GEBASEERDE CLUSTERING VAN VOLLEDIGE GENOOMSEQUENTIES
Hoofdstuk 2
Peptidoom-gebaseerde clustering van
volledige genoomsequenties
Om de evolutionaire verwantschap te schatten tussen organismen, waarvan het volledige genoom gekend
is, gebruikt men meestal vergelijkingen die gebaseerd zijn op BLAST. BLAST heeft echter een aantal
gebreken. Enerzijds zijn er veel parameters die gespecifieerd moeten worden. Anderzijds is het een algoritme dat veel rekentijd vraagt. Om tot een aanvaardbare uitvoeringstijd te komen zijn reeds verscheidene
technieken uitgewerkt.
In Goris et al. [30] worden twee volledige genoomsequenties opgesplitst in reads van lengte 1000. Deze
substrings worden dan tegenover elkaar geblast om het aantal gemeenschappelijke fragmeten tussen de
twee genomen te bepalen. Verwantschap wordt dan berekend op basis van het percentage overeenkomstige fragmenten tussen beide genomen. We maken in onze implementatie gebruik van een gelijkaardig
idee.
Om bovenvernoemde beperkingen van BLAST te vermijden, stellen we een clusteringstechniek voor op
basis van het tryptisch peptidoom van elk genoom. Dit tryptisch peptidoom bevat alle tryptische peptiden
die gevonden worden in de coderende stukken van het genoom. We kunnen dit in silico berekenen op
basis van de coderende eiwitten. We bootsen hiervoor de werking van trypsine na. Trypsine is een
enzyme dat na elk K of R aminozuur, gevolgd door een niet-P aminozuur, een splitsing gaat maken. De
werking ervan wordt ge¨ıllustreerd in figuur 2.1.
Deze component werd ge¨ımplementeerd als onderdeel van het Unipept platform.
4
2.1 Implementatie
Figuur 2.1: Het trypsine enzyme knipt na elke K of R gevolgd door een niet-P
2.1
Implementatie
Unipept is een webapplicatie die hoofdzakelijk geschreven werd in JavaScript en Ruby. De bestaande
functionaliteit maakt gebruik van informatie uit een databank. Afhankelijk van de toepassing gebeurt de
verwerking van de gegevens deels serverside (in Ruby) of clientside (in JavaScript). In dit laatste geval
wordt de relevante informatie opgehaald uit de databank en ingeladen in de browser. Dit zorgt ervoor dat
de server weinig bewerkingen moet uitvoeren enkel snelle toegang moet bieden tot de databank.
We hebben deze techniek ook toegepast bij de implementatie van clustering op basis van het peptidoom.
Deze toepassing werd bovendien ge¨ıntergreerd met de Unique Peptide Finder. Deze component maakt
het mogelijk om de unieke peptiden te bepalen voor een gegeven verzameling genomen. Hierbij wordt de
gebruiker in de mogelijkheid gesteld om volledige genomen uit de NCBI RefSeq databank te selecteren
en aan een lijst toe te voegen, of genomen terug uit de geselecteerde lijst te verwijderen.
Niet alleen moet de clusteringstoepassing die we ge¨ımplementeerd hebben vertrekken van een geselecteerde lijst van volledige genomen, waarvoor we bestaande functionaliteit herbruiken, maar levert de
integratie voor de gebruiker ook het voordeel op dat hij twee toepassingen kan uitvoeren op basis van
dezelfde selectie.
We behouden de bestaande interactie die mogelijk is met de Unique Peptide Finder. Hieraan voegen we
een onderdeel toe dat de clustering interactief zal voorstellen. Voor de clustering wordt gebruik gemaakt
5
2.1 Implementatie
van het UPGMA algoritme. De similariteitsmatrix en de daarvan afgeleide cluster worden gevisualiseerd
m.b.v. JavaScript en D3.js.
2.1.1
UPGMA
UPGMA – Unweighted Pair Group Method with Arithmetic Mean – is een eenvoudige clustertechniek
die stapsgewijs een hi¨erarchische structuur zal opbouwen. Het algoritme start op basis van een matrix van
paarsgewijze similariteiten of afstanden. In onze implementatie werken we met een similariteitsmaat. De
matrix wordt dan ook wel een similariteitsmatrix genoemd.
Initieel vormt elk datapunt een afzonderlijke cluster. In elke stap combineren we de twee clusters met de
grootste similariteit. De similariteit tussen twee clusters wordt berekend aan de hand van de datapunten
in de cluster. Vergelijking (2.1) stelt dit wiskundig voor.
X X
s(Ci , Cj ) =
s(gi , gj )
gi ∈Ci gj ∈Cj
|Ci ||Cj |
(2.1)
Stel dat we Ci en Cj combineerden tot een nieuwe cluster C 0 . De similariteit s(C 0 , Cx ) worden dan als
volgt berekend:
s(C 0 , Cx ) =
s(Ci , Cx ) + s(Cj , Cx )
2
Uit bovenstaande vergelijking leiden we af dat we voor het bereken van de nieuwe similariteiten, van
cluster C 0 , enkel de similariteiten van Ci en Cj nodig hebben. We kunnen dus iteratief de similariteitsmatrix aanpassen a.d.h.v. bovenstaande vergelijking. Eens aangepast, start het algoritme opnieuw met
het zoeken naar de twee clusters met de grootste similariteit.
Merk hierbij op dat de similariteit tussen clusters enkel steunt op de similariteit tussen de datapunten. De
maat die hier gebruikt wordt zal bepalen hoe de uiteindelijke clustering zal verlopen. Deze similariteitsmaat wordt niet bepaald door het UPGMA-algoritme. Dit laat de flexibiliteit om deze maat aan te passen
en toe spitsen op de datapunten.
2.1.2
Peptidoom clustering
In onze implementatie vormen de genomen de datapunten. Zoals hierboven besproken dienen we ook
een similariteitsmaat te defini¨eren. Hiervoor wordt gebruik gemaakt van het tryptische peptidoom.
6
2.1 Implementatie
Stel we hebben twee genomen gi en gj . Deze bestaan uit een verzameling van tryptische peptiden,
respectievelijk pi en pj . We defini¨eren de similariteitsmaat als volgt:
s(gi , gj ) =
|pi ∩ pj |
|pi ∪ pj |
(2.2)
We werken hier met “exact matching”, dit betekent dat peptiden ofwel gelijk zijn ofwel verschillend zijn.
Deze maat komt overeen met deze die gebruikt worden door Goris et al..
2.1.3
Newick Tree formaat
Het Newick formaat is een veelgebruikt formaat om bomen tekstueel voor te stellen. Het is een simpele beschrijving van de verschillende knopen, waarbij ook de mogelijkheid bestaat om de lengte van
de takken te specifi¨eren. De basis van het formaat ligt op het gebruik van haakjes om sub-bomen te
onderscheiden. Volgend voorbeeld illustreert dit:
(B:6.0,(A:5.0,C:3.0):5.0);
De knopen van een boom worden aangegeven met een label. In het voorbeeld is dat A,B en C. De
afstanden worden gespecifieerd na de dubbele punt. Bovenstaande beschrijving correspondeert met de
boom die grafisch wordt weergegeven in figuur 2.2.
Figuur 2.2: Voorstelling boom op basis van Newick formaat
7
2.2 JavaScript
Dit formaat wordt gebruikt in onze implementatie om de clustering in op te slaan. Zo kunnen we enerzijds
gebruik maken van bestaande bibliotheken om deze boom weer te geven en anderzijds de gebruiker de
mogelijkheid geven de boom zelf te openen in een programma naar keuze.
2.2
JavaScript
JavaScript is een dynamisch getypeerde programmeertaal die ondersteund wordt door vrijwel elke moderne browser. Het is de enige gangbare programmeertaal die het mogelijk maakt client-side bewerkingen uit te voeren. Interactieve elementen zijn ook enkel mogelijk m.b.v. JavaScript.
Om de implementatie zo performant mogelijk te houden, worden verscheidene technieken toegepast.
Web workers worden gebruikt om berekeningen asynchroon uit te voeren. D3.js – een visualisatiebibliotheek geschreven in JavaScript – wordt gebruikt om de visualisatie zowel interactief als performant te
maken.
2.2.1
Web Workers
Web Workers zijn een HTML5 Standaard die het mogelijk maken berekeningen asynchroon uit te voeren. Dit behoudt de interactiviteit van de webapplicatie en zorgt ervoor dat de browser niet vastloopt.
Web Workers bieden een eenvoudig communicatieprotocol aan. Codevoorbeeld 2.1 toont de inhoud van
client.js en calculation.js. Deze worden in detail besproken in respectievelijk sectie 2.2.2
en 2.2.3.
8
2.2 JavaScript
1
client.js
// Maak een nieuwe worker aan gebaseerd op calculation.js
2
var worker = new Worker(’calculation.js’);
3
// Luister naar resulterende data
4
worker.addEventListener(’message’, function(e) {
console.log(e);
5
6
}, false);
7
// Stuur het bericht met data om te berekenen
8
worker.postMessage({msg: ’calculate’, data: data});
1
calculation.js
// Luister naar berichten van client.js
2
self.addEventListener(’message’, function(e) {
3
var data = e.data;
4
switch (e.msg) {
case ’calculate’:
5
6
// Voer onze lange bewerking uit en stuur het resultaat terug
7
var result = doLongCalculation(data);
8
self.postMessage(result);
9
break;
};
10
11
}, false);
12
13
function doLongCalculation(data) {
// . . .
14
15
}
Listing 2.1: Web Workers voorbeeld
2.2.2
Client.js
De code in client.js beschrijft hoe men eenvoudig een Web Worker aanmaakt. Ook wordt het
communicatieprotocol toegelicht aan de hand van een eenvoudig voorbeeld.
9
2.2 JavaScript
2.2.2.1
Initialisatie
De implementatie van een Web Worker dient altijd in een apart bestand te staan. In dit geval bevindt
deze zich in calculation.js. Een Web Worker wordt dan aangemaakt als volgt:
var worker = new Worker(’calculation.js’)
Deze regel maakt een Worker object aan, op basis van calculation.js, en slaat deze op in de
variabele worker. Er kunnen meerdere workers tegelijkertijd aangemaakt worden door deze methode
verschillende keren op te roepen. Het is dan mogelijk andere bestandsnamen als argument te specifi¨eren
om verschillende implementaties te initialiseren.
2.2.2.2
Communicatie
De worker loopt in een apart proces. Hierdoor heeft hij ook geen toegang tot variabelen die gedefinieerd
zijn in client.js en vice versa. Alle communicatie verloopt aan de hand van de postMessage
methode.
worker.postMessage({msg: ’calculate’, data: data})
Bovenstaande regel toont hoe je een boodschap stuurt naar de worker. Communicatie is niet beperkt
tot louter tekst of getallen. Volledige objecten kunnen doorgestuurd worden. In bovenstaande regel
sturen we een object door met een msg sleutel en een data sleutel. De worker kan dan op basis van de
boodschap, die we aan de msg sleutel hangen, beslissen wat er moet gebeuren met de meegeleverde data
(die we aan de data sleutel hangen).
Hierbij dient opgemerkt te worden dat van alle verstuurde objecten een volledige kopie gemaakt wordt.
Het is hierbij niet aangewezen om grote objecten door te sturen. Er zal immers veel tijd verloren gaan
in het kopi¨eren ervan. Dit probleem zal in toekomstige versies van JavaScript verholpen worden door de
toevoeging van “Transferable Objects”. Dit betekent dat objecten zonder een kopieeroperatie doorgegeven kunnen worden aan een worker.
Om boodschappen van de worker te ontvangen, dient een EventListener geregistreerd te worden op het
’message’ event. Onderstaande code registreert een functie die zal opgeroepen worden als de worker
een boodschap terugstuurt. In het voobeeld doet deze functie niets anders dan het verkregen object
uitschrijven naar de console.
10
2.2 JavaScript
worker.addEventListener(’message’, function(e) {
console.log(e);
}, false);
2.2.3
Calculation.js
De code van een worker bevindt zich altijd in een apart bestand. De bestandsnaam dient meegegeven te
worden aan de constructor van een Worker. Na constructie van de worker wordt de code in dit bestand
uitgevoerd. Vaak moet er echter informatie doorgeven worden aan de worker. In sectie 2.2.2 werd
beschreven hoe deze communicatie kon verwezenlijkt worden. Om deze verstuurde boodschappen van
de client in de worker op te vangen, wordt onderstaande code gebruikt.
self.addEventListener(’message’, function(e) {
switch (e.msg) {
case ’calculate’:
var result = doLongCalculation(e.data);
break;
};
}, false);
Hierbij wordt een EventListener aangemaakt die zal beslissen op basis van de msg sleutel wat er dient
te gebeuren. In dit voorbeeld wordt de doLongCalculation functie aangeroepen, die een lange
bewerking voorstelt.
Om een boodschap terug te sturen naar de client, wordt de volgende statement uitgevoerd.
self.postMessage({msg: ’calculate’, result: result})
De client zal dit object ontvangen en achterhalen wat er berekend is op basis van de msg sleutel. Het
resultaat kan uit de result sleutel verkregen worden.
2.2.4
Object-gerichte implementatie
Het Unipept platform bestaat reeds uit enkele JavaScript componenten. Om code-duplicatie te vermijden
is er nood aan voldoende abstractie. Er is zowel nood aan een degelijke afscheiding van de implementa-
11
2.2 JavaScript
ties als mogelijkheid tot communicatie tussen de componenten. Een object-gerichte aanpak ondersteunt
deze vereisten.
JavaScript biedt standaard echter geen ondersteuning voor objecten en klassen zoals deze ge¨ımplementeerd
worden in C++ of Java. Dankzij het dynamisch karakter van JavaScript is het echter wel mogelijk soortgelijk gedrag te emuleren.
We emuleren objecten aan de hand van functies – die wel ondersteund worden door JavaScript – en een
key-value store. We implementeren een klasse als een functie, waarbij de functie tevens de constructor
vormt. Codevoorbeeld 2.2 illustreert deze aanpak.
1
var constructObject = function constructObject(args) {
2
// deze variabele stelt ons object voor
3
var object = {};
4
// . . .
5
return object;
6
}
Listing 2.2: Functie als constructor
We maken hier gebruik van een key-value store die we in de variable object bijhouden. Om methoden
te simuleren, voegen we aan deze store functies toe. Dit doen we door als sleutel de naam van de functie
te gebruiken. Hieraan wijzen we dan als waarde de functie zelf toe. Deze functies defini¨eren we binnen
de constructorfunctie. Zo blijft de scope van de functies beperkt tot de klasse. Omdat we uiteindelijk
deze store teruggeven, zal andere code deze methodes kunnen aanroepen. Codevoorbeeld 2.3 toont hoe
methoden gesimuleerd kunnen worden door het toevoegen van functies.
12
2.2 JavaScript
1
var constructObject = function constructObject(args) {
2
var object = {};
3
// publieke methode
4
object.someMethod = function someMethod(functionArgs) {
5
// Hierin kunnen we andere functies definieren binnen
6
// de scope van de constructor
}
7
8
// publieke variabele
9
10
object.publicProperty = "String";
11
return object;
12
}
Listing 2.3: Toevoegen van methodes
Om volwaardige objecten en klassen te simuleren, is er ook nood aan private variabelen en methoden.
Hiervoor kunnen binnen de constructObject-functie variabelen en functies gedefinieerd worden.
De scope van deze functies en variabelen blijft daardoor beperkt tot de constructorfunctie. Codevoorbeeld 2.4 toont de volledige implementatie.
13
2.2 JavaScript
1
var constructObject = function constructObject(args) {
2
var object = {};
3
// private eigenschap
4
var privateVar = ’private string’;
5
6
// private methode
7
function privateMethod(argument) {
return argument + "!";
8
}
9
10
11
// publieke methode
12
object.publicMethod = function publicMethod(functionArgs) {
13
var localVar = privateMethod(privateVar);
14
return localVar.length;
}
15
16
return object;
17
18
}
19
20
var myObject = constructObject();
21
// Hier kan publicMethod opgeroepen worden, maar niet privateMethod
22
myObject.publicMethod();
Listing 2.4: JavaScript emulatie van objecten met private en publieke attributen
2.2.5
Integratie
Bovenstaande concepten worden gecombineerd in de uiteindelijke implementatie. De similariteitsmatrix
bewaren we in een Matrix object. Wegens de zware berekeningen die er uitgevoerd dienen te worden,
wordt dit object aangemaakt en bewaard in de worker code. Via het communicatiemechanisme worden
nieuwe genomen toegevoegd of verwijderd.
De matrix wordt herberekend na elke toevoeging of verwijdering van een genoom. Hierbij beperken
14
2.3 Visualisatie
gebruiker voegt een
genoom toe
Client
Worker
stuur genoom informatie
stuur berekende similariteiten
toon berekende similariteiten
Figuur 2.3: Interactie tussen worker en client
we herberekeningen tot genomen die toegevoegd werden. De berekende waarden worden dan opnieuw
teruggestuurd naar de client. Hierdoor kan de visualisatie incrementeel ge¨updatet worden. Aan de client
zijde wordt deze matrix opnieuw in een object bewaard. Aan de client zijde gebruiken we niet de Matrix
klasse aangezien de functionaliteit verschilt van de worker implementatie. We dupliceren hierbij de
opslag van de gegevens. Dit is echter noodzakelijk aangezien er geen objecten gedeeld kunnen worden
tussen worker en client.
De client zijde is ook verantwoordelijk voor het opvangen van veranderingen aan de lijst van geselecteerde genomen. Dankzij de object-ge¨orienteerde implementatie hebben we een eenvoudige interface die
deze bewerkingen encapsuleert. De encapsulatie betekent ook dat het bestaan van de worker verborgen
wordt. De klasse aan client-zijde zal de communicatie met de worker afhandelen. Figuur 2.3 maakt
duidelijk hoe een toevoegbewerking verwerkt zal worden.
Omdat we integreren met het bestaande Unipept platform is hergebruik van code mogelijk. Zo dienen
we het ophalen van de peptiden niet zelf meer te implementeren. De integratie van een extra visualisatie
zorgde voor een herwerking van de bestaande code. Deze werd verder ontkoppelt om verdere ontwikkelingen te vereenvoudigen. Waar eerst bepaalde componenten nauw met elkaar verbonden waren, is nu
een propere object ge-orienteerde implementatie voorhanden.
2.3
Visualisatie
Unipept bevat reeds verscheidene visualisaties. Het uitgangspunt van deze visualisaties is dat deze zowel
gebruiksvriendelijk als interactief dienen te zijn. Om dit mogelijk te maken wordt gebruik gemaakt van
een visualisatie-bibliotheek genaamd D3.js.
15
2.3 Visualisatie
20/05/14 11:29
A. baumannii ZW85-1
A. baumannii SDF
A. baumannii MDR-ZJ06
A. baumannii TYTH-1
A. baumannii MDR-TJ
A. baumannii 1656-2
A. baumannii ACICU
A. baumannii TCDC-AB0715
A. baumannii AB307-0294
A. baumannii AB0057
A. baumannii AYE
A. baumannii ATCC 17978
A. baumannii D1279779
A. baumannii D1279779
A. baumannii ATCC 17978
A. baumannii AYE
A. baumannii AB0057
A. baumannii AB307-0294
A. baumannii TCDC-AB0715
A. baumannii ACICU
A. baumannii 1656-2
A. baumannii MDR-TJ
A. baumannii TYTH-1
A. baumannii MDR-ZJ06
A. baumannii SDF
A. baumannii ZW85-1
Figuur 2.4: Visualisatie van de boomstructuur (links) die volgt na clustering van de similariteitsmatrix
(midden) die bekomen wordt op basis van een paarsgewijze similariteitsmaat tussen volledige genomen.
Hoewel de onderliggende data enkel bestaat uit de similariteitsmatrix en bijbehorende clustering, is er
nog een derde component waar rekening mee dient gehouden te worden, nl. de lijst van geselecteerde
genomen. Deze selectie bepaalt uit welke datapunten de similariteitsmatrix bestaat en veranderingen
aan deze selectie dienen zo vlug mogelijk weergegeven te worden. Deze lijst-component werd reeds
ge´ımplementeerd in Unipept. We kunnen dus veranderingen opvangen en hierop gepast reageren. Op
welke manier de interactie met deze lijst impact heeft op de visualisatie wordt verder ge¨ıllustreerd in de
file:///Users/nudded/Projects/thesis/fig/matrix-tree-vis.svg
case studie.
2.4.
Page 1 of 1
We dienen dus enkel nog een visualisatie te maken voor de matrix en de clustering. De matrix stellen we
voor door een raster van gekleurde vierkanten te tekenen. Deze vierkanten stellen aan de hand van een
kleurcode de similariteit voor. De werking van dit raster wordt verder uitgelegd in sectie 2.3.3.
Daarnaast dienen we de clustering voor te stellen. Zoals reeds besproken wordt hiervoor gebruik gemaakt
van de newick voorstelling van de clustering. De boom wordt getekend naast de matrix zodat de labels
overeenkomen. Hoe beide visualisaties getoond worden, wordt grafisch weergegeven op figuur 2.4.
Beide visualisaties werden ge¨ımplementeerd m.b.v. D3.js en SVG. Deze worden in volgende secties
16
2.3 Visualisatie
toegelicht, alvorens we over gaan tot een bespreking van de individuele visualisatie.
2.3.1
D3.js
D3.js – Data-Driven Documents – is een JavaScript bibliotheek die het mogelijk maakt veranderende data
voor te stellen in een browser. Omdat de visualisatie interactief is, is het belangrijk dat het eenvoudig
is om veranderingen voor te stellen. Stel dat een genoom toegevoegd wordt aan de matrix, dan dient de
visualisatie deze verandering elegant voor te stellen. D3.js bleek hier de ideale keuze aangezien het zich
specifiek op deze gevallen toespitst.
D3.js legt geen beperkingen op de uitvoer. Het fungeert als bibliotheek tussen veranderende objecten en
uitvoer zoals HTML of SVG. D3.js legt wel een bepaalde programmeerconventie op.
2.3.1.1
Conventies
Een visualisatie heeft twee componenten. Enerzijds de datapunten die we willen tonen. Anderzijds de
elementen die verantwoordelijk zijn voor de visualisatie. D3.js fungeert als de lijm tussen deze componenten. Onderstaande conventies illustreren hoe men eenvoudig datapunten aan elementen koppelt. Ook
wordt duidelijk hoe veranderingen eenvoudig afgehandeld kunnen worden.
D3.js code wordt meestal opgebouwd in verschillende stappen.
1. Selecteren van de elementen
2. Data binden aan de elementen
3. Eigenschappen van de elementen aanpassen
4. Veranderingen afhandelen
Bovenstaande stappen worden ge¨ıllustreerd aan de hand van een eenvoudig voorbeeld: men wil een lijst
van getallen voorstellen door een aantal cirkels. De grootte van de cirkels wordt bepaald door de waarde
van het getal in de lijst.
2.3.1.2
Selecteren van de elementen
Als eerste selecteren we de elementen die we gebruiken om onze data voor te stellen. We gebruiken
hiervoor simpele circle elementen. D3 selecties gebeuren aan de hand van de W3C DOM API. Dit
17
2.3 Visualisatie
is een standaard die beschrijft hoe verschillende elementen in de DOM – Document Object Model –
geselecteerd kunnen worden.
We hoeven ons momenteel geen zorgen te maken over hoe de DOM eruit ziet. We zullen deze namelijk in
volgende stappen dynamisch opbouwen. Volgend codevoorbeeld illustreert hoe we eenvoudig de juiste
elementen kunnen selecteren.
d3.selectAll("circle")
2.3.1.3
Data binden aan de elementen
In voorgaande stap werden de circle elementen geselecteerd. Elk element in de lijst wordt gekoppeld
aan een overeenkomstig element in de DOM door onderstaande code. Deze maakt gebruik van “chaining”. Dit betekent dat we methodes na elkaar kunnen oproepen. Deze techniek wordt vaak gebruikt in
JavasScript en D3.js.
list = [1,2,3]
d3.selectAll("circle")
.data(list)
Bovenstaande code illustreert de eenvoud, maar ook de kracht van D3.js. We hoeven ons geen zorgen
te maken over het aantal elementen. Zoals we zullen zien kunnen we circle elementen toevoegen op
basis van de data. D3.js zorgt er ook voor dat elk element gekoppeld wordt aan een index in de lijst. Dit
betekent dat wanneer we het datapunt op de eerste positie wijzigen, het overeenkomstig element ook dit
nieuw datapunt zal zien.
2.3.1.4
Eigenschappen aanpassen van elementen
D3.js biedt verscheidene methodes aan om elementen te manipuleren. Via de attr() methode kunnen
we attributen aan de elementen toevoegen. Als tweede argument van deze methode kunnen we een
functie doorgeven. Deze functie zal als argument het data element, behorende bij dit circle element,
kunnen gebruiken. In onderstaand codevoorbeeld passen we de straal aan van het circle element.
list = [1,2,3]
d3.selectAll("circle")
18
2.3 Visualisatie
.data(list)
.attr("r", function(d) { return d * 10; })
Opnieuw maken we hier gebruik van “chaining”. Het maakt de code niet alleen leesbaarder, maar elimineert ook de nood aan een expliciet geprogrammeerde lus. Als de waarden in de lijst veranderen zal de
straal van de cirkel ook veranderen.
Dit eenvoudig voorbeeld illustreert hoe we, door een beschrijving te geven van de visualisatie, veel
minder werk hoeven te doen. D3.js zorgt voor de koppeling tussen elementen en datapunten en biedt
genoeg mogelijkheiden om a.d.h.v. functies, zoals attr, aanpassingen te maken.
2.3.1.5
Veranderingen afhandelen
Zoals reeds gezegd zal bovenstaande code zich aanpassen aan de waarden in de lijst. Het is echter ook
belangrijk dat we de visualisatie kunnen aanpassen indien er datapunten toegevoegd of verwijderd worden. D3.js voorziet hier de twee methodes enter() en exit(). Deze methodes geven een subselectie
van de elementen die respectievelijk toegevoegd of verwijderd zullen worden.
list = [1,2,3]
// Bind data aan elementen
selector = d3.selectAll("circle")
.data(list)
selector.enter()
.append("circle")
selector.exit()
.remove()
selector.attr("r", function(d) { return d * 10; })
Bovenstaand codevoorbeeld toont hoe men een volwaardige visualisatie zou opbouwen. Opnieuw dienen
we enkel te beschrijven wat er moet gebeuren in geval van veranderingen. In geval van toevoegingen gaan
we circle elementen toevoegen aan de DOM. Als er een datapunt verwijdert wordt dan verwijderen
we ook het respectievelijke element in de DOM.
19
2.3 Visualisatie
Om het voorbeeld nu te vervolledigen nemen we de code en plaatsen we deze in een functie. Het finale
resultaat is te zien in onderstaande code. Onze eigen visualisatie-implementatie maakt uitsluitend gebruik
van onderstaand patroon.
function redraw(list) {
selector = d3.selectAll("circle")
.data(list)
selector.enter()
.append("circle")
selector.exit()
.remove()
selector.attr("r", function(d) { return d * 10; })
}
// Meerdere oproepen met andere data
redraw([1,2,3])
redraw([2,3,4,5])
2.3.1.6
Voordelen
Op basis van bovenstaand, eenvoudig voorbeeld is duidelijk dat D3.js heel wat voordelen biedt. Zo
dienen we zelf niet te berekenen wat er toegevoegd of verwijderd is. We moeten enkel de visualisatie en
het correct gedrag in geval van veranderingen beschrijven. Ook zal D3.js zelf bepalen wat hertekend moet
worden, wat een een enorme performantie-winst oplevert. Een browser zal het immers veel eenvoudiger
vinden bestaande elementen aan te passen (bv de tekst ervan) dan nieuwe elementen toe te voegen.
Als laatste is de mapping tussen data en visualisatie ook heel eenvoudig, we beschrijven enkel hoe een
element eruit ziet op basis van e´ e´ n data-element en D3.js handelt de rest voor ons af.
2.3.2
SVG
SVG – Simple Vector Graphics – is een formaat dat gebruikt kan worden om vectori¨ele afbeeldingen
voor te stellen aan de hand van XML. Het heeft als voordeel dat het specifiek bedoeld is om tekeningen
20
2.3 Visualisatie
te maken in tegenstelling tot HTML, dat een breder doel heeft. Om uitgebreide en ingewikkelde figuren
te maken is het dan ook eenvoudiger om SVG te gebruiken dan CSS in combinatie met HTML, zoals
onderstaand codevoorbeeld illustreert.
<body>
<div class="circle"></div>
<script type="text/css">
.circle {
top: 20px;
<svg>
left: 20px;
<circle cx=20 cy=20 r=5>
border-radius: 5px;
</svg>
height: 10px;
width: 10px;
}
</script>
</body>
86,75% van alle browsers ondersteunt SVG. Als we enkel kijken naar de laatste versies dan ondersteunt
100% van de browsers SVG. We kunnen hier dus gebruik zonder problemen gebruik van maken.
2.3.3
Matrix visualisatie
Om de matrix weer te geven, bouwen we een simpele SVG structuur op. We gebruiken g elementen
om een rij van vierkanten te groeperen. We kunnen deze rij dan op de juiste hoogte tekenen m.b.v. het
transform attribuut. De vierkanten binnen een rij worden op hun beurt dan weer voorgesteld door
rect elementen. Van deze elementen passen we het x attribuut aan zodanig dat deze op de juiste plaats
getoond worden. Om de similariteit weer te geven gebruiken we een kleurencode. Des te feller de
getoonde kleur des te groter de similariteit. Deze wordt aangepast door de doorzichtigheid per vierkant
aan te passen, dit met behulp van het fill-opacity CSS-attribuut. Onderstaand voorbeeld is een
vereenvoudiging van de uiteindelijke SVG-structuur, maar illustreert de idee.
<svg>
<g class="row" transform="translate(0,y)">
<rect x="0" style="fill-opacity: 0.8;">
.
<!-- .
. -->
</g>
21
2.4 Case studie
.
<!-- .
. -->
</svg>
Onderstaande code illustreert hoe we bovenstaande SVG structuur opbouwen met D3.js.
1
var rows = d3.selectAll(".row").data(dataArray)
2
rows.enter()
3
.append("g")
4
.attr("class", "row")
5
rows.exit().remove()
6
rows.each(function (d) {
7
// selecteer alle rects binnen deze rij en bind de rij data
8
var cells = d3.select(this)
.selectAll("rect")
9
.data(d)
10
11
// handel veranderingen af
12
cells.enter().append("rect")
13
cells.exit().remove()
14
cells.transition()
15
.attr(’x’, function(d) { /* Bereken x */ })
16
.style(’fill-opacity’, function(d) { /* Bereken opacity */ })
17
})
2.3.4
Boomvisualisatie
Om de boom voor te stellen, maken we opnieuw gebruik van SVG. Hiervoor gebruikten we echter
een library die fylogenetische bomen kan voorstellen op basis van een gegeven newick string. Het
uiteindelijke resultaat is te zien in figuur 2.4.
2.4
Case studie
We illustreren de werking van de toegevoegde component aan de hand van een eenvoudige case studie.
Het is niet de bedoeling hierbij dieper in te gaan op het biologische aspect, eerder willen we aantonen dat
22
2.4 Case studie
Figuur 2.5: Startpagina voor peptidoom clustering
complexe analyses eenvoudig en snel kunnen gebeuren. Deze case studie kan dan ook gelezen worden
als een handleiding om het gebruik van de component te illustreren.
Om analyses te kunnen uitvoeren, dient men enkel over een moderne browser te beschikken. Als eerste
stap surfen we naar de URL waarop we aan de slag kunnen. Op http://scruffy.ugent.be/
peptidome worden we begroet met een voorbeeld analyse. We komen terecht bij de Unique Peptide
Finder, willen we nu gebruik maken van de petidoom clustering, dan klikken we op de tab “Peptidome
Clustering”. We krijgen dan de matrix te zien zoals in figuur 2.5.
Als eerste stap in een analyse dienen we de genomen in te laden die we willen analyseren. Hiervoor
maken we gebruik van de lijstcomponent. Deze lijst bevindt zich onder de matrix. Zoals te zien in figuur
2.6 beschikken we over verschillende mogelijkheden om de lijst aan te passen. Zo kan men de volgorde
veranderen door eenvoudig een rij in de lijst te verslepen. Ook kan men genomen verwijderen door op
het vuilbakje naast hun naam te klikken.
Links van de lijst bevindt zich een boom van alle RefSeq genomen. Men kan een groep toevoegen op
species niveau, met de “Add species” knop. Als we specifiekere genomen willen toevoegen kunnen we
deze uit de linkse lijst naar de geselecteerde lijst slepen. Eens we een aanpassing maken aan de lijst
zullen we zien dat de matrix onmiddellijk hertekend wordt.
23
2.4 Case studie
Figuur 2.6: Lijst van geselecteerde genomen
In de matrix worden de similariteiten voorgesteld. We kunnen door met de muis te zweven boven een
vierkant meer informatie verkrijgen. Zo kunnen we de similariteiten van twee genomen direct bekijken.
Deze matrix kan ook gedownload worden als een CSV-bestand. Dit doen we door op “Save data” te
klikken.
Eens de gewenste genomen geselecteerd zijn, kunnen we de clustering bepalen. Door op de boom naast
de matrix te klikken, wordt de clustering berekend en getoond. Alle informatie die zichtbaar is op de
webpagina kan gedownload worden. Via de “Save image” knop kunnen we de matrix en boom als een
afbeelding bewaren. Via de “Save data” knop kan de boom in newick formaat gedownload worden.
Om interactie met de Unique Peptide Finder te vereenvoudigen, gebruiken beide componenten dezelfde
volgorde zoals aangegeven in de lijst. Door te clusteren verandert echter de volgorde in de matrix. Eens
dit gebeurt verschijnt er in de lijst component twee knoppen: “use clustered order” en “undo clustering”.
De eerste knop zal de volgorde van de matrix overnemen in de lijst. De tweede knop maakt de clustering
dan weer ongedaan en zal de volgorde van de lijst overnemen in de matrix.
Men heeft ook de mogelijkheid genomen te analyseren die zich niet in de RefSeq lijst bevinden. Naast de
tab “RefSeq genomes” in de lijst component bevindt zich de tab “My genomes”. Als we hier op klikken
kunnen we een FASTA bestand uploaden dat volledig aan de client zijde geanalyseerd zal waorden. Een
24
2.5 Resultaten
gebruiker heeft dan de mogelijkheid de eigen genomen toe te voegen aan de selectie om deze mee op te
nemen in de analyse.
Om een eindgebruiker meer controle te geven over hoe de boom en matrix gepresenteerd worden, kan
men de vertakkingen in de fylogenetische boom klikken om deze boom op die plaats te verwisselen. Zo
kan men wat aandacht spenderen aan het uitzicht van de visualisatie om deze bijvoorbeeld te gebruiken
in een publicatie.
2.4.1
Toekomstige features
Voorlopig werkt de component nog niet zo goed als er meer dan 50 genomen geselecteerd worden. De
matrix die dan getekend wordt is nauwelijks nog overzichtelijk. Om dit te verhelpen wordt de matrix
verborgen en enkel te boom getekend. Hierdoor komt er ook meer ruimte voor de tekst, en zal deze niet
langer overlappen bij grote datasets.
2.5
Resultaten
Waar een BLAST analyse vaak enkele dagen duurt, zien we dat onze component minder dan een seconde
rekenwerk heeft. Eens de data ingeladen is, duurt een toevoeging minder dan een seconde. Hierbij duurt
het inladen van de data, afhankelijk van de snelheid van de internetverbinding, gemiddeld twee seconden.
Ook maakt deze snelheid het mogelijk om sneller analyses met elkaar te vergelijken.
25
UNIPEPT API: WEB SERVICES EN COMMANDOLIJNINTERFACE
Hoofdstuk 3
Unipept API: web services en
commandolijninterface
Om grote hoeveelheden omgevingsstalen in bulk te kunnen analyseren, moeten zoveel mogelijk verwerkingsstappen geautomatiseerd worden. Daarom werd in het kader van deze thesis een API (web services
en commandolijninterface) ontwikkeld voor de functionaliteit die wordt aangeboden door Unipept. Waar
de webinterface kan gebruikt worden voor de analyse van individuele stalen, kan de API gebruikt worden om specifieke pipelines te bouwen voor de analyse van metagenomics en metaproteomics datasets.
Deze op maat gemaakte pipelines kunnen daardoor op een gestroomlijnde manier gebruik maken van de
bestaande Unipept functionaliteit. De webinterface en de API spreken dezelfde onderliggende databank
aan via een aantal gedeelde web services, waardoor de functionaliteit gegarandeerd consistent is.
Om de commandolijninterface te ondersteunen, spreken we dezelfde onderliggende databank aan als
Unipept. Om dit mogelijk te maken, beslisten we om de functionaliteit te implementeren op de server
en beschikbaar te maken via een HTTP API (web services). Op deze manier laten we ruimte voor
uitbreiding en kunnen andere clients ook gebruiken maken van de ge¨ımplementeerde functionaliteit.
Een eindgebruiker zal echter vooral gebruik maken van de commandolijninterface. Deze wordt opgesplitst van het Unipept platform, en ter beschikking gesteld als een Ruby gem. Snelheid, flexibiliteit en
gebruiksgemak vormen hierbij de belangrijkste uitdagingen.
26
3.1 Web Services
3.1
Web Services
De HTTP API werd ontwikkeld met het oog op batchverwerking. Dit betekent dat er altijd een lijst
van invoer-gegevens kan verwerkt worden. Dit zal het aantal bevragingen dat moet gebeuren drastisch
verminderen. De winst die we verkrijgen door deze implementatie keuze wordt besproken in sectie 3.4.
Het API-endpoint is beschikbaar via http://unipept.ugent.be/api/v1/. Er werden vijf methodes ge¨ımplementeerd die hieronder in detail besproken worden. Alle API-methodes zijn beschikbaar
via een POST of een GET-request. De parameters worden doorgegeven als URL argumenten in het geval
van een GET-request, en via POST data in het geval van een POST-request. De HTTP API zal altijd een
antwoord teruggeven in het JSON – JavaScript Object Notation – formaat.
Elke methode heeft e´ e´ n vereiste parameter input. Aan deze parameter moet een lijst van invoergegevens doorgegeven worden. Deze lijst zal ofwel eiwitfragmenten, tryptische peptiden of NCBI taxon
identifiers bevatten. Daarnaast zijn er ook nog twee optionele parameters: extra en names. Door
de waarde true door te geven aan de hand van de extra parameter kan aangegeven worden dat er
extra informatie moet teruggegeven worden. Het ophalen van deze extra informatie betekent ook dat de
HTTP API meer tijd zal nodig hebben om een resultaat terug te geven. Met de names parameter wordt
aangegeven of naast de NCBI identifier ook de naam moet teruggestuurd worden. Ook het opvragen van
deze informatie betekent extra werk voor de databank. Vandaar dat ook deze informatie expliciet moet
aangevraagd worden.
De equate_il parameter is enkel van toepassing wanneer de invoer bestaat uit een lijst van tryptische
peptiden. Deze parameter geeft aan of de aminozuren isoleucine (I) en leucine (L) gelijk gesteld moeten
worden.
De documentatie van deze API wordt ook automatisch gegeneerd en is beschikbaar op http://unipept.
ugent.be/apidoc/v1. In wat volgt geven we een gedetailleerde beschrijving van de functionaliteit
en de interface van de methoden die beschikbaar zijn in de HTTP API.
3.1.1
De methode pept2taxa
Deze methode zal voor een gegeven lijst van tryptische peptiden, voor elke peptide de individuele taxonomische identificaties teruggeven van alle Uniprot eiwitten, waarin de tryptische peptide voorkomt.
Onderstaand voorbeeld illustreert het gebruik van de methode |pept2taxa—.
# 1 peptide
27
3.1 Web Services
$ curl -X POST -H "Accept: application/json" unipept.ugent.be/api/v1/pept2taxa -d ’input[0]=
SASLGR’
[{"sequence":"SASLGR","taxon_id":3055,"taxon_name":"Chlamydomonas reinhardtii","
taxon_parent_id":3052,"taxon_rank":"species"}, ... ]
# meerdere peptiden
$ curl -X POST -H "Accept: application/json" unipept.ugent.be/api/v1/pept2taxa -d ’input[0]=
SASLGR’ -d ’input[1]=MVNENTR’ -d ’input[2]=QQYGKPK’
...
De extra informatie die door de methode teruggeven wordt, bestaat uit de volledige afstamming voor elk
van de taxa.
$ curl -X POST -H "Accept: application/json" unipept.ugent.be/api/v1/pept2taxa -d ’input[0]=
SASLGR’ -d ’extra=true’ -d ’names=true’
[{"sequence":"SASLGR","taxon_id":3055,"taxon_name":"Chlamydomonas reinhardtii","
taxon_parent_id":3052,"taxon_rank":"species","superkingdom_id":2759,"superkingdom_name":"
Eukaryota","kingdom_id":33090,"kingdom_name":"Viridiplantae","subkingdom_id":null,"
subkingdom_name":"","superphylum_id":null,"superphylum_name":"","phylum_id":3041,"
phylum_name":"Chlorophyta","subphylum_id":null,"subphylum_name":"","superclass_id":null,"
superclass_name":"","class_id":3166,"class_name":"Chlorophyceae","subclass_id":null,"
subclass_name":"","infraclass_id":null,"infraclass_name":"","superorder_id":null,"
superorder_name":"","order_id":3042,"order_name":"Chlamydomonadales","suborder_id":null,"
suborder_name":"","infraorder_id":null,"infraorder_name":"","parvorder_id":null,"
parvorder_name":"","superfamily_id":null,"superfamily_name":"","family_id":3051,"
family_name":"Chlamydomonadaceae","subfamily_id":null,"subfamily_name":"","tribe_id":null,
"tribe_name":"","subtribe_id":null,"subtribe_name":"","genus_id":3052,"genus_name":"
Chlamydomonas","subgenus_id":null,"subgenus_name":"","species_group_id":null,"
species_group_name":"","species_subgroup_id":null,"species_subgroup_name":"","species_id"
:3055,"species_name":"Chlamydomonas reinhardtii","subspecies_id":null,"subspecies_name":""
,"varietas_id":null,"varietas_name":"","forma_id":null,"forma_name":""}, ... ]
3.1.2
De methode pept2lca
Deze methode zal voor een gegeven lijst van tryptische peptiden de laagste gemeenschappelijke voorouder (LCA) teruggeven zoals deze wordt berekend door Unipept. Aangezien Unipept de LCA voor elke
peptide op voorhand berekent en opslaat in de databank kan de LCA snel opgevraagd en teruggegeven
worden. Onderstaand voorbeeld illustreert het gebruik van de methode pept2lca.
$ curl -X POST -H "Accept: application/json" unipept.ugent.be/api/v1/pept2lca -d ’input[0]=
ASFHLECIK’ -d ’equate_il=false’
[]
28
3.1 Web Services
$ curl -X POST -H "Accept: application/json" unipept.ugent.be/api/v1/pept2lca -d ’input[0]=
ASFHLECIK’ -d ’equate_il=true’
[{"sequence":"ASFHLECIK","taxon_id":7776,"taxon_name":"Gnathostomata","taxon_parent_id":7742,"
taxon_rank":"superclass"}]
De extra informatie die door de methode teruggeven wordt, bestaat uit de volledige afstamming voor elk
van de taxa.
3.1.3
De methode pept2prot
Deze methode zal voor een gegeven lijst van tryptische peptiden, voor elke peptide de lijst van Uniprot identifiers teruggeven die corresponderen met de eiwitten waarin de tryptische peptide voorkomt.
Onderstaand voorbeeld illustreert het gebruik van de methode pept2prot.
$ curl -X POST -H "Accept: application/json" unipept.ugent.be/api/v1/pept2prot -d ’input[0]=
SASLGR’
[{"sequence":"SASLGR","uniprot_id":"Q99243","taxon_id":9986}, ...]
De extra informatie die door deze methode teruggegeven wordt bestaat uit verwijzingen naar de Gene
Ontology en de Enzyme Commissions numbers voor de individuele eiwitten uit Uniprot. Onderstaand
voorbeeld illustreert hoe men dit kan opvragen.
$ curl -X POST -H "Accept: application/json" unipept.ugent.be/api/v1/pept2prot -d ’input[0]=
SASLGR’ -d ’equate_il=true’ -d ’extra=true’
[{"sequence":"SASLGR","uniprot_id":"Q99243","taxon_id":9986,"taxon_name":"Oryctolagus
cuniculus","ec_references":"","go_references":"738214 738215 738216 738217 738218 738219"
}, ... ]
3.1.4
De methode taxa2lca
Waar de voorgaande methoden telkens een lijst van tryptische peptiden als invoer meekregen, moet aan
de methode taxa2lca een lijst van NCBI taxon identifiers doorgegeven worden. De methode zal de
LCA voor al deze taxa berekenen, volgens de implementatie zoals die door Unipept gebruikt wordt. Deze
methode zal dus altijd e´ e´ n enkel resultaat opleveren.
$ curl -X POST -H "Accept: application/json" unipept.ugent.be/api/v1/taxa2lca -d ’input
[0]=816’ -d ’input[1]=124’
{"taxon_id":2,"taxon_name":"Bacteria","taxon_parent_id":131567,"taxon_rank":"superkingdom"}
De extra informatie die door de methode teruggeven wordt, bestaat uit de volledige afstamming voor elk
van de taxa.
29
3.2 Commandolijninterface
3.1.5
De methode taxonomy
Deze methode zal voor een gegeven lijst van NCBI taxon identifiers de naam en de volledige afstamming
teruggeven volgens de Unipept Taxonomy. Onderstaand voorbeeld illustreert het gebruik van de methode
taxonomy.
unipept.ugent.be/api/v1/taxonomy -d ’input[0]=816’
[{"taxon_id":816,"taxon_name":"Bacteroides","taxon_parent_id":815,"taxon_rank":"genus"}]
De extra informatie die door de methode teruggeven wordt, bestaat uit de volledige afstamming voor elk
van de taxa.
3.2
Commandolijninterface
De commandolijninterface werd ontwikkeld in Ruby. Dit is een dynamische programmeertaal vergelijkbaar met Python. De huidige versie van de commandolijninterface bestaat uit vier commando’s. Het
belangrijkste commando unipept, is een wrapper rond de HTTP API zoals die hierboven werd besproken. Het commando uniprot is een wrapper rond sommige web services van Uniprot. Beide
commando’s spreken web services aan en vereisen dus een internetverbinding.
De commando’s prot2pept en peptfilter hebben geen externe resources nodig en werken volledig lokaal. Dit zijn eenvoudige commando’s die op de commandolijk eiwitfragmenten omzetten naar
een lijst van tryptische peptiden die verder door Unipept kunnen verwerkt worden. Al deze commando’s
worden in detail besproken in de volgende secties.
3.2.1
Unix principes
Omdat we werken op de commandolijn is het belangrijk dat we bepaalde conventies volgen. Zo lezen we
de invoer – naar Unix conventie – in vanaf stdin en schrijven we uitvoer naar stdout. Ook bieden we
meerdere commando’s aan. We zouden al de functionaliteit in e´ e´ n enkel commando kunnen combineren,
maar dit zou leiden tot complexe interacties. In Unix wordt het aanbieden van meerdere commando’s
aangemoedigd waardoor het gebruiksgemak vergroot.
Concreet betekent dit dat we de voorkeur geven aan meerdere commando’s die met elkaar kunnen gecombineerd worden via pipelining. Volgend voorbeeld illustreert het verschil in beide benaderingen.
De eerste pipeline is een voorbeeld waarin we de Unix principes gevolgd hebben. We hebben een aantal
30
3.2 Commandolijninterface
commando’s die een kleine taak uitvoeren samengevoegd tot e´ e´ n pipeline die een complexe taak uitvoert.
Het tweede voorbeeld illustreert hoe we (fictief) al deze functionaliteit in e´ e´ n commando zouden kunnen
implementeren. Dit laatste is echter niet aangewezen.
# voorbeeld van een pipeline die de unix principes volgt
$ uniprot Q01815 | prot2pept | peptfilter
# alle functionaliteit zit samengebald in een enkel commando
$ uniprot Q01815 --to-pept --filter --min=5 --max=50
3.2.2
Installatie
De vier ge´ımplementeerde commando’s worden samengebundeld in een Ruby Gem. Dit is het systeem
dat gebruikt wordt om alle Ruby bibliotheken te distribueren en te installeren. Dit zorgt ervoor dat
eindgebruikers slechts enkele stappen dienen te ondernemen om aan te slag te kunnen met onze commandolijninterface.
Als eerste dient een moderne versie van Ruby (minstens versie 1.9.3) ge¨ınstalleerd te worden. Op
https://www.ruby-lang.org/en/installation/ kan men hiervoor instructies vinden voor
verschillende platformen. Eens een werkende Ruby interpreter ge¨ınstalleerd is kan men met volgend
commando’sj onze commandolijninterface installeren en instellen voor gebruik.
$ gem install unipept
Successfully installed unipept-0.5.5
1 gem installed
$ unipept config host ’unipept.ugent.be’
Omdat we verzekeren dat gebruikers steeds de laatste versie gebruiken, werd er een notificatie mechanisme ingebouwd. Dit laat toe de gebruiker op de hoogte stellen van nieuwe versies of belangrijke
publicaties. Onderstaand voorbeeld illustreert dit mechanisme.
$ unipept --version
0.5.4
$ unipept pept2prot SASLGR
Unipept 0.5.5 is released!
sequence,uniprot_id,taxon_id
SASLGR,Q99243,9986
SASLGR,Q99875,9606
...
31
3.2 Commandolijninterface
3.2.3
Het commando uniprot
Dit commando is een wrapper rond een aantal web services van de Uniprot databank. Deze databank
bevat een groot aantal volledige eiwitsequenties. Uniprot kent een unieke identifier toe aan elk eiwit in
de databank. Het commanod uniprot zal op basis van deze identifiers de eiwitsequentie downloaden
en wegschrijven naar stdout. Deze identifiers kunnen zowel via stdin als via argumenten gespecifieerd worden. Indien gewenst kan de uitvoer ook in FASTA formaat weggeschreven worden. Volgend
voorbeeld illustreert de werking van het commando.
# simpelweg een eiwitsequentie ophalen
$ uniprot Q01815
MVNENTRMYVPEENHQGSNYGSPRPAHANMNANAAAGLAPEHIPTPGAALSWQAAIDAARQ...
# meerdere eiwitsequenties ophalen
$ echo "Q01815\nQ9CQW9" | uniprot -f fasta
>sp|Q01815|CAC1C_MOUSE Voltage-dependent L-type calcium channel subunit alpha-1C OS=Mus
musculus GN=Cacna1c PE=1 SV=1
MVNENTRMYVPEENHQGSNYGSPRPAHANMNANAAAGLAPEHIPTPGAALSWQAAIDAAR...
>sp|Q9CQW9|IFM3_MOUSE Interferon-induced transmembrane protein 3 OS=Mus musculus GN=Ifitm3 PE
=1 SV=1
MNHTSQAFITAASGGQPPNYERIKEEYEVAEMGAPHGSASVRTTVINMPREVSVPDHVVW...
3.2.4
Het commando prot2pept
Het commando prot2pept kan gebruikt worden om een eiwitsequentie op te breken in een lijst van
tryptische peptiden. Het commando leest de eiwitsequenties in via stdin en schrijft het resultaat weg
naar stdout. Het commando heeft ver geen opties en wordt meestal als tussenstuk in een pipeline
gebruikt. Indien de invoer in het FASTA formaat wordt doorgegeven, zal het commando de FASTA
headers negeren en ongewijzigd doorgeven aan het volgende commando. Volgend voorbeeld illustreert
de werking van het commando.
$ uniprot Q01815 | prot2pept
MVNENTR
MYVPEENHQGSNYGSPRPAHANMNANAAAGLAPEHIPTPGAALSWQAAIDAAR
QAK
...
$ uniprot Q01815 -f fasta | prot2pept
>sp|Q01815|CAC1C_MOUSE Voltage-dependent L-type calcium channel subunit alpha-1C OS=Mus
musculus GN=Cacna1c PE=1 SV=1
MVNENTR
MYVPEENHQGSNYGSPRPAHANMNANAAAGLAPEHIPTPGAALSWQAAIDAAR
...
32
3.2 Commandolijninterface
3.2.5
Het commando peptfilter
De Unipept databank indexeert enkel tryptische peptiden die 5 tot 50 aminozuren lang zijn. Het is aangewezen om tryptische peptiden die niet voldoen aan deze voorwaarden weg te filteren om het aantal bevragingen van de HTTP API te beperken. Het commando peptfilter kan daarvoor gebruikt worden.
Zonder gespecifieerde opties zal dit commando de tryptische peptiden die buiten bovenstaande grenzen
vallen uit de pipeline filteren. Dit commando is echter configureerbaar. Zo kunnen met onderstaande
opties nog bijkomende voorwaarden opgelegd worden.
-a, –lacks een string waarvan elke letter een aminozuur voorstelt dat niet mag voorkomen
-c, –contains een string waarvan elke letter een aminozuur voorstelt dat zeker moet voorkomen
-l, –minlen minimum lengte (default: 5)
-u, –maxlen maximum lengte (default: 50)
Als we dit commando in een pipeline gebruiken waarbij we werken met FASTA invoer, dan zal dit
commando de FASTA hoofdingen ongewijzigd doorgeven. Volgend voorbeeld illustreert hoe we deze
opties kunnen toepassen.
# Eenvoudig voorbeeld
$ uniprot Q01815 | prot2pept | peptfilter
MVNENTR
LMGSAGNATISTVSSTQR
QQYGKPK # QAK is er nu uitgefilterd!
...
# complexer voorbeeld
$ uniprot Q01815 | prot2pept | peptfilter --lacks M
QQYGKPK # MVNENTR en LMGSAGNATISTVSSTQR ontbreken
QGGTTATRPPR
...
$
3.2.6
Het commando unipept
Het commando unipept vormt een wrapper rond de Unipept web services, en is daarmee dus het
belangrijkste commande van de Unipept commandolijninterface. Alle methodes die ter beschikking
gesteld worden via de HTTP API, corresponderen met een subcommando van het commando unipept.
33
3.2 Commandolijninterface
In volgende subsecties worden de verschillende subcommando’s besproken, en illustreren we hoe ze
kunnen gebruikt worden aan de hand van een reeks voorbeelden. Het commando unipept ondersteunt
de volgende subcommando’s
• pept2taxa
• pept2lca
• pept2prot
• taxa2lca
• taxonomy
Aan de subcommando’s waarvan de naam begint met pept moet als invoer een lijst van tryptische
peptiden doorgegeven worden. Aan de subcommando’s die beginnen met tax moet een lijst van NCBI
taxon identifiers doorgegeven worden. De peptiden of NCBI taxon identifiers kunnen ofwel als argument
doorgegeven worden aan het commando unipept of via stdin. In dat laatste geval verwacht het
commando e´ e´ n peptide of taxon identifier per regel.
Om het gebruiksgemak te vergroten is er steeds de mogelijkheid om met de -h optie de mogelijke opties
van het commando unipept en zijn subcommando’s weer te geven.
Show help pept2lca
help
given peptide pept2prot
pept2taxa
Provide lowest common ancestor for
Provide protein information for given peptides
Provide all the taxonomies for given peptide taxa2lca
Provide lowest common ancestor for given taxon ids taxonomy
Provide NCBI
taxonomy information for given taxon ids
OPTIONS
--host
Override host setting
-f --format
output format (available: json,csv,xml) (default: csv)
-h --help
show help for this command
-i --input
input file
-o --output
output file
-q --quiet
don’t show update messages
-v --version
print version
3.2.6.1
Algemene opties
De verschillende subcommando’s ondersteunen een aantal algemene opties die voor alle subcommando’s
hetzelfde effect hebben.
34
3.2 Commandolijninterface
–host Overschrijft de host configuratie voor dit commando.
-f, –format Specifieert het formaat van de uitvoer. Standaard zal de uitvoer als CSV getoond worden,
maar er is ook mogelijkheid om uitvoer te genereren als XML of JSON.
-i, –input Leest de invoer uit het opgegeven bestand in plaats van uit stdin
-o, –output Schrijft de uitvoer naar het opgegeven bestand in plaats van uit stdout
-h, –help Toont de documentatie van het commando unipept of e´ e´ n van zijn subcommando’s.
-q, –quiet Onderdrukt boodschappen die door de server naar de client gestuurd worden. Deze boodschappen worden automatisch onderdrukt als de uitvoer van het commando niet aan de terminal
gekoppeld is.
-v, –version Toont het versienummer van de commandolijninterface.
-a, –extra Geeft extra informatievelden weer op de uitvoer.
Verder is er ook nog een optie -s of --select die het mogelijk maakt om enkel bepaalde informatievelden weer te geven op de uitvoer. Deze optie kan meerdere malen opgegeven worden om meerdere
informatievelden te selecteren. Onderstaand voorbeeld illustreert het gebruik van deze optie.
# selecteer 1 enkel attribuut
$ uniprot Q01815 | prot2pept | peptfilter | unipept pept2lca -s taxon_id
taxon_id
314146
40674
40674
...
# selecteer meerdere attributen
$ uniprot Q01815 | prot2pept | peptfilter | unipept pept2lca -s sequence -s taxon_id
sequence,taxon_id
MVNENTR,314146
LMGSAGNATISTVSSTQR,40674
QQYGKPK,40674
...
3.2.6.2
Configuratie
Omdat het commando unipept zal verbinding maken met de HTTP API die wordt aangeboden op een
server, moet de hostname van de server ingesteld worden. We volgen hier opnieuw conventies en plaatsen
35
3.2 Commandolijninterface
deze configuratie in een onzichtbaar bestand in de thuismap van de gebruiker. Voor de eindgebruiker is
er echter een eenvoudig commando voorzien dat hem toelaat om deze configuratie op gepaste manier in
te stellen.
$ unipept config host ’http://unipept.ugent.be’
Na het uitvoeren van dit commando zal er in de thuismap een bestand met naam .unipeptrc aangemaakt worden. Hierin kan voor elke algemene optie van het commando unipept een generieke waarde
opgeslagen worden. Een waarde die als argument aan een commando wordt doorgegeven krijgt steeds
voorrang op de geconfigureerde waarde.
3.2.6.3
Het subcommando pept2taxa
Dit subcommando zal voor een gegeven lijst van tryptische peptiden, voor elke peptide de individuele
taxonomische identificaties teruggeven van alle Uniprot eiwitten, waarin de tryptische peptide voorkomt.
Hierbij is het mogelijk dat er meerdere resultaten voorkomen per peptide, daarom wordt de peptide
expliciet vermeld in de uitvoer.
Dit subcommando beschikt over twee extra opties:
-e, –equate Geeft aan dat er geen onderscheid gemaakt moet worden tussen isoleucine (I) en leucine
(L). Aangewezen bij proteomics experimenten.
-x, –xml Download bijkomend de record uit de NCBI Taxonomy databank voor elk resultaat dat naar de
uitvoer geschreven wordt.
Onderstaand voorbeeld illustreert de werking van dit subcommando.
$ uniprot Q01815 | prot2pept | peptfilter | unipept pept2taxa -e
sequence,taxon_id,taxon_name,taxon_parent_id,taxon_rank
MVNENTR,9598,Pan troglodytes,9596,species
MVNENTR,9601,Pongo abelii,9599,species
MVNENTR,9606,Homo sapiens,9605,species
...
36
3.2 Commandolijninterface
3.2.6.4
Het subcommando pept2lca
Dit subcommando zal voor een gegeven lijst van tryptische peptiden de laagste gemeenschappelijke
voorouder (LCA) teruggeven zoals deze wordt berekend door Unipept. Voor dit subcommando is er
slechts e´ e´ n resultaat per peptide.
Dit subcommando beschikt over een extra optie:
-e, –equate Geeft aan dat er geen onderscheid gemaakt moet worden tussen isoleucine (I) en leucine
(L). Aangewezen bij proteomics experimenten.
Onderstaand voorbeeld illustreert de werking van dit subcommando.
$ uniprot Q01815 | prot2pept | peptfilter | unipept pept2lca -e
sequence,taxon_id,taxon_name,taxon_parent_id,taxon_rank
MVNENTR,314146,Euarchontoglires,9347,superorder
LMGSAGNATISTVSSTQR,40674,Mammalia,32524,class
QQYGKPK,40674,Mammalia,32524,class
QGGTTATRPPR,39107,Murinae,10066,subfamily
...
3.2.6.5
Het subcommando pept2prot
Dit subcommando zal voor een gegeven lijst van tryptische peptiden, voor elke peptide de lijst van
Uniprot identifiers teruggeven die corresponderen met de eiwitten waarin de tryptische peptide voorkomt.
Hier verwachten we wel meerdere resultaten per peptide.
Dit subcommando heeft twee extra opties:
-e, –equate Geeft aan dat er geen onderscheid gemaakt moet worden tussen isoleucine (I) en leucine
(L). Aangewezen bij proteomics experimenten.
-x, –xml Download bijkomend de record uit de Uniprot databank voor elk resultaat dat naar de uitvoer
geschreven wordt.
$ uniprot Q01815 | prot2pept | peptfilter | unipept pept2prot -e
sequence,uniprot_id,taxon_id
MVNENTR,Q99875,9606
MVNENTR,Q99242,10090
MVNENTR,E9PDJ0,9606
...
37
3.3 Batchverwerking
3.2.6.6
Het subcommando taxa2lca
Waar de voorgaande subcommando’s telkens een lijst van tryptische peptiden als invoer meekregen,
moet aan het subcommando taxa2lca een lijst van NCBI taxon identifiers doorgegeven worden. De
methode zal de LCA voor al deze taxa berekenen, volgens de implementatie zoals die door Unipept
gebruikt wordt. Dit subcommando zal dus altijd e´ e´ n enkel resultaat opleveren.
Volgend voorbeeld toont een complexere pipeline waarbij gebruik gemaakt wordt van de -s vlag om
enkel de taxon identifiers te selecteren.
$ uniprot Q01815 | prot2pept | peptfilter | unipept pept2lca -e -s taxon_id| head -n 4 | grep
-v taxon_id | unipept taxa2lca
taxon_id,taxon_name,taxon_parent_id,taxon_rank
40674,Mammalia,32524,class
3.2.6.7
Het subcommando taxonomy
Dit subcommando zal voor een gegeven lijst van NCBI taxon identifiers de naam en de volledige afstamming teruggeven volgens de Unipept Taxonomy. Onderstaand voorbeeld illustreert het gebruik van dit
subcommando.
$ uniprot Q01815 | prot2pept | peptfilter | unipept pept2lca -e -s taxon_id | head -n 4 | grep
-v taxon_id | unipept taxonomy
taxon_id,taxon_name,taxon_parent_id,taxon_rank
40674,Mammalia,32524,class
314146,Euarchontoglires,9347,superorder
3.3
Batchverwerking
Een belangrijk aspect van de Unipept API is snelle gegevens verwerking. Om dit mogelijk te maken,
is het aangewezen om zoveel mogelijk batchverwerking uit te voeren. We gebruiken batch verwerking
zowel op het niveau van de HTTP API, als op het niveau van de commandolijntoepassing.
Voor de HTTP API betekent dit dat we de mogelijkheid aanbieden om een lijst van invoer-gegevens te
specifi¨eren. Dit zal het aantal bevragingen drastisch verminderen. We bemerken dat de grootte van de
lijst afhangt van de API methode en ook de server waarop de API draait. De commandolijntoepassing
probeert zelf om optimale parameters te gebruiken. De winst die we hiermee boeken, hangt sterk af van
de aard van de invoer. Zo kan bepaalde invoer sneller afgehandeld worden door de databank, omdat deze
38
3.4 Resultaten
bv. dichter bij elkaar gelokaliseerd zijn en minder schijf operaties vereisen. Gemiddeld verkrijgen we
door deze techniek een versnelling van factor 50.
Om de optimale batch grootte te bepalen, werd de uitvoeringstijd van de zoekopdrachten bekeken in
functie van de invoergrootte. We stelden vast dat we met batchgrootte 100 de snelste uitvoeringstijden
verkregen. De commandolijntoepassing zal deze waarden dan ook gebruiken om de invoer op te splitsen
in batches.
Naast het feit dat we gebruik maken van de optimale batchgrootte zal de commandolijntoepassing ook
meerdere bevragingen in parallel uitvoeren. We maken hierbij gebruik van het feit dat de server meerdere
bevragingen tegelijkertijd kan af handelen. Door dit parallellisme zorgen we ervoor dat als een bevraging langer duurt, dit zo min mogelijk effect heeft op de totale uitvoeringstijd, omdat we nog andere
bevragingen tegelijkertijd kunnen uitvoeren.
Een nadeel van batchverwerking is dat de gebruiker mogelijk nog extra stappen moet ondernemen om
achteraf de resultaten te analyseren. Een mogelijke oplossing hiervoor is gebruik maken van FASTA
invoer. Alle commando’s in de Unipept commandolijninterface ondersteunen dit. Volgend voorbeeld
illustreert hoe in het uiteindelijke resultaat er een extra kolom toegevoegd zal worden.
$ uniprot Q01815 -f fasta | prot2pept | peptfilter | unipept pept2lca
fasta_header,sequence,taxon_id,taxon_name,taxon_parent_id,taxon_rank
>sp|Q01815|CAC1C_MOUSE Voltage-dependent L-type calcium channel subunit alpha-1C OS=Mus
musculus GN=Cacna1c PE=1 SV=1,MVNENTR,314146,Euarchontoglires,9347,superorder
>sp|Q01815|CAC1C_MOUSE Voltage-dependent L-type calcium channel subunit alpha-1C OS=Mus
musculus GN=Cacna1c PE=1 SV=1,LMGSAGNATISTVSSTQR,40674,Mammalia,32524,class
>sp|Q01815|CAC1C_MOUSE Voltage-dependent L-type calcium channel subunit alpha-1C OS=Mus
musculus GN=Cacna1c PE=1 SV=1,QQYGKPK,40674,Mammalia,32524,class
...
3.4
Resultaten
Om het effect te testen van de batchverwerking van de invoer maken we gebruik van een staal dat 5600
peptiden bevat. Deze peptiden werden bekomen uit een metagenomicsexperiment van de stoelgang
van een patient met obesitas. In onderstaande test maken we gebruik van het commanodo unipept
pept2lca. We vergelijken hierbij de snelheidswinst van het unipept commando t.o.v. e´ e´ n HTTP request per tryptische peptide.
# 1 HTTP request per peptide
39
3.5 Toekomstige features en bedenkingen
$ sort patient_data | xargs -n 1 -I %
curl -X POST -H "Accept: application/json" unipept.
ugent.be/api/v1/pept2lca -d ’input[0]=%’ -d ’equate_il=true’
# batch processing met behulp van unipept
$ sort patient_data | unipept pept2lca -e
We voeren beide commando’s eerst enkele keren uit om de cache optimaal te benutten. De uitvoeringstijd
van het eerste commando bedraagt 8 minuten en 30 seconden. De uitvoeringstijd van het commando
unipept bedraagt slechts 1.5 seconde. Voor dit voorbeeld betekent dit dus een versnelling met factor
500.
We verkrijgen deze winst hoofdzakelijk omdat we het aantal HTTP requests drastisch beperken. Tijdens
het analyseren van grote metagenomics datasets, zie sectie 4.2, werd het mogelijk inzicht te verwerven in
de versnelling die we verkregen door het gebruik van parallellisme. De metingen zijn gebaseerd op een
analyse van 2 miljoen bevragingen. We merkten hierbij dat een bevraging gemiddelde 240 ms in beslag
nam. Dit betekent dat we slechts 4 bevragingen per seconde zouden kunnen uitvoeren als we enkel serieel
zouden werken. Onze implementatie slaagde er echter in om 32 bevragingen per seconde uit te voeren.
Deze winst is louter te wijten aan het uitvoeren van bevragingen in parallel. Deze snelheidswinsten
maken het mogelijk om ongeveer 2 miljoen bevragingen per dag uit te voeren. Wat betekent dat 200
miljoen peptiden per dag geanalyseerd kunnen worden.
3.5
Toekomstige features en bedenkingen
Voorlopig draait de HTTP API op een machine met beperkte hardwarevoorzieningen. Het in het geheugen houden van de databank kan hier nog voor een grote snelheidswinst zorgen. Eens de Unipept API
op een machine van de productie-omgeving van Unipept zal aangeboden worden, zullen de batchgroottes die gebruikt worden geherevalueerd moeten worden om opnieuw de correcte trade-off te vinden. de
batch groottes die bekomen werden geherevalueerd te worden om opnieuw de correct trade-off te vinden.
De mogelijkheid om informatievelden te selecteren a.d.h.v. --select is voorlopig nog na¨ıef ge¨ımplementeerd.
Er valt nog een mogelijke snelheidswinst te boeken door deze filtering aan de HTTP API toe te voegen.
Ook bleek er nood aan een commando dat de uitvoer van het subcommando prot2pept combineert
met pept2lca. Dit werd ons gemeld door de onderzoeksgroep van Prof. Dr. Lennart Martens die reeds
een beta versie konden testen.
Ook is het belangrijk dat er nagedacht wordt over mogelijke connectieproblemen en hoe deze correct
afgehandeld moeten worden. Een mogelijke oplossing bestaat er in om de invoer van gefaalde batches
40
3.5 Toekomstige features en bedenkingen
bij te houden in een bestand. Er zou dan een --resume optie moeten zijn die dit bestand als parameter
ontvangt. Op deze manier kan het falen van meerdere commando’s in een pipeline opgevangen worden
door elk commando naar een verschillend bestand te laten schrijven.
41
Hoofdstuk 4
Unipept API case studies
We beschrijven hier twee case studies die gebruik maken van de Unipept API voor het analyseren van de
biodiversiteit in de menselijke darm. In een eerste case studie voeren we een biodiversiteitsanalyse uit op
de dataset van een metaproteoomexperiment voor een staal uit de menselijke darm, zoals dat ook via de
webinterface van Unipept kan geanalyseerd worden. We trekken hierbij parallellen met de functionaliteit
van de webinterface, zodat deze case studie kan gelezen worden als een gedocumenteerd voorbeeld van
hoe de verschillende componenten van de API kunnen gebruikt worden. In een tweede case studie voeren
we een biodiversiteitsanalyses uit op verschillende datasets van metagenoomexperimenten voor stalen uit
de menselijke darm en de pluim van de Amazonerivier. Deze datasets zijn qua omvang twee ordes groter
dan de dataset van het metaproteoomexperiment voor een staal uit de menselijke darm. Hiermee tonen
we niet alleen aan dat de Unipept API kan gebruikt worden voor grootschalige dataverwerking, maar dat
ze ook toelaat om de bestaande functionaliteit in te zetten voor toepassingen die initieel niet binnen de
scope van Unipept lagen.
4.1
Metaproteoomanalyse van de biodiversiteit in omgevingsstalen
Francisco Rodr´ıguez-Valera introduceerde de term metaproteomics [3] voor de studie van de verzameling
eiwitten die het meest tot expressie komen in omgevingsstalen — het zogenaamde metaproteoom. Hiermee wilde hij een onderscheid maken met de term metagenomics als studie van het genetisch materiaal
dat rechtstreeks onttrokken wordt uit omgevingsstalen — het zogenaamde metagenoom. Daarna stelden
Wilmes and Bond voor om de term metaproteomics te gebruiken voor een grootschalige karakterisering van het volledige eiwitcomplement van het microbioom in een bepaalde omgeving op een bepaald
42
4.1 Metaproteoomanalyse van de biodiversiteit in omgevingsstalen
ogenblik in de tijd [4].
De ontwikkeling van de massaspectrometrie in de jaren ’80 en ’90 maakte het mogelijk om de samenstelling van individuele eiwitten te bestuderen aan de hand van massaspectrometers. Pas in de 21e eeuw
was de technologie ver genoeg gevorderd om ook eenvoudige mengels van eiwitten te kunnen bestuderen, en meer recent ook complexe mengsels van eiwitten die rechtstreeks uit omgevingsstalen kunnen
onttrokken worden. In 2009 publiceerden Verberkmoes et al. een studie [5] waarin de taxonomische en
functionele diversiteit in de menselijke darm van een tweeling onder de loep genomen werden aan de
hand van data uit een metaproteomicsstudie. Hiermee schetsten ze niet alleen een zeer complex beeld
van duizenden eiwitten die een onverwachte verdeling vertoonden van eiwitten betrokken bij translatie, energieproductie en koolhydraatmetabolisme, maar konden er ook nieuwe metabolische pathways
en gastheer-immuunreacties in kaart gebracht worden. Deze studie vormde de grote doorbraak van de
metaproteomics, en lag mee aan de basis van de ontwikkeling van het Unipept platform.
4.1.1
Taxonomische identificatie van een tryptische peptide
Omdat de meeste eiwitten te groot zijn om in e´ e´ n keer door een massaspectrometer geanalyseerd te worden, worden ze opgebroken in kleinere stukken alvorens ze verder te verwerken. Hiervoor wordt in de
praktijk doorgaans trypsine aan het omgevingsstaal toegevoegd. Trypsine is een eiwitafbrekend enzym
dat voedingseiwitten afbreekt in de dunne darm van de mens en verschillende diersoorten. Dit enzym
heeft een zeer specifieke functie – het splitst alleen peptidebindingen waarvan de carboxylgroep afkomstig is van e´ e´ n van de basische aminozuren lysine (voorgesteld door de letter K) en arginine (voorgesteld
door de letter R) – en wordt daarom in het laboratorium veel toegepast bij structureel onderzoek van
eiwitten.
High-performance liquid chromatography (HPLC) is een scheidingstechniek die kan gecombineerd worden met shotgun tandem massaspectrometrische methoden om de actieve eiwitten in een biologisch staal
te bepalen. Hierbij wordt een tryptische digestie gebruikt om de eiwitten van het omgevingsstaal open te
knippen in verschillende stukken na elke K (lysine) of R (arginine) in de sequentie die niet gevolgd wordt
door P (proline). Deze afzonderlijke stukken worden tryptische peptiden genoemd. De sequentie van
tryptische peptiden kan met een massaspectrometer bepaald worden. De meeste toestellen hebben echter
een detectielimiet die enkel toelaat om peptiden met een lengte tussen 5 en 50 uit te lezen (Figuur 4.1).
Door na te gaan welke eiwitten tryptische peptiden bevatten die uit het omgevingsstaal gesequeneerd
werden, kunnen zowel de biodiversiteit als de functionele activiteit van een biologisch staal in kaart
43
4.1 Metaproteoomanalyse van de biodiversiteit in omgevingsstalen
NRRPCHSHTKECESAWKNRPCHSHTKKPCHSHTKKNRKVWKIPPFFW
tryptische digestie
NR
ECESAWK
RPCHSHTK
KPCHSHTK NR
NRPCHSHTK
K
IPPFFW
KVWK
Figuur 4.1: Tryptische digestie is een noodzakelijk stap bij de opname van eiwitten, omdat eiwitten over
het algemeen te groot zijn om geabsorbeerd te worden door het slijmvlies van de dunne darm. Hierbij
knipt trypsine het eiwit op na elke lysine (K) en arginine (R) die niet gevolgd wordt door een proline (P).
gebracht worden. Om snel deze eiwitten te kunnen opzoeken, bouwt Unipept een databank op die alle
tryptische peptiden indexeert van de meer dan 56 miljoen gekende eiwitten in Uniprot.
Figuur 4.2 geeft een overzicht van de procedure die door Unipept gebruikt wordt voor de taxonomische
toewijzing van een tryptische peptide. De verschillende stappen van deze procedure kunnen integraal uitgevoerd worden via de webinterface van Unipept, maar kunnen ook integraal of afzonderlijk uitgevoerd
worden door het aanspreken van de web services of de commandolijninterface voor Unipept. In wat volgt
bespreken we hoe de individuele stappen van deze procedure kunnen uitgevoerd worden aan de hand van
de commando’s uit de commandolijninterface voor Unipept. De corresponderende web services kunnen
op een volledig analoge manier gebruikt worden.
Vooraleer de commandolijninterface voor Unipept kan gebruikt worden, moet die eerst ge¨ınstalleerd
worden. De commando’s van de commandolijninterface zijn zelf ge¨ımplementeerd in de programmeertaal Ruby, en dus moet eerst de Ruby-omgeving ge¨ınstalleerd worden (@tvwillem: kan je hier nog
wat technische details toevoegen over welke versie minstens moet ge¨ınstalleerd worden, en waar
de installatie-instructies staan op de Ruby website). De commandolijninterface voor Unipept kan
daarna ge¨ınstalleerd worden aan de hand van het commando gem, de RubyGems package manager voor
de programmeertaal Ruby.
$ gem install unipept
Fetching: unipept-0.5.4.gem (100%)
Successfully installed unipept-0.5.4
1 gem installed
Installing ri documentation for unipept-0.5.4...
44
4.1 Metaproteoomanalyse van de biodiversiteit in omgevingsstalen
M5WGY1
3760 (Prunus persica – perzik)
E1U3Z1
3827 (Cicer arietinum – kikkererwt)
C6TH93
C6TM63
I1LUM3
3847 (Glycine max – sojaboon)
I1M3M0
Streptophyta (phylum)
Q96453
ENFVYIAK
G7LIR4
3880 (Medicago truncatula – rupsklaver)
I3SLC5
P42654
3906 (Vicia faba – tuinboon)
F6H2P0
29760 (Vitis vinifera – druif)
M0TAI1
214687 (Musa acuminata subsp. malaccensis – rijstbanaan)
M0TY03
pept2prot
prot2taxa
taxa2lca
Figuur 4.2: Workflow van de Unipept Single Peptide Analysis toepassing voor taxonomische toewijzing
van de tryptische peptide ENFVYIAK. In een eerste stap (pept2prot) worden alle eiwitten opgezocht
waarin de tryptische peptide ENFVYIAK voorkomt (exact matching). Unipept beschikt hiervoor over
een index die specifiek werd opgebouwd om dit zoekproces zo snel mogelijk te laten verlopen. Daarna
worden in een tweede stap (prot2taxa) alle taxonomische identificaties van de gevonden eiwitten
verzameld. Deze taxonomische identificaties vormen een onderdeel van de metadata die in Uniprot
beschikbaar is over de eiwitten. De laatste stap (taxa2lca) bestaat erin om de tryptische peptide
ENFVYIAK taxonomisch toe te wijzen, gebaseerd op de taxonomische identificatie van de individuele
eiwitten waarin de peptide voorkomt. Unipept beeldt hiervoor de taxonomische identificaties van de
individuele eiwitten af op de Unipept Taxonomy, een opgekuiste versie van de NCBI Taxonomy. Op
basis van deze afbeelding (Figuur 4.5) wordt de tryptische peptide ENFVYIAK taxonomisch toegewezen
aan het phylum van de Streptophyta, de laagste gemeenschappelijke voorouder van alle taxonomische
identificaties van de individuele eiwitten in de hierarchische datastructuur van de Unipept Taxonomy.
45
4.1 Metaproteoomanalyse van de biodiversiteit in omgevingsstalen
Installing RDoc documentation for unipept-0.5.4...
Standaard voert het commando gem een generieke installatie uit voor alle gebruikers van het computersysteem. Voor het maken van een persoonlijke installatie of indien de gebruiker niet over onvoldoende
machtigingen beschikt om de software generiek te installeren in de daarvoor voorziene systeemdirectories, kan gebruik gemaakt worden van de optie --user-install van het commando gem.
De commandolijninterface voor Unipept bestaat uit een aantal verschillende commando’s die elk over een
uitgebreide online documentatie beschikken. Het belangrijkste commando is uiteraard het commando
unipept zelf.
$ unipept --help
COMMANDS
config
help
show help
pept2lca
Give lowest common ancestor for given peptide
pept2prot
Give protein information for given peptides
pept2taxa
Single Peptide Search
taxa2lca
Give lowest common ancestor for taxon ids
taxonomy
Give NCBI taxonomy information on given input taxon ids
OPTIONS
--host
Override host setting
-f --format
output format (available: json,csv,xml) (default: csv)
-h --help
show help for this command
-i --input
input file
-o --output
output file
-q --quiet
don’t show update messages
-v --version
print version
Omdat het commando unipept telkens een instantie van de Unipept server (web services die communiceren met een instantie van de Unipept databank) moet aanspreken, moet de locatie van die server
opgegeven worden. Dit kan door de URL van de server als argument van de optie --host mee te geven. Om echter te vermijden dat die URL bij elk gebruik van het commando unipept moet opgegeven
worden, kan die ook eenmalig ingesteld worden aan de hand van het commando unipept config.
Als een argument voor een bepaalde optie wordt doorgegeven via de commandolijn, dan krijgt deze
waarde steeds voorrang boven een eventueel ingestelde configuratiewaarde voor die optie. Dit laat toe
om bijvoorbeeld eenmalig de ingestelde optie te wijzigen.
$ unipept --host ’unipept.ugent.be’ pept2lca ENFVYIAK
46
4.1 Metaproteoomanalyse van de biodiversiteit in omgevingsstalen
sequence,taxon_id,taxon_name,taxon_parent_id,taxon_rank
ENFVYIAK,35493,Streptophyta,33090,phylum
$ unipept config host=’unipept.ugent.be’
$ unipept pept2lca ENFVYIAK
sequence,taxon_id,taxon_name,taxon_parent_id,taxon_rank
ENFVYIAK,35493,Streptophyta,33090,phylum
De Unipept server kan berichten naar het commando unipept sturen, die bij interactief gebruik op
de terminal verschijnen. Hiermee kan bijvoorbeeld aangegeven worden dat er een nieuwe versie van
de Unipept API beschikbaar is. De RubyGems package manager maakt het eenvoudig om deze nieuwe
versie te installeren.
$ unipept --version
Unipept 0.5.5 is released!
0.5.4
$ gem update unipept
Fetching: unipept-0.5.5.gem (100%)
Successfully installed unipept-0.5.5
1 gem installed
Installing ri documentation for unipept-0.5.5...
Installing RDoc documentation for unipept-0.5.5...
$ unipept --version
0.5.5
Het gebruik van het commando unipept dat e´ e´ n enkele tryptische peptide als argument meekrijgt of
inleest van standaard invoer, correspondeert met het gebruik van de Single Peptide Analysis toepassing
uit de Unipept webinterface (Figuur 4.3). Het activeren van de optie Equate I and L correspondeert met
het gebruik van de optie -e bij het commando unipept.
Figuur 4.3: Taxonomische identificatie van de tryptische peptide ENFVYIAK aan de hand van de Single
Peptide Analysis toepassing uit de Unipept webinterface.
Het commando unipept pept2prot vormt een implementatie van stap pept2prot uit Figuur 4.2.
Het commando kan dus gebruikt worden om alle Uniprot eiwitten op te halen waarin de gegeven tryptische peptide voorkomt. Deze eiwitten staan opgelijst onderaan de informatiepagina die de Unipept
webinterface weergeeft over de peptide. Bij gebruik van de optie -a wordt voor elke gevonden eiwit ook
47
4.1 Metaproteoomanalyse van de biodiversiteit in omgevingsstalen
de taxonomische identificatie weergegeven zoals die beschikbaar is in de Uniprot metadata. Daarmee
vormt het commando unipept pept2prot meteen ook een implementatie van stap prot2taxa uit
Figuur 4.2.
Het commando unipept pept2taxa vormt de samenstelling van de opeenvolgende stappen pept2prot
en prot2taxa uit Figuur 4.2. Het commando kan dus gebruikt worden om de taxonomische identificatie op te halen van alle Uniprot eiwitten waarin de gegeven tryptische peptide voorkomt. Deze informatie wordt in de Unipept webinterface weergegeven als een boomstructuur (lineage tree) en in tabelvorm
(lineage table). De informatie uit de tabel kan opgevraagd worden door de optie -a te gebruiken in combinatie met dit commando. De boomstructuur vormt enkel een compacte voorstelling van de volledige
afstamming uit de tabel.
Het commando unipept pept2lca vormt de samenstelling van de opeenvolgende stappen pept2prot,
prot2taxa en taxa2lca uit Figuur 4.2. Het commando kan met andere woorden gebruikt worden
om de taxonomische toewijzing van een tryptische peptide te bepalen. Hiervoor wordt de laagste gemeenschappelijke voorouder berekend op basis van de taxonomische indentificaties van de individuele
eiwitten waarin de peptide voorkomt (Figuur 4.5). Deze informatie wordt in de Unipept webinterface
helemaal bovenaan weergegeven op de resultaatpagina van de taxonomische analyse van de tryptische
peptide (Figuur 4.4). De volledige afstamming kan bekomen worden door de optie -a te gebruiken in
combinatie met dit commando. Merk op dat ook de berekening van de laagste gemeenschappelijke voorouder (stap taxa2lca) afzonderlijk beschikbaar is in de commandolijninterface voor Unipept, onder
de vorm van het commando unipept taxa2lca.
Figuur 4.4: Informatie over de laagste gemeenschappelijke voorouder van de tryptische peptide
ENFVYIAK, zoals die wordt weergegeven in de de Unipept webinterface.
Stel dat we met behulp van een massaspectrometer het chromatogram van een tryptische peptide bepaald
hebben, dat we daarna aan de hand van gespecialiseerde software (bv. Mascot [11, 12] of Sequest [13])
hebben kunnen identificeren als de peptide ENFVYIAK. Bij wijze van voorbeeld werken we uit hoe deze
tryptische peptide daarna taxonomisch kan toegewezen worden aan het phylum van de Streptophyta. In
eerste instantie kan het commando unipept pept2prot gebruikt worden om in de Unipept databank
alle Uniprot eiwitten op te zoeken waarin deze peptide voorkomt.
48
4.1 Metaproteoomanalyse van de biodiversiteit in omgevingsstalen
Onderstaande sessie toont aan dat er in de Uniprot databank twaalf eiwitten voorkomen die de tryptische peptide ENFVYIAK bevatten. Merk op dat de tryptische peptide in het eerste geval als argument
aan het commando unipept pept2prot werd doorgegeven. Indien er geen tryptische peptide als
argument wordt doorgegeven, dan leest het commando de tryptische peptide van standaard invoer zoals
ge¨ıllustreerd in het tweede voorbeeld. Voor deze demo zullen we er steeds de voorkeur aan geven om de
tryptische peptide als argument aan het commando door te geven, maar het commando werkt hetzelfde
voor beide vormen voor het doorgegeven van de tryptische peptide.
$ unipept pept2prot ENFVYIAK
sequence,uniprot_id,taxon_id
ENFVYIAK,P42654,3906
ENFVYIAK,Q96453,3847
ENFVYIAK,C6TH93,3847
ENFVYIAK,C6TM63,3847
ENFVYIAK,I1LUM3,3847
ENFVYIAK,F6H2P0,29760
ENFVYIAK,E1U3Z1,3827
ENFVYIAK,I3SLC5,3880
ENFVYIAK,M0TAI1,214687
ENFVYIAK,I1M3M0,3847
ENFVYIAK,G7LIR4,3880
ENFVYIAK,M0TY03,214687
$ echo ENFVYIAK | unipept pept2prot
sequence,uniprot_id,taxon_id
ENFVYIAK,P42654,3906
ENFVYIAK,Q96453,3847
ENFVYIAK,C6TH93,3847
ENFVYIAK,C6TM63,3847
ENFVYIAK,I1LUM3,3847
ENFVYIAK,F6H2P0,29760
ENFVYIAK,E1U3Z1,3827
ENFVYIAK,I3SLC5,3880
ENFVYIAK,M0TAI1,214687
ENFVYIAK,I1M3M0,3847
ENFVYIAK,G7LIR4,3880
ENFVYIAK,M0TY03,214687
Standaard wordt de uitvoer weergegeven in CSV-formaat (comma-separated values). Naast de tryptische
peptide waarnaar gezocht werd, worden daarbij voor elk gevonden eiwit nog twee publieke UIDs (unique
identifiers) teruggegeven: i) het Uniprot Accession Number (uniprot_id) dat verwijst naar het eiwit
in de Uniprot databank waarin de peptide voorkomt en ii) de NCBI Taxonomy Identifier (taxon_id)
uit de Uniprot eiwitrecord die verwijst naar de record in de NCBI Taxonomy Database [7, 8]. Deze
49
4.1 Metaproteoomanalyse van de biodiversiteit in omgevingsstalen
laatste omschrijft een taxon in de hi¨erarchische classificatie van alle cellulaire organismen, namelijk het
taxon waarvan het eiwit afkomstig is.
Bij het bepalen van peptidesequenties waarbij gebruikt gemaakt wordt van een zogenaamde single step
tandem mass acquisition, zijn de aminozuren leucine (L) en isoleucine (I) niet van elkaar te onderscheiden omdat beide gekenmerkt zijn door een massaverschil van 113 Da ten opzichte van andere peptidefragmenten in het massaspectrum. Daarom moeten we in dit geval rekening houden met het feit dat de
tryptische peptide eigenlijk ook kan ge¨ıdentificeerd worden als ENFVYLAK, waarbij het residu I vervangen werd door L. Als we deze variant van de peptide opzoeken, dan vinden we nog een bijkomend eiwit
in de Uniprot databank.
$ unipept pept2prot ENFVYLAK
sequence,uniprot_id,taxon_id
ENFVYLAK,M5WGY1,3760
We spreken van de I=L varianten van een tryptische peptide als de verzameling van alle mogelijke
combinaties die ontstaan door elke identificatie van een massaverschil van 113 Da in het massaspectrum
te interpreteren als isoleucine of leucine. In het algemeen zijn er 2n I=L varianten voor elke tryptische
peptide die n residuen isoleucine of leucine bevat. Daarom beschikken alle subcommando’s van het
commando unipept die gebaseerd zijn op het opzoeken van Uniprot eiwitten die een gegeven peptide
bevatten over een optie -e (equate). Deze optie geeft aan dat het opzoeken moet gebeuren zonder
onderscheid te maken tussen I en L.
$ unipept pept2prot -e ENFVYIAK
sequence,uniprot_id,taxon_id
ENFVYIAK,P42654,3906
ENFVYIAK,Q96453,3847
ENFVYIAK,C6TH93,3847
ENFVYIAK,C6TM63,3847
ENFVYIAK,M5WGY1,3760
ENFVYIAK,I1LUM3,3847
ENFVYIAK,F6H2P0,29760
ENFVYIAK,E1U3Z1,3827
ENFVYIAK,I3SLC5,3880
ENFVYIAK,M0TAI1,214687
ENFVYIAK,I1M3M0,3847
ENFVYIAK,G7LIR4,3880
ENFVYIAK,M0TY03,214687
Merk op dat de Unipept databank twee afzonderlijke indexstructuren bevat voor het opzoeken van tryptische peptiden: e´ e´ n die gebruikt kan worden om exacte matches van een gegeven tryptische peptiden op
50
4.1 Metaproteoomanalyse van de biodiversiteit in omgevingsstalen
te zoeken en e´ e´ n die gebruikt kan worden om exacte matches van alle I=L varianten van een gegeven
tryptische peptide op te zoeken. Hierdoor kan het opzoeken van alle Uniprot eiwitten die een I=L variant
van de tryptische peptide ENFVYIAK in e´ e´ n enkele stap gebeuren, zonder snelheidsverlies.
De Unipept databank bevat naast een snelle index voor het afbeelden tryptische peptiden op de eiwitten waarin die peptiden voorkomen, ook nog minimale informatie over die eiwitten die werd overgenomen uit de Uniprot databank. Dit omvat informatie over het taxon waaruit het eiwit gesequeneerd
werd (taxon id en taxon name) en een omschrijving van de functies die het eiwit vervult in de cel
(ec references en go references). Taxonomische informatie wordt beschreven aan de hand
van een UID die verwijst naar een record uit de NCBI Taxonomy Database [7, 8]. Functionele informatie wordt beschreven aan de hand van UIDs die verwijzen naar records uit de Enzyme Commission
(EC) classificatie [14] en de Gene Ontology (GO) [15]. Door gebruik te maken van de optie -a van
het commando unipept kan deze minimale informatie mee uit de Unipept databank opgevraagd worden. Onderstaand voorbeeld is representatief in die zin dat de taxonomische informatie over eiwitten
doorgaans veel completer en nauwkeuriger is dan deze over de gekende functies van de eiwitten.
$ unipept pept2prot -ea ENFVYIAK
sequence,uniprot_id,taxon_id,taxon_name,ec_references,go_references
ENFVYIAK,P42654,3906,Vicia faba,,
ENFVYIAK,Q96453,3847,Glycine max,,
ENFVYIAK,C6TH93,3847,Glycine max,,981590 981591
ENFVYIAK,C6TM63,3847,Glycine max,,
ENFVYIAK,M5WGY1,3760,Prunus persica,,
ENFVYIAK,I1LUM3,3847,Glycine max,,
ENFVYIAK,F6H2P0,29760,Vitis vinifera,,
ENFVYIAK,E1U3Z1,3827,Cicer arietinum,,
ENFVYIAK,I3SLC5,3880,Medicago truncatula,,
ENFVYIAK,M0TAI1,214687,Musa acuminata subsp. malaccensis,,
ENFVYIAK,I1M3M0,3847,Glycine max,,
ENFVYIAK,G7LIR4,3880,Medicago truncatula,,
ENFVYIAK,M0TY03,214687,Musa acuminata subsp. malaccensis,,
Door het opbouwen van een afzonderlijke index waarin I en L gelijk gesteld worden, kan Unipept evenwel niet rechtstreeks aangeven welke specifieke I=L variant (of varianten) van een tryptische peptide in
een bepaald eiwit voorkomen. De commandolijninterface bevat echter ook een commando uniprot dat
de web services van Uniprot aanspreekt. Hiermee kunnen bijvoorbeeld de eiwitsequenties opgevraagd
worden voor een gegeven lijst van Uniprot Accession Numbers. Onderstaand voorbeeld illustreert meteen ook het gebruik van de optie -s van het commando unipept, die kan gebruikt worden om enkel
een geselecteerde lijst van informatievelden naar de uitvoer te schrijven. Merk op dat we nog een aan-
51
4.1 Metaproteoomanalyse van de biodiversiteit in omgevingsstalen
tal bewerkingsstappen uitvoeren op het resultaat van het commando uniprot, om enkel de gevonden
I=L varianten in hoofdletters te zetten (de overige residu’s worden naar kleine letters omgezet) en de
eiwitsequentie na een vast aantal karakters af te breken.
$ unipept pept2prot -e ENFVYIAK -s uniprot_id | uniprot -s uniprot_id -s protein | \
tr ’A-Z’ ’a-z’ | sed ’s/enfvy[il]ak/\U&\E/’ | sed ’s/\(.\{60\}\).*/\1.../’
uniprot_id,protein
P42654,mastkdrENFVYIAKlaeqaeryeemvdsmknvanldveltieernllsvgyknvigarr...
Q96453,mtaskdrENFVYIAKlaeqaeryeemvesmknvanldveltveernllsvgyknvigarr...
C6TH93,maaskdrENFVYIAKlaeqaeryeemvesmknvanldveltveerkkgvaildfilrlga...
C6TM63,maaskdrENFVYIAKlaeqaerfeemvesmknvanldveltveernllsvgyknvigarr...
M5WGY1,mgfaterENFVYLAKlseqaerydemvdamkkvanldveltveernllsvgyknvvgsrr...
I1LUM3,maaskdrENFVYIAKlaeqaeryeemvesmknvanldveltveernllsvgyknvigarr...
F6H2P0,marENFVYIAKlaeqaerydemvdamkkvakldvdltveernllsvgyknvigarraswr...
E1U3Z1,masskdrENFVYIAKlaeqaeryeemvdsmksvanldveltveernllsvgyknvigarr...
I3SLC5,mastkerENFVYIAKlaeqaeryeemveamknvakldveltveernllsvgyknvvgahr...
M0TAI1,masqkerENFVYIAKlaeqaerydemvdamkkvakldveltveernllsvgyknvvgarr...
I1M3M0,mtaskdrENFVYIAKlaeqaeryeemvesmknvanldveltveernllsvgyknvigarr...
G7LIR4,mastkerENFVYIAKlaeqaeryeemveamknvakldveltveernllsvgyknvvgahr...
M0TY03,masqkerENFVYIAKlaeqaerydemvdamkkvakldveltveernllsvgyknvvgarr...
Het commando uniprot kan niet enkel gebruikt worden om de volledige eiwitsequentie op te halen uit
de Uniprot databank, maar ook alle metadata die in Uniprot beschikbaar is over het eiwit. Hiervoor kan
gebruik gemaakt worden van de optie -f van het commando uniprot waaraan het gewenste formaat
als argument moet doorgegeven worden: csv (standaardwaarde), fasta, xml, text, rdf of gff. Bij
wijze van voorbeeld geven we hieronder de eerste drie eiwitten uit Uniprot terug die een I=L variant
bevatten van de tryptische peptide ENFVYIAK. Deze eiwitten worden terugggeven in FASTA formaat.
$ unipept pept2prot -e ENFVYIAK -s uniprot_id | uniprot -f fasta | \
awk -v RS=’\n>’ ’{if (NR==1) print; else printf(">%s\n", $0)}; NR == 3 {exit}’
>sp|P42654|1433B_VICFA 14-3-3-like protein B OS=Vicia faba PE=2 SV=1
MASTKDRENFVYIAKLAEQAERYEEMVDSMKNVANLDVELTIEERNLLSVGYKNVIGARR
ASWRILSSIEQKEESKGNDVNAKRIKEYRHKVETELSNICIDVMRVIDEHLIPSAAAGES
TVFYYKMKGDYYRYLAEFKTGNEKKEAGDQSMKAYESATTAAEAELPPTHPIRLGLALNF
SVFYYEILNSPERACHLAKQAFDEAISELDTLNEESYKDSTLIMQLLRDNLTLWTSDIPE
DGEDSQKANGTAKFGGGDDAE
>sp|Q96453|1433D_SOYBN 14-3-3-like protein D OS=Glycine max GN=GF14D PE=1 SV=1
MTASKDRENFVYIAKLAEQAERYEEMVESMKNVANLDVELTVEERNLLSVGYKNVIGARR
ASWRILSSIEQKEETKGNELNAKRIKEYRQKVELELSNICNDVMRVIDEHLIPSAAAGES
TVFYYKMKGDYYRYLAEFKSGNEKKEAADQSMKAYESATAAAEADLPPTHPIRLGLALNF
SVFYYEILNSPERACHLAKQAFDEAISELDTLNEESYKDSTLIMQLLRDNLTLWTSDIPE
DGEDAQKVNGTAKLGGGEDAE
>sp|C6TH93|CASP3_SOYBN Casparian strip membrane protein 3 OS=Glycine max PE=2 SV=1
MAASKDRENFVYIAKLAEQAERYEEMVESMKNVANLDVELTVEERKKGVAILDFILRLGA
52
4.1 Metaproteoomanalyse van de biodiversiteit in omgevingsstalen
ITSALGAAATMATSDETLPFFTQFFQFEASYDSFSTFQFFVIAMAFVGGYLVLSLPFSIV
TIIRPHAAGPRLFLIILDTVFLTLATSSAAAATAIVYLAHNGNQDSNWLAICNQFGDFCQ
EISGAVVASFVAVVLFVLLIVMCAVALRNH
Op basis van de taxonomische informatie die in Uniprot (en Unipept) beschikbaar is over de gevonden
eiwitten, kan de tryptische peptide taxonomisch toegewezen worden. Unipept maakt hiervoor gebruik
van een algoritme dat de laagste gemeenschappelijke voorouder (lowest common ancestor; LCA) bepaalt
van alle soorten waarin de peptide werd aangetroffen. De implementatie van dit algoritme in Unipept
is gedeeltelijk bestand tegen verkeerde taxonomische indelingen, verkeerde identificaties en onnauwkeurigheden. Unipept werkt immers met de Unipept Taxonomy, een opgekuiste versie van de NCBI
Taxonomy waarbij volgens een reeks heuristische regels een groot aantal ”onnatuurlijke” taxa uit de originele databank ge¨ınvalideerd werden. Het negeren van deze ruis in de taxonomische informatie zou
anders leiden tot een drastisch verlies aan informatie.
Het is natuurlijk mogelijk om client side een aangepaste verwerking te doen op basis van de NCBI Taxonomy Identifiers die gelinkt zijn aan de gevonden lijst van eiwitten. Wil men echter gebruik maken van
de Unipept Taxonomy, dan kunnen alle volledige afstammingen van de NCBI Taxonomy Identifiers uit
de gevonden Uniprot records opgevraagd worden door gebruik te maken van het commando unipept
pept2taxa.
$ unipept pept2taxa -e ENFVYIAK
sequence,taxon_id,taxon_name,taxon_parent_id,taxon_rank
ENFVYLAK,3760,Prunus persica,3754,species
ENFVYLAK,3827,Cicer arietinum,3826,species
ENFVYLAK,3847,Glycine max,3846,species
ENFVYLAK,3880,Medicago truncatula,3877,species
ENFVYLAK,3906,Vicia faba,3904,species
ENFVYLAK,29760,Vitis vinifera,3603,species
ENFVYLAK,214687,Musa acuminata subsp. malaccensis,4641,subspecies
Als de optie -a gebruikt wordt in combinatie met het commando unipept pept2taxa, dan bevat de
uitvoer de volledige afstamming voor elke NCBI Taxonomy Identifier. Omdat hierbij al vrij snel heel
veel uitvoer gegenereerd wordt, geven we die uitvoer hier niet als dusdanig weer maar hebben we die
grafisch voorgesteld in Figuur 4.5. Merk hierbij op dat de tryptische peptide ENFVYLAK enkel werd
teruggevonden in de perzik (Prunus persica), terwijl de andere I=L variant ENFVYIAK wordt teruggevonden in eiwitten van de rijstbanaan (Musa acuminata subsp. malaccensis) een aantal bedektzadigen
waaronder de kikkererwt (Cicer arietinum), de sojaboon (Glycine max), de tuinboon (Vicia faba), de
druif (Vitis vinifera) en een soort van de rupsklaver (Medicago truncatula).
53
4.1 Metaproteoomanalyse van de biodiversiteit in omgevingsstalen
Figuur 4.5: Taxonomische toewijzing van de tryptische peptide ENFVYIAK aan het phylum van de Streptophyta. De procedure die hiervoor gebruikt wordt (Figuur 4.2) bepaalt de laagste gemeenschappelijke
voorouder (donkerblauw) van de individuele taxonomische identificaties van alle eiwitten in Uniprot
waarin een I=L variant van de tryptische peptide gevonden werd (blauw). Hiervoor worden de taxonomische identificaties van de gevonden eiwitten afgebeeld op de Unipept Taxonomy (lichtblauw), een
hi¨erarchische datastructuur die een opgekuiste versie van de NCBI Taxonomy voorstelt. De getallen
in de blauwe balken geven aan hoeveel eiwitten in Uniprot de tryptische peptide ENFVYIAK bevatten.
Deze getallen worden enkel weergegeven ter informatie, en worden niet gebruikt bij het bepalen van de
laagste gemeenschappelijke voorouder.
De Unipept implementatie van het LCA algoritme kan worden aangesproken door gebruik te maken van
het commando unipept pept2lca. Voor de tryptische peptide ENFVYIAK zal het gebruik van de
optie -e opnieuw een invloed hebben op de berekening van de LCA. De LCA wordt immers bepaald op
basis van alle taxa waarin de tryptische peptide (of e´ e´ n van zijn I=L varianten) werd teruggevonden.
$ unipept pept2lca ENFVYIAK
sequence,taxon_id,taxon_name,taxon_parent_id,taxon_rank
ENFVYIAK,35493,Streptophyta,33090,phylum
$ unipept pept2lca ENFVYLAK
sequence,taxon_id,taxon_name,taxon_parent_id,taxon_rank
ENFVYLAK,3760,Prunus persica,3754,species
$ unipept pept2lca -e ENFVYIAK
54
4.1 Metaproteoomanalyse van de biodiversiteit in omgevingsstalen
sequence,taxon_id,taxon_name,taxon_parent_id,taxon_rank
ENFVYIAK,35493,Streptophyta,33090,phylum
De correctheid van de bepaling van de LCAs kan in alle gevallen nagegaan worden op basis van de
taxonomische hi¨erarchie uit Figuur 4.5.
4.1.2
Taxonomische analyse van een metaproteomics experiment
Tijdens de loop van de evolutie hebben wij mensen een innige symbiose ontwikkeld met de microorganismen die ons maag-darmkanaal bewonen. Deze micro-organismen zijn verantwoordelijk voor
het gezond houden van de darm, ze helpen ons bij de voedselvertering en vormen een onderdeel van
het immuunsysteem omdat ze ons beschermen tegen binnendringende ziekteverwekkers. Bovendien
zijn sommige ziektebeelden – zoals bijvoorbeeld dat van de ziekte van Crohn – op de e´ e´ n of andere
manier gelinkt aan de samenstelling van de darmflora. Hoewel we volledig afhankelijk zijn van microorganismen voor het normaal functioneren van de darm, zijn er nog ontzettend veel open vragen over de
microbi¨ele processen in de darm. Deze processen worden immers uitgevoerd door een zeer complexe
gemeenschap van nog grotendeels onbekende microbi¨ele cellen, waarvan aantallen gemeten worden tot
1011 per gram ontlasting.
Om een beter inzicht te krijgen in de organismen die ons maag-darmkanaal bewonen, en de verschillende
processen die deze organismen uitvoeren, worden we recent geholpen door de ontwikkeling van moleculaire technieken die ons in staat stellen om de samenstelling van de micro-organismen die de darm
bevolken te bepalen zonder dat die organismen eerst in laboratoriumomgeving moeten opgekweekt worden. Naast de sterk toenemende informatie over de identiteit van de organismen in onze darm, zijn er
ondertussen ook al een beperkt aantal studies die door een sequenerings-gebaseerde metagenomicsbenadering inzicht proberen te verschaffen op het functioneren van de genen in het microbi¨ele metagenoom
van de darm.
Een volgende stap in het onderzoek bestaat erin om te bepalen welke genen ook daadwerkelijk tot expressie komen en het functioneren van de darmflora te vergelijken tussen gezonde en zieke populaties.
Shotgun metagenomics (zie Figuur 4.6) vormt e´ e´ n van de manieren waarop de eiwitten die tot expressie
gebracht zijn in een omgevingsstaal kunnen in kaart gebracht worden. Op vandaag staat deze techniek
nog in zijn kinderschoenen, maar door de razendsnelle technologische ontwikkeling en op basis van de
eerste analyseresultaten kunnen we deze techniek niettemin als zeer veelbelovend bestempelen.
Ter illustratie van de commandolijninterface voor Unipept tonen we hier aan hoe die kan gebruikt wor-
55
4.1 Metaproteoomanalyse van de biodiversiteit in omgevingsstalen
Figuur 4.6: Experimentele opzet van de shotgun metagenomics studie die door Verberkmoes et al. gebruikt werd voor het identificeren van microbi¨ele eiwitten in menselijke stoelgangstalen.
56
4.1 Metaproteoomanalyse van de biodiversiteit in omgevingsstalen
den om de biodiversiteit in e´ e´ n van de stalen uit de studie van Verberkmoes et al. [5] in kaart te brengen.
Het gaat om een stoelgangstaal van een gezonde vrouw die deel uitmaakt van een eeneiige (monozygote) tweeling geboren in 1951. Details van deze persoon met betrekking tot voeding, antibioticagebruik
en dergelijke werden beschreven door Dicksved et al. [6] (individu 6a in deze studie, sample 7 in de
studie van Verberkmoes et al.). Het belangrijkste dat valt op te merken over de beschikbare gegevens
uit de vragenlijst die deze persoon heeft ingevuld, is dat ze buikgriep had op het moment van staalname en dat haar tweelingzus (individu 6b in de studie van Dicksved et al., sample 8 in de studie van
Verberkmoes et al.) gedurende de laatste 12 maanden voor staalname niet-stero¨ıdale anti-inflammatoire
geneesmiddelen had genomen. De gegevens kunnen gedownload worden van de website van de studie
(http://compbio.ornl.gov/human_gut_microbial_metaproteome) en worden ook als
demo dataset aangeboden op de Unipept website.
Veronderstel dat we de lijst van tryptische peptiden die ge¨ıdentificeerd werden uit sample 7 in de studie
van Verberkmoes et al. hebben opgeslaan in het bestand sample7.dat. Onderstaande sessie toont aan
dat het bestand een lijst van 3983 tryptische peptiden bevat die op basis van een shotgun metagenomics
opzet konden ge¨ıdentificeerd worden in het omgevingsstaal. Hierbij staat elke tryptische peptide op een
afzonderlijke regel.
$ cat sample7.dat | wc -l
3983
$ cat sample7.dat | head -n6
SGIVLPGQAQEKPQQAEVVAVGPGGVVDGK
SGIVLPGQAQEKPQQAEVVAVGPGGVVDGK
SGIVLPGQAQEKPQQAEVVAVGPGGVVDGKEVK
MEVAVGDKVIYSK
MDGTEYIIVK
GLTAAIEAADAMTK
Het eerste dat hierbij opvalt is dat een massaspectrometer mogelijks verschillende keren dezelfde peptide
kan oppikken uit een omgevingsstaal. Afhankelijk van het feit of we al dan niet bepaalde kwantitatieve
conclusies willen verbinden aan het aantal keer dat een bepaalde peptide werd ge¨ıdentificeerd (naast
identificatie vormt kwantificatie van de eiwitten in een omgevingsstaal een belangrijk onderzoeksthema
[9, 10]), kunnen we beslissen om de peptiden eerst te ontdubbelen voor we ze via de Unipept API verder
gaan analyseren. Dit heeft op zich een invloed op de analyseresultaten, maar het ontdubbelen kan ook
voor tijdswinst zorgen aangezien er geen dubbel werk moet gebeuren.
Wat op het eerste gezicht wellicht minder in het oog springt, is dat de peptiden op regels 3 en 4 in het
tekstbestand sample7.dat eigenlijk geen tryptische peptiden zijn, maar telkens een samenstelling
57
4.1 Metaproteoomanalyse van de biodiversiteit in omgevingsstalen
vormen van twee tryptische peptiden. Dit is een gevolg van het feit dat het opbreken van eiwitten met
behulp van trypsine niet altijd perfect verloopt, waardoor sommige peptiden niet opgeknipt worden.
Deze samengestelde tryptische peptiden worden missed cleavages genoemd. De indexstructuur van de
Unipept databank bevat echter enkel tryptische peptiden die bekomen werden door het in silico opdelen
van de eiwitten uit de Uniprot databank, waardoor missed cleavages dus niet rechtstreeks in de Unipept
databank kunnen gevonden worden.
Om dit op te vangen, kan eerst nagegaan worden of de peptiden in de dataset eerst nog verder moeten
opgebroken worden alvorens ze te identificeren met behulp van de Unipept databank. Het uitvoeren van
een in silico tryptische digestie kan gebeuren aan de hand van het commando prot2pept uit de commandolijninterface voor Unipept. Dit command wordt volledig client side uitgevoerd, en wordt daarom
aangeboden als een autonoom commando en niet als subcommando van het commando unipept.
$ cat sample7.dat | sed -ne ’4{p;q}’
MEVAVGDKVIYSK
$ cat sample7.dat | sed -ne ’4{p;q}’ | prot2pept
MEVAVGDK
VIYSK
Als een peptide eenmaal is opgebroken in e´ e´ n of meer tryptische peptiden, dan kan voor elk van deze
peptiden de laagste gemeenschappelijke voorouder opgezocht worden aan de hand van het commando
unipept pept2lca. Naast de mogelijkheid om e´ e´ n of meerdere tryptische peptiden als argument
door te geven aan het commando, zal het commando de peptiden inlezen van standaard invoer indien er
geen peptiden als argument doorgegeven worden. Hierbij moet elke peptide op een afzonderlijke regel
staan.
$ cat sample7.dat | sed -ne ’3{p;q}’
SGIVLPGQAQEKPQQAEVVAVGPGGVVDGKEVK
$ cat sample7.dat | sed -ne ’3{p;q}’ | prot2pept
SGIVLPGQAQEKPQQAEVVAVGPGGVVDGK
EVK
$ cat sample7.dat | sed -ne ’3{p;q}’ | prot2pept | unipept pept2lca -e
sequence,taxon_id,taxon_name,taxon_parent_id,taxon_rank
SGIVLPGQAQEKPQQAEVVAVGPGGVVDGK,1263,Ruminococcus,541000,genus
Er kan ook nog tijdswinst geboekt worden, als men in rekening brengt dat de Unipept databank enkel
tryptische peptiden indexeert met een lengte tussen 5 en 50 aminozuren (grenzen inbegrepen). Deze
keuze werd ingegeven door de detectielimiet van de meest gangbare massaspectrometers. Voor tryptische
peptiden korter dan 5 aminozuren of langer dan 50 aminozuren zullen immers nooit Uniprot eiwitten
58
4.1 Metaproteoomanalyse van de biodiversiteit in omgevingsstalen
gevonden worden in de Unipept databank, waardoor ze ook weer voorafgaand aan een identificatiestap
kunnen weggefilterd worden. Dit kan gebeuren door gebruik te maken van het commando peptfilter
uit de commandolijninterface voor Unipept, dat alle peptiden wegfiltert waarvan a priori geweten is dat
ze niet in de Unipept databank voorkomen.
$ cat sample7.dat | sed -ne ’3{p;q}’ | prot2pept | peptfilter | unipept pept2lca -e
sequence,taxon_id,taxon_name,taxon_parent_id,taxon_rank
SGIVLPGQAQEKPQQAEVVAVGPGGVVDGK,1263,Ruminococcus,541000,genus
Alle commando’s uit de commandolijninterface voor Unipept volgen het invoer/uitvoer paradigma van
de Unix commandolijn, waardoor ze naadloos aan elkaar kunnen geschakeld worden. Op die manier
kunnen we bijvoorbeeld de LCAs bepalen voor de eerste zes peptiden van sample 7, door alle voorgaande
verwerkingsstappen te combineren: missed cleavages splitsen, te korte en te lange tryptische peptiden
wegfilteren, en ontdubbelen van tryptische peptiden waarbij geen onderscheid gemaakt wordt tussen
isoleucine (residu I) en leucine (residu L).
$ head -n6 sample7.dat | prot2pept | peptfilter | tr I L | sort | uniq
GLTAALEAADAMTK
MDGTEYLLVK
MEVAVGDK
SGLVLPGQAQEKPQQAEVVAVGPGGVVDGK
VLYSK
$ head -n6 sample7.dat | prot2pept | peptfilter | tr I L | sort | uniq | unipept pept2lca -e
sequence,taxon_id,taxon_name,taxon_parent_id,taxon_rank
GLTAALEAADAMTK,186802,Clostridiales,186801,order
MDGTEYLLVK,1263,Ruminococcus,541000,genus
MEVAVGDK,1263,Ruminococcus,541000,genus
SGLVLPGQAQEKPQQAEVVAVGPGGVVDGK,1263,Ruminococcus,541000,genus
VLYSK,1,root,1,no rank
Aan de hand van de Multi-peptide Analysis toepassing uit de Unipept webinterface kan de biodiversiteit
van sample 7 uit de studie van Verberkmoes et al. eenvoudig in kaart gebracht worden. Hiervoor volstaat
het om de peptiden die uit het omgevingsstaal ge¨ıdentificeerd werden in het editeervenster te plakken, de
gewenste opties te selecteren, en de verwerking te initi¨eren.
In de sessie zoals die wordt weergegeven in Figuur 4.7 hebben we aangegeven dat er bij het identificeren van de peptiden geen onderscheid kon gemaakt worden tussen isoleucine en leucine, dat de
peptiden voorgaand aan de biodiversiteitsanalyse moeten ontdubbeld worden, en dat het resultaat moet
ge¨exporteerd worden in CSV formaat. Het opbreken van missed cleavages gebeurt standaard, waarbij de
59
4.1 Metaproteoomanalyse van de biodiversiteit in omgevingsstalen
Figuur 4.7: Verwerking van sample 7 uit de studie van Verberkmoes et al. aan de hand van de Multipeptide Analysis toepassing uit de Unipept webinterface. Hierbij werd aangegeven dat er geen onderscheid kon gemaakt worden tussen isoleucine en leucine, dat de peptiden voorafgaand aan de biodiversiteitsanalyse moeten ontdubbeld worden, en dat het resultaat moet ge¨exporteerd worden in CSV formaat.
Het opbreken van missed cleavages wordt standaard altijd uitgevoerd door Unipept, waarbij de optie
Advanced missed cleavage handling kan ingeschakeld worden om aan te geven dat de resultaten tijdens
een extra naverwerkingsstap terug moeten samengesteld worden (hier niet geactiveerd).
optie Advanced missed cleavage handling kan ingeschakeld worden om aan te geven dat de resultaten
tijdens een extra naverwerkingsstap terug samengesteld worden (niet geselecteerd in dit voorbeeld).
Hetzelfde resultaat bekomen we met de volgende combinatie van commando’s uit de commandolijninterface voor Unipept. De tijdsmeting geeft een indicatie van de performantie om de LCAs van al de 2005
unieke tryptische peptiden op te zoeken. Hieruit valt af te leiden dat het grootste deel van de verwerkingstijd gebeurt bij het uitwisselen van gegevens tussen de client en de Unipept server en het server side
analyseren van de gegevens.
$ prot2pept < sample7.dat | peptfilter | tr I L | sort | uniq | wc -l
2005
$ time prot2pept < sample7.dat | peptfilter | tr I L | sort | uniq | unipept pept2lca -e >
sample7.csv
real
0m1.032s
user
0m0.460s
sys
0m0.040s
$ head sample7.csv
60
4.1 Metaproteoomanalyse van de biodiversiteit in omgevingsstalen
sequence,taxon_id,taxon_name,taxon_parent_id,taxon_rank
AAALNLVPNSTGAAK,2,Bacteria,131567,superkingdom
AAALNTLAHSTGAAK,1678,Bifidobacterium,31953,genus
AAALNTLPHSTGAAK,1678,Bifidobacterium,31953,genus
AAAMSMLPTSTGAAK,2,Bacteria,131567,superkingdom
AAANESFGYNEDELVSSDLVGMR,186802,Clostridiales,186801,order
AAANYLDLPLYR,2,Bacteria,131567,superkingdom
AAAVNLVPNSTGAAK,2,Bacteria,131567,superkingdom
AADAAAALGEGLQAFCLPGSVADHR,186802,Clostridiales,186801,order
AADAAAALGEGLQAFCLPGSVADTR,186802,Clostridiales,186801,order
Voor wie het niet zo begrepen heeft op IO redirection, ondersteunt het commando unipept ook de
optie -i/--input om de peptiden in te lezen uit een opgegeven bestand, en de optie -o/--output
om het resultaat weg te schrijven naar een opgegeven bestand.
$ unipept pept2lca --input sample7.dat --output sample7.csv
$ head sample7.csv
sequence,taxon_id,taxon_name,taxon_parent_id,taxon_rank
SGIVLPGQAQEKPQQAEVVAVGPGGVVDGK,1263,Ruminococcus,541000,genus
SGIVLPGQAQEKPQQAEVVAVGPGGVVDGK,1263,Ruminococcus,541000,genus
MDGTEYIIVK,1263,Ruminococcus,541000,genus
GLTAAIEAADAMTK,186802,Clostridiales,186801,order
AAEVALVGTEK,186802,Clostridiales,186801,order
IGSGLVTVMVR,2,Bacteria,131567,superkingdom
IGSGLVTVMVR,2,Bacteria,131567,superkingdom
AAVESGSAAASR,186802,Clostridiales,186801,order
AAVESGSAAASR,186802,Clostridiales,186801,order
Indien gewenst kan de optie -a van het commando unipept pept2lca gebruikt worden om meteen
de volledige afstamming volgens de Unipept Taxonomy mee op te vragen uit de Unipept databank. Figuur 4.8 toont een hi¨erarchische classificatie van de taxa die in het omgevingsstaal konden ge¨ıdentificeerd
worden. Hierbij werd gefocust op de orde van de Clostridiales.
De grafische boomvoorstelling werd opgesteld door de resultaten uit het CSV bestand sample7.csv
(met volledige afstamming) te verwerken aan de hand van een speciaal daarvoor geschreven Python
script. Het percentage bij elk taxon geeft aan hoeveel tryptische peptiden specifiek aan het taxon of e´ e´ n
van zijn subtaxa konden toegewezen worden. Hierdoor is het percentage van een taxon steeds groter of
gelijk aan de som van de percentages van de rechtstreeks onderliggende subtaxa. Hierdoor is de grafische
boomvoorstelling equivalent met deze die wordt weergeven in de sunburst voorstelling op de Unipept
website. De treemap voorstelling op de Unipept website gebruikt dan weer een andere schaling voor het
betegelen van de rechthoek, waarbij geen rekening wordt gehouden met de tryptische peptiden die niet
61
4.2 Metagenoomanalyse van de biodiversiteit in omgevingsstalen
Figuur 4.8: Snapshot van een interactieve boomvoorstelling met de resultaten van de biodiversiteitsanalyse op de metaproteomics dataset van sample 7 uit de studie van Verberkmoes et al. [5]. De focus van
de weergave ligt op de orde Clostridiales. Percentages bij de taxa geven aan hoeveel tryptische peptiden
specifiek aan het taxon of e´ e´ n van zijn subtaxa konden toegewezen worden, en corresponderen ook met
de kleurgradi¨ent die gebruikt werd om de taxa in te kleuren: lichtgeel (0%) – rood (100%).
specifiek aan e´ e´ n van de rechtstreeks onderliggende subtaxa konden toegewezen worden.
4.2
Metagenoomanalyse van de biodiversiteit in omgevingsstalen
In December 2013 werd het Unipept team gecontacteerd door het metagenomics team van het European
Bioinformatics Institute (EBI) met de vraag of Unipept ook kon gebruikt worden voor het analyseren van
shotgun metagenomics datasets [18, 19]. Er zijn echter twee belangrijke verschillen tussen een dataset
die men bekomt na het uitvoeren van een shotgun metagenomics experiment en een dataset die men
bekomt na het uitvoeren van een shotgun metaptroteomics experiment.
Vooreerst levert een shotgun metagenomics experiment een reeks DNA fragmenten (DNA reads) op,
terwijl een shotgun metaproteomics experiment een reeks eiwitfragmenten (protein reads) oplevert. Bij
de overgrote meerderheid van de shotgun metaproteomics experiment wordt trypsine gebruikt om de
eiwitten op te knippen, en zijn de eiwitfragmenten die men verkrijgt tryptische peptiden. Unipept werd
specifiek opgezet voor het analyseren van shotgun metaproteomics datasets die bestaan uit tryptische
62
4.2 Metagenoomanalyse van de biodiversiteit in omgevingsstalen
peptiden.
Daarnaast leveren shotgun metagenomics experimenten op vandaag een veel grotere dekking op van het
DNA in het omgevingsstaal, dan dat shotgun metaproteomics experimenten een dekking opleveren van
de eiwitten die tot expressie komen in een omgevingsstaal. De reden hiervoor is dat next-generation
sequencing (NGS) technologisch gezien al in een veel verder gevorderder stadium zit dan de shotgun
tandem massaspectrometrische methoden, waardoor de gradatie van het high-throughput genereren van
data een heel stuk hoger ligt.
Voor het analyseren van shotgun metagenomics datasets aan de hand van Unipept waren dus twee ingredi¨enten nodig. Vooreerst zorgt de omvang van metagenomics datasets ervoor dat deze niet langer
interactief kunnen geanalyseerd worden via een online website. De Unipept API levert echter een alternatieve interface op voor de Unipept functionaliteit, die toelaat om de verwerking van grote datasets
in bulk uit te voeren. Het modulair karakter van de API zorgt er bovendien voor dat de bouwstenen
die voorzien worden voor het analyseren van shotgun metaproteomics datasets naadloos kunnen verweven worden met een aantal extra bouwstenen die specifiek gericht zijn voor het analyseren van shotgun
metagenomics datasets.
4.2.1
De Unipept Shotgun Metagenomics Analysis Pipeline
De aanpak die we gevolgd hebben voor het analyseren van shotgun metagenomics datasets, is om een
shotgun metagenomics dataset eerst in silico om te zetten naar een shotgun metaproteomics dataset. Deze
metaproteomics dataset kan dan door Unipept geanalyseerd worden op basis van de bestaande functionaliteit. Tenslotte worden de analyseresultaten die bekomen werden voor de individuele tryptische peptiden
samengevat tot een analyseresultaat op het niveau van het DNA- of eiwitfragment waaruit de tryptische
peptiden werden afgeleid. Deze ontbinding van een metagenomics dataset naar een metaproteomics dataset, en het finaal terug afbeelden van de analyseresultaten voor de individuele tryptische peptiden op
de originele DNA of eiwitfragmenten volgt daarmee het MapReduce model (Figuur 4.9).
Deze strategie levert een aantal belangrijke voordelen op ten opzichte van de traditionele manier voor het
analyseren van shotgun metagenomics datasets, die gebaseerd is op het blasten van de DNA fragmenten
tegen een referentiedatabank van DNA sequenties waarvan het taxon gekend is [20]. Omdat eiwitsequenties geconserveerder zijn dan DNA sequenties, worden door het matchen van eiwitfragmenten een aantal
natuurlijke variaties binnen soorten uitgevlakt en kunnen de soorten dus ook makkelijker ge¨ıdentifieerd
worden. Bovendien gebruikt Unipept ook full-length exact matching om de eiwitten te vinden waarin een
63
4.2 Metagenoomanalyse van de biodiversiteit in omgevingsstalen
metagenomics
FragGeneScan
map
prot2pept
metaproteomics
pept2lca
reduce
metagenomics
Figuur 4.9: MapReduce model dat gevolgd wordt door de Unipept Shotgun Metagenomics Analysis
Pipeline. In de Map fase wordt een shotgun metagenomics dataset in silico omgezet naar een shotgun
metaproteomics dataset door eerst een algoritme voor genpredictie (bv. FragGeneScan [17]) uit te voeren
op de DNA reads uit de metagenomics dataset en daarna de gevonden eiwtten op te breken in tryptische
peptiden (bv. adhv. prot2pept uit de Unipept API). Na de Map fase kan elke tryptische peptide afzonderlijk taxonomisch ge¨ıdentificeerd worden, bijvoorbeeld door de laagste gemeenschappelijke voorouder
te bepalen van de taxa van alle Uniprot eiwitten waarin de peptide teruggevonden wordt. Tenslotte wordt
in de Reduce fase een samenvattende taxonomische identificatie gemaakt op basis van de individuele
taxonomische identificaties van alle peptiden uit het originele DNA- of eiwitfragment.
64
4.2 Metagenoomanalyse van de biodiversiteit in omgevingsstalen
gegeven tryptische peptide voorkomt, wat een heel stuk sneller gaan dan de inexact matching strategie
die door de verschillende BLAST varianten ge¨ımplementeerd wordt.
Als gevolg van het feit dat we op basis van de tryptische peptiden een reeks eiwitten terugvinden waarin
de peptiden voorkomen, kunnen we naast de taxonomische identificatie van de eiwitten, ook makkelijk
een functionele identificatie van de eiwitten bepalen. Functionele analyse van metagenomics en metaproteomics datasets valt voorlopig echter buiten de huidige scope Unipept, en maakt deel uit van een lopende
onderzoekslijn. Merk op dat functionele analyse bijvoorbeeld nauwelijks mogelijk is voor metagenomics
experimenten die zich specifiek richten op het sequeneren van het 16S rRNA gen. Deze gerichte manier
van sequeneren (targetted metagenomics) genoot traditioneel de voorkeur, omdat de dekking van het 16S
rRNA gen in de publieke sequentiedatabanken veel groter was dan die van andere genen en ze ook een
grotere dekking oplevert van de organismen in onderzochte omgevingsstaal. Doordat de referentiebanken
steeds meer volledige genoomsequenties bevatten [16] en de througput van next-generation sequencing
ook steeds groter wordt, zien we steeds meer een verschuiving van gerichte sequeneringsaanpak (16S
rRNA) naar shotgun sequenering en komt ook een doorgedreven functionele analyse van de stalen steeds
meer in het vizier.
In wat volgt geven we een gedetailleerde bespreking van de opeenvolgende stappen die uitgevoerd worden door de Unipept Shotgun Metagenomics Analysis Pipeline voor het taxonomisch identificeren van
DNA fragmenten die resulteren uit shotgun metagenomics experimenten.
4.2.1.1
Globaal ontwerp van de pipeline
Om (fragmenten) van eiwitcoderende genen te vinden in de DNA fragmenten van een shotgun metagenomics dataset, wordt gebruik gemaakt van FragGeneScan [17]. Het algoritme van deze toepassing voor
genpredicitie is gebaseerd op een interpolated hidden Markov model (HMM) dat specifiek gericht is op
het voorspellen van eiwitfragmenten in korte DNA fragmenten uit metagenomics datasets (Figuur 4.10).
Dit HMM heeft drie voordelen ten opzichte van traditionele HMMs die gebruikt worden voor het voorspellen van eiwitten in DNA fragmenten uit het genoom van e´ e´ n enkel organisme: i) het is niet gericht
op het herkennen van het start- of stopcodon van een eiwit, waardoor ook parti¨ele eiwitten (eiwitfragmenten) kunnen teruggevonden worden in DNA fragmenten waarin het begin of het einde (of beide) van
het gen ontbreekt, ii) het vangt sequeneringsfouten in het DNA op die het gevolg zijn van de gebruikte
NGS technologie (er zijn ook verschillende varianten van het HMM die rekening houden met specifieke
soorten fouten die gelinkt zijn aan een specifieke NGS technologie zoals 454 en Illumina) en kan deze
automatisch corrigeren, en iii) het wordt niet specifiek getraind voor een welbepaalde genetische code,
65
4.2 Metagenoomanalyse van de biodiversiteit in omgevingsstalen
maar kan de genetische code herkennen die gebruikt wordt voor het vertalen van elk van de voorspelde
genen, waardoor ook de corresponderende eiwitsequentie van de genen kan bepaald worden.
Daarna worden de gevonden eiwitfragmenten in silico opgebroken in tryptische peptiden. Hiervoor
wordt gebruik gemaakt van het commando prot2pept uit de Unipept commandolijninterface, zoals
besproken in sectie 4.1.1. Omdat Unipept enkel tryptische peptiden indexeert met een lengte tussen 5 en
50 aminozuren (grenzen inbegrepen), kunnen peptiden die te kort of te lang zijn bijkomend weggefilterd
worden door gebruik te maken van het commando uit de Unipept commandolijninterface peptfilter.
Peptiden aan het begin of het einde van de DNA fragmenten kunnen ook weggefilterd worden, omdat
de kans groot is dat dit slechts parti¨ele tryptische peptiden zijn. De Unipept API matcht geen parti¨ele
tryptische peptiden met Uniprot.
Vervolgens wordt elke tryptische peptide afzonderlijk taxonomisch ge¨ıdentificeerd door de laagste gemeenschappelijke voorouder te bepalen van de taxa van alle Uniprot eiwitten waarin de peptide werd
teruggevonden. De laagste gemeenschappelijke voorouders van de tryptische peptiden kunnen bepaald
worden aan de hand van het commando pept2lca uit de Unipept commandolijninterface, zoals besproken in sectie 4.1.1. Merk op dat de laagste gemeenschappelijke voorouders van de tryptische peptiden
onafhankelijk van elkaar berekend worden, en dus in principe parallel kunnen gebeuren. De huidige
setup van Unipept werkt echter met e´ e´ n enkele instantie van de Unipept databank die daardoor een bottleneck vormt voor parallellisatie. In de toekomst zal echter voorzien worden dat er meerdere instanties
van de Unipept API en de Unipept databank kunnen uitgerold worden, waardoor deze parallellisatiebottleneck kan opgevangen worden. De Unipept commandolijninterface is hierop reeds voorzien, omdat via
de optie host een specifieke instantie van de Unipept API kan aangesproken worden.
Bovendien zullen eindgebruikers ook een lokale instantie of een reeks lokale instanties kunnen uitrollen
van de Unipept API en de Unipept databank. Voor het Unipept team levert dit als voordeel op dat de
hardwarevoorzieningen voor het ondersteunen van de Unipept API in de hand kunnen gehouden worden.
Voor eindgebruikers die heel veel of hele grote datasets willen analyseren levert dit het voordeel op dat
ze instanties kunnen uitrollen navenant de omvang van de datasets die ze moeten verwerken. Bovendien
hebben eindgebruikers uit Mayo Clinic – e´ e´ n van de grootste ziekenhuizen in de Verenigde Staten – en
de Canadian Food Inspection Agency reeds aangegeven aan het Unipept team dat de interne politiek van
hun instelling niet toelaat om hun gevoelige data te analyseren aan de hand van online services. Door
lokale instanties van de Unipept API en de Unipept databank uit te rollen, zou ook dit probleem kunnen
verholpen worden.
Bij elke nieuwe editie van de Uniprot databank die door Unipept ge¨ındexeerd wordt, wordt de laagste ge-
66
4.2 Metagenoomanalyse van de biodiversiteit in omgevingsstalen
Figuur 4.10: Het HMM van FragGeneScan met zeven supertoestanden (overgenomen uit [17]). De supertoestanden worden aangegeven door de zeven grijze rechthoeken die corresponderen met genregio’s:
startcodons (ii en v) en stopcodons (iii en vi) op zowel de voorwaartse (i–iii) als de achterwaartse (v–vii)
DNA streng, en niet-coderende regio’s (iv). De toestanden voor de genregio’s (i en vii) bestaan zelf u it
zes opeenvolgende matchtoestanden aangeduid met ruiten, invoegtoestanden aangeduid met driehoeken
en verwijdertoestanden aangeduid met vierkanten, die samen een zes-periodisch niet-homogeen HMM
vormen.
67
4.2 Metagenoomanalyse van de biodiversiteit in omgevingsstalen
meenschappelijke voorouder van elke tryptische peptide berekend en opgeslaan in de Unipept databank.
Dit zorgt voor een aanzienlijke tijdswinst bij het bepalen van de laagste gemeenschappelijke voorouder in de webtoepassing of via de Unipept API. Hierdoor kan de webtoepassing interactief gehouden
worden voor het analyseren van metaproteomics datasets, en kan de analyse van metagenomics datasets
voldoende snel gebeuren ondanks de omvang van deze datasets.
Nadat elke tryptische peptide taxonomisch ge¨ıdentificeerd werd door het bepalen van de laagste gemeenschappelijke voorouder van alle taxa van de eiwitten waarin de peptide werd teruggevonden, kan
een samenvattende taxonomische toewijzing gebeuren op basis van de individuele identificaties van alle
peptiden uit het DNA- of eiwitfragment. In het huidige prototype van de Unipept Shotgun Metagenomics
Analysis Pipeline hebben we gekozen voor een consensusbepaling per DNA read uit de originele metagenomics dataset. De procedure voor deze consensusbepaling wordt in detail besproken in sectie 4.2.1.2.
Merk op dat een dergelijke samenvattende toewijzing ook zou kunnen gebeuren voor functionele identificaties van de individuele tryptische peptiden, en dat daar een consensusbepaling per eiwit het meest
aangewezen lijkt.
Als elk DNA- of eiwitfragment van een omgevingsstaal taxonomisch is toegewezen, kunnen de resultaten
gebundeld worden om een overzicht te krijgen van de biodiversiteit in het staal. Deze bundeling kan
eenvoudigweg gebeuren door de gewogen boomstructuren die de taxonomische toewijzing voorstellen
voor elk DNA- of eiwitfragment te integreren tot e´ e´ n enkele boomstructuur, waarbij de gewichten van de
corresponderende knopen bij elkaar opgeteld worden. In dit scenario krijgt elk DNA- of eiwitfragment
dus eenzelfde gewicht als de individuele boomstructuren genormaliseerd zijn (zie sectie 4.2.1.2). Er
kunnen ook meer geavanceerdere scenario’s uitgedacht worden die elk DNA- of eiwitfragment van het
omgevingsstaal een variabel gewicht toekennen, dat bijvoorbeeld in rekening brengt wat de kans is dat de
taxonomische toewijzing van het fragment correct is. Deze kans hangt onder andere af van de lengte van
het fragment, het aantal tryptische peptiden uit het fragment die teruggevonden werden in Uniprot, en
de taxonomische dekking van de Uniprot databank zelf. Het bepalen van eeen dergelijke geavanceerde
weging valt echter buiten de scope van deze thesis.
4.2.1.2
Taxonomische identificatie van een DNA- of eiwitfragment
Voor het bepalen van een samenvattende taxonomische toewijzing per DNA- of eiwitfragment zijn er
verschillende scenario’s mogelijk. Drie scenario’s worden schematisch voorgesteld in Figuur 4.11. Alle
deze scenario’s beginnen op dezelfde manier door eerst individueel voor elke tryptische peptide uit het
oorspronkelijke DNA- of eiwitfragment de Uniprot eiwitten op te zoeken waarin de peptide voorkomt.
68
4.2 Metagenoomanalyse van de biodiversiteit in omgevingsstalen
Hiervoor kan gebruik gemaakt worden van de web service pept2prot of het commando unipept
pept2prot uit de Unipept API.
In scenario A worden enkel de gevonden eiwitten weerhouden die minstens x (x ≥ 1) tryptische peptiden
bevatten uit het oorspronkelijke DNA- of eiwitfragment (aangeduid met ∩x ). Van de overblijvende
eiwitten kan de taxonomische identificatie in Uniprot opgezocht worden, en op basis daarvan kan dan
een samenvattende taxonomische toewijzing voor het oorspronkelijke DNA- of eiwitfragment bepaald
worden.
In scenario B worden individueel voor elke tryptische peptide uit het oorspronkelijke DNA- of eiwitfragment de taxa opgezocht van de Uniprot eiwitten waarin de peptide voorkomt. Daarna worden enkel
de taxa weerhouden die minstens voor x (x ≥ 1) tryptische peptiden gevonden werden (aangeduid met
∩x ). Op basis van de overblijvende taxa kan dan een samenvattende toewijzing bepaald worden voor het
oorspronkelijke DNA- of eiwitfragment.
Scenario C onderscheidt zich van de vorige twee scenario’s doordat er twee opeenvolgende samenvattende taxonomische toewijzing moeten gebeuren. In eerste instantie worden individueel voor elke tryptische peptide uit het oorspronkelijke DNA- of eiwitfragment de taxa opgezocht van de Uniprot eiwitten
waarin de peptide voorkomt. Op basis daarvan wordt een eerste samenvattende toewijzing (C1 ) bepaald
voor elk van de peptiden afzonderlijk. Het voordeel van deze aanpak is dat deze taxonomische toewijzing per peptide slechts e´ e´ nmaal moet berekend worden, en dus in de databank kan opgeslagen worden.
Daarna kan een samenvattende taxonomische toewijzing (C2 ) bepaald worden voor het oorspronkelijke
DNA- of eiwitfragment door de individuele samenvattende taxonomische toewijzing voor de individuele
tryptische peptiden te combineren.
Merk op dat het in alle gevallen zinvol is om de laagste gemeenschappelijke voorouder van de gevonden
taxa te gebruiken voor de samenvattende taxonomische toewijzing, behalve voor de samenvattende taxonomische toewijzing C2 . Dit zou immers in de meeste gevallen een resulteren in een weinig specifieke
taxonmische toewijzing voor het DNA- of eiwitfragment. In dit geval moet de consensusbepaling van
de gevonden taxa gebeuren via meer geavanceerde procedures. In sectie 4.2.1.3 bespreken e´ e´ n mogelijke procedure voor een dergelijke consensusbepaling. We merken op dat deze generiek genoeg is dat
ze ook voor de andere samenvattende taxonomische toewijzingen zou kunnen gebruikt worden, ter vervanging van de laagste gemeenschappelijke voorouder. De procedure voor het bepalen van de laagste
gemeenschappelijke voorouder is immers een speciaal geval van de consensusprocedure.
Scenario’s A en B leveren globaal gezien vermoedelijk een meer nauwkeurige taxonomische toewijzing
69
4.2 Metagenoomanalyse van de biodiversiteit in omgevingsstalen
DNA fragment
FragGeneScan
eiwitfragmenten
prot2pept[ | peptfilter][ | sort | uniq]
tryptische peptiden
unipept pept2prot
∩x
unipept pept2taxa
unipept pept2prot –s taxon_id
unipept pept2lca
∩x
samenvattende
taxonomische
toewijzing
samenvattende
taxonomische
toewijzing
C1
C1
C1
C1
B
unipept taxa2lca
A
C2
Figuur 4.11: Drie scenario’s voor het bepalen van een samenvattende taxonomische toewijzing voor een
DNA- of een eiwitfragment. In scenario A worden eerst alle Uniprot eiwitten bepaald die minstens x
(x ≥ 1) tryptische peptiden bevatten uit het oorspronkelijke DNA- of eiwitfragment (aangeduid met
∩x ). Daarna wordt een samenvattende taxonomische toewijzing bepaald op basis van de taxa van deze
eiwitten. In scenario B worden eerste per tryptische peptide de taxa bepaald van alle Uniprot eiwitten
waarin de tryptische peptide voorkomt. Daarvan worden in tweede instantie enkel de taxa overgehouden die voor minstens x (x ≥ 1) tryptische peptiden van het oorspronkelijke DNA- of eiwitfragment
gevonden werden, en wordt op basis van deze taxa (aangeduid met ∩x ) een samenvattende taxonomische
toewijzing bepaald. In scenario C wordt eerste een samenvattende taxonomische toewijzing bepaald
per individuele tryptische peptide (C1 ). Daarna wordt een tweede samenvattende toewijzing bepaald per
DNA- of eiwitfragment, die een consensus vormt van alle samenvattende toewijzingen van alle tryptische
peptiden uit het originele DNA- of eiwitfragment (C2 ).
70
4.2 Metagenoomanalyse van de biodiversiteit in omgevingsstalen
op dan scenario C, op voorwaarde dat er voldoende matches gevonden worden in Uniprot. Een mogelijkheid om het aantal matches nog te verhogen is door te werken met overlappende k-meren in plaats
van met tryptische peptiden [21]. Een vergelijking van de alternatieve scenario’s, een vergelijking tussen
het werken met tryptische peptiden en k-meren, en het kiezen van een optimale waarde voor k valt echter
buiten de scope van deze thesis. Scenario C is dan weer sneller dan scenario’s A en B. De eerste samenvattende taxonomische toewijzing (C1 ) kan immers op voorhand berekend worden voor elke tryptische
peptide of elk k-mer dat in een Uniprot eiwit wordt aangetroffen, en kan samen met de tryptische peptide
of het k-mer in de databank opgeslaan worden. Hierdoor moeten de Uniprot eiwitten waarin de tryptische
peptide of het k-mer voorkomt niet telkens opnieuw opgezocht worden. Dit kan immers vrij tijdrovend
zijn voor tryptische peptiden of k-meren die in een groot aantal eiwitten voorkomen. Voor de taxonomische identificatie van het DNA- of eiwitfragment volstaat het dan om de taxonomische identificaties
voor de individuele tryptische peptiden of k-meren op te halen uit de databank, en een samenvattende
identificatie te bepalen op basis van een consensusprocedure. Een voorbeeld daarvan wordt besproken in
de volgende sectie.
4.2.1.3
Taxonomische identificatie via consensusbepaling
Veronderstel dat we voor een DNA- of eiwitfragment beschikken over een aantal individuele taxonomische identificaties. Dit geval doet zich voor als we het fragment in zijn geheel blasten tegenover een
referentiedatabank, een aantal van de inexacte matches weerhouden (bijvoorbeeld een vast aantal van de
top-matches, of de matches die aan bepaalde criteria voldoen), en van die matches de taxonomische identificatie uit de referentiedatabank opvragen. Een ander scenario waarbij dit zich voordoet is wanneer we
het oorspronkelijk DNA- of eiwitfragment opdelen in een aantal deelfragmenten (bijvoorbeeld tryptische
peptiden of k-meren) en voor elk van deze deelfragmenten een inviduele taxonomische identificatie bepalen. Hoe kunnen we deze individuele taxonomische identificaties dan bundelen tot een samenvattende
taxonomische identificatie voor het oorspronkelijke DNA- of eiwitfragment?
Heel wat bestaande toepassingen lossen dit probleem op een zeer na¨ıeve manier op. Voor toepassingen
die gebruik maken van BLAST (of alternatieve zoekalgoritmen) om een aantal inexacte matches te vinden voor het DNA- of eiwitfragment zijn er een verschillende scenario’s in omloop. Er zijn toepassingen
die de taxonomische identificatie selecteren van de top BLAST-hit, toepassingen die enkel een taxonomische identificatie selecteren als de taxonomische identificatie van de weerhouden inexacte matches
allemaal hetzelfde zijn [22] en toepassingen die de taxonomische identificatie selecteren die het vaakst
voorkomt onder de weerhouden inexacte matches. Al deze benaderingen zijn gevoelig voor de sampling
71
4.2 Metagenoomanalyse van de biodiversiteit in omgevingsstalen
bias in de referentiebanken (sommige organismen zijn beter vertegenwoordigd dan andere organismen),
waardoor voornamelijk taxa die dominant in de databank aanwezig zijn een grotere kans maken om geselecteerd te worden. Bovendien houden deze benaderingen ook geen rekening met de hi¨erarchische
indeling van de taxa.
Sommige toepassingen proberen het hoofd te bieden aan de bovengenoemde problemen door de laagste gemeenschappelijke voorouder te bepalen van de individuele taxonomische identificaties [23, 24,
1] (Figuur 4.2). Hiermee wordt de kleinst mogelijke veralgemening gemaakt die conform is met de
hi¨erarchische indeling van alle inviduele taxonomische identificaties. Toch is deze veralgemening vrij
sterk, omdat ze uitgaat van het conservatieve principe dat de samenvattende taxonomische identificatie
minstens alle individuele taxonomische identificaties moet insluiten. Het is immers niet zo dat alle organismen die in de hi¨erarchische indeling van de taxa onder de laagste gemeenschappelijke voorouder
zitten, ook effectief overeenstemmen met de individuele taxonomische identificaties, zelfs al zouden we
over een vrij complete referentiedatabank beschikken.
Wood en Salzberg [21] stellen voor om de samenvattende taxonomische identificatie te bepalen als de
bladknoop met het maximale pad naar de wortel van de boom (maximal root-to-leaf path). Dit algoritme
vertrekt van een afbeelding van de individuele taxonomische identificaties op een hi¨erarchische indeling
van de taxa, net zoals dat het geval is bij de bepaling van de laagste gemeenschappelijke voorouder.
Daarna wordt e´ e´ n van de bladknopen in de hi¨erarchische indeling van de taxa geselecteerd, namelijk
deze die het best ondersteund wordt door de individuele taxonomische identificaties.
Het bepalen van de laagste gemeenschappelijke voorouder en het bepalen van de bladknoop die een
maximale pad heeft naar de wortel van de hi¨erarchische indeling van de taxa hebben als voordeel dat ze
rekening houden met de hi¨erarchische verwantschap tussen de taxa. Deze twee methoden kunnen echter
op een natuurlijke manier veralgemeend worden tot een familie van methoden die voor het bepalen van
de samenvattende taxonomische identificatie niet langer uitgaat van het feit dat er e´ e´ n enkele knoop moet
geselecteerd worden in de hi¨erarchische indeling van de taxa, maar dat er verschillende knopen kunnen
geselecteerd worden. Dit selecteren kan dan gebeuren door gewichten toe te kennen aan meerdere knopen
(zowel interne knopen als bladknopen) in de hi¨erarchische indeling van de taxa. We bespreken deze
veralgemening aan de hand van het voorbeeld dat wordt weergegeven in Figuur 4.12. Merk op dat dit
hetzelfde voorbeeld is dat we gebruikt hebben voor het illustreren van het MapReduce model dat gevolgd
wordt door de Unipept Shotgun Metagenomics Analysis Pipeline (Figuur 4.9).
In eerste instantie beelden we elke individuele taxonomische toepassing af op te Unipept Taxonomy. De
meeste referentiedatabanken (GenBank, RefSeq, Uniprot) werken als beschrijving voor de organismen
72
4.2 Metagenoomanalyse van de biodiversiteit in omgevingsstalen
1
a
1.66
b
1
1.66
2
0
1
1.66
1
1
.277
c
.277
d
0
.277
.833
.277
0
.277
.277
.833
0
.277
1
0
.166
.166
.166
Figuur 4.12: Voorbeeld van een procedure voor het bepalen van een samenvattende taxonomische toewijzingen voor een reeks individuele taxonomische toewijzingen. (a) Initieel beelden we elke individuele
taxonomische toewijzingen af op de Unipept Taxonomy, waarbij we tellen hoeveel keer elk taxon werd
toegewezen. (b) Vervolgens voeren we een top-down verdeling uit van de gewichten van de interne knopen van de boomstructuur, door deze gewichten te verdelen over hun onderliggende bladknopen. Deze
verdeling wordt diepte-eerst uitgevoerd, en gebeurt evenredig met de gewichten van de bladknopen. (c)
Daarna normaliseren we het totale gewicht van de boom zodat de totale som van de gewichten gelijk
wordt aan 1. (c) Tenslotte bepalen we bottum-up (diepte-eerst) de gewichten van de interne knopen als
de som van de gewichten van hun kindknopen.
73
4.2 Metagenoomanalyse van de biodiversiteit in omgevingsstalen
3
3
0
3
1
Figuur 4.13: Toepassing op het voorbeeld uit Figuur 4.12.a van de methode van Wood en Salzberg [21]
voor het top-down verdelen van de gewichten van de interne knopen over hun onderliggende bladknopen. Het totale gewicht van de boom in Figuur 4.12.a is 6 (dit is gelijk aan het aantal tryptische peptiden
die konden ge¨ıdentificeerd worden in het oorspronkelijke DNA fragment van Figuur 4.9) en dit gewicht
wordt niet gewijzigd door toepassing van de methode die overeenkomt met Figuur 4.12.b. Door toepassing van de methode van Wood en Salzberg krijgt de boom een totaal gewicht 10. Indien er zoals
in dit geval een ex aequo optreedt tussen de bladknopen met maximaal gewicht, dan weerhouden Wood
en Salzberg alle bladknopen als samenvattende taxonomische identificatie. Hierdoor krijgt het DNAof eiwitfragment binnen het volledige omgevingsstaal echter gewicht 3. Een betere benadering was in
dit geval dus geweest om elke bladknoop met maximaal gewicht te selecteren en een gewicht
1
3
toe te
kennen.
waaruit de DNA- of eiwitsequenties afkomstig zijn met een afbeelding van elke DNA- of eiwitsequentie
naar de NCBI Taxonomy. De NCBI Taxonomy bevat echter heel wat ongeldige en stamspecifieke taxa.
Daarom werd de Unipept Taxonomy opgesteld als een opgekuiste deelhi¨erachie van de NCBI Taxonomy
waaruit zoveel mogelijk ongeldige en stamspecifieke taxa automatisch verwijderd werden op basis van
een aantal heuristische regels. Aangezien de Unipept Taxonomy een deelhi¨erachie is van de NCBI Taxonomy, is er ook een rechtstreekse afbeelding van de referentiedatabanken naar de Unipept Taxonomy
mogelijk. Algemeen zouden we nu in elke knoop van de boomstructuur van de Unipept Taxonomy een
verzameling kunnen bijhouden van alle tryptische peptiden die een laagste gemeenschappelijke voorouder hebben die overeenkomt met de knoop. Om de idee achter de veralgemeende procedure eenvoudig
te kunnen bespreken, houden we in wat volgt voor elke knoop enkel bij hoeveel tryptische peptiden er in
de verzameling zitten (Figuur 4.12.a).
De volgende stap (Figuur 4.12.b) wordt uitgevoerd om rekening te houden met het feit dat alle tryptische
peptiden afkomstig zijn van hetzelfde DNA- of eiwitfragment. We doen dit door de gewichten van de
interne boomstructuur top-down te verdelen over hun onderliggende bladknopen. Deze verdeling wordt
74
4.2 Metagenoomanalyse van de biodiversiteit in omgevingsstalen
diepte-eerst uitgevoerd, en gebeurt evenredig met de gewichten van de bladknopen. De idee hierachter
is dat een individuele taxonomische toewijzing die minder specifiek is dan een andere individuele taxonomische toewijzing voor hetzelfde DNA- of eiwitfragment, meer specifiek kan gemaakt worden door
gebruik te maken van de voorkennis dat beide toewijzingen voor hetzelfde DNA- of eiwitfragment gedaan werden. Na deze stap hebben dus enkel de interne knopen van de boomstructuur een gewicht dat
verschillend is van nul. Merk op dat de methode van Wood en Salzberg [21] eigenlijk een alternatief
is voor deze top-down verdeling, waarbij de gewichten van de interne knopen niet evenredig verdeeld
worden over al hun bladknopen, maar gewoon bij elke bladknoop bijgeteld worden (Figuur 4.13). Dit
lijkt ons echter een minder natuurlijke benadering, omdat op die manier telkens extra gewicht toegekend
wordt aan de deelboom van de interne knoop waarvan het gewicht verdeeld wordt.
Uiteindelijk willen we finaal een bundeling maken van de samenvattende taxonomische toewijzingen
voor alle DNA- of eiwitfragmenten uit het omgevingsstaal. Hierbij willen we echter geen bias introduceren door het feit dat er per DNA- of eiwitfragment een variable aantal tryptische peptiden zijn waarvoor
er een taxonomische toewijzing kon gemaakt worden. Daarom bestaat een volgende verwerkingsstap
erin om het totale gewicht van de knopen van de boom te normaliseren op 1. Merk op dat deze normalisatie los staat van de andere verwerkingsstappen, en we die dus op elk moment kunnen uitvoeren. Omdat
er in het voorbeeld in totaal 6 peptiden zijn waarvoor er een taxonomische toewijzing kon gemaakt worden, zouden we deze normalisatie ook kunnen uitvoeren door in de eerste stap van de procedure niet
elke peptide te tellen met gewicht 1, maar met gewicht 61 . We kunnen ook meer geavanceerde scenario’s
uitdenken voor de verdeling van de gewichten. Stel dat er in een DNA- of eiwitfragment bijvoorbeeld
n tryptische peptiden pi (i = 1, . . . , n) zijn waarvoor er een individuele taxonomische toewijzing kon
gemaakt worden. Als we het aantal residu’s in de tryptische peptide pi voorstellen als |pi |, dan zouden
we het gewicht wi van de peptide pi kunnen bepalen in functie van aantal residu’s in die peptide
wi =
|pi |
n
X
j=1
|pj |
Merk op dat dit automatisch zorgt voor een normalisatie omdat
n
X
n
X
i=1
wi =
n
X
i=1
|pi |
|pi |
= i=1
=1
n
n
X
X
|pj |
|pj |
j=1
j=1
In dit scenario wordt dus rekening gehouden met het feit dat hoe langer een bepaalde peptide is, hoe
kleiner de kans dat deze bij toeval (natuurlijk of door sequeneringsfout) voorkomt in een eiwit van een
75
4.2 Metagenoomanalyse van de biodiversiteit in omgevingsstalen
bepaald organisme in Uniprot.
Na de vorige stap krijgen we dus een boomstructuur waarvan enkel de bladknopen een gewicht dragen
dat verschillend is van nul (door de top-down verdeling), en waarbij de som van de gewichten van de
bladknopen gelijk is aan 1 (door de normalisatie). We kunnen nu voor elke knoop in de boom de kans
uitdrukken dat het DNA- eiwitfragment afkomstig is van een taxon dat correspondeert met de knoop of
e´ e´ n van zijn deelknopen. Deze kans is immers gelijk aan de som van de bladknopen onder die knoop.
Hierdoor krijgt de wortel van de boom per definitie gewicht 1. Merk op dat deze sommen het meest
effici¨ent kunnen bepaald worden door de boom bottum-up (diepte-eerst) te doorlopen, en daarbij voor
elke interne knoop het gewicht te bepalen als de som van de gewichten van zijn kindknopen.
Op basis van de gewogen boomstructuur die we zo verkrijgen, zijn nu nog bijkomende bewerkingen mogelijk. Zo zouden we bijvoorbeeld alle knopen kunnen wegsnoeien die een gewicht hebben dat kleiner is
dan een bepaalde drempelwaarde. Merk op dat het bepalen van de laagste gemeenschappelijke voorouder overeenkomt met de meest conservatieve snoei-operatie, waarbij alle knopen worden weggesnoeid
die een gewicht hebben kleiner dan 1. Een andere manier van snoeien bestaat erin om de bladknopen
en de daarmee corresponderende interne knopen weg te snoeien die een gewicht hebben dat kleiner is
dan een bepaalde drempelwaarde. Merk op dat de methode van Wood en Salzberg [21] overeenkomt
met de meeste progressieve snoei-operatie, waarbij alle bladknopen (en de daarmee corresponderende
interne knopen) worden weggesnoeid die een gewicht hebben kleiner dan het maximale gewicht van de
bladknopen. De redenering achter beide snoei-operaties is dat de refenentiedatabanken die gebruikt worden voor de individuele taxonomische identificaties slechts gedeeltelijk de biodiversiteit van de levende
organismen bedekken en dat er bij het deponeren van sequenties in de referentiedatabanken ook fouten
kunnen sluipen in zowel de metadata als in de sequenties zelf.
4.2.2
Taxonomische analyse van metagenomics experimenten
Op basis van de Unipept API die ontwikkeld en ge¨ımplementeerd werd in het kader van deze thesis,
werd in samenwerking met het Unipept team en tien studenten van het opleidingsonderdeel Computationele Biologie (Master Wiskundige Informatica, Master in Statistical Data Analysis) een eerste prototype
ontwikkeld van de Unipept Shotgun Metagenomics Analysis Pipeline. Daarbij hadden we een aantal
verschillende doelstellingen voor ogen.
Een eerste belangrijke doelstelling was de functionaliteit van de Unipept API uit te testen (usability test)
en de correctheid en robuustheid van de aangeboden functionaliteit aan een re¨ele test te onderwerpen
76
4.2 Metagenoomanalyse van de biodiversiteit in omgevingsstalen
(debugging). Er werden nog geen uitvoerige tijdsmetingen gedaan omdat alle testen werden uitgevoerd
tegen de Unipept API en de Unipept databank die draaiden op een testserver. De hardware van deze
testserver is een stuk minder performant dan de productie-omgeving van Unipept. Aangezien er verschillende studenten tegelijkertijd de testserver aan het bevragen waren, kon er ook niet gegarandeerd
worden dat de testserver volledig gereserveerd werd voor tijdsmetingen. Bovendien zijn er op basis van
het ontwikkelde prototype idee¨en gerezen om de performantie van de Unipept API en de Unipept databank nog sterk op te drijven. Wel konden op de testomgeving reeds een aantal ingrepen uitgevoerd
worden die onmiddellijk de performantie ten goede kwamen. Waar relevant geven we bij de case studies
die we hierna bespreken ruwe tijdsmetingen mee die een beeld schetsen van de huidige performantie van
de Unipept API.
De functionaliteit van Unipept, en dus ook die van de Unipept API, was initieel gericht op biodiversiteitsanalyse van datasets uit metaproteomics experimenten. Daarom wilden we met de implementatie van een
prototype van de Unipept Shotgun Metagenomics Analysis Pipeline ook de ontbrekende functionaliteit
voor metagenomics analyses in kaart brengen, evenals een beeld krijgen van de belangrijkste bottlenecks
qua performantie en geheugengebruik. In sectie 4.3 geven we een overzicht van de belangrijkste inzichten die hieruit zijn voortgekomen en die aanleiding kunnen geven tot verdere ontwikkelingen van
Unipept.
We bespreken hieronder de resultaten van een reeks biodiversiteitsanalyses die werden uitgevoerd op datasets de resulteren uit metagenomics experimenten op omgevingsstalen. Alle datasets werden gedownload van het publieke archief van EBI Metagenomics (www.ebi.ac.uk/metagenomics, [25]). We
geven voor elke dataset een korte omschrijving van de studie waarin de datasets initieel gegenereerd werden, en geven details over de opzet van het prototype van de Unipept Shotgun Metagenomics Analysis
Pipeline. Een vergelijkende studie van de inzichten in de biodiversiteit binnen de omgevingsstalen die
bekomen werden op basis van onze metagenomics pipeline en deze die bekomen werden op basis van
alternatieve metagenomics pipeline valt buiten de scope van deze thesis.
Voor elke dataset werd een lijst met de voorspelde eiwitten gedownload. De voorspelling van de eiwitten
werd uitgevoerd als onderdeel van de EBI Metagenomics Pipeline, en werd bekomen na filtering van
de DNA reads en eiwitpredicite aan de hand van FragGeneScan [17]. Op die manier kon een eerste
vergelijking gemaakt worden tussen de EBI Metagenomics Pipeline en de Unipept Shotgun Metagenomics Analysis Pipeline, die niet onderhevig was aan verschillen in de preprocessing van de datasets.
Alle testen werden uitgevoerd op helios.ugent.be — de interactieve Linux-omgeving voor studenten en personeelsleden van de UGent — om het gedrag te observeren wanneer de Unipept API wordt
77
4.2 Metagenoomanalyse van de biodiversiteit in omgevingsstalen
metagenomics
experiment
meta
genome
sample
FragGeneScan
metaproteomics
experiment
meta
proteome
prot2pept2lca
biodiversity
distribution
uniq
peptfilter
data analysis
&
visualization
prot2pept
pept2lca
Uniprot
meta
peptidome
Unipept
pept2lca
taxonomy
NCBI
Taxonomy
Unipept
join
lca2taxa
Figuur 4.14: Schematische voorstelling van de Unipept Shotgun Metagenomics Analysis Pipeline voor
de verwerking van een sample dat gedownload werd uit het publieke archief van EBI Metagenomics.
aangesproken over een netwerk (in dit geval UGentNet).
4.2.2.1
Taxonomische analyse van een metagenomics experiment
Figuur 4.14 geeft een schematische voorstelling van de workflow van het prototype van de Unipept
Shotgun Metagenomics Analysis Pipeline die gebruikt werd om de biodiversiteit in het stoelgangstaal
van pati¨ent F7T1Ob uit de studie van Turnbaugh et al. [26] in kaart te brengen. In het dossier van pati¨ent
F7T1Ob (sample SRS001007 in het publieke archief van EBI Metagenomics) lezen we dat het gaat om
een obese vrouw uit Missouri (VSA) die deel uitmaakt van een eeneiige (monozygote) tweeling. Ze had
gedurende zes maanden voorafgaand aan de staalname geen antibiotica genomen.
Voor het shotgun metagenomics experiment werd 454 GS FLX pyrosequenering gebruikt, wat in totaal
498.880 DNA fragmenten heeft opgeleverd. Daarvan beleven 374.821 DNA fragmenten over na alle
filteringsstappen van de EBI Metagenomics Pipeline. Aan de hand van FragGeneScan werden in totaal
363.716 eiwitfragmenten gevonden in de gefilterde DNA fragmenten.
78
4.2 Metagenoomanalyse van de biodiversiteit in omgevingsstalen
De volgende stappen in de verwerking (Figuur 4.14) komen grosso modo overeen met de stappen die
werden uitgevoerd voor de taxonomische analyse van een metaproteomics experiment (sectie 4.1.2).
Een belangrijke optimalisatie die werd doorgevoerd is dat de tryptische peptiden gepooled werden tot het
metapeptidoom van het stoelgangstaal. Hierbij werden alle tryptische peptiden uit alle ge¨ıdentificeerde
eiwitfragmenten in het stoelgangsstaal gesorteerd en ontdubbeld, om te vermijden dat de laagste gemeenschappelijke voorouder meerdere keren moest opgezocht worden voor dezelfde tryptische peptide.
Er werden in totaal 1.685.564 (fragmenten van) tryptische peptiden met een lengte tussen 5 en 50 residu’s gevonden in de eiwitfragmenten die in het staal ge¨ıdentificeerd werden, waarvan er na ontdubbeling 1.137.242 overbleven. Dat betekent dus een reductie van 32.5%. In de toekomst zal verder moeten
onderzocht worden of een dergelijke pooling rechtstreeks moet ingebouwd worden in de Unipept commandolijninterface en of de pooling in zijn huidige vorm u¨ berhaupt nog zinvol is wanneer alternatieve
indexstructuren gebruikt worden (met aangepaste caching) en meerdere instanties van de Unipept API
en de Unipept databank/index kunnen aangesproken worden. Het alfabtisch sorteren van de tryptische
peptiden heeft als neveneffect dat de databank hierdoor lokaler, en dus sneller, de volgende peptide kan
opzoeken in de index. Of de tijdswinst die hierdoor kan geboekt worden opweegt tegenover de extra tijd
die nodig is voor het sorteren van de peptiden, moet ook verder onderzocht worden.
In ieder geval werd op basis van deze case studie reeds ondersteuning voor het FASTA formaat ingebouwd in de Unipept commandolijninterface. De commando’s detecteren of de lijst van eiwitfragmenten
of taxa in de invoer gegeven worden als e´ e´ n fragment of taxon per regel of in FASTA formaat. Indien
dit laatste het geval is, dan worden de resultaten in de uitvoer ook opgemaakt in het FASTA formaat,
waarbij de FASTA hoofding uit de invoer wordt overgenomen. De hoofding groepeert immers de peptidefragmenten die in hetzelfde eiwitfragment gevonden werden. Deze informatie is belangrijk, omdat de
taxonomische identificaties die bepaald werden voor de tryptische peptiden in het metapeptidoom, finaal
terug moeten gebundeld worden per DNA- of eiwitfragment.
In het huidige prototype van de Unipept Shotgun Metagenomics Analysis Pipeline werd voor de taxonomische identificatie van de DNA fragmenten gekozen voor een implementatie van scenario C uit sectie 4.2.1.2. Daarbij gebeurt de eerste samenvattende taxonomische toewijzing (C1 ) door het bepalenvan
de laagste gemeenschappelijke voorouder voor alle tryptische peptiden in het metapeptidoom. Deze
informatie werd immers reeds voorgerekend en opgeslagen in de Unipept databank. Voor de tweede
samenvattende toewijzing (C2 ) werden de taxonomische identificaties per tryptische peptide gebundeld
per DNA fragment, zodat het DNA fragment taxonomisch ge¨ıdentificeerd kon worden via de consensusbepaling die besproken werd in sectie 4.2.1.3. Hiervoor werd een Python script geschreven, waarbij ook
79
4.2 Metagenoomanalyse van de biodiversiteit in omgevingsstalen
de voorgestelde weging op basis van de lengte van de peptiden ge¨ımplementeerd werd.
De voorzieningen voor data-analyse en visualisatie van de resultaten zijn voorlopig vrij rudimentair uitgewerkt. Uit een interactieve boomvoorstelling van de biodiversiteit in het stoelgangstaal van pati¨ent
F7T1Ob (Figuur 4.15) bleek dat de Unipept Shotgun Metagenomics Analysis Pipeline een vrij gedetailleerd beeld schetst van de organismen die in het staal aangetroffen worden. In grote lijnen komt de
verdeling van de phyla overeen met deze die de EBI Metagenomics Pipeline heeft bekomen op basis van
een identificatie van de 16S rRNA genen die in het staal werden aangetroffen. De resultaten van de biodiversiteitsanalyse die door de Unipept Shotgun Metagenomics Analysis Pipeline gegenereerd worden,
zijn bovendien ook compatibel met de interactieve sunburst en treemap zoals die reeds op de Unipept
website aangeboden worden. Ze kunnen immers ge¨exporteerd worden in hetzelfde JSON formaat (JavaScript Object Notation; Figuur 4.16) dat zowel gebruikt wordt voor de visualisatie van de interactieve
boomvoorstelling (Figuur 4.15), de sunburst en de treemap. In de toekomst zullen deze hulpmiddelen dus
ook kunnen aangeboden worden om de complexe samenstellingen van omgevingsstalen te onderzoeken
op basis van een analyse van metagenomics experimenten.
4.2.2.2
Vergelijkende analyse van stoelgangstalen: mager vs. obees
De metagenomics dataset van het stoelgangstaal waarvan de biodiversiteitsanalyse in voorgaande sectie
in detail werd besproken, maakt deel uit van een grotere studie (project SRP000319 in het publieke
archief van EBI Metagenomics) waar in totaal 18 stoelgangstalen aan een metagenomics analyse onderworpen werden [26]. In deze studie werden de fecale microbi¨ele geneemschappen gekarakteriseerd
van zes volwassen vrouwelijke eeneiige (monozygote) en twee-eiige (dizygote) tweelingparen die leden
aan magerzucht of obesitas, samen met die van hun moeder. De tweelingen werden geselecteerd uit
de MOAFT cohorte, bestaande uit vrouwelijke tweelingparen van hetzelfde geslacht die ge¨ıdentificeerd
werden in de geboorteaktes van Missouri (VSA) in de periode 1994-1999. De tweelingen hadden toen
een mediane leeftijd van 15 jaar.
De Unipept API werd ook gebruikt voor een biodiversiteitsanalyse van al deze stoelgangstalen. De
workflow van de Unipept Shotgun Metagenomics Analysis Pipeline die in de vorige sectie werd gebruikt
voor de analyse van e´ e´ n enkel stoelgangstaal (Figuur 4.14), werd uitgebreid om alle stalen van een project
uit het publieke archief van EBI Metagenomics in e´ e´ n keer te analyseren (Figuur 4.17). De belangrijkste
optimalisatie is dat de tryptische peptiden die uit de voorspelde eiwitten onttrokken worden nu niet
gepooled worden tot e´ e´ n metapeptidoom per staal, maar tot e´ e´ n enkel metapeptidoom voor het volledige
project. Dit levert een nog grotere winst op, omdat de stalen uit eenzelfde project doorgaans van een
80
4.2 Metagenoomanalyse van de biodiversiteit in omgevingsstalen
Figuur 4.15: Snapshot van een interactieve boomvoorstelling met de resultaten van de biodiversiteitsanalyse op de metagenomics dataset van pati¨ent F7T1Ob uit de studie van Turnbaugh et al. [26]. De focus
van de weergave ligt op het phylum Firmicutes. Percentages bij de taxa geven aan hoeveel DNA fragmenten specifiek aan het taxon of e´ e´ n van zijn subtaxa konden toegewezen worden, en corresponderen
ook met de kleurgradi¨ent die gebruikt werd om de taxa in te kleuren: lichtgeel (0%) – rood (100%).
81
4.2 Metagenoomanalyse van de biodiversiteit in omgevingsstalen
{
"id":1,
"name":"cellular organism",
"data":{"weight":1.0000},
"children": [{
"id":2157,
"name":"Archaea",
"data":{"weight":0.0010},
"children": [...]
}, {
"id":2,
"name":"Bacteria",
"data":{"weight":0.7231},
"children": [{
"id":201174,
"name":"Actinobacteria",
"data":{"weight":0.0324},
"children": [...]
}, {
"id":68336,
"name":"Bacteroidetes/Chlorobi group",
"data":{"weight":0.3999},
"children": [...]
}, {
"id":51290,
"name":"Chlamydiae/Verrucomicrobia group",
"data":{"weight":0.0003},
"children": [...]
}, {
"id":2759,
"name":"Eukaryota",
"data":{"weight":0.0365},
"children": [...]
}, {
"id":10239,
"name":"Viruses",
"data":{"weight":0.0013},
"children": [...]
}]
}
Figuur 4.16: Gewogen boomstructuur die resulteert na biodiversiteitsanalyse op de metagenomics dataset van pati¨ent F7T1Ob uit de studie van Turnbaugh et al. [26]. De gewogen boomstructuur kan op een
natuurlijke manier voorgesteld worden in JavaScript Object Notation (JSON) formaat. Hierbij werden
een aantal deelbomen weggesnoeid (aangeduid met . . . ) om het voorbeeld in te korten. Deze voorstelling in JSON formaat wordt gebruikt voor de interactieve grafische weergave van de resultaten als een
82
boomstructuur (Figuur 4.15), sunburst en treemap.
4.2 Metagenoomanalyse van de biodiversiteit in omgevingsstalen
join
sample
prot2pept
peptfilter
meta
peptidome
prot2pept2lca
biodiversity
distribution
data analysis
&
visualization
biodiversity
distribution
data analysis
&
visualization
join
prot2pept
sample
peptfilter
meta
peptidome
pept2lca
Uniprot
prot2pept2lca
uniq
meta
peptidome
Unipept
pept2lca
taxonomy
NCBI
Taxonomy
Unipept
join
lca2taxa
Figuur 4.17: Schematische voorstelling van de Unipept Shotgun Metagenomics Analysis Pipeline voor
de verwerking van alle stalen van een project dat gedownload werd uit het publieke archief van EBI
Metagenomics.
gelijkaardige omgeving afkomstig zijn, of van dezelfde omgeving waarin op verschillende tijdstippen
staalnames gedaan werden. Omdat de microbi¨ele gemeenschappen in de stalen hierdoor vrij gelijkaardig
zullen zijn, kan verwacht worden dat heel wat gemeenschappelijke tryptische peptiden zullen kunnen
onttrokken worden uit de stalen, bovenop de duplicate tryptische peptiden die we reeds binnen eenzelfde
hadden waargenomen.
Er werden in totaal 49.684.766 (fragmenten van) tryptische peptiden met een lengte tussen 5 en 50 residu’s gevonden in de 9.427.017 eiwitfragmenten die in alle stalen samen ge¨ıdentificeerd werden. Als
we deze tryptische peptiden bundelen tot e´ e´ n metapeptidoom per staal, dan moeten er in totaal nog
30.255.191 tryptische peptiden verwerkt worden. Dit levert dus een reductie van 39.1 op%, wat vergelijkbaar is met de reductie die we in de vorige sectie hadden bekomen voor e´ e´ n enkel staal uit deze
studie. Als we echter alle tryptische peptiden bundelen tot e´ e´ n enkel metapeptidoom voor het volledige
project, dan moeten er in total nog 20.799.996 tryptische peptiden verwerkt worden. Dat betekent dus
een reductie van 58.1%. Opnieuw zal deze poolingstrategie herbekeken moeten worden in het licht van
83
4.2 Metagenoomanalyse van de biodiversiteit in omgevingsstalen
gewijzigde caching en nieuwe parallelliseringsstrategie¨en als het mogelijk wordt om meerdere instanties
van de Unipept API en de Unipept databank/index aan te spreken. Het opzoeken van de laagste gemeenschappelijk voorouders voor het metapeptidoom van het volledige project nam op helios.ugent.be
(Unipept API op de Unipept testserver scruffy.ugent.be aangesproken over UGentNet) in totaal
5 uur en 42 minuten in beslag.
Overeenkomstig met een observatie die gemaakt werd in de originele studie, valt er op basis van de biodiversiteit in de stalen geen onderscheid te maken tussen de magere en obese populaties, maar worden de
pati¨enten op basis van hun biodiversiteitsprofielen wel gegroepeerd per familie (Figuur 4.18). Dit is zelfs
het geval voor verwanten die al jaren op duizenden kilometer afstand van elkaar wonen. Tabel 4.1 bevat
een gedetailleerd overzicht van de percentages van het aantal DNA fragmenten die werden toegekend
aan de taxa op de eerste twee niveau’s in de Unipept Taxonomy (superkingdom en phylum). Figuur 4.19
stelt de biodiversiteit in de stalen grafisch voor als een reeks bar charts. Uit de tabel leiden we af dat
16.5%±3.2% van de DNA fragmenten taxonomisch niet konden ge¨ıdentificeerd worden, omdat er geen
enkel eiwit in Uniprot een tryptische peptide uit het DNA fragment bevat. Voor 21.61%±3.33% van de
DNA fragmenten werden de tryptische peptiden in minstens twee superkingdoms teruggevonden, waardoor de biodiversiteitsanalyse deze fragmenten enkel aan de wortel van de Unipept Taxonomy kon toewijzen. Voorts zien we dat 58.54%±6.63% van de DNA fragmenten specifiek konden toegewezen worden aan het superkingdom Bacteria, 3.01%±0.55% aan het superkingdom Eukaryota en 0.26%±0.20%
aan het superkingdom Archaea, 0.09%±0.017% aan het superkingdom Viruses.
4.2.2.3
Vergelijkende analyse van stoelgangstalen: borstvoeding vs. flesvoeding
We hebben dezelfde opstelling van de Unipept Shotgun Metagenomics Analysis Pipeline als in sectie 4.2.2.2 ook gebruikt voor de analyse van de metagenomics datasets uit de studie van Schwartz et al.
[27]. Deze datasets kunnen gedownload worden als project ERP001038 in het publieke archief van EBI
Metagenomics. In deze studie werd de stoelgang van twaalf baby’s onderzocht. Alle baby’s waren drie
maanden oud op het moment van staalname. Zes baby’s (baby 1–6) hadden enkel borstvoeding gekregen,
terwijl de andere baby’s (baby 7–12) enkel flesvoeding hadden gekregen.
Voor het genereren van de metagenomics datasets werd 454 GS Junior pyrosequenering gebruikt. In alle
stalen samen werden in totaal 1.738.373 eiwitfragmenten ge¨ıdentificeerd, na filtering en genpredictie
(FragGeneScan) door de EBI Metagenomics Pipeline. Daaruit werden in totaal 14.756.459 (fragmenten
van) tryptische peptiden met een lengte tussen 5 en 50 residu’s ge¨extraheerd. Als de tryptische peptiden gebundeld worden tot e´ e´ n metagenoom per staal, dan moeten in totaal 7.965.404 peptiden verwerkt
84
46.56
1.05
51.98
1.15
0.04
0.01
0.05
1.98
0.10
0.03
0.01
0.06
2.63
0.15
Proteobacteria
Spirochaetes
0.03
0.04
0.02
3.26
3.21
0.01
0.03
0.03
0.03
4.19
3.77
0.01
unspecified
0.90
0.01
0.02
1.05
0.01
0.03
0.10
0.03
0.11
0.03
Retroviridae
unspecified
22.59
18.38
unidentified
0.15
F1MOv
17.02
22.12
0.01
0.01
0.06
0.12
0.52
0.34
0.02
0.01
0.01
0.02
0.01
0.74
0.04
0.07
0.01
0.01
0.64
0.01
0.03
0.02
0.01
0.00
0.01
0.03
0.07
0.00
2.64
2.75
0.02
0.02
0.01
0.10
4.76
0.04
0.01
0.04
21.14
0.03
0.02
0.11
0.03
0.03
28.23
0.01
0.57
57.96
0.00
0.01
0.11
0.03
0.10
F2T1Le
10.03
12.63
0.01
0.00
0.02
0.05
0.35
0.24
0.01
0.00
0.00
0.01
0.00
0.50
0.03
0.05
0.00
0.01
0.45
0.00
0.03
0.01
0.00
0.00
0.00
0.02
0.05
0.00
1.81
1.76
0.01
0.01
0.01
0.06
2.40
0.02
0.01
0.03
11.03
0.02
0.01
0.08
0.01
0.02
58.83
0.01
1.05
75.38
0.00
0.00
0.07
0.02
15.84
19.25
0.02
0.01
0.02
0.09
0.53
0.36
0.02
0.00
0.01
0.02
0.00
0.81
0.04
0.08
0.01
0.01
0.65
0.01
0.03
0.01
0.01
0.00
0.01
0.03
0.08
0.01
2.75
2.74
0.01
0.02
0.01
0.10
1.71
0.03
0.01
0.03
43.21
0.02
0.02
0.11
0.02
0.17
12.28
0.01
1.40
61.92
0.00
0.01
0.11
0.03
0.15
F2T2Le
met onderzochte pati¨enten, aangeduid met een code die werd overgenomen uit de originele studie.
de eerste twee niveau’s in de Unipept Taxonomy (superkingdom en phylum). Kolommen corresponderen
Waarden drukken percentages uit van het aantal DNA fragmenten die toegekend werden aan de taxa op
Tabel 4.1: Biodiversiteit in 18 stoelgangstalen uit de metagenomics studie van Turnbaugh et al. [26].
0.01
0.02
26.81
0.01
0.01
25.50
unspecified
Viruses
Caudovirales
0.02
0.44
0.61
0.02
0.52
0.74
Trichomonadida
Viridiplantae
unspecified
0.01
0.01
0.02
0.01
Phaeophyceae
Pythiales
Metazoa
Pelagophyceae
0.08
0.05
0.09
0.06
Intramacronucleata
Kinetoplastida
Peronosporales
0.81
0.01
0.01
0.89
0.01
0.01
Fungi
Heterolobosea
Hexamitidae
0.02
0.03
0.01
0.02
0.03
0.01
Cryptophyta
Dictyosteliida
0.00
0.01
0.05
0.02
Blastocystis
Choanoflagellida
Entamoeba
0.09
0.04
0.01
0.09
0.04
0.01
Apicomplexa
Bacillariophyta
Bangiophyceae
Acanthamoeba
Eukaryota
Synergistetes
Tenericutes
Thermotogae
Fusobacteria
Nitrospirae
Planctomycetes
0.02
0.03
11.86
Deinococcus/Thermus group
Fibrobacteres/Acidobacteria group
Firmicutes
0.03
0.03
0.16
0.05
0.19
Chloroflexi
Cyanobacteria
0.04
0.40
23.15
0.01
27.43
0.01
2.73
Chlamydiae/Verrucomicrobia group
Bacteroidetes/Chlorobi group
Aquificae
17.43
Actinobacteria
Bacteria
0.67
0.01
0.01
0.19
0.01
0.01
Euryarchaeota
Thaumarchaeota
0.73
0.04
0.25
F1T1Le
0.05
F1T2Le
unspecified
Crenarchaeota
Archaea
taxon
0.15
F2MOb
21.81
15.02
14.71
0.02
0.01
0.02
0.10
0.61
0.42
0.03
0.01
0.01
0.03
0.01
0.96
0.05
0.09
0.01
0.01
0.74
0.01
0.05
0.02
0.01
0.00
0.01
0.03
0.09
0.01
3.23
3.27
0.02
0.03
0.03
0.11
2.05
0.06
0.01
0.04
26.34
0.03
0.02
0.15
0.03
0.06
26.23
0.02
1.11
59.64
0.02
0.01
0.14
0.03
0.19
F3T1Le
19.31
0.01
0.01
0.02
0.08
0.52
0.34
0.02
0.01
0.01
0.02
0.01
0.75
0.05
0.07
0.00
0.01
0.66
0.01
0.03
0.02
0.02
0.00
0.01
0.03
0.08
0.01
2.70
2.63
0.02
0.02
0.02
0.08
2.17
0.03
0.01
0.03
23.53
0.02
0.01
0.12
0.02
0.24
33.07
0.01
1.00
63.06
0.00
0.01
0.10
0.03
0.20
F3T2Le
15.04
21.90
0.02
0.01
0.03
0.09
0.62
0.43
0.02
0.01
0.01
0.02
0.01
0.92
0.05
0.08
0.01
0.01
0.79
0.01
0.03
0.02
0.01
0.00
0.01
0.03
0.09
0.01
3.23
3.29
0.02
0.03
0.03
0.11
2.32
0.04
0.01
0.04
29.87
0.03
0.02
0.16
0.03
0.25
20.77
0.02
2.45
59.54
0.01
0.01
0.15
0.04
0.18
F3MOv
13.60
19.64
0.03
0.01
0.02
0.10
0.61
0.38
0.02
0.01
0.01
0.02
0.01
0.85
0.05
0.09
0.01
0.02
0.68
0.01
0.04
0.02
0.01
0.00
0.01
0.03
0.08
0.01
2.98
2.97
0.02
0.02
0.02
0.11
1.91
0.04
0.01
0.05
25.97
0.02
0.02
0.13
0.02
0.70
30.84
0.02
0.61
63.52
0.01
0.01
0.13
0.03
0.14
F7T1Ob
18.08
23.05
0.01
0.01
0.02
0.08
0.60
0.37
0.02
0.01
0.01
0.02
0.01
0.80
0.04
0.10
0.01
0.01
0.87
0.01
0.04
0.02
0.01
0.00
0.01
0.04
0.07
0.01
3.07
2.52
0.01
0.02
0.01
0.07
1.69
0.03
0.01
0.03
14.90
0.03
0.01
0.12
0.02
0.04
34.76
0.01
1.27
55.59
0.00
0.01
0.10
0.03
0.17
F7T2Ob
17.34
22.50
0.01
0.01
0.02
0.08
0.62
0.40
0.02
0.01
0.01
0.02
0.01
0.88
0.05
0.10
0.01
0.01
0.75
0.01
0.04
0.01
0.02
0.00
0.01
0.03
0.09
0.01
3.12
2.75
0.02
0.02
0.02
0.09
2.60
0.04
0.01
0.03
18.80
0.02
0.02
0.13
0.02
0.40
30.68
0.01
1.11
56.79
0.01
0.01
0.12
0.03
0.13
F7MOb
14.72
18.54
0.01
0.01
0.02
0.07
0.48
0.30
0.01
0.01
0.01
0.02
0.01
0.67
0.04
0.07
0.01
0.01
0.59
0.01
0.03
0.01
0.01
0.00
0.01
0.03
0.06
0.01
2.40
2.46
0.02
0.02
0.01
0.08
2.70
0.03
0.01
0.03
20.21
0.02
0.01
0.11
0.02
0.85
36.79
0.01
0.72
64.12
0.00
0.01
0.10
0.02
0.14
F10MOv
17.60
19.72
0.02
0.01
0.02
0.07
0.46
0.31
0.01
0.01
0.01
0.02
0.01
0.67
0.04
0.06
0.01
0.01
0.59
0.01
0.03
0.01
0.01
0.00
0.01
0.03
0.06
0.00
2.37
2.65
0.02
0.02
0.02
0.07
1.35
0.03
0.01
0.02
24.76
0.02
0.01
0.12
0.02
0.04
30.14
0.01
0.78
60.10
0.00
0.01
0.10
0.03
0.18
F15T1Ob
21.51
26.03
0.02
0.01
0.03
0.10
0.60
0.40
0.02
0.01
0.01
0.02
0.01
0.83
0.05
0.08
0.01
0.01
0.81
0.01
0.04
0.02
0.01
0.00
0.01
0.03
0.09
0.01
3.11
3.14
0.01
0.03
0.02
0.10
1.63
0.04
0.01
0.04
28.32
0.03
0.02
0.14
0.02
0.05
8.96
0.01
6.47
49.07
0.00
0.01
0.13
0.03
0.15
F15T2Ob
15.71
19.60
0.01
0.01
0.02
0.08
0.52
0.36
0.01
0.01
0.01
0.02
0.01
0.74
0.04
0.07
0.01
0.01
0.63
0.01
0.03
0.02
0.01
0.00
0.01
0.03
0.07
0.01
2.62
2.69
0.01
0.01
0.01
0.10
1.65
0.03
0.01
0.06
41.84
0.02
0.02
0.11
0.02
0.03
2.38
0.01
12.82
61.84
0.00
0.01
0.11
0.02
0.26
F15MOb
22.33
25.73
0.01
0.01
0.03
0.09
0.62
0.42
0.02
0.01
0.01
0.02
0.01
0.86
0.05
0.08
0.01
0.01
0.74
0.01
0.03
0.02
0.02
0.00
0.01
0.03
0.08
0.01
3.11
3.09
0.02
0.03
0.29
0.09
2.37
0.04
0.01
0.04
17.30
0.03
0.02
0.14
0.03
4.33
10.50
0.02
10.11
48.47
0.01
0.01
0.22
0.03
0.72
F10T1Ob1
14.85
23.85
0.04
0.01
0.03
0.12
0.70
0.48
0.02
0.01
0.01
0.02
0.01
1.05
0.06
0.10
0.01
0.01
1.37
0.01
0.04
0.02
0.02
0.00
0.01
0.04
0.10
0.01
4.15
3.76
0.02
0.04
0.05
0.17
2.29
0.05
0.01
0.05
34.78
0.04
0.02
0.18
0.03
0.14
9.33
0.02
5.30
56.32
0.01
0.02
0.65
0.04
0.65
F10T2Ob1
12.58
20.95
0.02
0.01
0.03
0.10
0.68
0.44
0.02
0.01
0.01
0.02
0.01
0.98
0.06
0.09
0.01
0.01
1.30
0.01
0.03
0.02
0.01
0.00
0.01
0.03
0.09
0.01
3.90
3.29
0.02
0.03
0.03
0.13
2.35
0.05
0.01
0.05
32.98
0.03
0.02
0.16
0.03
0.23
11.29
0.02
11.07
61.83
0.00
0.01
0.59
0.04
4.2 Metagenoomanalyse van de biodiversiteit in omgevingsstalen
85
4.2 Metagenoomanalyse van de biodiversiteit in omgevingsstalen
10
F15T2Ob
F15MOb
F2T2Le
F2T1Le
F3MOv
tweede coördinaat
F2MOb
F3T2Le
F3T1Le
0
F7MOb
F10MOv
F1MOv
F7T2Ob
-10
F15T1Ob
F7T1Ob
F1T1Le
F1T2Le
-20
-30
-20
-10
0
10
20
30
40
eerste coördinaat
Figuur 4.18: Schematische voorstelling van de Unipept Shotgun Metagenomics Analysis Pipeline voor
de verwerking van alle stalen van een project dat gedownload werd uit het publieke archief van EBI
Metagenomics.
worden. Een reductie van 46%. Als echter alle tryptische peptiden gebundeld worden tot e´ e´ n enkel
metapeptidoom voor het volledige project, dan moeten er slechts 6.200.208 peptiden verwerkt worden.
Een reductie van 58%. Het opzoeken van de laagste gemeenschappelijk voorouders voor het metapeptidoom van het volledige project nam op helios.ugent.be (Unipept API op de Unipept testserver
scruffy.ugent.be aangesproken over UGentNet) in totaal 1 uur en 38 minuten in beslag.
Tabel 4.2 bevat een gedetailleerd overzicht van de percentages van het aantal DNA fragmenten die
werden toegekend aan de taxa op de eerste twee niveau’s in de Unipept Taxonomy (superkingdom en
phylum). Figuur 4.20 stelt de biodiversiteit in de stalen grafisch voor als een reeks bar charts. Uit de
tabel leiden we af dat 3.96%±1.81% van de DNA fragmenten taxonomisch niet konden ge¨ıdentificeerd
worden, omdat er geen enkel eiwit in Uniprot een tryptische peptide uit het DNA fragment bevat. Dit is
een heel stuk lager dan de niet-ge¨ıdentificeerde DNA fragmenten in de stoelgangstalen van de tweelingen
die we onderzocht hebben in sectie 4.2.2.2. Vermoedelijk is dit een gevolg van een opkuisstap voorafgaand aan het sequeneren, die selectief was voor microbieel DNA. Voor 8.86%±2.75% van de DNA
fragmenten werden de tryptische peptiden in minstens twee superkingdoms teruggevonden, waardoor de
biodiversiteitsanalyse deze fragmenten enkel aan de wortel van de Unipept Taxonomy kon toewijzen.
Ook dat is een heel stuk lager dan wat we hadden waargenomen in de stoelgangstalen van de tweelingen die we onderzocht hebben in sectie 4.2.2.2. Voorts zien we dat 84.53%±5.02% van de DNA
86
4.2 Metagenoomanalyse van de biodiversiteit in omgevingsstalen
Figuur 4.19: Biodiversiteit in 18 stoelgangstalen uit de metagenomics studie van Turnbaugh et al. [26].
Kolommen corresponderen met onderzochte pati¨enten, aangeduid met een code die werd overgenomen
uit de originele studie. De bovenste figuur geeft de biodiversiteit weer op het hoogste niveau (superkingdom) in de Unipept Taxonomy: niet-ge¨ıdentificeerde fragmenten (donkergrijs), niet nader gespecificeerde organismen (lichtgrijs), Viruses (oranje), Archaea (rood), Eukaryota (groen), Bacteria (blauw).
De onderste figuur geeft de biodiversiteit op het eerste niveau (phylum) onder de bacteri¨en weer: niet nader gespecificeerde bacteri¨en (donkergrijs), Actinobacteria (oranje), Verrucomicrobia (rood), Bacteroi87
detes (groen), Firmicutes (blauw), Proteobacteria (geel), overige bacteri¨en (lichtgrijs).
4.2 Metagenoomanalyse van de biodiversiteit in omgevingsstalen
fragmenten specifiek konden toegewezen worden aan het superkingdom Bacteria, 2.44%±0.67% aan
het superkingdom Eukaryota, 0.13%±0.034% aan het superkingdom Archaea en 0.088%±0.054% aan
het superkingdom Viruses. Dit bevestigt dat het bacteri¨ele DNA selectief gesequeneerd werd.
4.2.2.4
¨ van de Amazone
Vergelijkende analyse van zeewaterstalen: biodiversiteit in continuum
Een laatste metagenomics dataset die we aan de Unipept Shotgun Metagenomics Analysis Pipeline hebben onderworpen, is afkomstig van een reeks staalnames in het continu¨um van de Amazonerivier in de
Atlantische oceaan. We hebben opnieuw dezelfde setup van de metagenomics pipeline gebruikt zoals
beschreven in sectie 4.2.2.2. De resultaten van deze studie werden nog niet gepubliceerd, maar de ruwe
data zijn reeds beschikbaar in het publieke archief van EBI Metagenomics als project SRP039390.
In zes meetstations voor de kust van Guyana, Suriname en Frans-Guyana werden telkens vier stalen
genomen (Figuur 4.21). Tabel 4.3 geeft een overzicht van de beschikbare metadata die de omstandigheden op de meetpunten beschrijven. We hebben deze datasets gekozen omdat we ook eens stalen wilden
analyseren die uit een andere omgeving afkomstig waren dan het menselijke maag-darmkanaal. Volgens
verwachting leven er in mariene omgeving immers heel wat onbekende organismen die nog niet in Uniprot vertegenwoordigd zijn. Bovendien is het aantal DNA fragmenten in de stalen ook een heel stuk
groter dan deze die we hiervoor geanalyseerd hebben. Op die manier konden we ook de robuustheid van
de Unipept API en de Unipept Shotgun Metagenomics Analysis Pipeline eens aan een meer uitgebreide
test onderwerpen.
Voor het genereren van de metagenomics datasets werd Illumina PE 150x150 sequenering uitgevoerd.
Hiervoor werd hoofdzakelijk gebruik gemaakt van de Illumina Genome Analyzer IIx. Voor drie stalen werd de sequenering uitgevoerd op een Illumina MiSeq (staal ACM23), een IlluminaiSeq M (staal
ACM24) en een Illumina HiSeq 2500 (staal ACM5). In alle stalen samen werden in totaal 84.649.607 eiwitfragmenten ge¨ıdentificeerd, na filtering en genpredictie (FragGeneScan) door de EBI Metagenomics
Pipeline. Daaruit werden in totaal 328.308.870 (fragmenten van) tryptische peptiden met een lengte
tussen 5 en 50 residu’s ge¨extraheerd. Deze tryptische peptiden werden gebundeld tot e´ e´ n enkel metapeptidoom voor het volledige project, dat bestaat uit 165.300.920 tryptische peptiden. Dit leverde voor de
verdere verwerking dus een reductie van 49.7% op.
Het opzoeken van de laagste gemeenschappelijk voorouders voor het metapeptidoom van het project
nam op helios.ugent.be (Unipept API op Unipept testserver scruffy.ugent.be aangesproken over UGentNet) in totaal ongeveer 11 uur in beslag. Dit was veel sneller dan verwacht op basis
88
Archaea
Crenarchaeota
baby 12
baby 11
baby 10
baby 9
baby 8
baby 7
baby 6
baby 5
baby 4
baby 3
baby 2
taxon
baby 1
4.2 Metagenoomanalyse van de biodiversiteit in omgevingsstalen
0.14
0.10
0.19
0.12
0.11
0.09
0.19
0.15
0.12
0.08
0.11
0.13
0.03
0.02
0.02
0.03
0.02
0.01
0.02
0.03
0.01
0.01
0.01
0.03
Euryarchaeota
0.11
0.08
0.16
0.09
0.09
0.07
0.15
0.11
0.09
0.07
0.09
0.09
unspecified
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
Bacteria
Actinobacteria
82.92
86.24
78.26
84.96
87.88
89.40
82.37
84.47
83.76
91.26
90.14
72.67
27.22
63.43
15.22
0.34
22.85
19.06
31.61
50.27
47.82
55.03
72.47
17.21
Aquificae
0.01
0.01
0.00
0.02
0.00
0.00
0.01
0.01
0.01
0.00
0.00
0.01
Bacteroidetes/Chlorobi group
0.42
2.10
0.31
62.86
0.61
47.89
0.42
2.66
0.53
18.90
0.25
0.41
Chlamydiae/Verrucomicrobia group
Chloroflexi
16.80
0.02
0.03
0.03
0.03
0.02
0.04
0.03
4.36
0.02
0.01
0.04
0.03
0.02
0.04
0.02
0.02
0.01
0.02
0.03
0.02
0.01
0.01
0.02
Cyanobacteria
0.12
0.09
0.12
0.10
0.09
0.07
0.13
0.09
0.12
0.06
0.07
0.15
Deinococcus/Thermus group
0.01
0.01
0.03
0.01
0.00
0.01
0.01
0.03
0.03
0.01
0.01
0.02
Fibrobacteres/Acidobacteria group
Firmicutes
0.02
0.02
0.03
0.02
0.02
0.01
0.02
0.02
0.02
0.01
0.01
0.02
33.50
1.67
3.38
7.01
48.91
9.60
34.04
3.56
5.62
8.90
2.42
1.16
Fusobacteria
0.03
0.01
0.02
0.04
0.02
0.01
0.04
0.01
0.02
0.01
0.01
0.03
Nitrospirae
0.01
0.00
0.01
0.00
0.01
0.00
0.01
0.00
0.01
0.00
0.00
0.00
Planctomycetes
0.04
0.04
0.05
0.03
0.02
0.02
0.03
0.05
0.04
0.03
0.01
0.04
Proteobacteria
2.90
17.61
56.64
13.11
13.92
11.64
13.91
25.99
23.37
7.39
13.83
52.14
Spirochaetes
0.07
0.06
0.06
0.08
0.05
0.06
0.08
0.05
0.07
0.03
0.03
0.06
Synergistetes
0.01
0.01
0.02
0.01
0.01
0.00
0.02
0.02
0.01
0.00
0.01
0.01
Tenericutes
0.02
0.01
0.01
0.02
0.01
0.01
0.03
0.02
0.01
0.01
0.01
0.01
Thermotogae
0.01
0.01
0.01
0.02
0.01
0.01
0.01
0.01
0.01
0.00
0.00
0.01
unspecified
1.67
1.11
2.25
1.20
1.27
0.95
1.92
1.61
1.66
0.82
0.97
1.31
2.86
2.10
2.85
2.57
2.09
1.85
2.76
2.37
2.65
1.62
1.49
4.07
0.00
0.02
0.02
0.00
0.01
0.01
0.01
0.01
0.01
0.01
0.01
0.01
Eukaryota
Acanthamoeba
Apicomplexa
0.07
0.05
0.07
0.09
0.05
0.05
0.08
0.05
0.06
0.04
0.04
0.08
Bacillariophyta
0.03
0.02
0.04
0.02
0.02
0.02
0.03
0.03
0.03
0.01
0.01
0.03
Choanoflagellida
0.01
0.01
0.02
0.01
0.01
0.00
0.02
0.02
0.02
0.01
0.01
0.01
Cryptophyta
0.01
0.01
0.02
0.02
0.01
0.01
0.02
0.02
0.02
0.02
0.01
0.02
Dictyosteliida
0.03
0.01
0.02
0.03
0.02
0.02
0.03
0.02
0.03
0.02
0.01
0.03
Fungi
0.74
0.46
0.71
0.61
0.52
0.45
0.64
0.59
0.69
0.41
0.41
0.64
Heterolobosea
0.01
0.01
0.02
0.01
0.01
0.01
0.01
0.01
0.01
0.01
0.00
0.01
Hexamitidae
0.01
0.01
0.00
0.01
0.00
0.01
0.01
0.01
0.01
0.00
0.00
0.01
Intramacronucleata
0.08
0.03
0.03
0.08
0.06
0.04
0.08
0.03
0.05
0.03
0.02
0.07
Kinetoplastida
0.05
0.04
0.06
0.03
0.03
0.03
0.04
0.05
0.06
0.03
0.02
0.06
Metazoa
0.79
0.62
0.76
0.76
0.61
0.55
0.78
0.66
0.73
0.48
0.39
1.89
Pelagophyceae
0.01
0.01
0.02
0.00
0.01
0.00
0.01
0.01
0.01
0.01
0.00
0.01
Perkinsida
0.01
0.00
0.01
0.01
0.00
0.00
0.01
0.01
0.01
0.01
0.00
0.01
Peronosporales
0.02
0.02
0.02
0.01
0.01
0.01
0.01
0.02
0.03
0.01
0.01
0.02
Phaeophyceae
0.01
0.01
0.01
0.01
0.01
0.00
0.01
0.01
0.02
0.01
0.01
0.01
Trichomonadida
0.02
0.01
0.01
0.01
0.01
0.01
0.02
0.01
0.01
0.01
0.00
0.02
Viridiplantae
0.39
0.27
0.47
0.31
0.24
0.22
0.36
0.34
0.35
0.21
0.17
0.43
unspecified
0.56
0.47
0.51
0.52
0.42
0.36
0.55
0.43
0.50
0.30
0.34
0.67
Viruses
Adenoviridae
0.10
0.06
0.13
0.09
0.24
0.04
0.12
0.08
0.06
0.03
0.04
0.07
0.00
0.00
0.00
0.00
0.00
0.00
0.02
0.00
0.00
0.00
0.00
0.00
Caudovirales
0.04
0.02
0.08
0.03
0.19
0.01
0.06
0.04
0.02
0.01
0.01
0.03
Retroviridae
0.01
0.01
0.01
0.00
0.01
0.01
0.00
0.01
0.01
0.01
0.01
0.01
0.00
0.00
0.01
0.02
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
unspecified
10.11
8.01
13.37
8.62
6.88
5.89
10.47
9.50
9.72
4.71
5.45
13.62
unidentified
3.87
3.49
5.21
3.64
2.79
2.73
4.10
3.45
3.69
2.29
2.78
9.44
unspecified
Tabel 4.2: Biodiversiteit in 12 stoelgangstalen uit de metagenomics studie van Schwartz et al. [27].
Waarden drukken percentages uit van het aantal DNA fragmenten die toegekend werden aan de taxa op
de eerste twee niveau’s in de Unipept Taxonomy (superkingdom en phylum). Kolommen corresponderen
met onderzochte baby’s, aangeduid met een code die werd overgenomen uit de originele studie. De eerste
zes kolommen corresponderen met de baby’s die borstvoeding kregen, de laatste zes kolommen met de
baby’s die flesvoeding kregen.
89
4.2 Metagenoomanalyse van de biodiversiteit in omgevingsstalen
borstvoeding
flesvoeding
Figuur 4.20: Biodiversiteit in 12 stoelgangstalen uit de metagenomics studie van Schwartz et al. [27].
Kolommen corresponderen met onderzochte baby’s, aangeduid met een code die werd overgenomen uit
de originele studie. De eerste zes kolommen corresponderen met de baby’s die borstvoeding kregen, de
laatste zes kolommen met de baby’s die flesvoeding kregen. De bovenste figuur geeft de biodiversiteit
weer op het hoogste niveau (superkingdom) in de Unipept Taxonomy: niet-ge¨ıdentificeerde fragmenten
(donkergrijs), niet nader gespecificeerde organismen (lichtgrijs), Viruses (oranje), Archaea (rood), Eukaryota (groen), Bacteria (blauw). De onderste figuur geeft de biodiversiteit op het eerste niveau (phylum)
onder de bacteri¨en weer: niet nader gespecificeerde bacteri¨en (donkergrijs), Actinobacteria (oranje), Verrucomicrobia (rood), Bacteroidetes (groen), Firmicutes (blauw), Proteobacteria (geel), overige bacteri¨90
en
(lichtgrijs).
4.2 Metagenoomanalyse van de biodiversiteit in omgevingsstalen
Figuur 4.21: Meetstations in het continu¨um van de Amazonerivier in de Atlantische oceaan waar stalen
werden genomen. In elk meetstation werden vier staalnames uitgevoerd die aan een shotgun metagenomics sequenering onderworpen werden. Dit heeft in totaal 24 metagenomics datasets opgeleverd.
91
station 27
ACM55
ACM56
4.47
4.47
4.26
4.26
3.89
3.89
3.76
3.76
3.64
3.64
3.93
3.93
4.47
4.47
4.26
4.26
3.64
3.64
3.76
3.76
3.93
3.93
3.89
3.89
−54.51
−51.36
−51.36
−52.22
−52.22
−53.00
−53.00
−54.42
−54.42
−56.43
−56.43
−54.51
−54.51
−51.36
−51.36
−54.42
−54.42
−53.00
−53.00
−56.43
−56.43
−52.22
−52.22
4.88
4.88
12.41
12.41
7.29
7.29
10.68
10.68
11.31
11.31
10.29
10.29
4.88
4.88
10.68
10.68
7.29
7.29
11.31
11.31
12.41
12.41
latitude
−54.51
longitude
10.29
depth (m)
10.29
collection date/time
21/06/2010 9:28
21/06/2010 8:43
18/06/2010 9:30
18/06/2010 8:45
26/05/2010 10:00
26/05/2010 10:00
16/06/2010 8:06
16/06/2010 10:15
5/06/2010 8:50
5/06/2010 7:49
25/05/2010 8:39
25/05/2010 7:10
18/06/2010 8:45
18/06/2010 7:57
16/06/2010 10:15
16/06/2010 8:06
26/05/2010 8:23
26/05/2010 9:10
21/06/2010 7:55
21/06/2010 8:43
5/06/2010 8:50
5/06/2010 7:49
25/05/2010 7:55
25/05/2010 7:55
minimum filter size (µm)
2
0.2
2
0.2
2
0.2
2
0.2
2
0.2
2
0.2
2
0.2
2
0.2
2
0.2
0.2
2
0.2
2
0.2
2
maximum filter size (µm)
156
2
156
2
156
2
156
2
156
2
156
2
156
2
156
2
156
2
2
156
2
156
2
156
10.8
volume of sample (L)
12.8
13.4
5.05
9.8
10.4
10.4
10.0
10.8
4.8
5.2
11.1
4.85
4.85
9.4
10.8
10.0
10.4
10.2
10.0
10.1
4.8
5.2
10.8
16.11
16.11
78.48
78.48
139.68
139.68
79.80
79.80
327.96
327.96
112.48
112.48
78.48
78.48
79.80
79.80
139.68
139.68
16.11
16.11
327.96
327.96
112.48
112.48
bacterial carbon production (pmol leu/L/hr)
waar staalnames werden gedaan in het continu¨um van de Amazonerivier in de Atlantische oceaan.
density (kgm−2 )
2005
2005
1023.05
1775
1775
1846
1846
1576
1576
1373
1373
1802
1802
1775
1775
1576
1576
1846
1846
2005
2005
1373
1373
1802
1802
dissolved inorganic carbon (µmol/kg)
1023.05
1019.66
1019.66
1018.98
1018.98
1015.64
1015.64
1012.65
1012.65
1019.80
1019.80
1019.66
1019.66
1015.64
1015.64
1018.98
1018.98
1023.05
1023.05
1012.65
1012.65
1019.80
1019.80
Tabel 4.3: Overzicht van de beschikbare metadata die de omstandigheden beschrijven in de meetstations
station 25
station 27
ACM54
station 3
station 25
ACM53
ACM40
ACM41
station 23
station 3
ACM39
station 10
station 23
ACM38
ACM36
ACM37
station 2
station 10
ACM25
station 25
station 2
ACM24
ACM22
ACM23
station 23
station 25
ACM21
station 3
station 23
ACM20
ACM18
ACM19
station 27
station 3
ACM6
station 10
station 27
station 10
ACM3
ACM5
station 2
ACM4
station 2
ACM2
sampling site
ACM1
sample ID
196.25
dissolved oxygen (µmol/kg)
188.39
188.39
213.84
213.84
188.26
188.26
194.25
194.25
251.56
251.56
196.25
196.25
213.84
213.84
194.25
194.25
188.26
188.26
188.39
188.39
251.56
251.56
196.25
fluorescence (mgm−3 )
0.01
0.01
0.99
0.99
0.28
0.28
0.16
0.16
7.25
7.25
0.61
0.61
0.99
0.99
0.16
0.16
0.28
0.28
0.01
0.01
7.25
7.25
0.61
0.61
oxygen saturation (%)
96.95
96.95
108.60
108.60
94.43
94.43
95.39
95.39
120.81
120.81
98.70
98.70
108.60
108.60
95.39
95.39
94.43
94.43
96.95
96.95
120.81
120.81
98.70
98.70
photosynthetically active radiation (µEm−2 sec−1 )
80.36
80.36
73.71
73.71
65.38
65.38
27.94
27.94
22.08
22.08
16.71
16.71
73.71
73.71
27.94
27.94
65.38
65.38
80.36
80.36
22.08
22.08
16.71
16.71
potential density
23.04
23.04
19.65
19.65
18.97
18.97
15.62
15.62
12.63
12.63
19.78
19.78
19.65
19.65
15.62
15.62
18.97
18.97
23.04
23.04
12.63
12.63
19.78
19.78
pressure (Db)
3.92
3.92
3.95
3.95
3.78
3.78
3.66
3.66
4.28
4.28
4.50
4.50
3.95
3.95
3.66
3.66
3.78
3.78
3.92
3.92
4.28
4.28
4.50
4.50
salinity (practical salinity units)
36.03
36.03
31.87
31.87
30.80
30.80
26.49
26.49
22.55
22.55
31.80
31.80
31.87
31.87
26.49
26.49
30.80
30.80
36.03
36.03
22.55
22.55
31.80
31.80
temperature (◦ C)
28.40
28.40
29.21
29.21
28.85
28.85
29.22
29.22
29.36
29.36
28.63
28.63
29.21
29.21
29.22
29.22
28.85
28.85
28.40
28.40
29.36
29.36
28.63
28.63
turbidity (NTU)
1.07
1.07
1.23
1.23
1.12
1.12
1.10
1.10
3.02
3.02
1.17
1.17
1.23
1.23
1.10
1.10
1.12
1.12
1.07
1.07
3.02
3.02
1.17
1.17
4.2 Metagenoomanalyse van de biodiversiteit in omgevingsstalen
92
4.2 Metagenoomanalyse van de biodiversiteit in omgevingsstalen
van de voorgaande analyses, wat is toe te schrijven aan twee oorzaken. Voor grotere datasets zullen
opeenvolgende peptiden in de gesorteerde lijst van tryptische peptiden in het metapeptidoom gemiddeld
gezien een langere gemeenschappelijke prefix hebben dan voor kleinere datasets. Hierdoor kan de index
van de databank beter gebruik maken van lokaliteit tijdens het opzoeken. Een belangrijkere oorzaak
is echter dat het aantal tryptische peptiden die in Uniprot konden teruggevonden worden een heel stuk
kleiner is dan voor de stalen van het menselijke maag-darmkanaal. Dit was te verwachten, aangezien
mariene omgevingen heel wat minder ontgonnen zijn dan het menselijk lichaam, en er daar dus een grote
biodiversiteit is die nog niet vertegenwoordigd is in Uniprot.
Tabel 4.4 bevat een gedetailleerd overzicht van de percentages van het aantal DNA fragmenten die
werden toegekend aan de taxa op de eerste twee niveau’s in de Unipept Taxonomy (superkingdom en
phylum). Figuur 4.22 stelt de biodiversiteit in de stalen grafisch voor als een reeks bar charts.
Uit de tabel leiden we af dat 34.53%±5.76% van de DNA fragmenten taxonomisch niet konden ge¨ıdentificeerd
worden, omdat er geen enkel eiwit in Uniprot een tryptische peptide uit het DNA fragment bevat. Dit
is een flink stuk hoger dan wat we bij de stoelgangstalen gezien hadden (secties 4.2.2.2 en 4.2.2.3), wat
aangeeft dat er in onze oceanen nog heel wat organismen leven die nog niet in Uniprot vertegenwoordigd zijn. Merk ook op dat de verhouding ge¨ıdentificeerde/niet-ge¨ıdentificeerd fragmenten voor het staal
ACM 55 een stuk hoger ligt dan de andere stalen. Dat zou kunnen toegeschreven worden aan het feit
dat het protocol voor staalname of sequenering voor dit staal een stuk beter was dan dat voor de andere
stalen. Om dat verder uit te zoeken, ontbreken echter voorlopig de nodige gegevens voor deze studie.
Voor 38.13%±2.51% van de DNA fragmenten werden de tryptische peptiden in minstens twee superkingdoms teruggevonden, waardoor de biodiversiteitsanalyse deze fragmenten enkel aan de wortel van
de Unipept Taxonomy kon toewijzen. Dat is een flink stuk hoger dan wat we hebben waargenomen
voor de stoelgangstalen (secties 4.2.2.2 en 4.2.2.3). Voorlopig hebben we niet echt een verklaring voor
dit hoge aantal niet-specifieke peptiden, en daarvoor zal verder onderzoek nodig zijn. Voorts zien we
dat 19.17%±7.05% van de DNA fragmenten specifiek konden toegewezen worden aan het superkingdom Bacteria, 7.19%±1.17% aan het superkingdom Eukaryota, 0.36%±0.049% aan het superkingdom
Archaea en 0.61%±0.38% aan het superkingdom Viruses. Verhoudingsgewijs is het aandeel van de
Eukaryota, Archaea en Viruses in zeewater dus een stuk hoger ten opzichte van de Bacteria dan in stoelgang. Maar of dit moet toegeschreven worden aan een natuurlijke balans dan wel aan het protocol voor
staalname en sequenering zal verder onderzoek moeten uitwijzen.
93
1.22
0.03
1.46
1.20
0.02
0.99
Chlamydiae/Verrucomicrobia group
0.08
0.00
0.07
0.13
0.00
0.02
0.19
0.08
0.02
0.21
0.16
0.00
0.02
0.04
0.05
39.95
28.54
0.02
42.37
33.01
unspecified
unspecified
unidentified
0.01
31.52
41.94
0.03
0.03
0.07
0.41
SRS565995
26.53
35.64
0.06
0.02
0.01
0.00
0.01
0.01
0.43
0.61
1.32
0.90
0.04
0.02
0.03
0.00
0.05
0.02
0.02
1.83
0.10
0.00
0.18
0.01
0.02
0.03
1.52
0.00
0.00
0.02
0.00
0.07
0.04
0.03
0.02
0.07
0.18
0.01
0.02
6.56
3.95
0.03
0.05
0.03
0.17
12.69
0.12
0.02
0.06
1.62
0.06
0.00
0.09
0.02
8.91
0.05
0.13
1.20
0.03
0.98
30.25
0.04
0.02
0.28
0.04
37.96
39.84
35.91
30.45
met de onderzochte waterstalen, aangeduid met de sample name en sample ID die werden overgenomen
de eerste twee niveau’s in de Unipept Taxonomy (superkingdom en phylum). Kolommen corresponderen
Waarden drukken percentages uit van het aantal DNA fragmenten die toegekend werden aan de taxa op
zonerivier in de Atlantische oceaan (project SRP039390 in het publieke archief van EBI Metagenomics).
uit het EBI Metagenomics archief.
0.02
0.02
0.00
0.01
0.00
0.53
0.70
1.52
0.89
0.04
0.02
0.03
0.00
0.04
0.02
0.03
1.90
0.10
0.00
0.20
0.01
0.02
0.02
1.48
0.00
0.00
0.02
0.01
0.07
0.04
0.03
0.02
0.14
0.18
0.02
0.02
6.88
2.74
0.03
0.05
0.02
0.14
6.46
0.16
0.01
0.04
1.37
0.05
0.00
0.13
0.01
0.89
0.05
0.11
1.14
0.02
0.83
14.29
0.02
0.02
0.23
0.06
0.33
SRS567313
0.07
0.02
0.02
0.00
0.01
0.00
1.06
1.25
1.12
0.96
0.04
0.01
0.02
0.00
0.04
0.01
0.02
1.55
0.08
0.00
0.20
0.01
0.02
0.03
1.30
0.00
0.00
0.02
0.00
0.08
0.03
0.02
0.01
0.05
0.18
0.01
0.01
5.87
3.94
0.04
0.07
0.02
0.17
14.09
0.11
0.02
0.06
1.64
0.05
0.01
0.04
0.02
2.84
0.04
0.14
1.96
0.03
0.77
26.11
0.04
0.07
0.25
0.06
0.43
SRS567311
Tabel 4.4: Biodiversiteit in 24 zeewaterstalen uit de metagenomics studie van het continu¨um van de Ama-
0.00
0.00
0.01
0.04
Microviridae
Phycodnaviridae
Retroviridae
0.14
0.01
0.01
0.01
0.01
0.23
0.01
0.01
0.08
Caudovirales
Flaviviridae
0.31
1.87
1.18
0.04
0.03
0.04
0.00
0.06
0.02
0.03
2.50
Herpesvirales
1.04
1.48
0.45
1.21
unspecified
1.93
Viridiplantae
Viruses
0.27
0.03
0.02
0.04
0.04
0.02
0.05
Phaeophyceae
Pythiales
Trichomonadida
0.02
0.05
0.00
0.02
0.06
0.00
Perkinsida
Peronosporales
2.11
0.02
2.57
0.03
Metazoa
Pelagophyceae
Phaeocystales
0.18
0.00
0.12
0.17
0.19
0.00
0.21
0.00
0.15
Intramacronucleata
Isochrysidales
0.02
0.02
0.03
1.99
0.00
0.00
0.02
0.01
0.07
0.05
0.05
0.02
0.13
0.20
0.02
0.03
8.80
3.30
0.03
0.04
0.03
0.16
6.98
0.20
0.02
0.04
1.54
0.06
0.00
0.29
0.01
1.70
0.07
0.14
1.02
0.02
1.36
17.04
0.01
0.02
0.28
0.07
0.39
SRS565994
Kinetoplastida
0.03
0.02
0.01
0.03
0.02
0.02
Hexamitidae
Heterolobosea
Ichthyosporea
0.00
0.00
1.75
0.00
0.00
2.00
Euglyphida
Florideophyceae
Fungi
0.08
0.00
0.02
0.08
0.01
0.02
Dictyosteliida
Dinophyceae
Entamoeba
0.02
0.04
0.04
0.02
0.04
0.05
Bangiophyceae
Choanoflagellida
Cryptophyta
Albuginales
Apicomplexa
Bacillariophyta
4.42
7.49
0.02
3.17
unspecified
Acanthamoeba
Eukaryota
0.02
0.05
0.03
9.03
0.03
0.06
0.03
0.03
Synergistetes
Tenericutes
Spirochaetes
Thermotogae
0.15
8.77
0.19
0.15
4.87
0.18
Planctomycetes
Proteobacteria
1.74
0.06
0.02
1.65
0.05
0.02
Firmicutes
Fusobacteria
Nitrospirae
Deinococcus/Thermus group
0.06
0.01
0.01
Deferribacteres
Dictyoglomi
0.06
3.99
Fibrobacteres/Acidobacteria group
0.72
0.17
0.07
2.02
Chloroflexi
Cyanobacteria
Actinobacteria
Aquificae
Bacteroidetes/Chlorobi group
0.02
0.02
23.15
0.02
Thaumarchaeota
unspecified
Bacteria
0.01
0.29
14.91
0.42
0.07
0.30
0.08
Archaea
0.40
SRS565747
Crenarchaeota
SRS565748
Euryarchaeota
taxon
0.07
0.35
SRS567886
30.36
36.23
0.07
0.03
0.04
0.00
0.01
0.00
0.33
0.54
1.14
0.75
0.05
0.01
0.02
0.00
0.03
0.01
0.01
1.58
0.07
0.00
0.23
0.01
0.01
0.03
1.31
0.00
0.00
0.02
0.00
0.09
0.03
0.02
0.02
0.05
0.20
0.02
0.01
5.75
3.88
0.04
0.08
0.02
0.18
16.54
0.09
0.02
0.07
1.69
0.05
0.01
0.03
0.02
0.95
0.04
0.13
2.16
0.03
0.70
26.77
0.02
0.02
0.24
0.07
0.38
SRS577849
30.17
38.83
0.08
0.02
0.03
0.00
0.01
0.00
0.36
0.58
1.30
0.81
0.04
0.02
0.02
0.00
0.04
0.02
0.02
1.71
0.10
0.00
0.20
0.01
0.02
0.03
1.45
0.00
0.00
0.02
0.00
0.08
0.04
0.03
0.02
0.07
0.18
0.02
0.02
6.29
4.19
0.03
0.06
0.03
0.18
10.61
0.14
0.02
0.07
1.70
0.06
0.00
0.07
0.02
2.81
0.05
0.72
2.07
0.03
0.85
23.75
0.03
0.02
0.26
0.06
0.41
SRS577850
39.55
35.75
0.06
0.02
0.02
0.00
0.02
0.01
1.01
1.19
1.25
0.91
0.04
0.01
0.02
0.00
0.03
0.01
0.01
1.55
0.08
0.00
0.27
0.01
0.02
0.03
1.24
0.00
0.01
0.02
0.01
0.08
0.03
0.02
0.02
0.33
0.15
0.01
0.01
6.19
3.29
0.03
0.05
0.02
0.16
6.83
0.07
0.01
0.05
1.44
0.04
0.00
0.03
0.01
1.46
0.04
0.10
2.58
0.03
0.61
16.91
0.01
0.12
0.21
0.06
0.32
SRS577852
42.91
38.86
0.03
0.02
0.01
0.00
0.01
0.00
0.27
0.42
1.74
0.91
0.05
0.02
0.02
0.00
0.04
0.02
0.03
2.24
0.10
0.00
0.30
0.01
0.02
0.03
1.55
0.00
0.00
0.03
0.02
0.08
0.04
0.03
0.02
0.18
0.21
0.02
0.02
7.76
2.28
0.03
0.06
0.02
0.15
3.31
0.08
0.01
0.05
1.52
0.04
0.00
0.02
0.01
0.40
0.04
0.09
0.95
0.02
0.60
9.74
0.02
0.02
0.22
0.06
0.27
SRS580495
38.98
35.75
0.04
0.01
0.01
0.00
0.00
0.00
0.07
0.17
2.35
1.49
0.02
0.01
0.03
0.03
0.07
0.03
0.04
2.54
0.07
0.02
0.26
0.01
0.01
0.02
1.71
0.01
0.00
0.01
0.03
0.04
0.05
0.02
0.02
0.11
0.30
0.01
0.01
9.36
3.27
0.01
0.17
0.01
0.10
6.83
0.09
0.01
0.04
1.41
0.03
0.01
0.03
0.01
0.92
0.03
0.58
1.18
0.02
0.67
15.48
0.01
0.01
0.18
0.06
0.33
SRS580498
39.19
41.07
0.03
0.03
0.02
0.00
0.01
0.01
0.10
0.27
1.84
1.69
0.05
0.02
0.03
0.00
0.05
0.02
0.02
2.26
0.12
0.00
0.31
0.01
0.02
0.03
1.71
0.00
0.00
0.02
0.01
0.08
0.04
0.03
0.02
0.10
0.21
0.02
0.02
8.76
2.34
0.03
0.06
0.02
0.16
3.68
0.11
0.01
0.05
1.51
0.04
0.00
0.03
0.01
0.50
0.04
0.08
0.95
0.02
0.71
10.39
0.01
0.02
0.23
0.07
0.33
SRS580499
36.29
36.46
0.05
0.03
0.02
0.00
0.00
0.01
0.18
0.36
1.23
0.80
0.04
0.01
0.02
0.00
0.05
0.01
0.02
1.63
0.08
0.00
0.21
0.01
0.02
0.02
1.38
0.00
0.00
0.02
0.00
0.07
0.04
0.03
0.01
0.06
0.20
0.01
0.01
6.01
3.68
0.04
0.06
0.02
0.16
9.33
0.09
0.02
0.06
1.61
0.05
0.01
0.03
0.02
2.38
0.05
0.23
2.02
0.02
0.63
20.55
0.01
0.03
0.22
0.07
0.36
SRS580500
20.55
34.32
0.08
0.02
0.02
0.00
0.01
0.00
0.64
0.85
1.20
0.73
0.06
0.01
0.01
0.00
0.03
0.02
0.01
1.67
0.07
0.00
0.28
0.01
0.02
0.03
1.36
0.00
0.00
0.03
0.00
0.11
0.04
0.02
0.02
0.05
0.24
0.01
0.01
6.08
3.84
0.04
0.09
0.02
0.20
9.94
0.07
0.02
0.09
1.95
0.06
0.01
0.03
0.02
18.94
0.04
0.10
1.81
0.04
0.48
37.84
0.02
0.02
0.25
0.06
0.29
SRS580502
45.50
36.77
0.03
0.02
0.01
0.00
0.01
0.00
0.16
0.30
1.55
0.85
0.04
0.02
0.02
0.00
0.04
0.02
0.02
1.96
0.11
0.00
0.22
0.01
0.02
0.03
1.49
0.00
0.00
0.02
0.01
0.07
0.04
0.04
0.02
0.08
0.18
0.02
0.02
6.90
2.13
0.02
0.05
0.02
0.13
3.57
0.08
0.01
0.04
1.29
0.04
0.00
0.04
0.01
1.17
0.04
0.08
0.80
0.02
0.67
10.25
0.01
0.01
0.20
0.05
0.30
SRS581964
39.48
40.45
0.04
0.03
0.03
0.18
0.01
0.01
0.16
0.51
1.52
0.86
0.04
0.02
0.02
0.00
0.05
0.02
0.02
1.93
0.11
0.00
0.21
0.01
0.02
0.03
1.47
0.00
0.00
0.02
0.01
0.07
0.04
0.03
0.02
0.09
0.18
0.02
0.02
6.81
2.66
0.03
0.05
0.02
0.14
5.12
0.15
0.01
0.04
1.48
0.04
0.00
0.04
0.01
0.53
0.04
0.09
1.20
0.02
0.75
12.45
0.01
0.02
0.21
0.06
0.34
SRS581965
29.62
36.25
0.07
0.02
0.03
0.00
0.01
0.00
0.34
0.54
1.16
0.72
0.05
0.01
0.02
0.00
0.03
0.02
0.01
1.61
0.08
0.00
0.23
0.01
0.01
0.03
1.30
0.00
0.00
0.02
0.00
0.09
0.03
0.02
0.01
0.05
0.20
0.01
0.01
5.77
3.96
0.04
0.08
0.02
0.18
17.05
0.10
0.02
0.07
1.72
0.05
0.01
0.03
0.02
0.97
0.04
0.13
2.25
0.03
0.68
27.49
0.02
0.02
0.24
0.07
0.41
SRS582461
30.65
39.28
0.06
0.04
0.02
0.00
0.01
0.01
1.17
1.40
1.54
1.75
0.04
0.02
0.03
0.00
0.05
0.02
0.02
2.16
0.12
0.00
0.18
0.01
0.02
0.02
1.73
0.00
0.01
0.02
0.00
0.06
0.05
0.03
0.02
0.35
0.18
0.02
0.02
8.50
3.88
0.03
0.04
0.03
0.16
6.95
0.11
0.02
0.05
1.55
0.06
0.00
0.05
0.01
3.51
0.06
0.11
1.84
0.03
1.22
19.75
0.01
0.05
0.27
0.08
0.38
SRS582462
34.60
43.84
0.03
0.02
0.01
0.00
0.01
0.01
0.05
0.19
1.95
0.96
0.07
0.02
0.02
0.00
0.04
0.02
0.02
2.34
0.11
0.00
0.27
0.01
0.02
0.03
2.00
0.00
0.00
0.03
0.01
0.08
0.08
0.03
0.04
0.39
0.22
0.01
0.02
8.82
2.63
0.03
0.05
0.02
0.22
3.64
0.13
0.01
0.06
1.97
0.04
0.00
0.06
0.01
1.16
0.06
0.12
1.04
0.03
0.85
12.16
0.01
0.01
0.27
0.06
0.34
SRS582463
37.48
34.85
0.07
0.02
0.04
0.00
0.01
0.00
0.27
0.46
1.16
0.72
0.04
0.01
0.02
0.00
0.04
0.02
0.01
1.56
0.08
0.00
0.22
0.01
0.02
0.02
1.24
0.00
0.00
0.02
0.00
0.06
0.03
0.02
0.02
0.05
0.17
0.01
0.01
5.59
3.32
0.03
0.06
0.02
0.17
12.56
0.08
0.02
0.05
1.55
0.04
0.00
0.03
0.01
0.70
0.04
0.12
1.79
0.03
0.63
21.29
0.02
0.02
0.25
0.06
0.43
SRS582491
34.71
36.33
0.07
0.03
0.02
0.00
0.01
0.00
0.90
1.11
1.29
1.14
0.04
0.01
0.02
0.01
0.04
0.02
0.07
1.68
0.08
0.00
0.25
0.01
0.02
0.03
1.37
0.00
0.00
0.03
0.00
0.08
0.04
0.02
0.02
0.06
0.20
0.02
0.01
6.59
3.50
0.03
0.08
0.02
0.17
11.01
0.10
0.01
0.06
1.67
0.05
0.00
0.03
0.02
1.51
0.04
0.12
1.70
0.03
0.64
20.84
0.04
0.07
0.26
SRS584253
39.35
40.03
0.02
0.02
0.01
0.00
0.01
0.01
0.05
0.17
1.70
0.88
0.04
0.02
0.03
0.00
0.05
0.02
0.03
1.98
0.11
0.01
0.19
0.01
0.02
0.02
1.62
0.00
0.00
0.02
0.01
0.07
0.05
0.03
0.02
0.23
0.18
0.02
0.02
7.40
2.50
0.02
0.04
0.02
0.16
3.53
0.14
0.01
0.05
1.43
0.04
0.00
0.06
0.01
2.74
0.05
0.11
0.92
0.02
0.85
12.74
0.01
0.01
0.23
0.06
0.32
0.07
0.46
SRS584254
29.62
38.13
0.09
0.04
0.02
0.00
0.01
0.01
1.26
1.51
1.28
1.40
0.04
0.02
0.03
0.00
0.04
0.02
0.02
1.92
0.11
0.00
0.17
0.02
0.02
0.03
1.60
0.00
0.02
0.02
0.00
0.06
0.04
0.03
0.02
0.08
0.16
0.01
0.02
7.19
4.41
0.03
0.05
0.03
0.16
8.62
0.10
0.02
0.05
1.63
0.06
0.01
0.05
0.01
4.17
0.06
0.11
2.26
0.03
1.18
23.10
0.01
0.09
0.28
0.06
0.32
SRS584255
39.79
38.22
0.04
0.02
0.02
0.00
0.02
0.01
0.49
0.66
1.75
0.97
0.04
0.02
0.03
0.00
0.05
0.02
0.02
2.02
0.11
0.00
0.23
0.01
0.02
0.03
1.53
0.00
0.01
0.02
0.03
0.07
0.05
0.03
0.02
0.78
0.18
0.02
0.02
8.10
2.60
0.03
0.05
0.02
0.14
4.43
0.10
0.01
0.05
1.46
0.04
0.00
0.04
0.01
1.97
0.05
0.10
1.05
0.02
0.70
12.91
0.01
0.03
0.22
4.2 Metagenoomanalyse van de biodiversiteit in omgevingsstalen
94
4.3 Toekomstige ontwikkelingen van Unipept en de Unipept API
4.3
Toekomstige ontwikkelingen van Unipept en de Unipept API
Het opzet bij aanvang van de thesis was onder andere om een API (web services en commandolijninterface) voor de functionaliteit van Unipept te schrijven die het mogelijk moest maken om metaproteoomanalyses van de biodiversiteit in omgevingsstalen in bulk te kunnen uitvoeren. De case studies in
sectie 4.1 tonen aan dat we in dit opzet geslaagd zijn en dat de API kan gebruikt worden voor het opzetten
van pipelines voor de analyse van shotgun metaproteomics datasets.
Naar het einde van de thesis werd gaandeweg echter ook duidelijk dat de bouwstenen van de Unipept API
ook konden gebruikt worden als springplank voor het opzetten van pipelines voor de analyse van shotgun
metagenomics datasets. In sectie 4.2 hebben we een aantal idee¨en aangereikt die gebruikt werden voor
de implementatie van een eerste prototype van een dergelijke pipeline. Dit prototype werd uitgetest
op drie metagenoomprojecten uit het publieke archief van EBI Metagenomics, en de eerste resultaten
zien er zeer veelbelovend uit. Zo kregen we door onze aanpak bijvoorbeeld voor het eerst een goed
zicht op de biodiversiteit van de Eukaryota, de Archaea en de Viruses, daar waar de klassieke targetted
metagenomics aanpak die enkel focust op het 16S rRNA gen daarin geen enkel inzicht kan verschaffen.
Met de ontwikkeling van het prototype van de pipeline voor analyse van shotgun metagenomics en
metaproteomics datasets zijn echter ook nog heel wat idee¨en gerezen over hoe Unipept en de Unipept
API in de toekomst verder zouden kunnen ontwikkeld worden. We zetten hieronder enkele van de belangrijkste uitdagingen op een rijtje.
Ondanks het feit dat de laagste gemeenschappelijke voorouder op voorhand wordt berekend en in de
databank wordt opgeslagen voor elke tryptische peptide in Unipept, vormt het ophalen van deze informatie via de Unipept API de belangrijkste bottleneck. Zeker voor datasets met de omvang van de huidige
metagenomicsexperimenten. Voorlopig werkt Unipept met de standaard index zoals die voorzien is in de
onderliggende MySQL databank, maar er kan uitgekeken worden naar alternatieve indexstructuren die
aanwezig zijn in NoSQL databanken of er zouden indexstructuren op maat kunnen gemaakt worden voor
dit specifieke probleem [28, 21]. Er kan vooral ook nog heel wat voordeel gehaald worden door de index
zoveel mogelijk in het werkgeheugen beschikbaar te houden.
Complementair hiermee kan het opzoeken ook makkelijk geparallelliseerd worden als de individuele processen/threads afzonderlijke instanties van de Unipept API en de Unipept databank kunnen aanspreken.
Meteen zouden eindgebruikers dan ook lokale instanties van de Unipept API en de Unipept databank
kunnen aanspreken, waardoor de netwerklatentie een heel stuk zou dalen en ze niet langer genoodzaakt
zijn om gevoelige data uit te sturen naar publieke services. Het Unipept team heeft zich alvast voorge-
95
ACM37
ACM4
ACM54
ACM40
ACM38
ACM23
ACM3
ACM22
ACM21
ACM56
ACM55
ACM53
ACM39
ACM25
ACM41
ACM36
ACM24
ACM20
ACM19
ACM18
ACM6
ACM5
ACM2
ACM1
4.3 Toekomstige ontwikkelingen van Unipept en de Unipept API
Figuur 4.22: Biodiversiteit in 24 zeewaterstalen uit de metagenomics studie van het continu¨um van de
Amazonerivier in de Atlantische oceaan (project SRP039390 in het publieke archief van EBI Metagenomics). Kolommen corresponderen met de onderzochte waterstalen, aaangeduid met de sample name
en sample ID die werden overgenomen uit het EBI Metagenomics archief. De bovenste figuur geeft de
biodiversiteit weer op het hoogste niveau (superkingdom) in de Unipept Taxonomy: niet-ge¨ıdentificeerde
fragmenten (donkergrijs), niet nader gespecificeerde organismen (lichtgrijs), Viruses (oranje), Archaea
(rood), Eukaryota (groen), Bacteria (blauw). De onderste figuur geeft de biodiversiteit op het eerste
niveau (phylum) onder de bacteri¨en weer: niet nader gespecificeerde bacteri¨en (donkergrijs), Proteobacteria (oranje), Firmicutes (rood), Bacteroidetes (groen), Cyanobacteria (blauw), Actinobacteria (geel),
96
overige bacteri¨en (lichtgrijs).
4.3 Toekomstige ontwikkelingen van Unipept en de Unipept API
nomen om de broncode van Unipept tijdens de zomer van 2014 open source aan te bieden, en het in een
later stadium ook mogelijk te maken om meerdere lokale instanties te lopen van de Unipept API en de
Unipept databank. Om dit laatste zo eenvoudig mogelijk te maken, zou de Unipept omgeving kunnen
aangeboden worden als een Passenger-docker image. Docker (www.docker.io) is een lichtgewicht
gevirtualiseerde omgeving die het makkelijk maakt om portable toepassingen aan te bieden. Passengerdocker (github.com/phusion/passenger-docker) is een Docker image die een goede uitvalsbasis vormt voor Ruby (inclusief Ruby on Rails), Python, Node.js en Meteor webapplicaties. Zoals
aangegeven in dit hoofdstuk zijn een aantal eindgebruikers van Unipept zoals het European Bioinformatics Institute (EBI), Mayo Clinic en het Canadian Food Inspection Agency (CFIA-ACIA) nu reeds
vragende partij om lokale instanties te kunnen uitvoeren, zowel om performantie- als privacyredenen.
Een tweede belangrijke uitdaging is het opbouwen van de Unipept databank zelf. Deze databank bevat
geen primaire data, maar wordt opgebouwd door het integreren van de informatie in de Uniprot databank
en de NCBI Taxonomy databank. De NCBI Taxonomy Database kan op zich makkelijk verwerkt worden,
maar het volume van de Uniprot databank verdubbelt ongeveer elk jaar (Figuur 4.23). De laatste release
— die dateert van 14 mei 2014 — bevat 56.010.222 eiwitsequenties voor een totaal van 17.785.675.050
aminozuren. Dat correspondeert met meer dan e´ e´ n miljard tryptische peptiden die door Unipept moeten
ge¨ındexeerd worden. De huidige scripts doen er tegenwoordig ongeveer twee maanden over om een
nieuwe release van de Uniprot databank te verwerken. Aangezien er elke maand een nieuwe release
van Uniprot uitgebracht wordt, en gezien de sterk groeiende trend van de Uniprot databank, zullen er
dus oplossingen moeten gezocht worden voor een snellere verwerking. Opnieuw kan hiervoor gekeken
worden naar NoSQL oplossingen die de databank initieel zoveel mogelijk in het werkgeheugen opbouwen. Er kan ook nagegaan worden of de updates van de Uniprot databank incrementeel kunnen verwerkt
worden. Ook het vooraf berekenen van de laagste gemeenschappelijke voorouder voor alle tryptische
peptiden kan op een natuurlijke manier geparallelliseerd worden als er verschillende instanties van de
databank kunnen uitgerold worden. Merk op dat deze stap heel wat moeilijker is om incrementeel uit te
voeren. Voor het versnellen van het opbouwen van de Unipept databank heeft het Unipept team recent
een samenwerking opgezet met het Big Data team van HPC@UGent en het EBI Metagenomics team.
De uitdaging is hierbij om een nieuwe Uniprot release in minder dan e´ e´ n week te kunnen verwerken.
Voor de analyse van metagenomics datasets ligt de keuze om eiwitten op te breken in tryptische peptiden
en voor elk van deze peptiden de laagste gemeenschappelijke voorouder te berekenen een stuk minder
voor de hand dan voor de analyse van metaproteomics datasets. Het is voor de analyse van metagenomics
datasets immers veel natuurlijker om elke eiwitsequentie op te breken in een reeks k-meren voor een
97
4.3 Toekomstige ontwikkelingen van Unipept en de Unipept API
Figuur 4.23: Groei van UniProtKB/TrEMBL uitgedrukt als het aantal eiwitsequenties in de maandelijkse
releases sinds het ontstaan van de databank.
vast gekozen k, en dan voor elk van deze k-meren de laagste gemeenschappelijke voorouder te bepalen
[21]. Unipept en de Unipept API zullen in de toekomst dus ook best uitgebreid worden met een k-mer
index, naast de huidige index voor de tryptische peptiden. Bovendien kan ook verwacht worden dat
eindgebruikers naast de publiek beschikbare eiwitsequenties uit Uniprot ook eigen eiwitsequenties in de
index willen integreren. Daarom zullen ook voorzieningen moeten aangeboden worden om lokaal een
dergelijke ge¨ıntegreerde index op te bouwen.
Het volledige ontwerp van de Unipept Shotgun Metagenomics/Metaproteomics Analysis Pipeline zal
opnieuw moeten bekeken worden in het licht van de mogelijkheid om de Unipept API en de Unipept
databank te repliceren, zodat meerdere instanties tegelijkertijd kunnen aangesproken worden. Dit biedt
immers heel wat mogelijkheden om parallelle berekeningsstrategie¨en toe te passen. In combinatie met
een nieuwe snellere indexering met aangepaste caching zullen ook de poolingstrategie¨en moeten herbekeken worden die in het huidige prototype ge¨ımplementeerd werden.
In sectie 4.2.1.3 hebben we een aantal idee¨en op een rijtje gezet om een taxonomische identificatie te
bepalen op basis van een reeks individuele taxonomische identificaties. In het huidige prototype van de
metagenomics pipeline werd slechts e´ e´ n van de mogelijke alternatieven uitgewerkt die we in Figuur 4.11
hebben aangebracht. Naast de implementatie van de andere alternatieven, zal er ook een grondige studie
moeten gebeuren hoe de alternatieven (inclusief het bepalen van de laagste gemeenschappelijke voorouder, het bepalen van de bladknoop met het maximale pad naar de wortel [21], en de meer na¨ıeve
benaderingen die in sectie 4.2.1.3 werden besproken) zich tegenover elkaar gedragen. Hiervoor zal een
98
4.3 Toekomstige ontwikkelingen van Unipept en de Unipept API
uitgebreide benchmarkstudie moeten opgezet worden, waaruit kan geleerd worden welke strategie¨en beter preseteren dan andere, of in welke omstandigheden het aangewezen is om een bepaalde strategie
te prefereren. Het doel hierbij is om een generiek framework op te stellen voor de verwerking van de
verdeling van de biodiversiteit in een bepaalde omgeving of omgevingsstaal, die rekening houdt met
de hi¨erarchische datastructuur die gebruikt wordt om de biodiversiteit in klassen onder te verdelen. In
het kader hiervan zullen ook de verschillende stappen die uitgevoerd worden om de NCBI Taxonomy
automatisch op te kuisen tot de Unipept Taxonomy moeten herbekeken worden.
Bij uitbreiding zal ook moeten nagegaan worden hoe de biodiversiteitsanalyses van shotgun metaproteomics en metagenomics experimenten kunnen doorgetrokken worden voor de analyse van de functionele
diversiteit van de actieve eiwitten in een omgevingsstaal. Sommige functionele classificaties (zoals Enzyme Commission (EC) classificatie) vormen ook een hi¨erarchie, waardoor de uitbreiding op een vrij
natuurlijke manier kan gebeuren. Er zijn echter ook functionele classificaties (zoals de Gene Ontology
(GO) [15]) die de vorm aannemen van een gerichte acyclische graaf (directed acyclic graph, DAG).
De verschillende strategie¨en die in sectie 4.2.1.3 werden besproken, zullen dus ook moeten herbekeken
worden om te zien hoe ze kunnen toegepast worden op DAGs.
De taxonomische en functionele diversiteit in een omgevingsstaal kan vrij complex zijn. Zeker als we
ook de interactie in kaart willen brengen van welke organismen welke specifieke functies uitvoeren in
een bepaald ecosysteem (Figuur 4.24). Daarom is er nood aan aangepaste statische methodes en datavisualisatie die toelaten om de gegevens op een dynamische manier te analyseren en zo een globaal en
gedetailleerd inzicht te krijgen in deze complexe interacties die binnen dergelijke ecosystemen plaatsvinden en als we de verschillen in de taxonomische en functionele samenstellingen en hun onderlinge
interacties tussen ecosystemen of binnen een ecosysteem doorheen de tijd in kaart willen brengen. De
Unipept website voorziet reeds in een aantal interactieve analyses en bijhorende datavisualisaties, gebaseerd op D3 en SVG, die als afzonderlijke bouwstenen zouden kunnen aangeboden worden voor integratie in bestaande pipelines voor de analyse van metagenomics en metaproteomics datasets. De meeste
bestaande statistische analyses en visualisaties zijn echter gebaseerd op slice en dice operaties van de
onderliggende hi¨erarchische verwantschappen, waardoor de relaties tussen de taxa deels verloren gaan.
Doorheen al deze ontwikkelingen voor het uitbouwen van pipelines voor de analyse van shotgun metagenomics en metaproteomics datasets en een workbench voor het analyseren en vergelijken van de taxonomische en functionele diversiteit in omgevingsstalen, zal er voldoende aandacht moeten geschonken
worden aan het benchmarken van de verschillende componenten. Daarom werden reeds strategische samenwerkingen opgezet. Binnen het kader van de samenwerking met het EBI Metagenomics team werd
99
4.3 Toekomstige ontwikkelingen van Unipept en de Unipept API
Figuur 4.24: De meerderheid van de metagenomics en metaproteomics projecten zijn gebaseerd op minstens e´ e´ n van de volgende drie eenvoudige vragen. Welke organismen leven er in een bepaald ecosysteem? Welke rol vervullen die organismen in het ecosysteem? Hoe slagen die organismen er in om hun
rol te vervullen? (Afbeelding overgenomen van de website van de Metagenomics Group van het Center
for Biological Sequence Analysis (CBS), Denemarken)
als doel gesteld om hun volledige publieke en private archief aan metagenomics datasets opnieuw te analyseren. Hierbij zullen de resultaten op basis van verschillende alternatieven tegenover elkaar vergeleken
worden, en zal ook de vergelijking gemaakt worden met de analyseresultaten die bekomen werden met
hun huidige pipeline voor 16S rRNA metagenomics. In samenwerking met het Insituut voor Landbouwen Visserijonderzoek (ILVO) zullen een aantal nieuwe metagenomicssstalen onderzocht worden binnen
het kader van het GA Genomics project. Hierbij zullen de resultaten die bekomen worden door gebruik
te maken van de Unipept pipelines vergeleken worden met deze die bekomen worden door gebruik te
maken van bestaande pipelines voor de analyse van shotgun metagenomics datasets (MG-RAST [20],
Qiime [29], . . . ).
100
BIBLIOGRAFIE
BIBLIOGRAFIE
Bibliografie
[1] Mesuere B, Devreese B, Debyser G, Aerts M, Vandamme P, Dawyndt P (2012). Unipept: Tryptic
Peptide-Based Biodiversity Analysis of Metaproteome Samples. Journal of Proteome Research,
11(12), 5773–5780.
[2] The UniProt Consortium (2014). Activities at the Universal Protein Resource (UniProt). Nucleic
Acids Research 42, D191–D198.
[3] Rodriguez-Valera F (2004). Environmental genomics, the big picture? FEMS Microbiology Letters
231, 153–158.
[4] Wilmes P, Bond PL (2006). Metaproteomics: studying functional gene expression in microbial
ecosystems. Trends in Microbiology 14, 92–97.
[5] Verberkmoes NC, Russell AL, Shah M, Godzik A, Rosenquist M, Halfvarson J, Lefsrud MG, Apajalahti J, Tysk C, Hettich RL, Jansson JK (2009). Shotgun metaproteomics of the human distal gut
microbiota. The ISME Journal 3(2), 179–89.
[6] Dicksved J, Halfvarson J, Rosenquist M, Jarnerot G, Tysk C, Apajalahti J, Engstrand L, Jansson
JK (2008). Molecular analysis of the gut microbiota of identical twins with Crohn’s disease. The
ISME Journal 2, 716–727.
[7] Sayers EW, Barrett T, Benson DA, Bryant SH, Canese K, Chetvernin V, Church DM, DiCuccio
M, Edgar R, Federhen S, Feolo M, Geer LY, Helmberg W, Kapustin Y, Landsman D, Lipman DJ,
Madden TL, Maglott DR, Miller V, Mizrachi I, Ostell J, Pruitt KD, Schuler GD, Sequeira E, Sherry
ST, Shumway M, Sirotkin K, Souvorov A, Starchenko G, Tatusova TA, Wagner L, Yaschenko E, Ye
J (2009). Database resources of the National Center for Biotechnology Information. Nucleic Acids
Research 37, D5–15.
101
BIBLIOGRAFIE
BIBLIOGRAFIE
[8] Benson DA, Karsch-Mizrachi I, Lipman DJ, Ostell J, Sayers EW (2009). GenBank. Nucleic Acids
Research 37, D26–31.
˜ Nielsen P, Planes FJ, Jehmlich N, Ferrer M, von Bergen M (2013).
[9] Seifert J, Herbst FA, HalkjA¦r
Bioinformatic progress and applications in metaproteogenomics for bridging the gap between genomic sequences and metabolic functions in microbial communities. Proteomics 13(18-19), 2786–
2804.
[10] Kolmeder A, de Vos WM (2014). Metaproteomics of our microbiome — developing insight in
function and activity in man and model systems. Journal of Proteomics 97(31), 3–16.
[11] Pappin DJ, Hojrup P, Bleasby AJ (1993). Rapid identification of proteins by peptide-mass fingerprinting. Current Biology 3(6), 327–332.
[12] Pappin DJ, Rahman D, Hansen HF, Bartlet-Jones M, Jeffery W, Bleasby AJ (1996). Chemistry,
mass spectrometry and peptide-mass databases: Evolution of methods for the rapid identification
and mapping of cellular proteins, Mass Spectrom. Biol. Sci., 135–150.
[13] Eng JK, McCormack AL, Yates JR (1994). An approach to correlate tandem mass spectral data
of peptides with amino acid sequences in a protein database. Journal of the American Society for
Mass Spectrometry 5(11), 976–989.
[14] Webb EC (1992). Enzyme nomenclature 1992: recommendations of the Nomenclature Committee of the International Union of Biochemistry and Molecular Biology on the nomenclature and
classification of enzymes. San Diego: Published for the International Union of Biochemistry and
Molecular Biology by Academic Press.
[15] The Gene Ontology Consortium (2000). Gene ontology: tool for the unification of biology. Nature
Genetics 25(1), 25–29.
˜
[16] Kyrpides NC, Hugenholtz P, Eisen JA, Woyke T, GA¶ker
M, Parker CT, Amann R, Beck BJ, Chain
PSG, Chun J, Colwell RR, Danchin A, Dawyndt P, Dedeurwaerdere T, DeLong EF, Detter JC, De
˜
Vos P, Donohue TJ, Dong X-Z, Ehrlich DS, Fraser C, Gibbs R, Gilbert J, Gilna P, GlA¶ckner
FO,
Jansson JK, Keasling JD, Knight R, Labeda D, Lapidus A, Lee J-S, Li W-J, MA J, Markowitz VM,
Moore ERB, Morrison M, Meyer D, Nelson KE, Ohkuma M, Ouzounis CA, Pace N, Parkhill J,
Qin N, Rossello-Mora R, Sikorski J, Smith D, Sogin M, Stevens R, Stingl U, Suzuki K, Taylor D,
Tiedje JM, Tindall B, Wagner M, Weinstock G, Weissenbach J, White O, Wang J, Zhang L, Zhou
102
BIBLIOGRAFIE
BIBLIOGRAFIE
Y-G, Field D, Whitman WB, Garrity GM, Klenk H-P (2014, submitted). Genomic Encyclopedia of
Bacteria and Archaea: sequencing a myriad of type strains. PLoS Biology.
[17] Rho M, Tang H, Ye Y (2010). FragGeneScan: predicting genes in short and error-prone reads.
Nucleic Acids Research 38(20), 1–12.
[18] Wooley JC, Godzik A, Friedberg I (2010). A Primer on Metagenomics. PLoS Computational Biology 6(2)): e1000667.
[19] Thomas T, Gilbert J, Meyer F (2012). Metagenomics — a guide from sampling to data analysis.
Microbial Informatics and Experimentation 2(1), 3.
[20] Meyer F, Paarmann D, D’Souza M, Olson R, Glass EM, Kubal M, Paczian T, Rodriguez A, Stevens R, Wilke A, Wilkening J, Edwards RA (2008). The Metagenomics RAST server — a public
resource for the automatic phylogenetic and functional analysis of metagenomes. BMC Bioinformatics 9, 386.
[21] Wood DE, Salzberg SL (2014). Kraken: ultrafast metagenomic sequence classification using exact
alignments. Genome Biology 15, R46
[22] Askenazi M, Marto JA, Linial M (2010). The complete peptide dictionary — a meta-proteomics
resource. Proteomics 10(23), 4306–4310.
[23] Huson DH, Auch A, Qi J, Schuster SC (2007). MEGAN analysis of metagenomic data. Genome
Research 17(3), 377–386.
[24] Huson DH, Mitra S, Weber N, Ruscheweyh H, Schuster SC. Integrative analysis of environmental
sequences using MEGAN4. Genome Research 21(9), 1552–1560.
[25] Hunter S, Corbett M, Denise H, Fraser M, Gonzalez-Beltran A, Hunter C, Jones P, Leinonen R,
McAnulla C, Maguire E, Maslen J, Mitchell A, Nuka G, Oisel A, Pesseat S, Radhakrishnan R,
Rocca-Serra P, Scheremetjew M, Sterk P, Vaughan D, Cochrane G, Field D, Sansone S-A (2014).
EBI metagenomics — a new resource for the analysis and archiving of metagenomic data. Nucleic
Acids Research 42(D1): D600–D606.
[26] Turnbaugh PJ, Hamady M, Yatsunenko T (2009). A core gut microbiome in obese and lean twins.
Nature 457(7228), 480–484.
103
BIBLIOGRAFIE
BIBLIOGRAFIE
[27] Schwartz S, Friedberg I, Ivanov IV, Davidson LA, Goldsby JS (2012). A metagenomic study of
diet-dependent interaction between gut microbiota and host in infants reveals differences in immune
response. Genome Biology 13, R32.
[28] Vyverman M, De Baets B, Fack V, Dawyndt P (2012). Prospects and limitations of full-text index
structures in genome analysis. Nucleic Acids Research 40(15), 6993–7015.
[29] Caporaso JG, Kuczynski J, Stombaugh J, Bittinger K, Bushman FD, Costello EK, Fierer N, Pena
AG, Goodrich JK, Gordon JI, Huttley GA, Kelley ST, Knights D, Koenig JE, Ley RE, Lozupone
CA, McDonald D, Muegge BD, Pirrung M, Reeder J, Sevinsky JR, Turnbaugh PJ, Walters WA,
Widmann J, Yatsunenko T, Zaneveld J, Knight R (2010). Qiime allows analysis of high-throughput
community sequencing data. Nature Methods 7(5), 335–336.
[30] Goris J, Konstantinidis KT, Klappenbach JA, Coenye T, Vandamme P, Tiedje JM (2007) DNADNA hybridization values and their relationship to whole-genome sequence similarities. Journal of
Systematic and Evolutionary Microbiology 57, 81-91.
104