Kraken: ultranopea metagenomic sequence classification using exact alignments

Sequence classification algorithm

to classification a DNA sequence s, we collect all k-mers within that sequence into a set, denoted as k(s). Sitten kartoitamme jokaisen k-Merin K(S): ssä käyttäen alla kuvattua algoritmia kaikkien K-mer: n sisältävien genomien LCA-taksoniin. Nämä LCA-taksonit ja niiden esi-isät taksonomiapuussa muodostavat niin sanotun luokittelupuun, karsitun alalajin, jota käytetään luokittelemaan S. jokainen luokittelupuun solmu painotetaan K(S): ssä olevien k-merien lukumäärällä, joka on kartoitettu kyseiseen solmuun liittyvään taksoniin. Tämän jälkeen luokittelupuun jokainen juuresta lehteen (RTL)-polku pisteytetään laskemalla kaikkien polun varrella olevien solmupainojen summa. Luokituspuun suurin PISTEYTYSPOLKU on luokituspolku, ja S: lle annetaan lehteä vastaava merkki (jos pisteytyspolkuja on maksimaalisesti useita, valitaan kaikkien näiden polkujen lehtien LCA). Tämä algoritmi, joka on esitetty kuvassa 1, mahdollistaa Krakenin tarkastella jokaista k-mer sisällä järjestyksessä erillisenä todisteena, ja sitten yrittää ratkaista mahdolliset ristiriitaiset todisteet tarvittaessa. Huomaa, että K: n sopivaan valintaan useimmat k-Merit kartoittavat yksiselitteisesti yhden lajin, mikä yksinkertaistaa luokitteluprosessia huomattavasti. Sekvenssit, joille K(S): n k-mers: iä ei löydy mistään genomista, jätetään luokittelematta tämän algoritmin avulla.

RTL-polun pisteytys luokittelupuussa on tarpeen, koska luokitettavien sekvenssien ja genomikirjastossa esiintyvien sekvenssien välillä on väistämättömiä eroja. Tällaiset erot voivat johtaa suurillekin k-arvoille k-mer, joka on läsnä kirjastossa mutta liittyy lajiin, joka on kaukana todellisesta lähdelajista. Pisteyttämällä luokittelupuun eri RTL-polut voimme kompensoida nämä erot ja luokitella sekvenssit oikein silloinkin, kun pieni vähemmistö k-mers-sekvensseistä osoittaa, että sekvenssille pitäisi antaa virheellinen taksonominen merkintä.

tietokannan luominen

Krakenin luokittelualgoritmin tehokas toteutus edellyttää, että K-mers: n kartoitus taksaan suoritetaan kyselyllä ennalta lasketusta tietokannasta. Kraken luo tämän tietokannan monivaiheisen prosessin kautta, alkaen genomisekvenssien kirjaston valinnasta. Kraken sisältää valmiisiin mikrobigenomeihin perustuvan oletuskirjaston National Center for Biotechnology Informationin (NCBI) RefSeq-tietokannassa, mutta kirjastoa voidaan räätälöidä yksittäisten käyttäjien tarpeen mukaan .

kun kirjasto on valittu, luodaan meduusan monisäikeisen k-mer-laskurin avulla tietokanta, joka sisältää kaikki kirjaston erilliset 31-Merit. Kun tietokanta on valmis, 4-tavuiset välilyönnit, joita käytetään K-mer-lukujen tallentamiseen tietokantatiedostoon, käyttävät Kraken sen sijaan k-Mersin LCA-arvojen taksonomisten tunnuslukujen tallentamiseen. Kun tietokanta on luotu meduusan avulla, kirjaston genomisekvenssit käsitellään yksi kerrallaan. Jokaiselle sekvenssille siihen liittyvää taksonia käytetään asettamaan kaikkien K-merien tallennetut LCA-arvot sekvenssiin. Koska sekvenssejä käsitellään, jos k-mer jonosta on ollut sen LCA-arvo aiemmin asetettu, sitten LCA tallennetun arvon ja nykyisen sekvenssin taksoni lasketaan ja että LCA on tallennettu k-mer. Taksonitieto saadaan NCBI: n taksonomiatietokannasta.

