Question: Subsetting qPCRset loses sample names, possibly due to change of assayDataElementReplace
1
gravatar for henrik.seidel
2.9 years ago by
henrik.seidel40 wrote:

When subsetting a qPCRset (e.g., for features), the sample names get lost. Assigning an expression set explicitly does not work as well. Let's say raw is a qPCRset:

rawSub <- raw[myFeatures, ]

sampleNames(raw) # result is correct, e.g. "Sample1", "Sample2", ...

sampleNames(rawSub) # result is just "1", "2", ...

When I try to assign an expression set explicitly, I get an error message:

es <- exprs(rawSub)

colnames(es) <- sampleNames(raw)

exprs(rawSub) <- es

Error in assayDataElementReplace(object, "exprs", value, validate = TRUE) : 
  unused argument (validate = TRUE)

In the current Bioconductor version (3.4) the function "assayDataElementReplace" indeed does not have an argument "validate". In previous versions this function had "validate" as an argument, and the default was TRUE. My guess is that now the error I mentioned above is also triggered but silently ignored when subsetting a qPCRset. I think that the HTqPCR package should be modified to remove the "validate" argument. Because "validate = TRUE" was the default in previous Bioconductor versions of assayDataElementReplace, HTqPCR would still work correctly even for those older Bioconductor versions.

Here are the source code locations which need to be changed:

qPCRset.R:32: function (object, value) assayDataElementReplace(object, "exprs", value, validate=TRUE)
qPCRset.R:157: function (object, value) assayDataElementReplace(object, "featureCategory", value, validate=FALSE)
qPCRset.R:184: function (object, value) assayDataElementReplace(object, "flag", value, validate=FALSE)

Regards

Henrik

htqpcr • 1.0k views
ADD COMMENTlink modified 2.9 years ago • written 2.9 years ago by henrik.seidel40

Just saw that you used "validate=FALSE" for "featureCategory" and "flag", so removing the "validate" argument would change something for older Bioconductor versions. Not sure if this would be an issue.

ADD REPLYlink written 2.9 years ago by henrik.seidel40

Okay, the patch below makes it at least possible to assign modified expression sets to a qPCRset (so I can at least fix the sample names). But subsetting a qPCRset still removed sample names. So there seems to be more which requires a fix.

ADD REPLYlink written 2.9 years ago by henrik.seidel40

Patch removed, see answer.

ADD REPLYlink modified 2.9 years ago • written 2.9 years ago by henrik.seidel40
Answer: Subsetting qPCRset loses sample names, possibly due to change of assayDataElemen
2
gravatar for henrik.seidel
2.9 years ago by
henrik.seidel40 wrote:

I think I solved both issues now.

  1. I removed the "validate" argument from the calls to assayDataElementReplace.
  2. When subsetting a qPCRset, there was a call to the function "unname" before assigning the subset of the original exprs to the new qPCRset:
    exprs=unname(exprs(x)[i, j, drop=FALSE])
    It is not clear to me why you would want to remove row and column names here. I removed this call to "unname", so the row and column names of the original exprs are retained.
diff --git a/DESCRIPTION b/DESCRIPTION
index 3736f63..b4e749d 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -1,7 +1,7 @@
 Package: HTqPCR
 Type: Package
 Title: Automated analysis of high-throughput qPCR data
-Version: 1.28.0
+Version: 1.28.2
 Author: Heidi Dvinge, Paul Bertone
 Maintainer: Heidi Dvinge <hdvinge@fredhutch.org>
 Description: Analysis of Ct values from high throughput quantitative
