Bioconductor / ShortRead

8 stars 6 forks source link

Converting from a ShortRead object to a QualityScaledDNAStringSet discards names #3

Closed LTLA closed 3 years ago

LTLA commented 3 years ago

If we have a look at this example:

library(ShortRead)
sp <- SolexaPath(system.file('extdata', package='ShortRead'))
fl <- file.path(analysisPath(sp), "s_1_sequence.txt")
f <- FastqSampler(fl, 50)
out <- yield(f)
out
## class: ShortReadQ
## length: 50 reads; width: 36 cycles

This does okay:

as(out, "QualityScaledDNAStringSet")
##   A QualityScaledDNAStringSet instance containing:
## 
## DNAStringSet object of length 50:
##      width seq
##  [1]    36 GGTAAAGGACTTCTTGACGGTACGTTGCATGCTTGG
##  [2]    36 GCAAGCTGCTTATGCTAATTTGCATACTGACCAAGA
##  [3]    36 GACATTATGGGTCTGCAAGCTGCTTATGCTACTTTG
##  [4]    36 GTTACCATGATGTTATTTCTTCATTTGGAGGTAAAA
##  [5]    36 GTATGTTTCTCCTGCTTATCACCTTCTTGAAGGCTT
##  ...   ... ...
## [46]    36 GTTAATGCTGGTAATGGTGGTTTTCTTCTTTTCCTT
## [47]    36 GGGGGAGCACATTGTAGCATTGTGCCAATTCATCCA
## [48]    36 GCTTATCACCTTCTTGAAGGCTTCCCATTCATTCAG
## [49]    36 GGGTGATAAGCAGGAGAAACATACGAAGGCGCATAA
## [50]    36 GTTTTCATGCCTCCCAATCTTGGAGGCTTTTTTATG
## 
## SolexaQuality object of length 50:
##      width seq
##  [1]    36 ]]]]]]]]]]T]]]]]RC]Y]R]]]]WPCTVCQCMA
##  [2]    36 ]]]]]]]]]]]]]]]]]V]]]]]O]]]]MQZXEAOK
##  [3]    36 ]]]]]]]]]]]]]]]]YR]]]]]]]T]VWZSEVSSJ
##  [4]    36 ]]]]]]]]]]]]]]]]]]]]]]T]]]]RJRZTQLOA
##  [5]    36 ]]]]]]]]]]]]]]]]]T]]]]]]]]]]MJUJVLSS
##  ...   ... ...
## [46]    36 ]]]]]]]]]]]Y]]]]]]]]J]]]OR]MCUZEKAOO
## [47]    36 ]]]]]Y]]Y]Y]Y]HTRVVT]MRY]VCEVVZJQKHF
## [48]    36 ]]]]]]]]]]]]]]]]]VYR]]]]]]O][ZSXVSHJ
## [49]    36 ]]]]]]]]]]]Y]]V]YVTYHYJ]VJTVWPZOHJHF
## [50]    36 ]]]]]]]]]]]]]]HT]]]]]]]C]]V][ZZXVASS

But it doesn't pass on the names of each sequence in id(out), which makes it difficult to write back to FASTQ.

Plus it would also be nice for as(out, "DNAStringSet") to work, whereas it currently gives:

## Error in h(simpleError(msg, call)) :
##   error in evaluating the argument 'x' in selecting a method for function 'XStringSet': no method for coercing this S4 class to a vector