tietokantarakenne ja hakualgoritmi

koska Kraken käyttää hyvin usein k-meriä tietokantakyselynä heti viereisen k-Merin kyselyn jälkeen, ja koska vierekkäiset k-Merit jakavat huomattavan määrän sekvenssiä, käytämme minimizer-konseptia ryhmitelläksemme samankaltaiset k-Merit yhteen. Selittääksemme sovelluksemme tähän käsitteeseen määrittelemme tässä DNA-sekvenssin S kanonisen esityksen S: n leksikografisesti pienemmäksi S: ksi ja S: N käänteiskomplementin käänteiseksi komplementiksi. Määrittääksemme k-mer ’ s Minimizer of length M, pidämme kaikkien M-merien kanonista esitystä k-mer: ssä ja valitsemme leksikografisesti pienimmän näistä M-mers: istä k-mer: n minimaattoriksi. Käytännössä viereisissä k-mereissä on usein sama minimaattori.

Krakenin tietokannassa kaikki samalla minimaattorilla varustetut k-Merit on tallennettu peräkkäin, ja ne on lajiteltu sanakirjassa kanonisten esitystensä mukaiseen järjestykseen. K-mer R: n kysely voidaan sitten käsitellä etsimällä indeksistä ne paikat tietokannasta, joihin k-mers R: n minimoijalla tallennettaisiin, ja suorittamalla sitten binäärihaku kyseisellä alueella (kuva 5). Koska viereisissä k-mereissä on usein sama minimoija, hakualue on usein sama kahden peräkkäisen haun välillä, ja ensimmäisen kyselyn haku voi usein tuoda dataa suorittimen välimuistiin, jota käytetään toisessa kyselyssä. Sallimalla myöhemmissä kyselyissä olevien muistiyhteyksien päästä käsiksi tietoihin suorittimen välimuistissa RAM-muistin sijaan tämä strategia tekee myöhemmistä kyselyistä paljon nopeampia kuin ne muuten olisivat. Tietokannan kunkin k-mers-ryhmän siirtymät sisältävä indeksi vaatii 8 × 4m tavua. Oletusarvoisesti Kraken käyttää 15-bp-minimaattoreita, mutta käyttäjä voi muokata tätä arvoa; esimerkiksi Minikrakenin luomisessa käytimme 13-bp-minimaattoreita varmistaaksemme, että tietokannan koko jäi alle 4 GB: n.

kuva 5
kuva5

Krakenin tietokantarakenne. Jokainen k-mer, jota kysytään tietokantaa vastaan, on erityinen substraatti, joka on sen minimoija. Jotta tietokannasta voitaisiin etsiä k-mer, tutkitaan tietokannassa olevia kantoja, joissa on k-mers samalla minimaattorilla. Nämä kannat löytyvät nopeasti tutkimalla minimizer offset array aloituspaikat tietueiden kanssa K-mer ’ s minimizer (oranssi) ja seuraava mahdollinen minimizer (sininen). Tiettyyn minimaattoriin liittyvien tietueiden alueella tietueet lajitellaan k-mers: ien lexikografisen järjestyksen mukaan, jolloin kysely voidaan suorittaa käyttämällä binäärihakua tällä alueella.

