# I have really skewed RNA-seq data, what's the best way to normalise it? Preferably in R!

My data frame compares the RNA-seq reads from many genes in different tissues. The reads look as follows.

I tried using log to make it better but still looks pretty skewed.

Are there any better transformations/functions for this in R?

This is part of an assignment I have, I have used in the past edge software and agree it will do a better job but in this work I'm not meant to use any of the pipelines.

• I assume that the eventual goal is differential expression or something along those line, in which case you're much better off using one of the many existing Bioconductor packages. Oct 30, 2020 at 11:44

Welcome to RNA-seq. This is not at all unusual, as RNA-seq raw data are not normally distributed. People typically approximate it via the Negative Binomial distribution. I suggest you check existing packages as Devon suggests in his comment for normalization and differential expression (or anything else). Typical choices are DESeq2, edgeR or limma, but there are others as well. This guide might help you get started. Please also use google to explore existing threads both here at SE and over at biostars.org. Most basic questions have already been discussed there and are informative to get started.

I like using DESeq2. There's a great document written by the developers about how to process gene count tables and look at differential expression:

https://bioconductor.org/packages/release/bioc/vignettes/DESeq2/inst/doc/DESeq2.html

The document also mentions other tools that have similar approaches:

Other Bioconductor packages with similar aims are edgeR, limma, DSS, EBSeq, and baySeq.

Another approach, that does not replace the methods already mentions, but could be useful if you don't have raw counts to start with, or if you want to screen hundreds of genes, and you want to focus on the most interesting.

1. either log transform or zscale your expression values
2. do a boxplot to see how your gene is expressed in the different tissues
3. run a non-parametric test to compare the distributions. I usually use a kruskal.test with multiple comparisons and a Mann-Whitney U test (wilcox.test) if I only have two groups.

This should give you an idea if the expression of a gene is different between tissue types.

Thanks for all your answers. Although the pipeline packages would have been useful I was trying to normalise the data before analysing it later and so I used the bestnormalize package which looked like it did a pretty good job.

• What is your goal with this analysis? Your RNA-Seq data looked relatively typical at a glance and I would really recommend not using a general normalization as you did. A lot of research has gone into normalizing RNA-Seq and you are at best hurting your analysis, at worst doing something outright wrong. Use - as recommended before - edgeR, limma or DESeq2 unless you have a good reason not to. Nov 1, 2020 at 9:17
• See e.g. Soneson & Delorenzi, 2013 Nov 1, 2020 at 9:19
• This is part of an assignment I have, I have used in the past edge software and agree it will do a better job but in this work I'm not meant to use any of the pipelines Nov 1, 2020 at 10:19
• @Connor you should edit your question and include that information, so that people trying to help don't offer you a solution you can't use. Nov 1, 2020 at 10:27