Scientific FigureScientific Figure
Generatore di volcano plot

Generatore di volcano plot

Un generatore di volcano plot per i risultati di RNA-seq, proteomica e metabolomica in articoli e tesi: geni sovraespressi e sottoespressi separati alle tue soglie, i risultati principali etichettati e i conteggi in legenda, tutto calcolato dalla tua tabella.

Stili di rivista nel generatore di volcano plot

Cinque finiture di rivista dal generatore di volcano plot, ciascuna su una diversa tabella di risultati illustrativa: fegato di topo knockout, marcatori di singola cellula, stress da siccità in una pianta, un microarray sul fumo e uno screening di fosfoproteomica. Clicca su una scheda per caricarne prompt e geni.

Nature

La finitura Nature del generatore di volcano plot: rosso mattone attenuato e blu acciaio, nomi dei geni in corsivo, nessun riquadro.

Cell Press

I marcatori Seurat nel generatore di volcano plot salgono oltre y = 80, e l'asse y è scalato per contenerli.

PLOS

Vermiglio e azzurro adatti ai daltonici con etichette in riquadro: la finitura PLOS del generatore di volcano plot.

Bioinformatics

Una tabella limma nel generatore di volcano plot, con uno stile che resta leggibile nella stampa in scala di grigi.

Preprint (ggplot2)

Fosfositi come etichette e una linea a p < 0,01, nell'aspetto ggplot2 del generatore di volcano plot.

Esempi di volcano plot

Quattro esempi di volcano plot dal generatore di volcano plot (RNA-seq, proteomica, metabolomica e un insieme di geni etichettati), ciascuno un render reale del prompt e della tabella sulla sua scheda. Clicca su una scheda per mettere prompt e geni nel riquadro di composizione.

RNA-seq: farmaco vs veicolo

L'impostazione predefinita del generatore di volcano plot: dieci etichette, i risultati più significativi dai due lati.

Proteomica: ipossia vs normossia

Proteomica label-free nel generatore di volcano plot, con rapporti log₂ e p-value del test t.

Metabolomica con fold change semplice

Fold change semplici da un foglio di metabolomica; il generatore di volcano plot ne rappresenta il log₂.

Sei geni evidenziati per nome

Indica i geni e il generatore di volcano plot etichetta esattamente quelli, grigi o no.

Che cos'è un volcano plot?

Un volcano plot mostra in una sola immagine un risultato di espressione differenziale: ogni gene è un punto, con il suo log₂ fold change fra due condizioni sull'asse x e il −log₁₀ del suo p-value sull'asse y. I geni che sono cambiati molto e in modo affidabile salgono nei due angoli superiori, mentre i geni invariati formano la base bassa e larga attorno allo zero, la forma che dà il nome al grafico. Le linee di soglia tratteggiate per fold change e significatività dividono i punti in sovraespressi, sottoespressi e non significativi.

Su questo generatore di volcano plot

  • Il generatore di volcano plot calcola nel codice, dalla tua tabella, −log₁₀ p, la classe di ogni gene, i conteggi, entrambi gli assi e le linee di soglia, e passa ogni coordinata al modello di immagine. Il modello si limita a collocarle.
  • Le soglie predefinite del generatore di volcano plot sono |log₂ fold change| ≥ 1 (una variazione di 2 volte) e p < 0,05, letto come corretto quando i tuoi valori sono padj, FDR o q-value. Cambiale nel prompt: «|log2FC| > 0.58 e padj < 0.01».
  • I fold change semplici vengono convertiti: quando una richiesta dice fold change senza mai dire log (lattato 3,2), il generatore di volcano plot rappresenta log₂ 3,2 = 1,68. Per un file decide invece l'intestazione della colonna.
  • Fino a 200 geni il generatore di volcano plot riporta ogni punto esattamente. Oltre, i geni più significativi sono collocati esattamente e la base grigia è disegnata dal suo conteggio e dalla sua forma reali, così una tabella di 20.000 geni mantiene i conteggi veri.

Come leggere un volcano plot, punto per punto

Venti geni illustrativi da un confronto di RNA-seq fra interferone beta e trattamento fittizio (mock), disegnati dallo stesso codice che usa il generatore di volcano plot, con |log₂FC| ≥ 1 e padj < 0,05. I numeri sulla figura corrispondono ai passaggi.