toteutettaessa Kraken, teimme edelleen optimointeja rakenne ja hakualgoritmi kuvattu edellä. Ensinnäkin, kuten Roberts et al. , yksinkertainen lexicografinen tilaus M-mers voi johtaa vääristyneeseen jakeluun minimizers että yli-edustaa alhainen monimutkaisuus m-mers. Krakenissa tällainen vinouma loisi monia laajoja hakualueita, joiden hakeminen vaatisi enemmän aikaa. Minimointien tasaisemman jakautumisen luomiseksi (ja siten hakujen nopeuttamiseksi) käytämme exclusive-or (XOR)-toimintoa, jossa vaihdamme puolet kunkin M-Merin kanonisen esityksen biteistä ennen kuin vertaamme M-merejä toisiinsa lexicografisen tilauksen avulla. Tämä xor-toiminto sekoittaa tehokkaasti standardin tilauksen ja estää suuren bias kohti matalan monimutkaisuuden minimizers.

hyödynnämme myös sitä, että hakualue on usein sama kyselyiden välillä, jotta Krakenin kyselyt olisivat nopeampia. Sen sijaan laskea minimizer joka kerta teemme kyselyn, me ensin etsiä edellisen alueen. Jos k-mer löytyy tältä alueelta, kysely voi palata välittömästi. Jos k-mer: ää ei löydy, minimoija lasketaan; jos k-mer: n minimoija on sama kuin viimeisen k-mer: n, kysely epäonnistuu, koska minimaattorin hakuavaruudella ei ole k-mer: ää. Vain jos minimaattori on muuttunut, Kraken joutuu säätämään hakualuetta ja etsimään uudelleen k-mer: ää.

rakentamalla simuloituja metagenomeja

HiSeq-ja MiSeq-metagenomit rakennettiin käyttäen 20 sarjaa bakteerien koko genomin haulikkolukuja. Nämä lukemat löytyivät joko osana GAGE-B-projektia tai NCBI Sequence Read-arkistossa. Jokainen metagenomi sisältää sekvenssejä kymmenestä genomista (Lisätiedosto 1: taulukko S1). Sekä 10 000 että 10 miljoonaa lukunäytettä kustakin näistä metagenomeista, 10% niiden sekvensseistä valittiin jokaisesta kymmenestä komponenttigenomista (eli jokaisella genomilla oli yhtä suuri sekvenssi). Kaikki sekvenssit trimmattiin heikkolaatuisten alustojen ja sovitinsarjojen poistamiseksi.

näiden kahden metagenomin koostumus asettaa tiettyjä haasteita luokittelijoillemme. Esimerkiksi Pelosinus fermentans, löytyy meidän HiSeq metagenome, ei voida oikein tunnistaa suvun tasolla Kraken (tai mikään muu aiemmin kuvattu luokittelijat), koska ei ole Pelosinus genomeja RefSeq täydellinen genomit tietokantaan; kuitenkin, on olemassa seitsemän tällaista genomeja Kraken-GB: n tietokantaan, mukaan lukien kuusi kantoja P. fermentans. Vastaavasti meidän MiSeq metagenomissamme Proteus vulgaris luokitellaan usein virheellisesti sukutasolla, koska ainoa Proteus-genomi Krakenin tietokannassa on yksittäinen Proteus mirabilis-genomi. Kraken-GB: n tietokannasta löytyy vielä viisi Proteus-genomia, joiden avulla Kraken-GB pystyy luokittelemaan readeja paremmin kyseisestä suvusta. Lisäksi MiSeq-metagenomi sisältää viisi Enterobacteriaceae-heimon genomia (Citrobacter, Enterobacter, Klebsiella, Proteus ja Salmonella). Tämän heimon sukujen suuri sekvenssien samankaltaisuus voi tehdä sukujen erottamisen vaikeaksi mille tahansa luokittelijalle.

