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
© Copyright 2024 ExpyDoc