[BioC] Small bug in function 'countskip.FASTA.entries' from package 'altcdfenvs'
Norman Pavelka
norman.pavelka at unimib.it
Mon Nov 14 17:27:41 CET 2005
Dear Laurent Gautier,
First of all, let me express my gratitudine and compliments for the
very important package you contributed and I apologize for this long
message (that I am CCing to the BioC list).
I'm currently using 'altcdfenvs' to re-map probe sequences from Affy
MOE430 2.0 arrays and I noticed a small but reproducible bug in the
function 'countskip.FASTA.entries'.
When I follow the vignette step-by-step, no errors show up in my
session:
library(altcdfenvs)
fasta.filename <- "Mus_musculus.NCBIM34.nov.cdna.fa"
con <- file(fasta.filename, open = "r")
n <- countskip.FASTA.entries(con)
close(con)
cat(n,"entries read\n")
Of course, I can cut and paste the same chunk of code into a brand new
R function and save the file:
test.countskip.FASTA.entries <- function(fasta.filename) {
library(altcdfenvs)
con <- file(fasta.filename, open = "r")
n <- countskip.FASTA.entries(con)
close(con)
cat(n,"entries read\n")
}
And, of course, I can source the function from the new file and again I
have no errors, if I run:
test.countskip.FASTA.entries("Mus_musculus.NCBIM34.nov.cdna.fa")
But _magically_, if I close the R session, reload R and source the file
containing my function, I get the following error:
> test.countskip.FASTA.entries("Mus_musculus.NCBIM34.nov.cdna.fa")
Loading required package: Biobase
Loading required package: tools
Welcome to Bioconductor
Vignettes contain introductory material.
To view, simply type 'openVignette()' or start with
'help(Biobase)'.
For details on reading vignettes, see the openVignette help
page.
Loading required package: affy
Loading required package: matchprobes
Loading required package: makecdfenv
Error in readLines(con, n = 1) : object "con" not found
Why?
When I inspected the source of function 'countskip.FASTA.entries', I
noticed that the argument defining the connection to the file
containing the FASTA entries was missing. The function was therefore
using the 'con' object found in the global environment, rather than the
one passed as an argument. But when R was reloaded, the 'con' object
disappeared and the error showed up. In other words, the vignette code
chunk worked fine for me just by chance! ;-)
I thus changed the function in the following way:
### My personal modification of function 'countskip.FASTA.entries'
### to allow a file connection to be passed to the function
my.countskip.FASTA.entries <- function (con, linebreaks = 3000) {
i <- as.integer(0)
fs <- read.FASTA.entry(con)
while (!identical(fs$header, character(0)) && !identical(fs$sequence,
NULL)) {
i <- i + 1
fs <- read.FASTA.entry(con)
}
return(i)
}
### End of my modified function
When I now modify my test function to use 'my.countskip.FASTA.entries'
instead of 'countskip.FASTA.entries', I have no errors regardless
whether I'm working in a fresh or older R session... In addition, now
I'm allowed to have more than one file connection around and specify
the one I would like to pass to 'my.countskip.FASTA.entries'...
BTW, what is the argument 'linebreaks' good for? It seems not to be
used inside the function...
Hope this feed-back was worth reporting!
Thank you again and best wishes,
Norman
> sessionInfo()
R version 2.2.0, 2005-10-06, powerpc-apple-darwin7.9.0
attached base packages:
[1] "tools" "methods" "stats" "graphics" "grDevices" "utils"
[7] "datasets" "base"
other attached packages:
altcdfenvs makecdfenv matchprobes affy Biobase
"1.4.0" "1.8.0" "1.2.1" "1.8.1" "1.8.0"
Norman Pavelka
Department of Biotechnology and Bioscience
University of Milano-Bicocca
Piazza della Scienza, 2
20126 Milan, Italy
Phone: +39 02 6448 3556
Fax: +39 02 6448 3552
More information about the Bioconductor
mailing list