simBA-5-metagenomi luotiin simuloimalla lukemia Refseqin täydellisistä bakteeri-ja arkaaikaisista genomeista. Näiden genomien replikoneja käytettiin, jos ne yhdistettiin taksoniin, jossa oli sukuarvoon liittyvä merkintä, jolloin tuloksena oli joukko replikoneja 607 suvusta. Sitten käytimme Masonin lukusimulaattoria Illumina-mallillaan tuottaaksemme 10 miljoonaa 100 bp: n lukemaa näistä genomeista. Ensin loimme simuloidut genomit kullekin lajille käyttäen SNP-arvoa 0,1% ja indel-arvoa 0,1% (molemmat oletusparametrit), josta loimme lukemat. Simuloitu lukee, kerroimme oletuksena epäsuhta ja indel hinnat viisi, jolloin keskimääräinen epäsuhta 2% (vaihtelevat 1% alussa lukee 6% lopussa) ja indel korko 1% (0,5% lisäys todennäköisyys ja 0,5% poistotodennäköisyys). SimBA-5 metagenomelle 10 000 lukujoukkoa syntyi 10 miljoonan lukujoukon satunnaisotoksesta.

tarkkuuden ja nopeuden arviointi

päätimme mitata tarkkuutta ensisijaisesti sukutasolla, joka oli alin taso, jolle pystyimme helposti määrittämään phymmbl: n ja NBC: n ennusteiden taksonomiatiedot automatisoidusti. (Tämä johtuu tavasta, jolla PhymmBL ja NBC raportoivat tuloksensa). Koska joillakin genomeilla ei ole taksonomisia merkintöjä kaikissa seitsemässä joukossa (laji, suku, suku, järjestys, Luokka, pääjakso ja valtakunta), määritimme sukutason herkkyyden A/B: ksi, jossa A on lukujen lukumäärä, joilla on määrätty suku ja jotka on oikein luokiteltu tähän luokkaan, ja B on lukujen kokonaismäärä, jolla on jokin määrätty suku. Määrittelimme herkkyyden samalla tavalla muillekin taksonomisille luokille.

koska Kraken voi luokitella lukeman lajia korkeammilla tasoilla, sen tarkkuuden mittaaminen edellyttää, että määrittelemme oikean suvun (esimerkiksi) tarkkuuden vaikutuksen, mutta emme luokittele lajia lainkaan. Tästä syystä määrittelimme rank – tason tarkkuuden C/(D + E): ksi, jossa C on oikean taksonin kohdalla tai sen alapuolella merkittyjen lukujen lukumäärä mitatulla listalla, D on mitatulla listalla tai sen alapuolella merkittyjen lukujen lukumäärä ja E on väärin merkittyjen lukujen lukumäärä mitatun tason yläpuolella. Esimerkiksi kun otetaan huomioon luku R, joka pitäisi merkitä Escherichia coli, r: n merkitseminen E. coli, E. fergusonii tai Escherichia parantaisi sukutason tarkkuutta. Enterobakteerien (oikea suku) tai Proteobakteerien (oikea pääjakso) merkinnällä ei olisi vaikutusta sukutason tarkkuuteen. Bacillus-bakteerin (virheellinen suku) tai Firmicutes-bakteerin (virheellinen pääjakso) R-merkintä vähentäisi suvun tarkkuutta.

arvioidessamme PhymmBL: n tarkkuutta sen kehittäjien neuvojen mukaisesti valitsimme vertailuun genuksen luottamuskynnyksen. Valitsimme 3 333 lukua simuloidusta medium complexity (simMC) – tietokokonaisuudesta, joka kattaa 31 eri sukua. Simuloidaksemme lyhyitä lukemia simMC-sarjan Sanger-sekvenssitiedoista valitsimme viimeisen 100 bp: n jokaisesta lukemasta. Sitten vertasimme PhymmBL: ää noihin 100 bp: n lukuihin ja arvioimme phymmbl: n ennusteiden genus-tason herkkyyttä ja tarkkuutta suvun luottamuskynnyksillä 0-1, 0,05: n välein. Havaitsimme, että kynnysarvo 0,65 tuotti korkeimman F-pistemäärän (herkkyyden ja tarkkuuden harmoninen keskiarvo), jossa 0,60 ja 0,70 ovat myös F-Pisteet 0: n sisällä.5 prosenttiyksikköä enimmäismäärästä (Lisätiedosto 1: taulukko S2). Siksi käytimme vertailuissamme 0,65 suvun luottamuskynnystä. Vaikka kynnysarvon valinta riippuu käyttäjän yksilöllisistä tarpeista ja on siten jossain määrin mielivaltainen, tällä tavalla valittu kynnysarvo tarjoaa oikeamman vertailun Krakenin kaltaiseen valikoivaan luokittelijaan kuin ei kynnystä lainkaan.

