- Abstract
- Introduzione
- Costruire un albero di clustering
- Una dimostrazione con simulazioni
- Un semplice esempio
- Alberi di clustering per i dati scRNA-seq
- Discussione
- Metodi
- clustree
- Simulazioni
- Set di dati Iris
- Set di dati PBMC
- Disponibilità del codice sorgente e requisiti
- Disponibilità dei dati di supporto
- Abbreviazioni
- Interessi concorrenti
- Finanziamento
- Contributi dell’autore
- RINGRAZIAMENTI
Abstract
Le tecniche di clustering sono ampiamente utilizzate nell’analisi di grandi set di dati per raggruppare campioni con proprietà simili. Ad esempio, il clustering viene spesso utilizzato nel campo del sequenziamento dell’RNA a cellule singole al fine di identificare diversi tipi di cellule presenti in un campione di tessuto. Esistono molti algoritmi per eseguire il clustering e i risultati possono variare in modo sostanziale. In particolare, il numero di gruppi presenti in un set di dati è spesso sconosciuto e il numero di cluster identificati da un algoritmo può cambiare in base ai parametri utilizzati. Per esplorare ed esaminare l’impatto della diversa risoluzione di clustering, presentiamo gli alberi di clustering. Questa visualizzazione mostra le relazioni tra cluster a più risoluzioni, consentendo ai ricercatori di vedere come i campioni si muovono all’aumentare del numero di cluster. Inoltre, le meta-informazioni possono essere sovrapposte sull’albero per informare la scelta della risoluzione e guidare nell’identificazione dei cluster. Illustriamo le caratteristiche degli alberi di clustering utilizzando una serie di simulazioni e due esempi reali, il classico set di dati iris e un complesso set di dati di RNA-sequencing a cella singola. Gli alberi di clustering possono essere prodotti utilizzando il pacchetto clustree R, disponibile da CRAN e sviluppato su GitHub.
Introduzione
L’analisi di clustering viene comunemente utilizzata per raggruppare campioni simili in una vasta gamma di applicazioni. In genere, l’obiettivo del clustering è quello di formare gruppi di campioni più simili tra loro rispetto ai campioni in altri gruppi. Mentre gli approcci di clustering fuzzy o soft assegnano ciascun campione a ciascun cluster con una certa probabilità e il clustering gerarchico forma un albero di campioni, la maggior parte dei metodi forma cluster duri in cui ogni campione viene assegnato a un singolo gruppo. Questo obiettivo può essere raggiunto in vari modi, ad esempio considerando le distanze tra i campioni (ad esempio, |k k means|-means , PAM ), le aree di densità attraverso il set di dati (ad esempio, DBSCAN) o le relazioni con le distribuzioni statistiche .
In molti casi, il numero di gruppi che dovrebbero essere presenti in un set di dati non è noto in anticipo e decidere il numero corretto di cluster da utilizzare è una sfida significativa. Per alcuni algoritmi, come|k k means / -means clustering, il numero di cluster deve essere esplicitamente fornito. Altri metodi hanno parametri che, direttamente o indirettamente, controllano la risoluzione del clustering e quindi il numero di cluster prodotti. Sebbene esistano metodi e statistiche (come il metodo elbow e i grafici silhouette ) progettati per aiutare gli analisti a decidere quale risoluzione di clustering utilizzare, in genere producono un singolo punteggio che considera solo un singolo set di campioni o cluster alla volta.
Un approccio alternativo sarebbe quello di considerare i cluster a più risoluzioni ed esaminare come i campioni cambiano i raggruppamenti all’aumentare del numero di cluster. Ciò ha portato a una serie di misure di stabilità dei cluster , molte delle quali si basano sul clustering di set di dati perturbati o sottocampionati. Ad esempio, l’algoritmo Model explorer sottocampiona un set di dati più volte, raggruppa ciascun set di dati sottocampionato a varie risoluzioni e quindi calcola una somiglianza tra i cluster alla stessa risoluzione per fornire una distribuzione di somiglianze che può informare la scelta della risoluzione . Una misura di stabilità del cluster che non si basa sulle perturbazioni è quella contenuta nel pacchetto SC3 per il clustering di dati di RNA-sequencing a cella singola (scRNA-seq). A partire da una serie di etichette di cluster a risoluzioni diverse, ogni cluster viene valutato, con i cluster assegnati maggiore stabilità se condividono gli stessi campioni di un cluster a un’altra risoluzione, ma penalizzati per essere a una risoluzione più alta.
Un approccio semplice simile è preso dalla visualizzazione dell’albero di clustering che presentiamo qui, senza calcolare i punteggi: (i) un set di dati viene cluster utilizzando qualsiasi algoritmo di clustering rigido a risoluzioni multiple, producendo set di nodi cluster; (ii) la sovrapposizione tra cluster a risoluzioni adiacenti viene utilizzata per costruire bordi; e (iii) il grafico risultante è presentato come un albero. Questo albero può essere usato per esaminare come i cluster sono correlati tra loro-quali cluster sono distinti e quali sono instabili. Nelle sezioni seguenti, descriviamo come costruiamo un tale albero e presentiamo esempi di alberi costruiti da un classico set di dati di clustering e un complesso set di dati scRNA-seq. Le figure mostrate qui possono essere prodotte in R utilizzando il nostro pacchetto clustree disponibile al pubblico. Sebbene gli alberi di clustering non possano fornire direttamente una risoluzione di clustering da utilizzare, possono essere uno strumento utile per esplorare e visualizzare la gamma di possibili scelte.
Costruire un albero di clustering
Per costruire un albero di clustering, iniziamo con un insieme di clustering e assegniamo i campioni ai gruppi a diverse risoluzioni. Questi potrebbero essere prodotti utilizzando qualsiasi algoritmo di hard-clustering che consente il controllo del numero di cluster in qualche modo. Ad esempio, questo potrebbe essere un insieme di campioni raggruppati usando|k k means / -significa con / k k\,\, = \,\,1,2,3$| come mostrato in Fig. 1. Ordiniamo questi clustering in modo che siano ordinati aumentando la risoluzione (|k k k|), quindi consideriamo coppie di clustering adiacenti. Ogni cluster |$c_ {{k,\,\,i}}$| (dove |$i\,\, = \,\,1,\,\, \ldots ,\,\,n$ e$n$| è il numero di cluster in risoluzione |$k$|) viene confrontato con ogni cluster |$c_ {{k + 1,\,\,j}}$| (dove |$j\,\, = \,\,1,\,\, \ldots ,\,\,m$ e$m$| è il numero di cluster in risoluzione |$k + 1$|). La sovrapposizione tra i due cluster viene calcolata come il numero di campioni assegnati a entrambi |{{c_ {k,\,\, i}} and| e |and{c_{k + 1,\,\, j}}$|. Successivamente, costruiamo un grafico in cui ogni nodo è un cluster e ogni bordo è una sovrapposizione tra due cluster. Mentre ci riferiamo a questo grafico come un albero per semplicità, può essere descritto più correttamente come un polytree, un caso speciale di un grafico aciclico diretto in cui il grafico non orientato sottostante è un albero .
Illustrazione dei passaggi necessari per costruire un albero di clustering. Innanzitutto, un set di dati deve essere raggruppato a risoluzioni diverse. La sovrapposizione nei campioni tra cluster a risoluzioni adiacenti viene calcolata e utilizzata per calcolare la proporzione per ciascun bordo. Infine, i bordi vengono filtrati e il grafico visualizzato come un albero.
Illustrazione dei passaggi necessari per costruire un albero di clustering. Innanzitutto, un set di dati deve essere raggruppato a risoluzioni diverse. La sovrapposizione nei campioni tra cluster a risoluzioni adiacenti viene calcolata e utilizzata per calcolare la proporzione per ciascun bordo. Infine, i bordi vengono filtrati e il grafico visualizzato come un albero.
Molti dei bordi saranno vuoti, ad esempio, in Fig. 1 nessun campione nel gruppo A at / k k\,\, = \,\,2$| finire nel cluster B a / k k\,\, = \,\,3$|. In alcuni set di dati potrebbero esserci anche bordi che contengono pochi campioni. Questi bordi non sono informativi e si traducono in un albero disordinato. Una soluzione ovvia per rimuovere i bordi non informativi e a basso numero è filtrarli utilizzando una soglia sul numero di campioni che rappresentano. Tuttavia, in questo caso, il conteggio dei campioni non è la statistica corretta da utilizzare perché favorisce i bordi a risoluzioni più basse e quelli che collegano cluster più grandi. Invece, definiamo la metrica in proporzione come il rapporto tra il numero di campioni sul bordo e il numero di campioni nel cluster verso cui va. Questa metrica mostra l’importanza del bordo per il cluster a risoluzione più alta indipendentemente dalla dimensione del cluster. Possiamo quindi applicare una soglia alla proporzione in modo da rimuovere i bordi meno informativi.
Il grafico finale può quindi essere visualizzato. In teoria, è possibile utilizzare qualsiasi algoritmo di layout grafico. Tuttavia, per il pacchetto clustree, abbiamo fatto uso dei due algoritmi specificamente progettati per le strutture ad albero disponibili nel pacchetto igraph . Questi sono il layout ad albero di Reingold-Tilford , che posiziona i nodi genitore sopra i loro figli, e il layout di Sugiyama, che posiziona i nodi di un grafico aciclico diretto in strati riducendo al minimo il numero di bordi incrociati . Entrambi questi algoritmi possono produrre layout attraenti; in quanto tali, non abbiamo trovato la necessità di progettare un algoritmo di layout specifico per il clustering degli alberi. Per impostazione predefinita, il pacchetto clustree utilizza solo un sottoinsieme di bordi durante la costruzione di un layout, in particolare i bordi più alti in proporzione per ogni nodo. Abbiamo scoperto che questo spesso porta a visualizzazioni più interpretabili; tuttavia, gli utenti possono scegliere di utilizzare tutti i bordi se lo si desidera.
Indipendentemente dal layout utilizzato, la visualizzazione finale posiziona i nodi del cluster in una serie di livelli in cui ogni livello è una risoluzione di clustering diversa e i bordi mostrano la transizione dei campioni attraverso tali risoluzioni. I bordi sono colorati in base al numero di campioni che rappresentano e la metrica in proporzione viene utilizzata per controllare la trasparenza del bordo, evidenziando i bordi più importanti. Per impostazione predefinita, la dimensione del nodo viene regolata in base al numero di campioni nel cluster e il loro colore indica la risoluzione del clustering. Il pacchetto clustree include anche opzioni per controllare l’estetica dei nodi in base agli attributi dei campioni nei cluster che rappresentano, come mostrato negli esempi seguenti.
Mentre un albero di clustering è concettualmente simile all’albero prodotto attraverso il clustering gerarchico, ci sono alcune importanti differenze. Il più ovvio è che un albero di clustering gerarchico è il risultato di un particolare algoritmo di clustering e mostra le relazioni tra singoli campioni, mentre gli alberi di clustering descritti qui sono indipendenti dal metodo di clustering e mostrano le relazioni tra cluster. I rami di un albero gerarchico mostrano come l’algoritmo di clustering ha unito i campioni. Al contrario, i bordi di un albero di clustering mostrano come i campioni si muovono tra i cluster quando la risoluzione cambia e i nodi possono avere più genitori. Mentre è possibile sovrapporre informazioni sui campioni su un albero gerarchico, questo non è comunemente fatto, ma è una caratteristica chiave del pacchetto clustree e come gli alberi di clustering potrebbero essere utilizzati nella pratica.
Una dimostrazione con simulazioni
Per dimostrare come può apparire un albero di clustering in diverse situazioni e come si comporta come un set di dati è overclustered, presentiamo alcuni esempi illustrativi usando semplici simulazioni (vedi Metodi). Presentiamo cinque scenari: rumore uniforme casuale (simulazione A), un singolo cluster (simulazione B), due cluster (simulazione C), tre cluster (simulazione D) e quattro cluster (simulazione E). Ogni cluster è costituito da 1.000 campioni (punti) generati da una distribuzione normale a 100 dimensioni e ogni set di dati sintetici è stato cluster utilizzando|k k means / -significa clustering con |k k\,\, = \,\,1,\,\, \ldots, 8|/. Usiamo quindi il pacchetto clustree per produrre alberi di clustering per ogni set di dati (Fig. 2).
Cinque set di dati sintetici utilizzati per dimostrare gli alberi di clustering. Per ogni set di dati, viene mostrato un grafico a dispersione dei primi due componenti principali, un albero di clustering predefinito e un albero di clustering con nodi colorati dall’indice di stabilità SC3 da viola (più basso) a giallo (più alto). I cinque set di dati contengono: (A) rumore uniforme casuale, (B) un singolo cluster, (C) due cluster, (D) tre cluster e (E) quattro cluster.
Cinque set di dati sintetici utilizzati per dimostrare gli alberi di clustering. Per ogni set di dati, viene mostrato un grafico a dispersione dei primi due componenti principali, un albero di clustering predefinito e un albero di clustering con nodi colorati dall’indice di stabilità SC3 da viola (più basso) a giallo (più alto). I cinque set di dati contengono: (A) rumore uniforme casuale, (B) un singolo cluster, (C) due cluster, (D) tre cluster e (E) quattro cluster.
Guardando i primi due esempi (rumore uniforme e un singolo cluster ), possiamo vedere chiaramente come si comporta un albero di clustering quando un algoritmo di clustering restituisce più cluster di quelli realmente presenti in un set di dati. Nuovi cluster iniziano a formarsi da più cluster esistenti e molti campioni passano tra i rami dell’albero, con conseguente basso in proporzione bordi. Cluster instabili possono anche apparire e poi scomparire come la risoluzione aumenta, come si vede in Fig. 2E. Mentre aggiungiamo più struttura ai set di dati, gli alberi di clustering iniziano a formare rami chiari e i bordi a bassa proporzione tendono ad essere confinati alle sezioni dell’albero. Osservando quali cluster sono stabili e dove sorgono bordi a bassa proporzione, possiamo dedurre quali aree dell’albero sono probabilmente il risultato di veri cluster e quali sono causate da un sovraffollamento.
Il secondo albero di clustering per ogni set di dati mostra i nodi colorati in base all’indice di stabilità SC3 per ogni cluster. Come ci aspetteremmo, nessun cluster riceve un punteggio di stabilità elevato nei primi due esempi. Tuttavia, mentre vediamo chiaramente due rami nell’albero di clustering per l’esempio a due cluster (simulazione C), questo non si riflette nei punteggi SC3. Nessun cluster riceve un punteggio di stabilità elevato, molto probabilmente a causa dell’elevato numero di campioni che si spostano tra i cluster all’aumentare della risoluzione. Poiché ci sono più cluster veri nei set di dati simulati, i punteggi di stabilità SC3 diventano più predittivi della risoluzione corretta da utilizzare. Tuttavia, è importante esaminare i punteggi di stabilità di tutti i cluster con una particolare risoluzione in quanto prendere il punteggio di stabilità individuale più alto potrebbe portare alla risoluzione errata utilizzata, come si può vedere nell’esempio a quattro cluster (simulazione E). Questi esempi mostrano come gli alberi di clustering possono essere utilizzati per visualizzare le metriche di clustering esistenti in un modo che può aiutare a informare le scelte dei parametri.
Un semplice esempio
Per illustrare ulteriormente come viene costruito un albero di clustering, lavoreremo attraverso un esempio utilizzando il classico set di dati iris . Questo set di dati contiene misure della lunghezza sepalo, larghezza sepalo, lunghezza petalo, e la larghezza petalo da 150 fiori di iris, 50 da ciascuna delle tre specie: Iris setosa, Iris versicolor, e Iris virginica. Il set di dati iris è comunemente usato come esempio sia per i problemi di clustering che di classificazione con i campioni I. setosa che sono significativamente diversi dagli altri campioni e separabili linearmente dagli altri campioni. Abbiamo raggruppato questo set di dati usando|k k means / -significa clustering con |k k\,\, = \,\,1,\,\, \ldots, 5| / e ha prodotto l’albero di clustering mostrato in Fig. 3 BIS.
Clustering di alberi basati su / k k k / – significa clustering del set di dati iris. (A) I nodi sono colorati in base al valore di |k k k| e dimensionati in base al numero di campioni che rappresentano. I bordi sono colorati in base al numero di campioni (dal blu che rappresenta pochi al giallo che rappresenta molti). La trasparenza viene regolata in base alla proporzione, con linee più forti che mostrano i bordi che sono più importanti per il cluster a risoluzione più alta. Le etichette dei cluster sono assegnate in modo casuale dall’algoritmo|k k means / -means. (B) Lo stesso albero con la colorazione del nodo modificato per mostrare la lunghezza media dei petali dei campioni in ciascun cluster.
Clustering di alberi basati su / k k k / – significa clustering del set di dati iris. (A) I nodi sono colorati in base al valore di |k k k| e dimensionati in base al numero di campioni che rappresentano. I bordi sono colorati in base al numero di campioni (dal blu che rappresenta pochi al giallo che rappresenta molti). La trasparenza viene regolata in base alla proporzione, con linee più forti che mostrano i bordi che sono più importanti per il cluster a risoluzione più alta. Le etichette dei cluster sono assegnate in modo casuale dall’algoritmo|k k means / -means. (B) Lo stesso albero con la colorazione del nodo modificato per mostrare la lunghezza media dei petali dei campioni in ciascun cluster.
Vediamo che un ramo dell’albero è chiaramente distinto (presumibilmente rappresenta I. setosa), rimanendo invariato indipendentemente dal numero di cluster. Dall’altro lato, vediamo che il cluster a / k k\,\, = \,\,2$| si divide in modo pulito in due cluster (presumibilmente I. versicolor e I. virginica) a / k k\,\, = \,\,3$|. Tuttavia, mentre passiamo a / k k\,\, = \,\,4$| e / k k\,\, = \,\,5$|, vediamo cluster formati da più rami con bordi più bassi in proporzione. Come abbiamo visto negli esempi simulati, questo tipo di schema può indicare che i dati sono diventati sovraffollati e abbiamo iniziato a introdurre raggruppamenti artificiali.
Possiamo verificare la nostra ipotesi che il ramo distinto rappresenti i campioni I. setosa e che gli altri due cluster a / k k\,\, = \,\,3$| sono I. versicolor e I. virginica sovrapponendo alcune informazioni note sui campioni. In Fig. 3B abbiamo colorato i nodi per la lunghezza media dei petali dei campioni che contengono. Ora possiamo vedere che i cluster nel ramo distinto hanno i petali più corti, con il cluster 1 a / k k\,\, = \,\,3$| avere una lunghezza intermedia e cluster 3 con i petali più lunghi. Questa caratteristica è nota per separare i campioni nelle specie attese, con I. setosa che ha i petali più corti in media, I. versicolor una lunghezza intermedia e I. virginica la più lunga.
Sebbene questo sia un esempio molto semplice, evidenzia alcuni dei vantaggi della visualizzazione di un albero di clustering. Otteniamo qualche indicazione della corretta risoluzione di clustering esaminando i bordi e possiamo sovrapporre informazioni note per valutare la qualità del clustering. Ad esempio, se osservassimo che tutti i cluster avevano la stessa lunghezza media del petalo, suggerirebbe che il clustering non ha avuto successo in quanto sappiamo che questa è una caratteristica importante che separa la specie. Potremmo potenzialmente saperne di più osservando quali campioni seguono i bordi a bassa proporzione o sovrapponendo una serie di funzionalità per cercare di capire cosa causa la divisione di particolari cluster.
Alberi di clustering per i dati scRNA-seq
Un campo che ha iniziato a fare un uso pesante delle tecniche di clustering è l’analisi dei dati scRNA-seq. scRNA-sequenziamento è una tecnologia recentemente sviluppata in grado di misurare come i geni sono espressi in migliaia a milioni di singole cellule . Questa tecnologia è stata rapidamente adottata in campi come la biologia dello sviluppo e l’immunologia, dove è prezioso avere informazioni da singole cellule piuttosto che misurazioni che vengono mediate tra le molte cellule diverse in un campione utilizzando vecchie tecnologie RNA-seq. Un uso chiave per scRNA-seq è quello di scoprire e interrogare i diversi tipi di cellule presenti in un campione di un tessuto complesso. In questa situazione, il clustering viene tipicamente utilizzato per raggruppare cellule simili in base ai loro profili di espressione genica. Le differenze nell’espressione genica tra i gruppi possono quindi essere utilizzate per dedurre l’identità o la funzione di quelle cellule . Il numero di tipi di cellule (cluster) in un set di dati scRNA-seq può variare a seconda di fattori come il tessuto studiato, il suo stato di sviluppo o ambientale e il numero di cellule catturate. Spesso, il numero di tipi di celle non è noto prima che i dati vengano generati e alcuni campioni possono contenere dozzine di cluster. Pertanto, decidere quale risoluzione di clustering utilizzare è una considerazione importante in questa applicazione.
Come esempio di come gli alberi di clustering possono essere utilizzati nel contesto scRNA-seq, consideriamo un set di dati PBMC (peripheral blood mononuclear Cell) comunemente usato. Questo set di dati è stato originariamente prodotto da 10x Genomics e contiene 2.700 cellule mononucleate del sangue periferico, che rappresentano una gamma di tipi di cellule immunitarie ben studiate . Abbiamo analizzato questo set di dati utilizzando il pacchetto Seurat, un toolkit comunemente usato per l’analisi scRNA-seq, seguendo le istruzioni nel loro tutorial con l’eccezione di variare il parametro di risoluzione del clustering da zero a 5 (vedi Metodi). Seurat utilizza un algoritmo di clustering basato su grafici e il parametro resolution controlla il partizionamento di questo grafico, con valori più alti che generano più cluster. Gli alberi di clustering prodotti da questa analisi sono mostrati in Fig. 4.
Due alberi di clustering di un set di dati di 2.700 PBMCs. (A) Risultati dal clustering utilizzando Seurat con parametri di risoluzione da zero a 1. A una risoluzione di 0,1, vediamo la formazione di quattro rami principali, uno dei quali continua a dividersi fino a una risoluzione di 0,4, dopo di che ci sono solo piccole modifiche. (B) Risoluzioni da zero a 5. Alle risoluzioni più alte, iniziamo a vedere molti bordi a bassa proporzione, indicando l’instabilità del cluster. Seurat etichetta i cluster in base alle loro dimensioni, con il cluster 0 che è il più grande.
Due alberi di clustering di un set di dati di 2.700 PBMCs. (A) Risultati dal clustering utilizzando Seurat con parametri di risoluzione da zero a 1. A una risoluzione di 0,1, vediamo la formazione di quattro rami principali, uno dei quali continua a dividersi fino a una risoluzione di 0,4, dopo di che ci sono solo piccole modifiche. (B) Risoluzioni da zero a 5. Alle risoluzioni più alte, iniziamo a vedere molti bordi a bassa proporzione, indicando l’instabilità del cluster. Seurat etichetta i cluster in base alle loro dimensioni, con il cluster 0 che è il più grande.
L’albero di clustering che copre risoluzioni da zero a 1 in passi di 0.1 (Fig. 4A) mostra che quattro rami principali si formano con una risoluzione di appena 0.1. Uno di questi rami, che inizia con il cluster 3 alla risoluzione 0.1, rimane invariato, mentre il ramo che inizia con il cluster 2 si divide solo una volta con una risoluzione di 0.4. La maggior parte delle ramificazioni si verifica nel ramo che inizia con il cluster 1, che ha costantemente i sottobranchi divisi per formare nuovi cluster all’aumentare della risoluzione. Ci sono due regioni di stabilità in questo albero: alla risoluzione 0.4—0.5 e alla risoluzione 0.7–1.0 in cui il ramo che inizia dal cluster 0 si divide in due.
Fig. 4B mostra un albero di clustering con una gamma più ampia di risoluzioni, da zero a 5 in passi di 0,5. Guardando attraverso questo intervallo, possiamo vedere cosa succede quando l’algoritmo è costretto a produrre più cluster di quelli che potrebbero essere veramente presenti in questo set di dati. Quando si verifica un sovraffollamento, iniziamo a vedere più bassi bordi in proporzione e nuovi cluster che si formano da più cluster genitori. Ciò suggerisce che quelle aree dell’albero sono instabili e che è improbabile che i nuovi cluster in fase di formazione rappresentino gruppi veri nel set di dati.
I geni marcatori noti sono comunemente usati per identificare i tipi di cellule a cui corrispondono cluster specifici. La sovrapposizione delle informazioni sull’espressione genica su un albero di clustering fornisce una visione alternativa che può aiutare a indicare quando si formano cluster contenenti popolazioni di cellule pure. Figura 5 mostra l’albero clustering PBMC in Fig. 4A sovrapposto con l’espressione di alcuni geni marker noti.
Clustering alberi del set di dati PBMC colorati secondo l’espressione di marcatori noti. I colori dei nodi indicano la media dei conteggi del gene log2 dei campioni in ciascun cluster. CD19 (A) identifica le cellule B, CD14 (B) mostra una popolazione di monociti, CD3D (C) è un marker di cellule T e CCR7 (D) mostra la divisione tra memoria e cellule T CD4 ingenue.
Clustering alberi del set di dati PBMC colorati secondo l’espressione di marcatori noti. I colori dei nodi indicano la media dei conteggi del gene log2 dei campioni in ciascun cluster. CD19 (A) identifica le cellule B, CD14 (B) mostra una popolazione di monociti, CD3D (C) è un marker di cellule T e CCR7 (D) mostra la divisione tra memoria e cellule T CD4 ingenue.
Aggiungendo queste informazioni aggiuntive, possiamo identificare rapidamente alcuni dei tipi di celle. CD19 (Fig. 5A) è un marcatore di cellule B ed è chiaramente espresso nel ramo più distinto dell’albero. CD14 (Fig. 5B) è un marcatore di un tipo di monocita, che diventa più espresso mentre seguiamo uno dei rami centrali, permettendoci di vedere quale risoluzione identifica una popolazione pura di queste cellule. CD3D (Fig. 5C) è un marcatore generale delle cellule T ed è espresso in due rami separati, uno che si divide in bassa e alta espressione di CCR7 (Fig. 5D), separando memoria e ingenuo CD4 cellule T. Aggiungendo l’espressione di geni noti a un albero di clustering, possiamo vedere se più popolazioni possono essere identificate come la risoluzione di clustering è aumentata e se i cluster sono coerenti con la biologia nota. Per la maggior parte del tutorial Seurat, viene utilizzata una risoluzione di 0,6, ma gli autori notano che passando a una risoluzione di 0,8, è possibile ottenere una divisione tra celle CD4 T di memoria e ingenue. Questa è una divisione che potrebbe essere anticipata osservando l’albero di clustering con l’aggiunta di informazioni preliminari.
Discussione
Il clustering di campioni simili in gruppi è una tecnica utile in molti campi, ma spesso gli analisti si trovano di fronte al difficile problema di decidere quale risoluzione di clustering utilizzare. Gli approcci tradizionali a questo problema in genere considerano un singolo cluster o campione alla volta e possono fare affidamento sulla conoscenza preliminare delle etichette dei campioni. Qui, presentiamo gli alberi di clustering, una visualizzazione alternativa che mostra le relazioni tra i clustering a più risoluzioni. Sebbene gli alberi di clustering non possano suggerire direttamente quale risoluzione di clustering utilizzare, possono essere uno strumento utile per aiutare a prendere tale decisione, in particolare se combinati con altre metriche o conoscenze di dominio.
Gli alberi di clustering mostrano come i cluster sono divisi all’aumentare della risoluzione, quali cluster sono chiaramente separati e distinti, che sono correlati tra loro e come i campioni cambiano i gruppi man mano che vengono prodotti più cluster. Sebbene gli alberi di clustering possano apparire simili agli alberi prodotti dal clustering gerarchico, ci sono diverse differenze importanti. Il clustering gerarchico considera le relazioni tra singoli campioni e non fornisce un modo ovvio per formare gruppi. Al contrario, gli alberi di clustering sono indipendenti da qualsiasi particolare metodo di clustering e mostrano le relazioni tra cluster, piuttosto che campioni, a risoluzioni diverse, ognuna delle quali potrebbe essere utilizzata per ulteriori analisi.
Per illustrare gli usi degli alberi di clustering, abbiamo presentato una serie di simulazioni e due esempi di analisi reali, uno utilizzando il classico set di dati iris e un secondo basato su un complesso set di dati scRNA-seq. Entrambi gli esempi dimostrano come un albero di clustering possa aiutare a decidere quale risoluzione utilizzare e come sovrapporre informazioni aggiuntive possa aiutare a convalidare tali cluster. Questo è di particolare utilità per l’analisi scRNA-seq in quanto questi set di dati sono spesso grandi, rumorosi e contengono un numero sconosciuto di tipi di celle o cluster.
Anche quando determinare il numero di cluster non è un problema, il clustering degli alberi può essere uno strumento prezioso. Forniscono una visualizzazione compatta e densa di informazioni in grado di visualizzare informazioni riassunte in una serie di cluster. Modificando l’aspetto dei nodi cluster in base agli attributi dei campioni che rappresentano, è possibile valutare i cluster e stabilire le identità dei cluster. Gli alberi di clustering hanno potenzialmente applicazioni in molti campi e, in futuro, potrebbero essere adattati per essere più flessibili, ad esempio ospitando clustering fuzzy. Ci possono essere anche usi per grafici di clustering più generali per combinare i risultati di più set di parametri o metodi di clustering.
Metodi
clustree
Il pacchetto software clustree (v0.2.0) è stato creato per il linguaggio di programmazione statistico R (v3.5.0). Si basa sul pacchetto ggraph (v1.0.1), che è costruito sui pacchetti ggplot2 (v2.2.1) e tidygraph (v1.1. 0). Gli alberi di clustering vengono visualizzati utilizzando il layout ad albero Reingold-Tilford o il layout Sugiyama; entrambi sono disponibili come parte del pacchetto igraph (v1.2.1).
I pannelli di figura mostrati qui sono stati prodotti utilizzando il pacchetto cowplot (v0 .9. 2).
Simulazioni
Set di dati simulati sono stati costruiti generando punti da distribuzioni statistiche. La prima simulazione (simulazione A) consiste di 1.000 punti generati casualmente da uno spazio di 100 dimensioni utilizzando una distribuzione uniforme tra zero e 10. La simulazione B consiste in un singolo cluster normalmente distribuito di 1.000 punti in 100 dimensioni. Il centro di questo cluster è stato scelto da una distribuzione normale con media zero e deviazione standard 10. I punti sono stati quindi generati attorno a questo centro da una distribuzione normale con media uguale al punto centrale e una deviazione standard di 5. Le restanti tre simulazioni sono state prodotte aggiungendo ulteriori cluster. Per avere una relazione nota tra cluster, il centro per i nuovi cluster è stato creato manipolando i centri dei cluster esistenti. Per il cluster 2, un vettore casuale a 100 dimensioni è stato generato da una distribuzione normale con media zero e deviazione standard 2 e aggiunto al centro per il cluster 1. Il centro 3 era la media del centro 1 e del centro 2 più un vettore casuale da una distribuzione normale con media zero e deviazione standard 5. Per garantire una relazione simile tra i cluster 3 e 4 come tra i cluster 1 e 2, il centro 4 è stato prodotto aggiungendo metà del vettore utilizzato per produrre il centro 2 al centro 3 più un altro vettore da una distribuzione normale con media zero e deviazione standard 2. I punti per ogni cluster sono stati generati nello stesso modo del cluster 1. La simulazione C è costituita dai punti nei cluster 1 e 2; la simulazione D è costituita dai cluster 1, 2 e 3; e la simulazione E consiste di cluster 1, 2, 3 e 4. Ogni set di dati simulato è stato raggruppato utilizzando la funzione” kmeans ” nel pacchetto stats con valori di |k k k| da 1 a 8, un massimo di 100 iterazioni e 10 posizioni di partenza casuali. Le visualizzazioni ad albero di clustering sono state prodotte utilizzando il pacchetto clustree con il layout ad albero. I set di dati simulati e il codice utilizzato per produrli sono disponibili dal repository per questo articolo .
Set di dati Iris
Il set di dati iris è disponibile come parte di R. Abbiamo raggruppato questo set di dati usando la funzione” kmeans ” nel pacchetto stats con valori di |k k k| da 1 a 5. Ogni valore di / k k k / è stato raggruppato con un massimo di 100 iterazioni e con 10 posizioni di partenza casuali. Il pacchetto clustree è stato utilizzato per visualizzare i risultati utilizzando il layout Sugiyama. Il set di dati iris cluster è disponibile come parte del pacchetto clustree.
Set di dati PBMC
Il set di dati PBMC è stato scaricato dalla pagina Seurat tutorial , e questo tutorial è stato seguito per la maggior parte dell’analisi utilizzando Seurat versione 2.3.1. In breve, le cellule sono state filtrate in base al numero di geni che esprimono e alla percentuale di conteggi assegnati ai geni mitocondriali. I dati sono stati poi log-normalizzati e 1.838 geni variabili identificati. Le variabili di confondimento potenziali (numero di identificatori molecolari unici e percentuale di espressione mitocondriale) sono state regredite dal set di dati prima di eseguire l’analisi dei componenti principali sui geni variabili identificati. I primi 10 componenti principali sono stati quindi utilizzati per costruire un grafico che è stato partizionato in cluster utilizzando l’ottimizzazione della modularità di Louvain con parametri di risoluzione nell’intervallo da zero a 5, in passi di 0,1 tra zero e 1, e quindi in passi di 0,5. Clustree è stato quindi utilizzato per visualizzare i risultati utilizzando il layout ad albero.
Disponibilità del codice sorgente e requisiti
Nome del progetto: clustree.
Pagina iniziale del progetto: https://github.com/lazappi/clustree.
Sistemi operativi: Linux, macOS, Windows
Linguaggio di programmazione: R (> = 3.4)
Altri requisiti: None
Licenza: GPL-3
Eventuali restrizioni all’uso da parte di non accademici: None
RRID:SCR_016293
Disponibilità dei dati di supporto
Il pacchetto clustree è disponibile da CRAN ed è in fase di sviluppo su GitHub . Il codice e i set di dati utilizzati per l’analisi qui presentati sono disponibili anche da GitHub . Il set di dati iris cluster è incluso come parte di clustree e il set di dati PBMC può essere scaricato dalla pagina tutorial Seurat o dal repository GitHub di paper. Le istantanee del codice sono disponibili nel repository GigaScience, GigaDB .
Abbreviazioni
PBMC: peripheral blood mononuclear cell; scRNA-seq: single-cell RNA-sequencing.
Interessi concorrenti
Gli autori dichiarano di non avere interessi concorrenti.
Finanziamento
L. Z. è supportato da una borsa di studio del programma di formazione per la ricerca del governo australiano. A. O. è supportato attraverso un National Health and Medical Research Council Career Development fellowship (APP1126157). Il Murdoch Children’s Research Institute è supportato dal programma di supporto alle infrastrutture operative del governo vittoriano.
Contributi dell’autore
L. Z. ha progettato l’algoritmo clustering tree, ha scritto il pacchetto software clustree e ha redatto il manoscritto. A. O. supervisionò il progetto e commentò il manoscritto.
RINGRAZIAMENTI
Grazie a Marek Cmero per aver fornito commenti su una bozza del manoscritto e ai revisori per i loro commenti e suggerimenti.
.
.
.
;
:
–
.
.
. In
,
.
.
.
.
;
:
–
.
,
.
,
.
.
. pp.
–
.
,
,
, et al.
.
.
:
;
. pp.
–
..
:
,
.
.
.
;
:
–
.
.
.
.
;
:
–
.
.
.
.
;
:
–
.
.
.
.
;
:
–
.
,
,
.
.
.
,
;
–
.
,
,
et al.
.
.
;
:
–
.
,
.
.
;
.
,
.
.
.
;
:
–
.
,
.
.
.
;
:
–
.
,
,
.
.
.
;
:
–
.
.
.
.
;
:
–
.
.
.
.
;
:
–
.
,
,
, et al.
.
.
;
:
–
.
,
,
.
.
.
;
:
–
.
,
,
, et al.
.
.
;
:
.
,
,
, et al.
.
.
;
:
–
.
.
.
.
.
.
:
;
.
.
.
.
.
.
.
,
.
,
.
.
.
. ;
.
,
,
, et al.
.
.
;
;
:
.
,
.
.
.
,
.
. ;
.
.
,
.
.
.
. .