Question: How to create a heatmap of RNA-Seq Data in R?
1
gravatar for ishackm
13 days ago by
ishackm50
ishackm50 wrote:

Hi all,

I have the following RNA-Seq dataset:

An example row of the dataset:

ID          Gene.ID     Gene.symbol   logFC       AveExpr     t          P.Value    adj.P.Val
223597_at   55600       ITLN1         -9.669889   0.8438350   -50.27410  3.61e-60   1.98e-55

I would like to create a heatmap of these genes in the whole dataframe and also then create a heatmap with just selected number of genes in the dataframe in R.

Can you please help me with this?

Many Thanks,

Ishack

heatmap rna-seq R • 325 views
ADD COMMENTlink modified 12 days ago • written 13 days ago by ishackm50
2

ComplexHeatmap is a great R package to create heatmaps.

ComplexHeatmap examples

ADD REPLYlink written 13 days ago by arup1.2k
1

You probably want to use a table of expression values, not stats.

ADD REPLYlink written 13 days ago by igor7.6k

Hints to help you get started: You need a bunch of geom_rects with fill=logFC and a manual gradient color scale with high=red, low=blue, middle=white

ADD REPLYlink written 13 days ago by RamRS21k

Hi All, Thanks very much for your help,

I found a way finally to create a heatmap for the RNA-seq data.

But I how can I group the different samples into the 2 different groups and compare them, please?

   Gene.Symbol  GSM997591  GSM997592  GSM997593  GSM997594   GSM997595
1 18S ribosomal RNA 2.13784980  2.5907211 1.64000610  2.3885298  2.17460160
2 28S ribosomal RNA 0.02856135  0.1421256 0.01333952 -0.1594081  0.03220868
3 A1BG               0.41368390 -0.0319581 0.33633804  0.6772432  0.12198353

GSM997591 GSM997592 = Control

GSM997593 GSM997594 GSM997595 = Disease

I have chosen to use the raw expression values as recommended.

x-axis = experimental groups

y axis = axis gene name

Any help would be greatly appreciated.

Ishack

ADD REPLYlink written 12 days ago by ishackm50
1

you may get some help from this post

ADD REPLYlink written 12 days ago by Prakash920

Hi Prakash,

That post is a bit useful but very hard to understand, can you please give me some code examples?

Many Thanks,

Ishack

ADD REPLYlink written 12 days ago by ishackm50
1

When you group observations, you're going to need to aggregate the values somehow. Pick an aggregation logic (mean/median/something that makes sense) and plot that. I do sense you're already losing sight of what's important when you plot a heatmap. When you group and plot an aggregate, your plot will in no way help derive insights into your data. It can only be used to visualize obvious disparities between the groups.

ADD REPLYlink written 12 days ago by RamRS21k

Thanks RamRS for the insight.

ADD REPLYlink written 12 days ago by ishackm50

Stop adding new posts as answers unless you’re actually posting a solution to the question.

ADD REPLYlink written 12 days ago by jrj.healey12k

https://ibb.co/Wz6wfyX

Hi Guys, this is the heatmap I have created. Can you tell me please if this is biologically meaningful?

Many Thanks,

Ishack

ADD REPLYlink written 12 days ago by ishackm50
1

Is this an assignment of some sort? Why are you seeking help with both creating the heatmap and interpreting it? Also, please see How to add images to a Biostars post to add the image properly. You need the direct link to the image, not the link to the webpage that has the image embedded (which is what you have used here)

ADD REPLYlink modified 12 days ago • written 12 days ago by RamRS21k

Apologies, this is not an assignment. I just need help creating the heatmap. I just wanted your opinion on how it looks visually.

ADD REPLYlink written 12 days ago by ishackm50
1

We know essentially nothing about your experiment, how could we tell you what’s biologically meaningful?

ADD REPLYlink written 12 days ago by jrj.healey12k
  1. Make the annotation of your columns and rows (a.k.a sample list) ,
  2. use clustering for both of your rows and columns, dendrogram function in the heatmap code is from hclust, or if its pheatmap r function then they have some functions like clustering method
  3. label your samples and then plot the heatmap. You should be able to tell it yourself if this is biologically relevant.

