2
$\begingroup$

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

enter image description here

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

enter image description here

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.

$\endgroup$
  • 4
    $\begingroup$ 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. $\endgroup$ – Devon Ryan Oct 30 at 11:44
6
$\begingroup$

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.

| improve this answer | |
$\endgroup$
2
$\begingroup$

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.

| improve this answer | |
$\endgroup$
1
$\begingroup$

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.

| improve this answer | |
$\endgroup$
1
$\begingroup$

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.

enter image description here

enter image description here

| improve this answer | |
$\endgroup$
  • 2
    $\begingroup$ 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. $\endgroup$ – Bastian Schiffthaler Nov 1 at 9:17
  • $\begingroup$ See e.g. Soneson & Delorenzi, 2013 $\endgroup$ – Bastian Schiffthaler Nov 1 at 9:19
  • $\begingroup$ 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 $\endgroup$ – Connor Nov 1 at 10:19
  • $\begingroup$ @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. $\endgroup$ – user438383 Nov 1 at 10:27

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.