This is a test version of Biostars. For the public version, visit https://www.biostars.org.
Error when trying to create a heatmap with DESeq2

I'm following a tutorial for using the DESeq2 package, specifically, for creating heat maps.
Here's the code I use:

library('dplyr')
library('pheatmap')
library(ggplot2)

counts <- read.csv("Control vs serum - RN 1.tsv", header=TRUE, sep = '\t')
counts <- counts[, -c(ncol(counts) - 1, ncol(counts))]
counts$Gene <- NULL
counts.matrix <- as.matrix(counts)
columns <- read.csv("Metadata.tsv", header=TRUE, sep = '\t')
library(DESeq2)
dds <- DESeqDataSetFromMatrix(counts.matrix, columns, design = ~ 1)
dds <- DESeq(dds)
rld <- rlog(dds, blind=FALSE)

# Heat maps:
matrix <- SummarizedExperiment::assay(rld)
top_variable_genes <- head(order(rowVars(matrix), decreasing=TRUE), 500)
heatmap_matrix <- matrix(top_variable_genes,)
heatmap <- pheatmap(heatmap_matrix,scale='row',cluster_rows=TRUE,cluster_cols=TRUE,show_rownames=FALSE,show_colnames=TRUE)
ggsave('Heatmap.pdf', heatmap)

The command that yields the error is
heatmap <- pheatmap(heatmap_matrix,scale='row',cluster_rows=TRUE,cluster_cols=TRUE,show_rownames=FALSE,show_colnames=TRUE).
The error message:

Error in seq.default(-m, m, length.out = n + 1) :
  'from' must be a finite number
In addition: Warning messages:
1: In min(x, na.rm = T) : no non-missing arguments to min; returning Inf
2: In max(x, na.rm = T) : no non-missing arguments to max; returning -Inf

I'm looking for assistance in correcting this command.
Here's a sample of the variable heatmap_matrix's content:

> heatmap_matrix[,]
 [1] 4125 3416 3417 3418 3545 3546 3547 3548 3549 3550 3551 3552 3553 3554 3555
 [16] 3556 3557 4442 4443 4444 3867 3150 3151 3152 2141  339  340  341  342  343
 [31]  344  345 3116 3563 3564 3565   19   20   21 2979 4531 4532 3209 3210 3211
 [46] 2125  191 2158 2461 3295 3296 2126 2127 2128 4282 4571 4572 4020 2210 4261

If any other information is needed, I'll be happy to provide it.
Thanks!

r heatmaps rna-seq deseq2

can you send the output from

str(heatmap_matrix)
str(heatmap_matrix)

 int [1:500, 1] 4125 3165 3416 3417 3418 3545 3546 3547 3548 3549 ...

1 answer

I managed to create a heat map by using a simpler code I found:

library(pheatmap)
library(ggplot2)

counts <- read.csv("Control vs serum - RN 1.tsv", header=TRUE, sep = '\t')
counts <- counts[, -c(ncol(counts) - 1, ncol(counts))]
log2_heatmap <- log2(counts)
log2_heatmap[log2_heatmap==-Inf]<--1
ggsave("Heatmap - log2.pdf",pheatmap(log2_heatmap))

Log in to answer this question.