Volcano plot di 20 geni illustrativi, interferone beta contro mock: sei geni sovraespressi in alto a destra guidati da IFIT1, quattro geni sottoespressi in alto a sinistra guidati da COL1A1, STAT1 in alto ma dentro le linee del fold change, CXCL10 molto a destra ma sotto la linea di significatività, e i geni invariati in grigio alla base−6−4−20246051015log₂ fold change (interferone beta / mock)−log₁₀(p-value corretto)CXCL10STAT1COL1A1TGFBIIFIT1ISG15RSAD21233456
La tabella dell'esempio guidato come la dispone il generatore di volcano plot: linee tratteggiate a log₂ fold change ±1 e a −log₁₀ 0,05 = 1,3, risultati significativi a colori, il resto in grigio.
  1. 1

    In orizzontale: verso ed entità della variazione

    x è il log₂ fold change dell'interferone beta rispetto al mock. 0 è nessuna variazione, +1 è il doppio, −1 è la metà, e IFIT1 a +5,1 è circa 34 volte più alto. La scala è simmetrica, quindi un dimezzamento sta a sinistra tanto quanto un raddoppio sta a destra.

  2. 2

    In verticale: evidenza, non entità

    y è il −log₁₀ del p corretto. La linea tratteggiata a 1,3 è padj 0,05, 2 è 0,01, e IFIT1 a 13,7 ha padj 2 × 10⁻¹⁴. Più in alto significa che la variazione ha meno probabilità di essere rumore; non dice nulla su quanto sia grande la variazione.

  3. 3

    Gli angoli superiori contengono i risultati

    A destra di x = 1 e sopra la linea stanno i sei geni sovraespressi (IFIT1, ISG15, MX1, RSAD2, OAS1, IRF7); a sinistra di −1, i quattro sottoespressi (COL1A1, TGFBI, MYC, CCND1). Sono i conteggi che riporta un articolo.

  4. 4

    In alto al centro: significativo ma piccolo

    STAT1 sta a (0,7, 8,5): la sua variazione è misurata con grande precisione ma è solo di 1,6 volte, sotto la linea delle 2 volte, quindi resta grigio. FN1 fa lo stesso più in basso, sul lato dei sottoespressi.

  5. 5

    Lontano ma in basso: grande ma incerto

    CXCL10 sta a (3,9, 0,9): in media 15 volte più alto, ma il padj è 0,12. Poche letture o repliche discordanti danno esattamente questo punto. Non è un risultato significativo con queste soglie, ma merita un secondo sguardo.

  6. 6

    La base grigia: ciò che non è cambiato

    ACTB, GAPDH e gli altri geni housekeeping si affollano attorno a (0, 0). In un volcano plot di RNA-seq sull'intero genoma questa base contiene la maggior parte dei 15.000–25.000 geni analizzati.

Manda questi 20 geni al generatore di volcano plot, poi cambia una soglia nel prompt e guarda i punti attraversare le linee.

Come usare il generatore di volcano plot

1

Dai i tuoi geni al generatore di volcano plot

Scrivi un gene per riga come nome, log₂ fold change, p (FKBP5 3.1, 1.2e-12; CCL2 −2.2, 5e-7) oppure allega la tabella dei risultati in .csv, .tsv o .xlsx. Le intestazioni di DESeq2, edgeR, limma, Seurat e Perseus vengono riconosciute, fino a 60.000 righe.

2

Indica il confronto e le soglie

Scrivi Trattato vs Controllo per il titolo dell'asse, e le soglie se non sono |log₂FC| ≥ 1 e p < 0,05 (scrivi padj o FDR per i valori corretti). Indica i geni da etichettare o chiedi i primi N; l'impostazione predefinita sono i dieci risultati più significativi, divisi fra i due lati.

3

Scegli uno stile di rivista e genera

Nature, Cell Press, PLOS, Bioinformatics o una finitura preprint simile a ggplot2. Il generatore di volcano plot calcola coordinate, classi, conteggi e linee di soglia prima che il modello di immagine disegni, e li ricalcola a ogni modifica successiva.