aika-ja tarkkuustulokset käytettäessä megablastia luokittelijana saatiin PhymmBL: n tuottamasta lokidatasta, sillä PhymmBL käyttää megablastia linjausvaiheessaan. Kun annoimme taksonomisen merkin luettavalle Megablastilla, käytimme ensimmäiseen ilmoitettuun kohdistukseen liittyvää taksonia. Megablast ajettiin oletusasetuksilla.

nopeutta arvioitiin käyttämällä kunkin ohjelman (NBC: tä lukuun ottamatta) yksikierteistä toimintaa. PhymmBL: ää muutettiin niin, että sen kutsussa blastn-ohjelmaan käytettiin yhtä säiettä kahden sijasta. NBC: llä oli 36 samanaikaista prosessia, jotka toimivat genomien disjoint-sarjoilla genomikirjastossaan, ja luokittelijan kokonaisaika määritettiin laskemalla yhteen kunkin genomin dekompressio-ja pisteaikoja. Seinäkelloajat kirjattiin kaikille luokittajille. Verratessamme Krakenia muihin luokittajiin käytimme BLAST+ 2.2.27: ää, PhymmBL 4.0: aa, NBC 1.1: tä ja MetaPhlAn 1.7.6: ta. Luokittajia ajettiin kaikki samalla tietokoneella, jossa oli 48 AMD Opteron 6172 2,1 GHz suorittimia ja 252 Gt RAM-muistia, jossa oli käytössä Red Hat Enterprise Linux 5. Nopeuden arviointiin käytetyissä tietokokonaisuuksissa oli 10 000 lukua kaikissa muissa ohjelmissa kuin Krakenissa (ja sen muunnelmissa) ja Metaphlanissa, joissa käytettiin 10 000 000 lukudataa. Näiden nopeampien ohjelmien kanssa käytettiin korkeampia lukunumeroita minimoimaan ohjelmien suorituksen aikana tapahtuvien alku-ja lopputoimintojen vaikutus.

vaikka Kraken on ainoa tutkimistamme ohjelmista, joka suorittaa eksplisiittisesti operaatioita varmistaakseen, että sen tiedot ovat fyysisessä muistissa ennen luokittelua, halusimme varmistaa, että kaikki ohjelmat arvioidaan samalla tavalla. Nopeutta arvioitaessa jokaisen ohjelman kohdalla luetaan kaikki tietokantatiedostot (esim. IMM-tiedostot ja BLAST-tietokannat PhymmBL: lle, k-mer-taajuuslistat NBC: lle ja Bowtie-indeksi Metaphlanille) muistiin kolme kertaa ennen ohjelman suorittamista, jotta tietokannan sisältö voidaan sijoittaa käyttöjärjestelmän välimuistiin (joka on tallennettu fyysiseen muistiin).

pienennetty tietokantakoko

luodaksemme 4-Gt tietokannan Minikrakenin tuloksillemme poistimme ensimmäiset 18 jokaisesta 19 levyn lohkosta standardista Kraken-tietokannasta. Kutistuskertoimeksi valittiin 19, koska se oli pienin kokonaislukukerroin, joka pienentäisi koon alle 4 GT: hen, joka mahtuu helposti monien tavallisten henkilökohtaisten tietokoneiden muistiin. Käyttäjille, joilla on enemmän RAM-Muistia käytettävissä, Kraken sallii pienemmän kutistuskertoimen käytön, mikä lisää herkkyyttä.

