- abstrakt
- introduktion
- opbygning af et Klyngetræ
- en Demonstration ved hjælp af simuleringer
- et simpelt eksempel
- Klyngetræer til scRNA-sek-Data
- Diskussion
- metoder
- clustree
- simuleringer
- Iris datasæt
- PBMC datasæt
- tilgængelighed af kildekode og krav
- tilgængelighed af understøttende data
- forkortelser
- konkurrerende interesser
- finansiering
- Forfatterbidrag
- anerkendelser
abstrakt
klyngedannelse teknikker er meget udbredt i analysen af store datasæt til at gruppere prøver med lignende egenskaber. For eksempel bruges klyngedannelse ofte inden for enkeltcelle RNA-sekventering for at identificere forskellige celletyper, der er til stede i en vævsprøve. Der er mange algoritmer til at udføre klyngedannelse, og resultaterne kan variere betydeligt. Især er antallet af grupper, der er til stede i et datasæt, ofte ukendt, og antallet af klynger identificeret af en algoritme kan ændres baseret på de anvendte parametre. For at udforske og undersøge virkningen af varierende klyngeopløsning præsenterer vi klyngetræer. Denne visualisering viser forholdet mellem klynger ved flere opløsninger, så forskere kan se, hvordan prøver bevæger sig, når antallet af klynger stiger. Derudover kan meta-information overlejres på træet for at informere valget af opløsning og guide til identifikation af klynger. Vi illustrerer funktionerne ved klyngetræer ved hjælp af en række simuleringer såvel som to virkelige eksempler, det klassiske iris-datasæt og et komplekst RNA-sekventeringsdatasæt med en celle. Klyngetræer kan produceres ved hjælp af clustree r-pakken, tilgængelig fra CRAN og udviklet på GitHub.
introduktion
klyngeanalyse bruges ofte til at gruppere lignende prøver på tværs af en bred vifte af applikationer. Typisk er målet med klyngedannelse at danne grupper af prøver, der ligner hinanden mere end prøver i andre grupper. Mens uklar eller blød klyngemetoder tildeler hver prøve til hver klynge med en vis sandsynlighed, og hierarkisk klyngedannelse danner et træ af prøver, danner de fleste metoder hårde klynger, hvor hver prøve tildeles en enkelt gruppe. Dette mål kan opnås på forskellige måder, såsom ved at overveje afstande mellem prøver (f .eks. |$k$|-midler, PAM), områder med tæthed på tværs af datasættet (f. eks.
i mange tilfælde er antallet af grupper, der skal være til stede i et datasæt, ikke kendt på forhånd, og det er en betydelig udfordring at beslutte det korrekte antal klynger, der skal bruges. For nogle algoritmer, såsom |$k$|-betyder klyngedannelse, skal antallet af klynger angives eksplicit. Andre metoder har parametre, der direkte eller indirekte styrer klyngeopløsningen og derfor antallet af producerede klynger. Mens der er metoder og statistikker (såsom albue-metoden og silhuetplotter ) designet til at hjælpe analytikere med at beslutte, hvilken klyngeopløsning de skal bruge, producerer de typisk en enkelt score, der kun betragter et enkelt sæt prøver eller klynger ad gangen.
en alternativ tilgang ville være at overveje klynger ved flere opløsninger og undersøge, hvordan prøver ændrer grupperinger, når antallet af klynger stiger. Dette har ført til en række klyngestabilitetsforanstaltninger , hvoraf mange er afhængige af klyngedannelse af forstyrrede eller undersamlede datasæt. For eksempel undersamler modeludforskningsalgoritmen et datasæt flere gange, klynger hvert undersamlet datasæt i forskellige opløsninger og beregner derefter en lighed mellem klynger i samme opløsning for at give en fordeling af ligheder, der kan informere valget af opløsning . Et mål for klyngestabilitet, der ikke er baseret på forstyrrelser, er det, der er indeholdt i SC3-pakken til klyngedata for enkeltcelle-RNA-sekventering (scRNA-sekv). Startende med et sæt klyngeetiketter i forskellige opløsninger scorer hver klynge, hvor klynger tildeles øget stabilitet, hvis de deler de samme prøver som en klynge i en anden opløsning, men straffes for at have en højere opløsning.
en lignende enkel tilgang tages af den klyngetrævisualisering, vi præsenterer her, uden at beregne scoringer: (i) et datasæt er grupperet ved hjælp af en hvilken som helst hård klyngealgoritme ved flere opløsninger, der producerer sæt klyngenoder; (ii) overlapningen mellem klynger ved tilstødende opløsninger bruges til at opbygge kanter; og (iii) den resulterende graf præsenteres som et træ. Dette træ kan bruges til at undersøge, hvordan klynger er relateret til hinanden—hvilke klynger der er forskellige, og hvilke der er ustabile. I de følgende afsnit beskriver vi, hvordan vi konstruerer et sådant træ og præsenterer eksempler på træer bygget af et klassisk klyngedatasæt og et komplekst scRNA-seks datasæt. Tallene vist her kan produceres i R ved hjælp af vores offentligt tilgængelige clustree-pakke. Selvom klyngetræer ikke direkte kan give en klyngeopløsning, der skal bruges, kan de være et nyttigt værktøj til at udforske og visualisere rækkevidden af mulige valg.
opbygning af et Klyngetræ
for at opbygge et klyngetræ starter vi med et sæt klyngninger og tildeler prøver til grupper i flere forskellige opløsninger. Disse kunne produceres ved hjælp af enhver hårdklyngealgoritme, der tillader kontrol af antallet af klynger på en eller anden måde. For eksempel kan dette være et sæt prøver grupperet ved hjælp af / $k$ / – midler med / $k\,\, = \,\,1,2,3$| som vist i Fig. 1. Vi sorterer disse klynger, så de bestilles ved at øge opløsningen (|$k$|), og overvej derefter par af tilstødende klynger. Hver klynge / $ {c_{k,\,\, i}}$ / (hvor / $i\,\, = \,\,1,\,\, \ldots,\,\, n$ / og / $n$ / er antallet af klynger ved opløsning |$k$|) sammenlignes med hver klynge / ${c_{k + 1,\,\, j}}$ / (hvor / $j\,\, = \,\,1,\,\, \ldots,\,\, m$ / og / $m$ / er antallet af klynger ved opløsning / $k + 1$|). Overlapningen mellem de to klynger beregnes som antallet af prøver, der er tildelt begge |${c_{k,\,\, i}}$| og |${c_{k + 1,\,\, j}}$|. Dernæst bygger vi en graf, hvor hver knude er en klynge, og hver kant er en overlapning mellem to klynger. Mens vi henviser til denne graf som et træ for enkelhed, kan det mere korrekt beskrives som en polytree, et specielt tilfælde af en rettet acyklisk graf, hvor den underliggende ikke-rettede graf er et træ .
Illustration af de trin, der kræves for at opbygge et klyngetræ. For det første skal et datasæt grupperes i forskellige opløsninger. Overlapningen i prøver mellem klynger ved tilstødende opløsninger beregnes og bruges til at beregne andelen for hver kant. Endelig filtreres kanterne, og grafen visualiseres som et træ.
Illustration af de trin, der kræves for at opbygge et klyngetræ. For det første skal et datasæt grupperes i forskellige opløsninger. Overlapningen i prøver mellem klynger ved tilstødende opløsninger beregnes og bruges til at beregne andelen for hver kant. Endelig filtreres kanterne, og grafen visualiseres som et træ.
mange af kanterne vil være tomme, f.eks. i Fig. 1 ingen prøver i klynge A AT / $k\,\, = \,\,2$| ender i klynge B ved / $k\,\, = \,\,3$|. I nogle datasæt kan der også være kanter, der indeholder få prøver. Disse kanter er ikke informative og resulterer i et rodet træ. En indlysende løsning til fjernelse af uinformative kanter med lavt antal er at filtrere dem ved hjælp af en tærskel for antallet af prøver, de repræsenterer. I dette tilfælde er antallet af prøver imidlertid ikke den korrekte statistik, der skal bruges, fordi den favoriserer kanter ved lavere opløsninger og dem, der forbinder større klynger. I stedet definerer vi in-proportion metriske som forholdet mellem antallet af prøver på kanten og antallet af prøver i klyngen det går mod. Denne måling viser kantens betydning for klyngen med højere opløsning uafhængigt af klyngestørrelsen. Vi kan derefter anvende en tærskel på forholdet for at fjerne mindre informative kanter.
den endelige graf kan derefter visualiseres. I teorien kunne enhver graflayoutalgoritme bruges. Imidlertid, for clustree-pakken, vi har brugt de to algoritmer, der er specielt designet til træstrukturer, der er tilgængelige i igraph-pakken . Dette er Reingold-Tilford-trælayoutet, som placerer forældreknuder over deres børn , og Sugiyama-layoutet, som placerer knudepunkter i en rettet acyklisk graf i lag, samtidig med at antallet af krydsende kanter minimeres . Begge disse algoritmer kan producere attraktive layouts; som sådan har vi ikke fundet behovet for at designe en bestemt layoutalgoritme til klyngedannelse af træer. Som standard bruger clustree-pakken kun en delmængde af kanter, når der konstrueres et layout, specifikt de højeste proportionale kanter for hver node. Vi har fundet ud af, at dette ofte fører til mere fortolkelige visualiseringer; brugere kan dog vælge at bruge alle kanter, hvis det ønskes.
uanset det anvendte layout placerer den endelige visualisering klyngenoderne i en række lag, hvor hvert lag er en anden klyngeopløsning, og kanter viser overgangen af prøver gennem disse opløsninger. Kanter er farvet i henhold til antallet af prøver, de repræsenterer, og metrikken i forhold bruges til at kontrollere kantgennemsigtigheden og fremhæve vigtigere kanter. Som standard justeres nodestørrelsen i henhold til antallet af prøver i klyngen, og deres farve angiver klyngeopløsningen. Clustree-pakken indeholder også muligheder for at kontrollere æstetikken i noder baseret på attributterne for prøver i de klynger, de repræsenterer, som vist i de følgende eksempler.
mens et klyngetræ konceptuelt ligner det træ, der produceres gennem hierarkisk klyngedannelse, er der nogle vigtige forskelle. Det mest åbenlyse er, at et hierarkisk klyngetræ er resultatet af en bestemt klyngealgoritme og viser forholdet mellem individuelle prøver, mens de her beskrevne klyngetræer er uafhængige af klyngemetoden og viser forhold mellem klynger. Grenene af et hierarkisk træ viser, hvordan klyngealgoritmen har fusioneret prøver. I modsætning hertil viser kanter i et klyngetræ, hvordan prøver bevæger sig mellem klynger, når opløsningen ændres, og noder kan have flere forældre. Selvom det er muligt at overlejre oplysninger om prøver på et hierarkisk træ, gøres dette ikke almindeligt, men er et nøglefunktion i clustree-pakken, og hvordan klyngetræer kan bruges i praksis.
en Demonstration ved hjælp af simuleringer
for at demonstrere, hvordan et klyngetræ kan se ud i forskellige situationer, og hvordan det opfører sig, når et datasæt er overfyldt, præsenterer vi nogle illustrative eksempler ved hjælp af enkle simuleringer (se metoder). Vi præsenterer fem scenarier: tilfældig ensartet støj (simulering a), en enkelt klynge (simulering B), to klynger (simulering C), tre klynger (simulering D) og fire klynger (simulering E). Hver klynge består af 1.000 prøver (point) genereret fra en 100-dimensionel normalfordeling, og hvert syntetisk datasæt er blevet grupperet ved hjælp af / $k$ / – betyder klyngedannelse med / $k\,\, = \,\,1,\,\, \ldots, 8$/. Vi bruger derefter clustree-pakken til at producere klyngetræer til hvert datasæt (Fig. 2).
fem syntetiske datasæt bruges til at demonstrere klyngedannelse træer. For hvert datasæt vises et scatter-plot af de to første hovedkomponenter, et standardklyngetræ og klyngetræ med noder farvet af SC3 stabilitetsindeks fra lilla (laveste) til gul (højeste). De fem datasæt indeholder: (A) tilfældig ensartet støj, (B) en enkelt klynge, (C) to klynger, (D) tre klynger og (E) fire klynger.
fem syntetiske datasæt bruges til at demonstrere klyngedannelse træer. For hvert datasæt vises et scatter-plot af de to første hovedkomponenter, et standardklyngetræ og klyngetræ med noder farvet af SC3 stabilitetsindeks fra lilla (laveste) til gul (højeste). De fem datasæt indeholder: (A) tilfældig ensartet støj, (B) en enkelt klynge, (C) to klynger, (D) tre klynger og (E) fire klynger.
når vi ser på de to første eksempler (ensartet støj og en enkelt klynge ), kan vi tydeligt se, hvordan et klyngetræ opfører sig, når en klyngealgoritme returnerer flere klynger, end der virkelig er til stede i et datasæt. Nye klynger begynder at dannes fra flere eksisterende klynger, og mange prøver skifter mellem grene af træet, hvilket resulterer i kanter med lave proportioner. Ustabile klynger kan også vises og forsvinder derefter, når opløsningen øges, som det ses i Fig. 2E. når vi tilføjer mere struktur til datasættene, begynder klyngetræerne at danne klare grene, og kanter med lavt forhold har tendens til at være begrænset til sektioner af træet. Ved at se på, hvilke klynger der er stabile, og hvor der opstår kanter med lavt forhold, kan vi udlede, hvilke områder af træet der sandsynligvis vil være resultatet af ægte klynger, og hvilke der er forårsaget af overklustering.
det andet klyngetræ for hvert datasæt viser noder farvet i henhold til SC3-stabilitetsindekset for hver klynge. Som vi ville forvente, modtager ingen klynge en høj stabilitetsscore i de to første eksempler. Selvom vi tydeligt ser to grene i klyngetræet for to-klyngeeksemplet (simulering C), afspejles dette ikke i SC3-scorerne. Ingen klynge modtager en høj stabilitetsscore, sandsynligvis på grund af det store antal prøver, der bevæger sig mellem klynger, når opløsningen øges. Da der er flere ægte klynger i de simulerede datasæt, bliver SC3-stabilitetsscore mere forudsigelig for den korrekte opløsning, der skal bruges. Det er dog vigtigt at se på stabilitetsscore for alle klynger ved en bestemt opløsning, da det at tage den højeste individuelle klyngestabilitetsscore kan føre til, at den forkerte opløsning bruges, som det kan ses i eksemplet med fire klynger (simulering E). Disse eksempler viser, hvordan klyngetræer kan bruges til at vise eksisterende klyngemålinger på en måde, der kan hjælpe med at informere parametervalg.
et simpelt eksempel
for yderligere at illustrere, hvordan et klyngetræ er bygget, vil vi arbejde gennem et eksempel ved hjælp af det klassiske iris datasæt . Dette datasæt indeholder målinger af sepal længde, sepal bredde, kronblad længde og kronblad bredde fra 150 iris blomster, 50 fra hver af tre arter: Iris setosa, Iris versicolor og Iris virginica. Iris datasættet er almindeligt anvendt som et eksempel for både klyngedannelse og klassificering problemer med I. setosa prøver er signifikant forskellig fra, og lineært adskilles fra, de andre prøver. Vi har grupperet dette datasæt ved hjælp af / $k$ / – betyder klyngedannelse med / $k\,\, = \,\,1,\,\, \ldots, 5$ / og producerede klyngetræet vist i Fig. 3A.
Clustering træer baseret på / $k$ / – betyder clustering af iris datasæt. (A) noder er farvet i henhold til værdien af |$k$| og størrelse i henhold til antallet af prøver, de repræsenterer. Kanter er farvet i henhold til antallet af prøver (fra blå, der repræsenterer få til gule, der repræsenterer mange). Gennemsigtigheden justeres i forhold til andelen, med stærkere linjer, der viser kanter, der er vigtigere for klyngen med højere opløsning. Klyngeetiketter tildeles tilfældigt af algoritmen / $k$ / – means. (B) det samme træ med node farve ændret for at vise den gennemsnitlige kronblad længde af prøverne i hver klynge.
Clustering træer baseret på / $k$ / – betyder clustering af iris datasæt. (A) noder er farvet i henhold til værdien af |$k$| og størrelse i henhold til antallet af prøver, de repræsenterer. Kanter er farvet i henhold til antallet af prøver (fra blå, der repræsenterer få til gule, der repræsenterer mange). Gennemsigtigheden justeres i forhold til andelen, med stærkere linjer, der viser kanter, der er vigtigere for klyngen med højere opløsning. Klyngeetiketter tildeles tilfældigt af algoritmen / $k$ / – means. (B) det samme træ med node farve ændret for at vise den gennemsnitlige kronblad længde af prøverne i hver klynge.
vi ser, at en gren af træet er tydeligt adskilt (formodentlig repræsenterer I. setosa), forbliver uændret uanset antallet af klynger. På den anden side ser vi, at klyngen ved / $k\,\, = \,\,2$| opdeler rent i to klynger (formodentlig I. versicolor og I. virginica) ved / $k\,\, = \,\,3$|. Men når vi flytter til / $k\,\, = \,\,4$| og / $k\,\, = \,\,5$|, vi ser klynger dannes fra flere grene med mere lave proportioner kanter. Som vi har set i de simulerede eksempler, kan denne form for mønster indikere, at dataene er blevet overcluster, og vi er begyndt at introducere kunstige grupperinger.
vi kan kontrollere vores antagelse om, at den særskilte gren repræsenterer I. setosa-prøverne, og at de to andre klynger ved / $k\,\, = \,\,3$| er I. versicolor og I. virginica ved at overlejre nogle kendte oplysninger om prøverne. I Fig. 3B vi har farvet knuderne med den gennemsnitlige kronbladlængde på de prøver, de indeholder. Vi kan nu se, at klynger i den særskilte gren har de korteste kronblade, med klynge 1 på / $k\,\, = \,\,3$| at have en mellemliggende længde og klynge 3 med de længste kronblade. Denne funktion er kendt for at adskille prøverne i den forventede art, hvor I. setosa i gennemsnit har de korteste kronblade, I. versicolor en mellemlængde og I. virginica den længste.
selvom dette er et meget simpelt eksempel, fremhæver det nogle af fordelene ved at se et klyngetræ. Vi får en indikation af den korrekte klyngeopløsning ved at undersøge kanterne, og vi kan overlejre kendte oplysninger for at vurdere klyngens kvalitet. For eksempel, hvis vi observerede, at alle klynger havde den samme gennemsnitlige kronbladlængde, ville det antyde, at klyngningen ikke har været vellykket, da vi ved, at dette er et vigtigt træk, der adskiller arten. Vi kunne potentielt lære mere ved at se på, hvilke prøver der følger kanter med lav andel eller ved at overlejre en række funktioner for at prøve at forstå, hvad der får bestemte klynger til at splitte.
Klyngetræer til scRNA-sek-Data
et felt, der er begyndt at gøre kraftig brug af klyngeteknikker, er analysen af scRNA-sek-data. scRNA-sekventering er en nyudviklet teknologi, der kan måle, hvordan gener udtrykkes i tusinder til millioner af individuelle celler . Denne teknologi er hurtigt blevet vedtaget inden for områder som udviklingsbiologi og immunologi, hvor det er værdifuldt at have information fra enkeltceller snarere end målinger, der er Gennemsnitlige på tværs af de mange forskellige celler i en prøve ved hjælp af ældre RNA-sekv-teknologier. En vigtig anvendelse af scRNA er at opdage og forhøre de forskellige celletyper, der findes i en prøve af et komplekst væv. I denne situation bruges klyngedannelse typisk til at gruppere lignende celler baseret på deres genekspressionsprofiler. Forskelle i genekspression mellem grupper kan derefter bruges til at udlede identiteten eller funktionen af disse celler . Antallet af celletyper (klynger) i et scRNA-sek datasæt kan variere afhængigt af faktorer som det væv, der undersøges, dets udviklingsmæssige eller miljømæssige tilstand og antallet af celler, der er fanget. Ofte er antallet af celletyper ikke kendt, før dataene genereres, og nogle prøver kan indeholde snesevis af klynger. Derfor er det en vigtig overvejelse i denne applikation at beslutte, hvilken klyngeopløsning der skal bruges.
som et eksempel på, hvordan klyngetræer kan bruges i scRNA-sekv-sammenhæng, betragter vi et almindeligt anvendt perifert blodmononukleært celle (PBMC) datasæt. Dette datasæt blev oprindeligt produceret af 10 gange genomik og indeholder 2.700 perifere mononukleære blodceller, der repræsenterer en række velundersøgte immuncelletyper . Vi analyserede dette datasæt ved hjælp af Seurat-pakken , et almindeligt anvendt værktøjssæt til scRNA-sek-analyse, ved at følge instruktionerne i deres tutorial med undtagelse af at variere clustering resolution-parameteren fra nul til 5 (Se metoder). Seurat bruger en grafbaseret klyngealgoritme, og opløsningsparameteren styrer partitioneringen af denne graf, med højere værdier, der resulterer i flere klynger. De klyngetræer, der er produceret ud fra denne analyse, er vist i Fig. 4.
to klyngetræer i et datasæt på 2.700 Pbmc ‘ er. (A) resultater fra klyngedannelse ved hjælp af Seurat med opløsningsparametre fra nul til 1. Med en opløsning på 0, 1 ser vi dannelsen af fire hovedgrene, hvoraf den ene fortsætter med at opdele op til en opløsning på 0, 4, hvorefter der kun er mindre ændringer. B) opløsninger fra nul til 5. Ved de højeste opløsninger begynder vi at se mange kanter med lave proportioner, hvilket indikerer klyngeinstabilitet. Seurat mærker klynger efter deres størrelse, hvor klynge 0 er den største.
to klyngetræer i et datasæt på 2.700 Pbmc ‘ er. (A) resultater fra klyngedannelse ved hjælp af Seurat med opløsningsparametre fra nul til 1. Med en opløsning på 0, 1 ser vi dannelsen af fire hovedgrene, hvoraf den ene fortsætter med at opdele op til en opløsning på 0, 4, hvorefter der kun er mindre ændringer. B) opløsninger fra nul til 5. Ved de højeste opløsninger begynder vi at se mange kanter med lave proportioner, hvilket indikerer klyngeinstabilitet. Seurat mærker klynger efter deres størrelse, hvor klynge 0 er den største.
klyngetræet dækker opløsninger nul til 1 i trin på 0,1 (Fig. 4A) viser, at fire hovedgrene dannes med en opløsning på kun 0,1. En af disse grene, der starter med klynge 3 ved opløsning 0.1, forbliver uændret, mens grenen, der starter med klynge 2, kun opdeles en gang med en opløsning på 0.4. Det meste af forgreningen forekommer i grenen, der starter med klynge 1, som konsekvent har undergrene opdelt for at danne nye klynger, når opløsningen øges. Der er to regioner med stabilitet i dette træ—i opløsning 0,4–0,5 og opløsning 0,7–1,0, hvor grenen, der starter ved klynge 0, opdeles i to.
Fig. 4B viser et klyngetræ med et større udvalg af opløsninger, fra nul til 5 i trin på 0,5. Ved at se på tværs af dette interval kan vi se, hvad der sker, når algoritmen er tvunget til at producere flere klynger, end det sandsynligvis vil være til stede i dette datasæt. Efterhånden som overclustering opstår, begynder vi at se flere kanter med lave proportioner og nye klynger, der dannes fra flere forældreklynger. Dette antyder, at disse områder af træet er ustabile, og at de nye klynger, der dannes, sandsynligvis ikke repræsenterer ægte grupper i datasættet.
kendte markørgener bruges ofte til at identificere de celletyper, som specifikke klynger svarer til. Overlejring af genekspressionsinformation på et klyngetræ giver en alternativ visning, der kan hjælpe med at indikere, hvornår klynger, der indeholder rene cellepopulationer, dannes. Figur 5 viser pbmc-klyngetræet i Fig. 4A overlejret med ekspressionen af nogle kendte markørgener.
Klyngetræer i PBMC-datasættet farvet i henhold til udtrykket af kendte markører. Knudefarverne angiver gennemsnittet af log2-genetællinger af prøver i hver klynge. CD19 (a) identificerer B-celler, CD14 (B) viser en population af monocytter, CD3D (C) er en markør for T-celler, og CCR7 (D) viser opdelingen mellem hukommelse og naive CD4 T-celler.
Klyngetræer i PBMC-datasættet farvet i henhold til udtrykket af kendte markører. Knudefarverne angiver gennemsnittet af log2-genetællinger af prøver i hver klynge. CD19 (a) identificerer B-celler, CD14 (B) viser en population af monocytter, CD3D (C) er en markør for T-celler, og CCR7 (D) viser opdelingen mellem hukommelse og naive CD4 T-celler.
ved at tilføje disse ekstra oplysninger kan vi hurtigt identificere nogle af celletyperne. CD19 (Fig. 5A) er en markør for B-celler og udtrykkes tydeligt i den mest tydelige gren af træet. CD14 (Fig. 5B) er en markør for en type monocyt, som bliver mere udtrykt, når vi følger en af de centrale grene, så vi kan se, hvilken opløsning der identificerer en ren population af disse celler. CD3D (Fig. 5C) er en generel markør for T-celler og udtrykkes i to separate grene, en der opdeles i lav og høj ekspression af CCR7 (Fig. 5D), der adskiller hukommelse og naive CD4 T-celler. Ved at tilføje ekspression af kendte gener til et klyngetræ kan vi se, om flere populationer kan identificeres, da klyngeopløsningen øges, og om klynger er i overensstemmelse med kendt biologi. For det meste af Seurat-tutorial bruges en opløsning på 0, 6, men forfatterne bemærker, at ved at flytte til en opløsning på 0, 8 kan der opnås en splittelse mellem hukommelse og naive CD4 T-celler. Dette er en splittelse, der kunne forventes ved at se på klyngetræet med tilføjelse af forudgående information.
Diskussion
klyngning af lignende prøver i grupper er en nyttig teknik på mange områder, men ofte står analytikere over for det vanskelige problem med at beslutte, hvilken klyngeopløsning der skal bruges. Traditionelle tilgange til dette problem overvejer typisk en enkelt klynge eller prøve ad gangen og kan stole på forudgående kendskab til prøveetiketter. Her præsenterer vi clustering trees, en alternativ visualisering, der viser forholdet mellem clusterings ved flere opløsninger. Mens klyngetræer ikke direkte kan foreslå, hvilken klyngeopløsning der skal bruges, kan de være et nyttigt værktøj til at hjælpe med at træffe denne beslutning, især når de kombineres med andre målinger eller domæneviden.
Klyngetræer viser, hvordan klynger opdeles, når opløsningen øges, hvilke klynger der er klart adskilte og adskilte, som er relateret til hinanden, og hvordan prøver ændrer grupper, når flere klynger produceres. Selvom klyngetræer kan ligne træerne produceret fra hierarkisk klyngedannelse, er der flere vigtige forskelle. Hierarkisk klyngedannelse overvejer forholdet mellem individuelle prøver og giver ikke en indlysende måde at danne grupper på. I modsætning hertil er klyngetræer uafhængige af en bestemt klyngemetode og viser forholdet mellem klynger snarere end prøver ved forskellige opløsninger, hvoraf enhver kan bruges til yderligere analyse.
for at illustrere brugen af klyngetræer præsenterede vi en række simuleringer og to eksempler på reelle analyser, en ved hjælp af det klassiske iris-datasæt og et andet baseret på et komplekst scrna-seks datasæt. Begge eksempler viser, hvordan et klyngetræ kan hjælpe med at informere beslutningen om, hvilken opløsning der skal bruges, og hvordan overlejring af ekstra information kan hjælpe med at validere disse klynger. Disse datasæt er ofte store, støjende og indeholder et ukendt antal celletyper eller klynger.
selv når det ikke er et problem at bestemme antallet af klynger, kan klyngetræer være et værdifuldt værktøj. De giver en kompakt, informationstæt visualisering, der kan vise opsummeret information på tværs af en række klynger. Ved at ændre udseendet af klyngenoder baseret på attributter for de prøver, de repræsenterer, kan klynger evalueres og identiteter af klynger etableres. Klyngetræer har potentielt anvendelser på mange områder og kan i fremtiden tilpasses til at være mere fleksible, f.eks. Der kan også være anvendelser til mere generelle klyngegrafer til at kombinere resultater fra flere sæt parametre eller klyngemetoder.
metoder
clustree
clustree-programpakken (v0.2.0) er bygget til R statistisk programmeringssprog (v3.5.0). Den er afhængig af ggraph-pakken (v1.0.1) , som er bygget på ggplot2 (v2.2.1) og tidygraph (v1.1.0) pakkerne. Klyngetræer vises ved hjælp af Reingold-Tilford-trælayoutet eller Sugiyama-layoutet; begge er tilgængelige som en del af igraph-pakken (v1.2.1).
Figurpaneler vist her blev fremstillet ved hjælp af koplotpakken (v0.9.2) .
simuleringer
simulerede datasæt blev konstrueret ved at generere punkter fra statistiske distributioner. Den første simulering (simulering a) består af 1.000 point tilfældigt genereret fra et 100-dimensionelt rum ved hjælp af en ensartet fordeling mellem nul og 10. Simulering B består af en enkelt normalt fordelt klynge på 1.000 point i 100 dimensioner. Midten af denne klynge blev valgt fra en normalfordeling med gennemsnitlig nul og standardafvigelse 10. Punkter blev derefter genereret omkring dette center fra en normalfordeling med gennemsnit lig med midtpunktet og en standardafvigelse på 5. De resterende tre simuleringer blev produceret ved at tilføje yderligere klynger. For at have et kendt forhold mellem klynger blev centret for de nye klynger oprettet ved at manipulere centrene for eksisterende klynger. For klynge 2 blev en tilfældig 100-dimensionel vektor genereret fra en normalfordeling med gennemsnitlig nul og standardafvigelse 2 og tilføjet til centrum for klynge 1. Center 3 var gennemsnittet af center 1 og center 2 plus en tilfældig vektor fra en normalfordeling med Middel nul og standardafvigelse 5. For at sikre et lignende forhold mellem klynger 3 og 4 som mellem klynger 1 og 2 blev center 4 produceret ved at tilføje halvdelen af vektoren, der blev brugt til at producere center 2 til center 3 plus en anden vektor fra en normalfordeling med gennemsnitlig nul og standardafvigelse 2. Point for hver klynge blev genereret på samme måde som for klynge 1. Simulering C består af punkterne i klynger 1 og 2; simulering D består af klynger 1, 2 og 3; og simulering e består af klyngerne 1, 2, 3 og 4. Hvert simuleret datasæt blev grupperet ved hjælp af funktionen” kmeans ” i statistikpakken med værdier på |$k$| fra 1 til 8, maksimalt 100 iterationer og 10 tilfældige startpositioner. Klyngetrævisualiseringerne blev produceret ved hjælp af clustree-pakken med trælayoutet. De simulerede datasæt og den kode, der bruges til at fremstille dem, er tilgængelige fra lageret til denne artikel .
Iris datasæt
iris datasættet er tilgængeligt som en del af R. Vi grupperede dette datasæt ved hjælp af funktionen” kmeans ” i statistikpakken med værdier på |$k$| fra 1 til 5. Hver værdi af / $k$ / blev grupperet med maksimalt 100 iterationer og med 10 tilfældige startpositioner. Clustree-pakken blev brugt til at visualisere resultaterne ved hjælp af Sugiyama-layoutet. Det clustered iris datasæt er tilgængeligt som en del af clustree-pakken.
PBMC datasæt
PBMC datasættet blev hentet fra Seurat tutorial side , og denne tutorial blev fulgt for det meste af analysen ved hjælp Seurat version 2.3.1. Kort sagt blev celler filtreret baseret på antallet af gener, de udtrykker, og procentdelen af tællinger tildelt mitokondrielle gener. Dataene blev derefter log-normaliseret og 1.838 variable gener identificeret. Potentielle forvirrende variabler (antal unikke molekylære identifikatorer og procentdel mitokondrie ekspression) blev regresseret fra datasættet, før de udførte hovedkomponentanalyse på de identificerede variable gener. De første 10 hovedkomponenter blev derefter brugt til at opbygge en graf, der blev opdelt i klynger ved hjælp af Louvain-modularitetsoptimering med opløsningsparametre i området nul til 5, i trin på 0,1 mellem nul og 1 og derefter i trin på 0,5. Clustree blev derefter brugt til at visualisere resultaterne ved hjælp af trælayoutet.
tilgængelighed af kildekode og krav
Projektnavn: clustree.
projekt startside: https://github.com/lazappi/clustree.
operativsystemer: macOS, vinduer
programmeringssprog: R (> = 3.4)
andre krav: Ingen
licens: GPL-3
eventuelle begrænsninger til brug af ikke-akademikere: ingen
RRID:SCR_016293
tilgængelighed af understøttende data
clustree-pakken er tilgængelig fra CRAN og udvikles på GitHub . Koden og datasæt, der bruges til analysen præsenteret her, er også tilgængelige fra GitHub . Den clustered iris datasæt er inkluderet som en del af clustree, og pbmc datasæt kan hentes fra Seurat tutorial side eller papir GitHub repository. Snapshots af koden er tilgængelige i GigaScience repository, GigaDB .
forkortelser
PBMC: mononuklear celle i perifert blod; scRNA-sekv: enkeltcellet RNA-sekventering.
konkurrerende interesser
forfatterne erklærer, at de ikke har nogen konkurrerende interesser.
finansiering
L. å støttes af en australsk regering Forskning uddannelsesprogram stipendium. A. O. støttes gennem et nationalt sundheds-og medicinsk Forskningsråds karriereudviklingsstipendium (APP1126157). Murdoch Children ‘ s Research Institute understøttes af den victorianske regerings operationelle Infrastrukturstøtteprogram.
Forfatterbidrag
L. N. designet clustering tree-algoritmen, skrev clustree-programpakken og udarbejdede manuskriptet. A. O. overvågede projektet og kommenterede manuskriptet.
anerkendelser
tak til Marek Cmero for at give kommentarer til et udkast til manuskriptet og korrekturlæserne for deres kommentarer og forslag.
.
.
.
;
:
–
.
.
. I
,
.
.
.
.
;
:
–
.
,
.
,
.
.
. PP.
–
.
,
,
, et al.
.
.
:
;
. PP.
–
..
:
,
.
.
.
;
:
–
.
.
.
.
;
:
–
.
.
.
.
;
:
–
.
.
.
.
;
:
–
.
,
,
.
.
.
,
;
–
.
,
,
et al.
.
.
;
:
–
.
,
.
.
;
.
,
.
.
.
;
:
–
.
,
.
.
.
;
:
–
.
,
,
.
.
.
;
:
–
.
.
.
.
;
:
–
.
.
.
.
;
:
–
.
,
,
, et al.
.
.
;
:
–
.
,
,
.
.
.
;
:
–
.
,
,
, et al.
.
.
;
:
.
,
,
, et al.
.
.
;
:
–
.
.
.
.
.
.
:
;
.
.
.
.
.
.
.
,
.
,
.
.
.
. ;
.
,
,
, et al.
.
.
;
;
:
.
,
.
.
.
,
.
. ;
.
.
,
.
.
.
. .