Quali colonne di DESeq2, edgeR, limma e Seurat vanno in un volcano plot

Ogni pipeline scrive gli stessi tre numeri con nomi diversi. Queste sono le colonne che il generatore di volcano plot legge da ciascuna tabella di risultati, così il file si può allegare esattamente come è stato esportato.

Tabella dei risultatix: log₂ fold changey: p-valuep corretto (usato per primo)Attenzione a
DESeq2 results()log2FoldChangepvaluepadjpadj è NA per i geni rimossi dal filtraggio indipendente; quelle righe vengono saltate. Per grafici e ordinamenti, gli autori di DESeq2 raccomandano i fold change ridotti con lfcShrink().
edgeR topTags()logFCPValueFDRFDR è Benjamini–Hochberg per impostazione predefinita. logCPM è l'espressione media, non un fold change.
limma topTable()logFCP.Valueadj.P.ValB è il log-odds dell'espressione differenziale, non un p-value; tienilo fuori dall'asse y.
Seurat FindMarkers()avg_log2FCp_valp_val_adjp_val_adj è corretto con Bonferroni su tutti i geni e spesso vale esattamente 0; quei geni sono disegnati al valore non nullo più piccolo. Seurat v3 scriveva avg_logFC in logaritmo naturale.
Perseus (MaxQuant)Difference−Log p-value (già −log₁₀)q-valueLa colonna −log₁₀ viene riconvertita in p, così non viene applicata due volte.
Il tuo fogliolog2FCp o pvaluepadj, FDR o qUna colonna intitolata Fold change, senza log, viene convertita in log₂: 4 diventa 2, 0,25 diventa −2.

Quando un file ha sia una colonna di p grezzo sia una di p corretto, il generatore di volcano plot rappresenta e applica la soglia a quello corretto, che è il valore con cui di solito si riportano i risultati di DESeq2, edgeR e limma. Per rappresentare il p grezzo, allega il foglio senza la colonna corretta.

Soglie del volcano plot: che cosa cambiano |log₂FC| e padj

Le due soglie decidono quali punti contano come risultati significativi, e sono scelte, non proprietà dei dati. |log₂ fold change| ≥ 1 richiede almeno un raddoppio o un dimezzamento; padj < 0,05 accetta un 5 % atteso di falsi positivi tra i geni selezionati. Gli stessi 20 geni dell'esempio guidato, con quattro coppie di soglie, contati dal codice del generatore di volcano plot:

SoglieSuGiùNon significativiChe cosa è cambiato
|log₂FC| ≥ 1, padj < 0,05 (l'impostazione abituale)6410STAT1 e FN1 superano la soglia di p ma non quella di fold change, CXCL10 quella di fold change ma non quella di p, quindi restano tutti e tre grigi.
|log₂FC| ≥ 0,58 (1,5 volte), padj < 0,05758Una soglia di 1,5 volte fa entrare STAT1 e FN1: piccole variazioni misurate con grande precisione.
|log₂FC| ≥ 1, padj < 0,016311Il p più severo esclude CCND1 (padj 0,019). Tutti i geni sovraespressi sono già sotto 0,001, quindi quel lato regge.
|log₂FC| ≥ 2 (4 volte), padj < 0,0015114Resta solo la risposta all'interferone più forte, senza IRF7, e un solo gene sottoespresso, TGFBI.

Due errori da evitare. Applicare la soglia sul padj ma rappresentare il p grezzo sull'asse y mette la linea orizzontale dove non è stata applicata alcuna soglia, così dei punti grigi possono stare sopra. E una soglia copiata come 10e-6 da uno script R in R vale 10 × 10⁻⁶ = 1e-5, non 1e-6. Di' al generatore di volcano plot quale p rappresenti, e la linea cade esattamente su quel valore.

Che cosa disegna il generatore di volcano plot: RNA-seq, proteomica, singola cellula e altro

Sette volcano plot che compaiono in articoli e tesi, che cosa distingue ciascuno e che cosa dire al generatore di volcano plot per ottenerlo.

Volcano plot di RNA-seq (DESeq2, edgeR, limma-voom)

Il volcano plot più comune: un punto per gene su 15.000–25.000 geni analizzati, con il p corretto (padj o FDR) sull'asse y. I fold change ridotti con lfcShrink() di DESeq2 evitano che i geni con pochi conteggi schizzino a ±8. Allega il file dei risultati così come è stato esportato; oltre 200 geni il generatore di volcano plot colloca esattamente quelli significativi e disegna la base grigia dai suoi conteggi.

Volcano plot di proteomica

Rapporto log₂ delle intensità proteiche (label-free LFQ o TMT) contro −log₁₀ p da un test t o da limma, di solito per 2.000–6.000 proteine. Etichetta con il nome del gene invece che con l'accession UniProt. Perseus disegna spesso una linea di significatività curva (FDR con una costante s0); il generatore di volcano plot traccia soglie rette, quindi indica |log₂FC| e p che hai applicato.

Volcano plot di metabolomica e lipidomica

I fold change sono spesso riportati come rapporti semplici (tumore/normale = 3,2), con p da test t o di Wilcoxon e un FDR. Scrivi fold change senza log e il generatore di volcano plot converte i valori: 3,2 viene rappresentato a 1,68 e 0,5 a −1. Qualche centinaio di feature è la norma, quindi ogni punto è riportato esattamente.

Volcano plot dei marcatori di singola cellula (Seurat FindMarkers)

Un cluster contro tutte le altre cellule, avg_log2FC sull'asse x e p_val_adj sull'asse y. Con migliaia di cellule per test i p-value arrivano a 10⁻⁸⁰ e oltre, quindi l'asse y sale molto più che nell'RNA-seq bulk, e molti geni hanno p_val_adj = 0, che il generatore di volcano plot disegna al valore più piccolo registrato.

Volcano plot di microarray (limma)

logFC e adj.P.Val di limma da intensità log₂, spesso per probe set invece che per geni. I fold change sono compressi rispetto all'RNA-seq, quindi è comune una soglia di 1,5 volte (|log₂FC| ≥ 0,58). Il generatore di volcano plot prende le etichette dalla colonna Symbol, e l'ID della sonda dove il simbolo manca.

Volcano plot etichettato con geni evidenziati

Un volcano plot che nomina un insieme scelto, come la via di segnalazione di cui tratta l'articolo, invece dei risultati principali. Scrivi «evidenzia solo NANOG, SOX2 e MYC» e il generatore di volcano plot etichetta esattamente quelli, anche quando sono grigi, che spesso è proprio il senso della figura.

Volcano plot di fosfoproteomica e di screening CRISPR

Gli stessi assi per altre unità: fosfositi (EGFR_Y1068) in fosfoproteomica, oppure geni da uno screening MAGeCK con il log₂ fold change dei conteggi delle loro guide. Le etichette possono essere nomi di siti; di' al generatore di volcano plot che cosa rappresenta un punto, e i titoli degli assi lo riportano.

Volcano plot e MA plot a confronto

Un volcano plot mette il fold change contro la significatività; un MA plot mette il fold change contro l'espressione media. Entrambi vengono dalla stessa tabella di risultati. Il volcano plot risponde a quali geni sono cambiati in modo affidabile; l'MA plot a se i fold change dipendono da quanto un gene è espresso.

Volcano plot

MA plot

CaratteristicaVolcano plotMA plot
Asse xlog₂ fold changeespressione media su scala logaritmica (A: baseMean in DESeq2, logCPM in edgeR, AveExpr in limma)
Asse y−log₁₀ p o p correttolog₂ fold change (M)
Formauna V che sale da una base larga a x = 0una banda piatta attorno a M = 0 che si apre a ventaglio a bassa espressione
A che cosa rispondequali geni sono cambiati molto e in modo affidabilese i geni con pochi conteggi gonfiano i fold change, e se la normalizzazione ha centrato M sullo 0
Dove vanella figura dei risultati, con i risultati etichettaticontrollo di qualità e figure supplementari

Il generatore di volcano plot disegna volcano plot. Per mostrare gli stessi risultati in tutti i campioni, usa il generatore di heatmap con la loro espressione normalizzata.

Generatore di volcano plot, R, Prism, Python ed Excel a confronto

La maggior parte dei volcano plot si disegna in R da una tabella DESeq2 o limma, in GraphPad Prism dopo test t multipli, o in Python. Ecco dove ciascuno colloca il lavoro:

FunzioneGeneratore di volcano plotR (ggplot2, EnhancedVolcano)GraphPad PrismPython (matplotlib)Excel
Punto di partenzaRighe scritte a mano, oppure la tabella DESeq2, edgeR, limma o Seurat così come esportataUn data frame di risultati e uno scriptUn'analisi con test t multipli, oppure una tabella XY di fold change e −log₁₀ pUn DataFrame pandas e uno scriptColonne di fold change e p, più una colonna di supporto =-LOG10(C2)
−log₁₀ pCalcolato dalla tabella-log10(padj) in aes(); EnhancedVolcano lo fa per teCalcolato dall'analisi con test t-np.log10(df.padj)La tua formula
Linee di soglia e coloriDalle soglie che indichi (predefinite 1 e 0,05), classi contategeom_vline, geom_hline e una colonna di classe; pCutoff e FCcutoff in EnhancedVolcanoImpostati nell'analisi o disegnati come serie aggiuntiveaxvline, axhline e una colonna di coloreOgni linea è una serie; una serie per colore
Etichette dei geniPrimi 10 per significatività, primi N, oppure i geni che indichiggrepel, o selectLab in EnhancedVolcanoEtichettati un punto alla voltaannotate o adjustTextEtichette dati, una per una
Finitura da rivistaCinque preset di destinazioneTemi scritti a manoModelli di grafico di PrismrcParams scritti a manoFormattazione a mano
Che cosa serveUn browserR e BioconductorUna licenza PrismPython e matplotlibExcel

Hai già un volcano in ggplot2 che ti piace? Allega uno screenshot come immagine di riferimento accanto alla tabella, e il generatore di volcano plot mantiene i tuoi numeri seguendo quell'aspetto.

Domande sul generatore di volcano plot

Che cosa mostra un volcano plot?

Quali geni sono cambiati fra due condizioni, di quanto e con quale affidabilità, tutto insieme. Ogni punto è un gene: la sua posizione destra–sinistra è il log₂ fold change, la sua altezza il −log₁₀ del p-value. Più un punto sta in alto e lontano dal centro, più la variazione è grande e certa; la base grigia vicino allo zero sono i geni che non sono cambiati.

Come si legge un volcano plot?

Leggi in orizzontale per l'entità e il verso della variazione (a destra aumenta, a sinistra diminuisce, ±1 è un raddoppio o un dimezzamento), poi in verticale per l'evidenza (1,3 è p = 0,05, e ogni unità sopra è dieci volte più piccola). I risultati significativi stanno nei due angoli superiori fuori dalle linee tratteggiate. L'esempio guidato qui sopra legge tutte e sei le regioni su un esempio di 20 geni.

Quale soglia di log₂ fold change deve usare un volcano plot?

|log₂FC| ≥ 1, una variazione di 2 volte, è la più comune; 0,58 (1,5 volte) si usa dove ci si aspettano effetti piccoli, come in proteomica, nei microarray o nei dati di singola cellula. La soglia è una scelta di presentazione, quindi indicala nella legenda della figura. Nel generatore di volcano plot scrivila nel prompt («|log2FC| > 0.58») o come variazione di N volte («1,5 volte»), che viene convertita in log₂.

L'asse y deve mostrare il p-value o il p-value corretto?

Quello a cui è stata applicata la soglia di significatività, così la linea orizzontale significa ciò che dice la legenda. Con migliaia di geni analizzati, la maggior parte degli articoli applica la soglia e rappresenta il p corretto con Benjamini–Hochberg (padj, FDR, q). Il generatore di volcano plot intitola l'asse −log₁₀(p-value corretto) quando i valori sono corretti e −log₁₀(p-value) altrimenti.

Perché il mio volcano plot è sbilanciato?

Perché sono aumentati più geni di quanti ne siano diminuiti, o il contrario: un volcano plot è simmetrico solo quanto la biologia. Uno spostamento dell'intera base grigia lontano da x = 0 è un'altra cosa. Di solito indica un problema di normalizzazione e conviene verificarlo su un MA plot prima di leggere i risultati. Il generatore di volcano plot non rispecchia mai la nuvola per farla sembrare equilibrata.

Perché in cima al mio volcano plot i punti si accumulano in una fila piatta?

I loro p-value erano troppo piccoli per essere memorizzati e sono stati scritti come 0, quindi −log₁₀ p è infinito e il software di disegno li blocca a una stessa altezza. Succede spesso con il p_val_adj di Seurat e con l'RNA-seq molto profondo. Il generatore di volcano plot disegna quei geni al p non nullo più piccolo della tabella e lo segnala sulla figura; riportarli come p < 10⁻³⁰⁰ è onesto, un valore esatto inventato no.

Come si fa un volcano plot in R?

Con ggplot2, aggiungi una colonna di classe (up, down, not significant), poi ggplot(res, aes(log2FoldChange, -log10(padj), colour = class)) + geom_point() + geom_vline(xintercept = c(-1, 1), linetype = 2) + geom_hline(yintercept = -log10(0.05), linetype = 2), con ggrepel per le etichette. EnhancedVolcano racchiude gli stessi passaggi nei suoi argomenti pCutoff e FCcutoff. Per saltare il codice, allega al generatore di volcano plot la tabella salvata con write.csv().

Come si fa un volcano plot in GraphPad Prism?

Prism disegna automaticamente un volcano plot quando analizzi una tabella raggruppata con test t multipli (Prism 8 e successivi): i risultati includono un grafico della differenza contro −log₁₀ p. Da una tabella di risultati prodotta altrove, inserisci il log₂ fold change come X e il −log₁₀ p come Y in una tabella XY e aggiungi le linee di soglia come set di dati aggiuntivi, oppure allega quella tabella al generatore di volcano plot.

Posso fare un volcano plot in Excel o in Python?

In Excel aggiungi una colonna =-LOG10(C2) accanto ai p-value, crea una dispersione XY del fold change contro quella colonna e aggiungi ogni linea di soglia come serie a sé di due punti; colorare le classi richiede una serie per classe. In Python, plt.scatter(df.log2FoldChange, -np.log10(df.padj), c=colours) con plt.axvline e plt.axhline fa lo stesso, e adjustText colloca le etichette. Il generatore di volcano plot accetta lo stesso foglio in .xlsx o .csv senza la colonna della formula.

Il generatore di volcano plot può leggere direttamente il mio file DESeq2 o Seurat?

Sì: il generatore di volcano plot legge i risultati di DESeq2, edgeR, limma, Seurat e Perseus dalle intestazioni delle colonne, da .csv, .tsv o .xlsx, fino a 60.000 righe. Le righe con NA vengono saltate, si usa il p corretto quando il file lo contiene, e una colonna Fold change semplice viene convertita in log₂.

Il generatore di volcano plot calcola i p-value?

No: il generatore di volcano plot legge i p-value dalla tua tabella e non esegue mai la statistica. Esegui il test in DESeq2, edgeR, limma o nel tuo software di proteomica; da quei numeri il generatore di volcano plot calcola esattamente −log₁₀ p, la classe di ogni gene, i conteggi, gli assi e le linee di soglia.

Quali geni etichetta il generatore di volcano plot?

Per impostazione predefinita il generatore di volcano plot etichetta i dieci risultati più significativi, divisi fra il lato dei sovraespressi e quello dei sottoespressi. Scrivi «etichetta i primi 20», «nessuna etichetta», oppure indica i geni («evidenzia NANOG, SOX2 e MYC»); i geni indicati vengono etichettati anche quando sono grigi.

Quanti geni può disegnare il generatore di volcano plot?

Il generatore di volcano plot accetta fino a 60.000 righe, abbastanza per un intero trascrittoma. Fino a 200 geni ogni punto è collocato alle sue coordinate esatte. Oltre, i geni più significativi (fino a 300) sono collocati esattamente e gli altri sono disegnati dai loro conteggi e dalla loro dispersione reali, fascia per fascia, mentre la legenda mantiene i conteggi esatti di sovraespressi, sottoespressi e non significativi.

Inserisci la tua tabella di risultati nel generatore di volcano plot

Incolla i geni o allega il file DESeq2, edgeR, limma o Seurat, e il generatore di volcano plot restituisce una figura in stile rivista con soglie, conteggi ed etichette esatti.

Apri il generatore di volcano plot