vedosten genomien käyttö

Kraken-GB-tietokantaa rakennettaessa huomasimme useita kontigeja, joiden päissä oli tunnettuja adapterisekvenssejä. Myöhemmissä testeissä havaitsimme myös, että jotkin sekvenssit näytteissä, joissa oli suuria määriä ihmisen sekvenssiä, oli johdonmukaisesti luokiteltu väärin tässä tietokannassa, mikä johti johtopäätökseen, että kontaminaatiota oli todennäköisesti genomiluonnoksissa. Torjuaksemme tämän saastumisen poistimme tietokannasta ne k-Merit tunnetuista sovitinsekvensseistä sekä ensimmäisen ja viimeisen 20 k-meriä jokaisesta luonnoskontista. Vaikka tämä paransi luokittelua, se ei poistanut luokitteluvirheongelmaa. Tästä syystä olemme sitä mieltä, että jos Krakenin tietokannassa käytetään draft-genomeja, genomikirjastosta olisi poistettava erittäin tiukat toimenpiteet vierasaineiden sekvenssien poistamiseksi.

Kladien poissulkukokeet

analysoitaessa uudelleen Simba-5-tietokokonaisuutta kladien poissulkukokeitamme varten, joitakin lukemia ei käytetty tietyille pareille mitattuja ja poissuljettuja rivejä. Jos luvun alkuperältä puuttui taksonominen merkintä jommassakummassa mitatussa tai poissuljetussa joukossa, sitä ei käytetty kyseisessä kokeessa.

kokeessa ei myöskään käytetty lukua, ellei vähintään kaksi muuta Tietokannassamme edustettua taksonia (poissuljettua kladia lukuun ottamatta) poissuljetulla listalla jakanut Originin taksonia mitatulla listalla. Esimerkiksi suvusta G otettua lukua ei käytettäisi kokeessa, jossa mitataan tarkkuutta luokkarankingissa ja jätetään pois sukuranking, ellei G: n kotiluokassa olisi Krakenin genomikirjastossa vähintään kahta muuta sukua, joilla on genomit. Ilman tätä suodatusvaihetta, oliko suku poissuljettu, kun se oli luokkansa ainoa suku, Kraken ei voinut mitenkään nimetä oikeaa luokkaa,koska kaikki tietokannassa olevat merkinnät kyseisestä luokasta jätettäisiin myös pois. Tämä on sama lähestymistapa vastaavissa kokeissa, joita käytettiin arvioimaan PhymmBL .

Human microbiome data classification

luokittelimme ihmisen Mikrobiomiprojektin tiedot käyttäen Kraken-tietokantaa, joka on tehty täydellisistä RefSeq-bakteeri -, arkajauho-ja virusgenomeista sekä ihmisen grch37-genomista. Haimme sekvenssit kolme liittymistä (SRS019120, SRS014468 ja SRS015055) NCBI sekvenssi lukea arkisto, ja jokainen liittyminen oli kaksi runs toimitettu. Kaikki lukemat trimmattiin heikkolaatuisten alustojen ja sovitinsarjojen poistamiseksi. Kruunua käytettiin kaikkien taksonomisten jakaumien muodostamiseen.

koska sekvenssit olivat kaikki parillisia lukuja, liitimme lukujärjestykset yhteen yhdistämällä puolisot siten, että niiden välissä on ” NNN ” – sekvenssi. Kraken jättää k-Merit huomiotta moniselitteisillä nukleotideilla, joten näitä ” N ” – merkkejä kattavat k-Merit eivät vaikuta luokitteluun. Tämän operaation ansiosta Kraken pystyi luokittelemaan lukuparin yhdeksi yksiköksi sen sijaan, että olisi tarvinnut luokitella puolisot erikseen.

ohjelmistojen ja tietojen saatavuus

Vastaa

Sähköpostiosoitettasi ei julkaista.