[BioC] Why does a call to "unique" removes a DNAStringSet names?
Hervé Pagès
hpages at fhcrc.org
Fri Nov 16 00:27:48 CET 2012
Hi Nico, Val,
Yes sorry for taking so long Nico, I didn't notice your email
before.
2 additional issues I didn't realize:
(1) unique() does not drop the metadata columns of a DNAStringSet:
> dset
A DNAStringSet instance of length 2
width seq names
[1] 1 A a
[2] 1 C a
> mcols(dset)
DataFrame with 2 rows and 1 column
score
<integer>
1 1
2 2
> mcols(unique(dset))
DataFrame with 2 rows and 1 column
score
<integer>
1 1
2 2
(2) unique() doesn't treat DNAStringSet consistently with GRanges:
> gr
GRanges with 5 ranges and 2 metadata columns:
seqnames ranges strand | score GC
<Rle> <IRanges> <Rle> | <integer> <numeric>
a chr1 [1, 10] - | 1 1
b chr2 [2, 10] + | 2 0.888888888888889
c chr2 [3, 10] + | 3 0.777777777777778
d chr2 [2, 10] + | 2 0.888888888888889
e chr2 [4, 10] * | 4 0.666666666666667
---
seqlengths:
chr1 chr2 chr3
1000 2000 1500
> unique(gr)
GRanges with 4 ranges and 2 metadata columns:
seqnames ranges strand | score GC
<Rle> <IRanges> <Rle> | <integer> <numeric>
a chr1 [1, 10] - | 1 1
b chr2 [2, 10] + | 2 0.888888888888889
c chr2 [3, 10] + | 3 0.777777777777778
e chr2 [4, 10] * | 4 0.666666666666667
---
seqlengths:
chr1 chr2 chr3
1000 2000 1500
On a GRanges, it just does x[!duplicated(x)], so not only the names
are propagated but also the metadata columns.
So the choices are:
(a) we do the same for DNAStringSet, even if that's not what
base::unique() does,
(b) we choose to have unique() drop the names and metadata columns
of any Vector object (DNAStringSet, GRanges, etc...),
(c) we add the 'use.names' and 'use.mcols' args to unique(), with
defaults to FALSE? or to TRUE?
(d) ?
I have a small preference for (a) even though I'm not really sure what
the use cases are. Whatever we do, we should have unique() behave
consistently on any member of the Vector family and also treat
names and metadata columns the same way.
Thanks,
H.
On 11/15/2012 09:11 AM, Valerie Obenchain wrote:
> Hi Nico,
>
> Sorry it's taken awhile to get back to you. I wanted to ask about what
> behavior you'd expect from a call to unique() on a DNAStringSet, i.e.,
> what is your use case?
>
>
> unique() on a named character vector drops names:
> chr <- c(a="A", c="C", aa="A", c="CC")
> > unique(chr)
> [1] "A" "C" "CC"
>
>
> Same for a named list:
> lst <- list(a="A", c="C", aa="A", c="CC")
> > unique(lst)
> [[1]]
> [1] "A"
>
> [[2]]
> [1] "C"
>
> [[3]]
> [1] "CC"
>
>
> unique() on a DNAStringSet was patterned after this behavior. If names
> were kept, would it be useful to retain only the name of the first
> duplicate? In the data above there are two "A"'s. Would you want 'a'
> kept and 'aa' dropped?
>
> Valerie
>
>
>
>
> On 07/26/2012 08:36 AM, Nicolas Delhomme wrote:
>> Hi,
>>
>> I've just realized that a call to unique on a DNAStringSet would
>> result in the names slot to disappear. There's nothing about this in
>> the documentation, but if that's the desired effect, warning about it
>> would be good :-)
>>
>> Here is how to reproduce it:
>>
>> library(Biostrings)
>> dset<-DNAStringSet(c("A","C"))
>> names(dset)<- c("a","a")
>> dset
>> unique(dset)
>>
>>
>> It gives:
>>
>>> dset
>> A DNAStringSet instance of length 2
>> width seq names
>> [1] 1 A a
>> [2] 1 C a
>>> unique(dset)
>> A DNAStringSet instance of length 2
>> width seq
>> [1] 1 A
>> [2] 1 C
>>
>> My sessionInfo():
>>
>> R version 2.15.1 (2012-06-22)
>> Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)
>>
>> locale:
>> [1] C/UTF-8/C/C/C/C
>>
>> attached base packages:
>> [1] stats graphics grDevices utils datasets methods base
>>
>> other attached packages:
>> [1] Biostrings_2.25.8 IRanges_1.15.24 BiocGenerics_0.3.0
>>
>> loaded via a namespace (and not attached):
>> [1] stats4_2.15.1 tools_2.15.1
>>
>> Cheers,
>>
>> Nico
>>
>> ---------------------------------------------------------------
>> Nicolas Delhomme
>>
>> Nathaniel Street Lab
>> Department of Plant Physiology
>> Umeå Plant Science Center
>>
>> Tel: +46 90 786 7989
>> Email: nicolas.delhomme at plantphys.umu.se
>> SLU - Umeå universitet
>> Umeå S-901 87 Sweden
>>
>> _______________________________________________
>> Bioconductor mailing list
>> Bioconductor at r-project.org
>> https://stat.ethz.ch/mailman/listinfo/bioconductor
>> Search the archives:
>> http://news.gmane.org/gmane.science.biology.informatics.conductor
>
> _______________________________________________
> Bioconductor mailing list
> Bioconductor at r-project.org
> https://stat.ethz.ch/mailman/listinfo/bioconductor
> Search the archives:
> http://news.gmane.org/gmane.science.biology.informatics.conductor
--
Hervé Pagès
Program in Computational Biology
Division of Public Health Sciences
Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N, M1-B514
P.O. Box 19024
Seattle, WA 98109-1024
E-mail: hpages at fhcrc.org
Phone: (206) 667-5791
Fax: (206) 667-1319
More information about the Bioconductor
mailing list