[BioC] OSX location of bioconductor functions

Gordon Smyth smyth at wehi.EDU.AU
Sat Mar 10 10:23:52 CET 2007


Dear Bobby,

The reason why the column headings output from topTable() have been 
changed is to make them more self-explanatory. I've answered the 
question "what do M and A mean in the top table?" so many times over 
the last few years that I wanted to try to head off misunderstandings 
on the part of new users. I originally called the coefficient column 
output by topTable "M" by analogy with the M-values from two colour 
arrays. But this leads to the confusion that "M" in an MAList data 
object and "M" in the output from topTable are not the same thing. 
The term "M-value" correctly refers to the log-ratio of two channels, 
usually for a single two-colour array, whereas the coefficient column 
from topTable() is more general and is not necessarily a log-ratio. 
So I thought that "logFC" for log-fold-change would be clearer.

Similary I though that "AveExpr" would be more informative than 
simply "A" to represent the average log-expression level of that 
probe. An alternative name would have been "Amean" because that's 
what the corresponding component of the fitted model object is called.

I've kept changes to the limma API to an absolute minimum over the 
last 4 years, but I thought a change with toptable would be 
manageable because most people extending limma would program from the 
fitted model object directly rather than using the output from 
topTable. It's not too late to change these names back for the next 
Bioconductor release in a couple of months but I would want to hear 
quite a few more opinions before doing so. So far, yours is the only complaint.

I agree that a change in the API in the current release of 
Bioconductor is undesirable. Actually I haven't changed the 
Bioconductor release version of limma, only the versions on BioC 
devel and on CRAN. These are where I test out changes for the next 
Bioconductor release. It would appear that getBioC() has installed 
for you the CRAN version of limma rather than the Bioconductor 
release version. I think I know why getBioC() does this, but I'm 
going to contact the Bioconductor maintainers to ask them to avoid 
this in the future.

On the other hand, it isn't realistic to expect that the API will 
remain the same forever. The user interface for both R and the 
packages change gradually as the software is developed and improved. 
There have been many changes to R over the last four years that limma 
users have been insulated from but the package author has had to deal with!

Kasper has already explained that you can't hack the installed 
version of an R package. Indeed that would be highly undesirable. The 
only way that you could change the "true" toptable would be download 
the source code for limma, make your own version of the package, then 
build and install it. You would then be responsible for maintaining 
your own personal version of the package forever after. I think that 
would be a very bad design decision :)

Is it so important to you that the column names from toptable stay 
the same? Would it be difficult to use an editor do a global change 
of $M to $logFC in your script? Alternatively it is very easy to use 
names() to reset or edit the column names of a data.frame. You could 
redefine toptable on the fly by

    toptable <- function(...) {
         tab <- limma::toptable(...)
         names(tab)[names(tab) == "logFC"] <- "M"
         tab
   }

Best wishes
Gordon


At 10:00 PM 9/03/2007, bioconductor-request at stat.math.ethz.ch wrote:
>Date: Thu, 8 Mar 2007 18:24:06 -0500
>From: Bobby Prill <rprill at jhu.edu>
>Subject: [BioC] OSX location of bioconductor functions
>To: bioconductor at stat.math.ethz.ch
>
>Can someone tell me where toptable() code resides on an OSX
>installation?
>
>I just upgraded my R and Bioconductor.  Apparently, some rows were
>renamed in toptable().  I would like to change the row called "logFC"
>back to "M".
>
>I searched my system and can not find where any of the limma
>functions are defined.  Limma seems to be installed in:
>
>/Library/Frameworks/R.framework/Versions/2.4/Resources/library/limma/
>
>However I do not see any actual functions defined there.
>
>I installed using the command:  getBioC().  Perhaps that installed
>"binary" rather than "source" version of limma?
>
>I don't want to create a new function called my.toptable().  I just
>want all of my scripts to simply work again with a single edit of the
>true toptable().
>
>As an aside, I can't imagine why the column names in ANY function
>would be changed.  These column names are essentially the external
>interface to the function.  It seems like a very bad design decision
>to just one day change "M" to "logFC."
>
>I appreciate the help.  This is a great user community.
>
>- Bobby



More information about the Bioconductor mailing list