diff --git a/R/qPCRset.R b/R/qPCRset.R
index 1cd043a..d400ea5 100644
--- a/R/qPCRset.R
+++ b/R/qPCRset.R
@@ -29,7 +29,7 @@ setMethod("sampleNames",
 #------------------------------------------------------------------
 
 setReplaceMethod("exprs", signature(object="qPCRset"), definition =
- function (object, value) assayDataElementReplace(object, "exprs", value, validate=TRUE)
+ function (object, value) assayDataElementReplace(object, "exprs", value)
 )
 
 setReplaceMethod("featureNames",
@@ -69,7 +69,7 @@ function(x, i, j, drop=FALSE) {
     if (missing(j))
         j <- 1:ncol(x)
     out <- new("qPCRset",
-                exprs=unname(exprs(x)[i, j, drop=FALSE]),
+                exprs=exprs(x)[i, j, drop=FALSE],
                 featureCategory=featureCategory(x)[i, j, drop=FALSE],
                 flag=flag(x)[i, j, drop=FALSE])
     phenoData(out) <- phenoData(x)[j,,drop=FALSE]
@@ -154,7 +154,7 @@ setMethod("featureCategory", signature = "qPCRset", definition =
 )
 
 setReplaceMethod("featureCategory", signature = "qPCRset", definition =
- function (object, value) assayDataElementReplace(object, "featureCategory", value, validate=FALSE)
+ function (object, value) assayDataElementReplace(object, "featureCategory", value)
 )
 
 
@@ -181,7 +181,7 @@ setMethod("flag", signature = "qPCRset", definition =
 )
 
 setReplaceMethod("flag", signature = "qPCRset", definition =
- function (object, value) assayDataElementReplace(object, "flag", value, validate=FALSE)
+ function (object, value) assayDataElementReplace(object, "flag", value)
 )
 
 
diff --git a/man/HTqPCR-package.Rd b/man/HTqPCR-package.Rd
index 2d1af1e..4849186 100644
--- a/man/HTqPCR-package.Rd
+++ b/man/HTqPCR-package.Rd
@@ -12,8 +12,8 @@
 \tabular{ll}{
 Package: \tab HTqPCR\cr
 Type: \tab Package\cr
-Version: \tab 1.0\cr
-Date: \tab 2009-07-03\cr
+Version: \tab 1.28.2\cr
+Date: \tab 2017-01-25\cr
 License: \tab Artistic\cr
 LazyLoad: \tab yes\cr
 Depends: \tab methods\cr

 

ADD COMMENTlink modified 2.9 years ago • written 2.9 years ago by henrik.seidel40

Hi Hendrik,

Thanks for all your work and contributions on this!

I noticed your other contribution regarding the loss of featureData. It also seems to me that the subsetting is somehow creating other problems, as a subset qPCRset object (but not the original one) will give the following error message:

> diff.exp <- limmaCtData(filt_A2, design=design, contrasts=contrasts)
Error in data.frame(..., check.names = FALSE) : arguments imply differing number of rows: 261, 0

I am a very basic R user, with minimal  programming skills and really pressed for time to re-run a simple analysis I did over a year ago on a new dataset. I haven't figured out exactly how to introduce your corrections in the package and I'm also wondering if they will solve this other issue. Any suggestions would be really most welcome! 

Meg

ADD REPLYlink written 2.7 years ago by Gama0

Just to confirm this issue. The same happens not only on sub setting a qPCRset but also when you try reassigning samples names. I mean, considering raw a qPCRset, such problem appears if I you rename samples:

R »sampleNames(raw) <- rownames(phenoData)

 Error in (function (od, vd)  : 
  object and replacement value dimnames differ
Calls: sampleNames<- ... .validate_assayDataElementReplace -> Map -> mapply -> <Anonymous>

 

##### SESSION INFO #####

R » sessionInfo()

R version 3.3.2 (2016-10-31)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Gentoo/Linux

locale:
 [1] LC_CTYPE=pt_BR.utf8       LC_NUMERIC=C              LC_TIME=pt_BR.utf8        LC_COLLATE=pt_BR.utf8     LC_MONETARY=pt_BR.utf8   
 [6] LC_MESSAGES=pt_BR.utf8    LC_PAPER=pt_BR.utf8       LC_NAME=C                 LC_ADDRESS=C              LC_TELEPHONE=C           
[11] LC_MEASUREMENT=pt_BR.utf8 LC_IDENTIFICATION=C      

attached base packages:
[1] parallel  stats     graphics  grDevices datasets  utils     methods   base     

other attached packages:
[1] HTqPCR_1.28.0        limma_3.30.13        RColorBrewer_1.1-2   Biobase_2.34.0       BiocGenerics_0.20.0  BiocInstaller_1.24.0 setwidth_1.0-4      
[8] colorout_1.1-0      

loaded via a namespace (and not attached):
 [1] gtools_3.5.0          bitops_1.0-6          affy_1.52.0           stats4_3.3.2          KernSmooth_2.23-15    gplots_3.0.1          zlibbioc_1.20.0      
 [8] gdata_2.18.0          affyio_1.44.0         preprocessCore_1.36.0 caTools_1.17.1       

ADD REPLYlink modified 2.4 years ago • written 2.4 years ago by Frederico Moraes Ferreira100

Could someone, please, possibly provide more information on patching the qPCRset.R file? 

Shouldn't be such patch in Bioconductor repo?

Any help is appreciated.

 

ADD REPLYlink written 2.2 years ago by Frederico Moraes Ferreira100
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 16.09
Traffic: 162 users visited in the last hour