Вулкан-плот: генератор онлайн
Генератор вулкан-плотов для результатов RNA-seq, протеомики и метаболомики в статьях и диссертациях: гены с повышенной и пониженной экспрессией разделены по вашим порогам, главные находки подписаны, а их число указано в легенде, и всё это рассчитано по вашей таблице.
Журнальные стили в генераторе вулкан-плотов
Пять журнальных оформлений из генератора вулкан-плотов, каждое на своей иллюстративной таблице результатов: печень нокаутных мышей, маркеры отдельных клеток, засухоустойчивость растений, микрочип курильщиков и фосфопротеомный скрининг. Нажмите на карточку, чтобы загрузить её запрос и гены.
Примеры вулкан-плотов
Четыре примера вулкан-плотов из генератора вулкан-плотов (RNA-seq, протеомика, метаболомика и подписанный набор генов), каждый — реальный рендер запроса и таблицы со своей карточки. Нажмите на карточку, чтобы перенести её запрос и гены в поле ввода.
Что такое вулкан-плот?
Вулкан-плот (volcano plot) показывает результат дифференциальной экспрессии на одной картинке: каждый ген — одна точка, его log₂ кратности изменения между двумя условиями по оси x и −log₁₀ его p-значения по оси y. Гены, изменившиеся сильно и надёжно, поднимаются в два верхних угла, а неизменившиеся образуют низкое широкое основание около нуля — форму, давшую графику название. Пунктирные пороговые линии кратности изменения и значимости делят точки на гены с повышенной экспрессией, с пониженной и незначимые.
Об этом генераторе вулкан-плотов
- Генератор вулкан-плотов вычисляет в коде по вашей таблице −log₁₀ p, класс каждого гена, их число, обе оси и пороговые линии и передаёт каждую координату модели изображений. Модель лишь расставляет их.
- Пороги генератора вулкан-плотов по умолчанию: |log₂ fold change| ≥ 1 (двукратное изменение) и p < 0.05, понимаемое как скорректированное, если ваши значения — padj, FDR или q-значения. Меняйте их в запросе: «|log2FC| > 0.58 and padj < 0.01».
- Обычные кратности изменения пересчитываются: если в запросе сказано fold change и нигде нет log (лактат 3.2), генератор вулкан-плотов откладывает log₂ 3.2 = 1.68. Для файла это решает заголовок столбца.
- До 200 генов генератор вулкан-плотов выводит каждую точку точно. Выше этого самые значимые гены ставятся точно, а серое основание рисуется по его истинному числу и форме, так что таблица на 20 000 генов сохраняет реальные подсчёты.
Как читать вулкан-плот, точка за точкой
Двадцать иллюстративных генов из сравнения RNA-seq интерферона-бета против контрольной обработки, нарисованных тем же кодом, что работает в генераторе вулкан-плотов, при |log₂FC| ≥ 1 и padj < 0.05. Номера на рисунке соответствуют шагам.
- 1
По горизонтали: направление и величина изменения
x — log₂ кратности изменения интерферона-бета относительно контроля. 0 — нет изменения, +1 — вдвое больше, −1 — вдвое меньше, а IFIT1 на +5.1 примерно в 34 раза выше. Шкала симметрична: уменьшение вдвое стоит слева так же далеко, как удвоение справа.
- 2
По вертикали: доказательность, а не величина
y — −log₁₀ скорректированного p. Пунктирная линия на 1.3 — это padj 0.05, 2 — это 0.01, а IFIT1 на 13.7 имеет padj 2 × 10⁻¹⁴. Чем выше, тем менее вероятно, что изменение — шум; о его величине высота ничего не говорит.
- 3
В верхних углах — находки
Правее x = 1 и выше линии стоят шесть генов с повышенной экспрессией (IFIT1, ISG15, MX1, RSAD2, OAS1, IRF7); левее −1 — четыре с пониженной (COL1A1, TGFBI, MYC, CCND1). Именно эти числа сообщают в статье.
- 4
Высоко в середине: значимо, но мало
STAT1 стоит в (0.7, 8.5): его изменение измерено очень точно, но составляет лишь 1.6 раза, меньше двукратной линии, поэтому он остаётся серым. FN1 ведёт себя так же ниже, на стороне понижения.
- 5
Далеко, но низко: велико, но неопределённо
CXCL10 стоит в (3.9, 0.9): в среднем в 15 раз выше, но padj равен 0.12. Именно такую точку дают малое число прочтений или расходящиеся повторности. При этих порогах это не находка, но на неё стоит взглянуть ещё раз.
- 6
Серое основание: то, что не изменилось
ACTB, GAPDH и другие гены домашнего хозяйства теснятся около (0, 0). На полногеномном вулкан-плоте RNA-seq это основание вмещает большинство из 15 000–25 000 проверенных генов.
Отправьте эти 20 генов в генератор вулкан-плотов, затем измените один порог в запросе и посмотрите, как точки пересекают линии.
Как пользоваться генератором вулкан-плотов
Дайте генератору вулкан-плотов ваши гены
Вводите по гену на строку: название, log₂ кратности изменения, p (FKBP5 3.1, 1.2e-12; CCL2 −2.2, 5e-7) или прикрепите таблицу результатов в .csv, .tsv или .xlsx. Заголовки DESeq2, edgeR, limma, Seurat и Perseus распознаются, до 60 000 строк.
Укажите сравнение и пороги
Напишите Treated vs Control для названия оси и пороги, если они не |log₂FC| ≥ 1 и p < 0.05 (для скорректированных значений скажите padj или FDR). Назовите гены для подписи или попросите топ-N; по умолчанию подписываются десять самых значимых находок с обеих сторон.
Выберите журнальный стиль и постройте
Nature, Cell Press, PLOS, Bioinformatics или препринтное оформление в духе ggplot2. Генератор вулкан-плотов вычисляет координаты, классы, подсчёты и пороговые линии до того, как модель изображений начнёт рисовать, и пересчитывает их при каждой следующей правке.
Какие столбцы DESeq2, edgeR, limma и Seurat идут на вулкан-плот
Каждый конвейер записывает одни и те же три числа под разными именами. Вот столбцы, которые генератор вулкан-плотов читает из каждой таблицы результатов, так что файл можно прикрепить ровно в том виде, в каком он экспортирован.
| Таблица результатов | x: log₂ кратности изменения | y: p-значение | Скорректированное p (берётся первым) | На что обратить внимание |
|---|---|---|---|---|
| DESeq2 results() | log2FoldChange | pvalue | padj | padj равен NA для генов, отсеянных независимой фильтрацией; такие строки пропускаются. Для построения и ранжирования авторы DESeq2 рекомендуют сжатые кратности изменения из lfcShrink(). |
| edgeR topTags() | logFC | PValue | FDR | FDR по умолчанию рассчитывается по Бенджамини–Хохбергу. logCPM — средняя экспрессия, а не кратность изменения. |
| limma topTable() | logFC | P.Value | adj.P.Val | B — логарифм шансов дифференциальной экспрессии, а не p-значение; не выносите его на ось y. |
| Seurat FindMarkers() | avg_log2FC | p_val | p_val_adj | p_val_adj скорректирован по Бонферрони по всем генам и часто равен ровно 0; такие гены рисуются на наименьшем ненулевом значении. Seurat v3 записывал avg_logFC в натуральном логарифме. |
| Perseus (MaxQuant) | Difference | −Log p-value (уже −log₁₀) | q-value | Столбец −log₁₀ пересчитывается обратно в p, чтобы логарифм не брался дважды. |
| Ваша собственная таблица | log2FC | p или pvalue | padj, FDR или q | Столбец с заголовком Fold change без log пересчитывается в log₂: 4 превращается в 2, 0.25 — в −2. |
Если в файле есть и сырой, и скорректированный столбец p, генератор вулкан-плотов откладывает и применяет порог к скорректированному — именно с ним обычно сообщают результаты DESeq2, edgeR и limma. Чтобы отложить сырое p, прикрепите таблицу без скорректированного столбца.
Пороги вулкан-плота: что меняют |log₂FC| и padj
Два порога решают, какие точки считаются находками, и это выбор исследователя, а не факт данных. |log₂ fold change| ≥ 1 требует как минимум удвоения или уменьшения вдвое; padj < 0.05 допускает ожидаемые 5 % ложных открытий среди отобранных генов. Те же 20 генов из разбора при четырёх парах порогов, подсчитанные собственным кодом генератора вулкан-плотов:
| Пороги | Повышены | Понижены | Незначимы | Что сдвинулось |
|---|---|---|---|---|
| |log₂FC| ≥ 1, padj < 0.05 (обычные значения по умолчанию) | 6 | 4 | 10 | STAT1 и FN1 проходят по p, но не по кратности, CXCL10 — по кратности, но не по p, поэтому все три остаются серыми. |
| |log₂FC| ≥ 0.58 (1.5 раза), padj < 0.05 | 7 | 5 | 8 | Порог в 1.5 раза пропускает STAT1 и FN1: малые изменения, измеренные очень точно. |
| |log₂FC| ≥ 1, padj < 0.01 | 6 | 3 | 11 | Более строгое p отсеивает CCND1 (padj 0.019). Все гены с повышенной экспрессией уже ниже 0.001, так что эта сторона не меняется. |
| |log₂FC| ≥ 2 (4 раза), padj < 0.001 | 5 | 1 | 14 | Остаётся только самый сильный интерфероновый ответ, без IRF7, и один ген с пониженной экспрессией, TGFBI. |
Две ошибки, которых стоит избегать. Если порог применён к padj, а по оси y отложено сырое p, горизонтальная линия окажется там, где никакого порога не было, и серые точки могут оказаться выше неё. А порог, скопированный как 10e-6 из скрипта R, в R равен 10 × 10⁻⁶ = 1e-5, а не 1e-6. Скажите генератору вулкан-плотов, какое p вы откладываете, и линия ляжет ровно на это значение.
Что рисует генератор вулкан-плотов: RNA-seq, протеомика, одноклеточные данные и другое
Семь вулкан-плотов, которые встречаются в статьях и диссертациях: чем каждый отличается и что сказать генератору вулкан-плотов, чтобы его получить.
Вулкан-плот RNA-seq (DESeq2, edgeR, limma-voom)
Самый распространённый вулкан-плот: по точке на ген из 15 000–25 000 проверенных генов, со скорректированным p (padj или FDR) по оси y. Сжатые кратности изменения из lfcShrink() в DESeq2 не дают генам с малым числом прочтений улетать к ±8. Прикрепите файл результатов в экспортированном виде; при числе генов больше 200 генератор вулкан-плотов ставит значимые точно, а серое основание рисует по подсчётам.
Протеомный вулкан-плот
Log₂-отношение интенсивностей белков (безметочное LFQ или TMT) против −log₁₀ p из t-теста или limma, обычно для 2 000–6 000 белков. Подписывайте по названию гена, а не по номеру UniProt. Perseus часто рисует изогнутую линию значимости (FDR с константой s0); генератор вулкан-плотов рисует прямые пороги, поэтому укажите применённые |log₂FC| и p.
Вулкан-плот метаболомики и липидомики
Кратности изменения часто сообщают как обычные отношения (опухоль/норма = 3.2), с p из t-теста или критерия Уилкоксона и FDR. Напишите fold change без log, и генератор вулкан-плотов пересчитает значения: 3.2 откладывается на 1.68, а 0.5 — на −1. Обычно признаков несколько сотен, поэтому каждая точка выводится точно.
Вулкан-плот маркеров отдельных клеток (Seurat FindMarkers)
Один кластер против всех остальных клеток, avg_log2FC по x и p_val_adj по y. При тысячах клеток на тест p-значения доходят до 10⁻⁸⁰ и ниже, поэтому ось y уходит гораздо выше, чем в bulk RNA-seq, а у многих генов p_val_adj = 0 — генератор вулкан-плотов рисует их на наименьшем сохранённом значении.
Вулкан-плот микрочипа (limma)
logFC и adj.P.Val из limma по log₂-интенсивностям, часто для наборов зондов, а не генов. Кратности изменения сжаты по сравнению с RNA-seq, поэтому порог в 1.5 раза (|log₂FC| ≥ 0.58) обычен. Генератор вулкан-плотов берёт подписи из столбца Symbol, а где символ пуст — ID зонда.
Вулкан-плот с подписями выделенных генов
Вулкан-плот, где названы выбранные гены, например путь, которому посвящена статья, а не главные находки. Напишите «highlight only NANOG, SOX2 and MYC», и генератор вулкан-плотов подпишет именно их, даже если они серые, — часто в этом и смысл рисунка.
Вулкан-плоты фосфопротеомики и CRISPR-скринингов
Те же оси для других единиц: фосфосайты (EGFR_Y1068) в фосфопротеомике или гены из скрининга MAGeCK с log₂ кратности изменения числа их гидов. Подписями могут быть названия сайтов; скажите генератору вулкан-плотов, что такое одна точка, и названия осей это отразят.
Вулкан-плот или MA-плот
Вулкан-плот откладывает кратность изменения против значимости; MA-плот — кратность изменения против средней экспрессии. Оба строятся по одной таблице результатов. Вулкан-плот отвечает, какие гены надёжно изменились; MA-плот — зависят ли кратности изменения от того, насколько сильно экспрессируется ген.
Вулкан-плот
MA-плот
| Критерий | Вулкан-плот | MA-плот |
|---|---|---|
| Ось x | log₂ кратности изменения | средняя экспрессия в логарифмической шкале (A: baseMean в DESeq2, logCPM в edgeR, AveExpr в limma) |
| Ось y | −log₁₀ p или скорректированного p | log₂ кратности изменения (M) |
| Форма | V, поднимающаяся из широкого основания на x = 0 | плоская полоса около M = 0, расходящаяся веером при низкой экспрессии |
| На что отвечает | какие гены изменились сильно и надёжно | не раздувают ли кратности гены с малым числом прочтений и центрировала ли нормализация M на 0 |
| Где используется | рисунок с результатами, с подписанными находками | контроль качества и дополнительные рисунки |
Генератор вулкан-плотов рисует вулкан-плоты. Чтобы показать те же находки по всем образцам, используйте генератор тепловых карт с их нормализованной экспрессией.
Генератор вулкан-плотов, R, Prism, Python или Excel
Большинство вулкан-плотов рисуют в R по таблице DESeq2 или limma, в GraphPad Prism после множественных t-тестов или в Python. Вот где в каждом случае ложится работа:
| Критерий | Генератор вулкан-плотов | R (ggplot2, EnhancedVolcano) | GraphPad Prism | Python (matplotlib) | Excel |
|---|---|---|---|---|---|
| Отправная точка | Введённые строки или таблица DESeq2, edgeR, limma или Seurat в экспортированном виде | Датафрейм результатов и скрипт | Анализ множественных t-тестов или XY-таблица кратности изменения и −log₁₀ p | DataFrame pandas и скрипт | Столбцы кратности и p плюс вспомогательный столбец =-LOG10(C2) |
| −log₁₀ p | Вычисляется по таблице | -log10(padj) в aes(); EnhancedVolcano делает это за вас | Вычисляется анализом t-тестов | -np.log10(df.padj) | Ваша формула |
| Пороговые линии и цвета | По указанным вами порогам (по умолчанию 1 и 0.05), классы подсчитаны | geom_vline, geom_hline и столбец классов; pCutoff и FCcutoff в EnhancedVolcano | Задаются в анализе или рисуются дополнительными рядами | axvline, axhline и столбец цветов | Каждая линия — свой ряд; по ряду на цвет |
| Подписи генов | Топ-10 по значимости, топ-N или названные вами гены | ggrepel или selectLab в EnhancedVolcano | Подписываются по одной точке | annotate или adjustText | Подписи данных, по одной |
| Журнальное оформление | Пять пресетов изданий | Темы пишутся вручную | Шаблоны графиков Prism | rcParams пишутся вручную | Форматирование вручную |
| Что нужно | Браузер | R и Bioconductor | Лицензия Prism | Python и matplotlib | Excel |
Уже есть вулкан-плот в ggplot2, который вам нравится? Прикрепите скриншот как референсное изображение рядом с таблицей, и генератор вулкан-плотов сохранит ваши числа, следуя этому виду.
Вопросы о генераторе вулкан-плотов
Что показывает вулкан-плот?
Какие гены изменились между двумя условиями, насколько и насколько надёжно, всё сразу. Каждая точка — один ген: положение слева направо — log₂ кратности изменения, высота — −log₁₀ p-значения. Чем выше и дальше от центра точка, тем больше и достовернее изменение; серое основание около нуля — гены, которые не изменились.
Как читать вулкан-плот?
По горизонтали читайте величину и направление изменения (справа — повышение, слева — понижение, ±1 — удвоение или уменьшение вдвое), затем по вертикали — доказательность (1.3 — это p = 0.05, и каждая единица выше означает p в десять раз меньше). Находки стоят в двух верхних углах за пунктирными линиями. Разбор выше читает все шесть областей на одном примере из 20 генов.
Какой порог log₂ кратности изменения брать для вулкан-плота?
|log₂FC| ≥ 1, то есть двукратное изменение, — самый распространённый; 0.58 (1.5 раза) берут, когда ожидаются малые эффекты, как в протеомике, микрочипах или одноклеточных данных. Порог — выбор при представлении результатов, поэтому укажите его в подписи к рисунку. В генераторе вулкан-плотов напишите его в запросе («|log2FC| > 0.58») или как кратность («1.5-fold»), которая пересчитается в log₂.
Что откладывать по оси y: p-значение или скорректированное p?
То, к которому применён порог значимости, чтобы горизонтальная линия значила то, что написано в подписи. При тысячах проверенных генов большинство статей применяют порог и откладывают p, скорректированное по Бенджамини–Хохбергу (padj, FDR, q). Генератор вулкан-плотов подписывает ось −log₁₀(скорректированное p), если значения скорректированы, и −log₁₀(p) в остальных случаях.
Почему мой вулкан-плот кривобокий?
Потому что генов с повышенной экспрессией больше, чем с пониженной, или наоборот: вулкан-плот симметричен ровно настолько, насколько симметрична биология. Сдвиг всего серого основания от x = 0 — другое дело. Обычно он указывает на проблему нормализации, и его стоит проверить на MA-плоте, прежде чем читать находки. Генератор вулкан-плотов никогда не отражает облако, чтобы оно выглядело уравновешенным.
Почему точки скапливаются плоским рядом наверху моего вулкан-плота?
Их p-значения были слишком малы для хранения и записаны как 0, поэтому −log₁₀ p бесконечен, и программа построения прижимает их к одной высоте. Это часто бывает с p_val_adj в Seurat и очень глубоким RNA-seq. Генератор вулкан-плотов рисует такие гены на наименьшем ненулевом p таблицы и отмечает это на рисунке; сообщить о них как p < 10⁻³⁰⁰ честно, выдуманное точное значение — нет.
Как построить вулкан-плот в R?
В ggplot2 добавьте столбец классов (up, down, not significant), затем 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) и ggrepel для подписей. EnhancedVolcano упаковывает те же шаги в аргументы pCutoff и FCcutoff. Чтобы обойтись без кода, прикрепите к генератору вулкан-плотов таблицу, сохранённую через write.csv().
Как построить вулкан-плот в GraphPad Prism?
Prism рисует вулкан-плот автоматически, когда вы анализируете сгруппированную таблицу множественными t-тестами (Prism 8 и новее): в результатах есть график разности против −log₁₀ p. Для таблицы результатов, полученной в другой программе, введите log₂ кратности изменения как X и −log₁₀ p как Y в XY-таблицу и добавьте пороговые линии дополнительными наборами данных или прикрепите эту таблицу к генератору вулкан-плотов.
Можно ли построить вулкан-плот в Excel или Python?
В Excel добавьте рядом с p-значениями столбец =-LOG10(C2), постройте точечную диаграмму кратности изменения против него и добавьте каждую пороговую линию отдельным рядом из двух точек; раскраска классов требует по ряду на класс. В Python то же делает plt.scatter(df.log2FoldChange, -np.log10(df.padj), c=colours) с plt.axvline и plt.axhline, а adjustText расставляет подписи. Генератор вулкан-плотов принимает ту же таблицу как .xlsx или .csv без столбца с формулой.
Может ли генератор вулкан-плотов прочитать мой файл DESeq2 или Seurat напрямую?
Да: генератор вулкан-плотов читает результаты DESeq2, edgeR, limma, Seurat и Perseus по заголовкам столбцов из .csv, .tsv или .xlsx, до 60 000 строк. Строки с NA пропускаются, скорректированное p используется, если оно есть в файле, а обычный столбец Fold change пересчитывается в log₂.
Генератор вулкан-плотов сам вычисляет p-значения?
Нет: генератор вулкан-плотов читает p-значения из вашей таблицы и никогда не проводит статистический анализ. Проведите тест в DESeq2, edgeR, limma или вашей программе для протеомики; по этим числам генератор вулкан-плотов точно вычисляет −log₁₀ p, класс каждого гена, подсчёты, оси и пороговые линии.
Какие гены подписывает генератор вулкан-плотов?
По умолчанию генератор вулкан-плотов подписывает десять самых значимых находок, распределённых между сторонами повышения и понижения. Напишите «label the top 20», «no labels» или назовите гены («highlight NANOG, SOX2 and MYC»); названные гены подписываются, даже если они серые.
Сколько генов может нарисовать генератор вулкан-плотов?
Генератор вулкан-плотов принимает до 60 000 строк — достаточно для целого транскриптома. До 200 генов каждая точка ставится по точным координатам. Выше этого самые значимые гены (до 300) ставятся точно, а остальные рисуются по их истинному числу и разбросу, полоса за полосой, при этом легенда сохраняет точные числа повышенных, пониженных и незначимых.
Источники
- Вулкан-плот (статистика) — Википедия (англ.)
- Moderated estimation of fold change and dispersion for RNA-seq data with DESeq2 — Love, Huber & Anders, Genome Biology 15, 550 (2014)
- EnhancedVolcano: вулкан-плоты, готовые к публикации — Bioconductor
- FindMarkers: маркеры экспрессии генов для классов идентичности — Справочник Seurat, Satija Lab
- Controlling the false discovery rate: a practical and powerful approach to multiple testing — Benjamini & Hochberg, J. R. Stat. Soc. B 57, 289–300 (1995)
Продолжить изучение
Другие наши инструменты для схем и руководства к ним.
Загрузите таблицу результатов в генератор вулкан-плотов
Вставьте гены или прикрепите файл DESeq2, edgeR, limma или Seurat, и генератор вулкан-плотов вернёт рисунок в журнальном стиле с точными порогами, подсчётами и подписями.
Открыть генератор вулкан-плотов