Here I can see some faint signal but clustering of columns and rows needed to really see if you have a proper separation of your data across meaningful biological condition of interest. Again if you are new, scan the blogs well to see a tutorial, there are plenty floating in biostars and some amazing blog posts of real data using various R packages for heatmap visualization with code snippets.

ADD REPLYlink written 12 days ago by ivivek_ngs4.8k
1
gravatar for jared.andrews07
13 days ago by
jared.andrews072.2k
St. Louis, MO
jared.andrews072.2k wrote:

I would recommending searching for this - there are many tutorials and examples available.

gplots' heatmap.2 function is very flexible and relatively easy to use.

But I have to ask, what do you expect this heatmap to show you? It's going to just be a single column of log fold changes. Looking at actual expression values across samples would be much more informative.

ADD COMMENTlink written 13 days ago by jared.andrews072.2k

Can you give me example code please?

Im very new to this.

Many Thanks,

Ishack

ADD REPLYlink written 13 days ago by ishackm50
1

As @RamRS said, there are many examples available through Google. Here is one with a simple example along with in-depth explanations to get you started.

ADD REPLYlink written 12 days ago by jared.andrews072.2k

Start with just heatmap.2(x) and then, based on what needs to be customized, look for an optional argument that makes sense and change its value. Need a title for the plot? Add main = "Plot Title" to make the function call now heatmap.2(x, main = "Plot Title"). Repeat this exercise (using Google liberally) and you will learn "new" stuff the way most of us learn.

ADD REPLYlink written 12 days ago by RamRS21k

Hi all, I have created a heatmap in R but I am still having difficulties labelling the samples into the two different groups (Control vs Treatment)on the heatmapp with a key included.

This is the R code so far:

data = read.csv("../Data/test3.csv", header = TRUE,row.names = 1)
data
mat=data.matrix(data, rownames.force = NA)
heatmap(mat, main = "MOCS Vs MOTEC", xlab = "Samples", ylab = "DEG")

heatmap

The annotated datasetenter image description here

How can differentiate between the sample groups on the heatmap and also provide a key, please?

Please note I am very new to this so if you can provide code examples, that would be greatly appreciated.

I would like the final heatmap to look like this, please

The desired result: https://i.ibb.co/4FdGnwz/1555438568827-793023657.png

Many Thanks,

Ishack

ADD REPLYlink modified 8 days ago • written 8 days ago by ishackm50

The data as you have it right now is pretty wonky, given that you store information about the samples in the header.

You will need to remove the Control/Treatment double header from your data, convert it from its current wide-form state to long-form (look into reshape2::melt or tidyr::gather, as shown here), then add a column that contains the Control/Treatment information and use that column with a facet function. Look into facet_wrap and facet_grid, that will get you to what you need.

Please try as much as you can before asking us for code examples.

ADD REPLYlink modified 8 days ago • written 8 days ago by RamRS21k

Hi Ram,

Thanks for your advice.

I used the code from this Biostars post: pheatmap annotation - legend only for columns

data = read.csv("../Data/test3.csv", header = TRUE,row.names = 1)
data

  metadata <- data.frame(
  c(rep("Treatment", ncol(data)/4), rep("Control")),
  row.names=colnames(data))
colnames(metadata) <- c("condition")
metadata

How can I use this code to annotate the samples? The columns are in order.

Many Thanks,

Ishack

ADD REPLYlink written 8 days ago by ishackm50

Please Google add column to data.frame r. You don't need a new metadata data frame, just a simple cbind. And make sure you're adding stringsAsFactors = FALSE to all read.table variants (which in your case is read.csv) unless you have good reason not to.

ADD REPLYlink modified 8 days ago • written 8 days ago by RamRS21k
Please log in to add an answer.

Help
Access

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.
Powered by Biostar version 2.3.0
Traffic: 1751 users visited in the last hour