[R] how to work with long vectors
Martin Morgan
mtmorgan at fhcrc.org
Thu Nov 4 18:06:56 CET 2010
On 11/04/2010 09:45 AM, Changbin Du wrote:
> Thanks, Jim!
>
> This is not what I want, What I want is calculate the percentage of reads
> bigger or equal to that reads in each position.MY output is like the
> following:
Hi Changbin -- I might be repeating myself, but the Bioconductor
packages IRanges and GenomicRanges are designed to work with this sort
of data, and include 'coverage' functions that do what you're interested
in. Look into ?GRanges if interested.
http://bioconductor.org/help/bioc-views/release/BiocViews.html#___HighThroughputSequencing
Martin
> for row 1, all the reads is >= 4, so the cover_per is 100,
> for row 2, 99 % reads >=4, so the cover_per is 99.
>> head(final)
> cover_per reads
> 1 100 4
> 2 99 8
> 3 98 13
> 4 97 14
> 5 96 17
> 6 95 20
>
> I attached the input file with this email. This file is only 100 rows, very
> small. MY original data set is 3384766 rows.
>
> >
> matt<-read.table("/house/groupdirs/genetic_analysis/mjblow/ILLUMINA_ONLY_MICROBIAL_GENOME_ASSEMBLY/4083340/STANDARD_LIBRARY/GWZW.994.5.1129.trim_69.fastq.19621832.sub.sorted.bam.clone.depth",
> sep="\t", skip=0, header=F,fill=T) #
>> dim(matt)
> [1] 3384766 2
>
> Thanks so much for your time!
>
>> matt<-read.table("/home/cdu/operon/dimer5_0623/matt_test.txt", sep="\t",
> skip=0, header=F,fill=T) #
>> names(matt)<-c("id","reads")
>> dim(matt)
> [1] 100 2
>> cover<-matt$reads
>>
>>
>> #calculate the cumulative coverage.
>> cover_per<-function (data) {
> + output<-numeric(0)
> + for (i in data) {
> + x<-(100*sum(ifelse(data >= i, 1, 0))/length(data))
> + output<-c(output, x)
> + }
> + return(output)
> + }
>>
>>
>> result<-cover_per(cover)
>> head(result)
> [1] 100 99 98 97 96 95
>>
>> final<-data.frame(result, cover)
>>
>> names(final)<-c("cover_per", "reads")
>> head(final)
> cover_per reads
> 1 100 4
> 2 99 8
> 3 98 13
> 4 97 14
> 5 96 17
> 6 95 20
>
>
>
>
>
> On Thu, Nov 4, 2010 at 9:18 AM, jim holtman <jholtman at gmail.com> wrote:
>
>> Is this what you want:
>>
>>> x
>> id reads
>> 1 Contig79:1 4
>> 2 Contig79:2 8
>> 3 Contig79:3 13
>> 4 Contig79:4 14
>> 5 Contig79:5 17
>> 6 Contig79:6 20
>> 7 Contig79:7 25
>> 8 Contig79:8 27
>> 9 Contig79:9 32
>> 10 Contig79:10 33
>> 11 Contig79:11 34
>>> x$percent <- x$reads / max(x$reads) * 100
>>> x
>> id reads percent
>> 1 Contig79:1 4 11.76471
>> 2 Contig79:2 8 23.52941
>> 3 Contig79:3 13 38.23529
>> 4 Contig79:4 14 41.17647
>> 5 Contig79:5 17 50.00000
>> 6 Contig79:6 20 58.82353
>> 7 Contig79:7 25 73.52941
>> 8 Contig79:8 27 79.41176
>> 9 Contig79:9 32 94.11765
>> 10 Contig79:10 33 97.05882
>> 11 Contig79:11 34 100.00000
>>
>>
>> On Thu, Nov 4, 2010 at 11:46 AM, Changbin Du <changbind at gmail.com> wrote:
>>> HI, Dear R community,
>>>
>>> I have one data set like this, What I want to do is to calculate the
>>> cumulative coverage. The following codes works for small data set (#rows
>> =
>>> 100), but when feed the whole data set, it still running after 24 hours.
>>> Can someone give some suggestions for long vector?
>>>
>>> id reads
>>> Contig79:1 4
>>> Contig79:2 8
>>> Contig79:3 13
>>> Contig79:4 14
>>> Contig79:5 17
>>> Contig79:6 20
>>> Contig79:7 25
>>> Contig79:8 27
>>> Contig79:9 32
>>> Contig79:10 33
>>> Contig79:11 34
>>>
>>>
>> matt<-read.table("/house/groupdirs/genetic_analysis/mjblow/ILLUMINA_ONLY_MICROBIAL_GENOME_ASSEMBLY/4083340/STANDARD_LIBRARY/GWZW.994.5.1129.trim_69.fastq.19621832.sub.sorted.bam.clone.depth",
>>> sep="\t", skip=0, header=F,fill=T) #
>>> dim(matt)
>>> [1] 3384766 2
>>>
>>> matt_plot<-function(matt, outputfile) {
>>> names(matt)<-c("id","reads")
>>>
>>> cover<-matt$reads
>>>
>>>
>>> #calculate the cumulative coverage.
>>> + cover_per<-function (data) {
>>> + output<-numeric(0)
>>> + for (i in data) {
>>> + x<-(100*sum(ifelse(data >= i, 1, 0))/length(data))
>>> + output<-c(output, x)
>>> + }
>>> + return(output)
>>> + }
>>>
>>>
>>> result<-cover_per(cover)
>>>
>>>
>>> Thanks so much!
>>>
>>>
>>> --
>>> Sincerely,
>>> Changbin
>>> --
>>>
>>> [[alternative HTML version deleted]]
>>>
>>> ______________________________________________
>>> R-help at r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>> PLEASE do read the posting guide
>> http://www.R-project.org/posting-guide.html
>>> and provide commented, minimal, self-contained, reproducible code.
>>>
>>
>>
>>
>> --
>> Jim Holtman
>> Cincinnati, OH
>> +1 513 646 9390
>>
>> What is the problem that you are trying to solve?
>>
>
>
>
>
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
--
Computational Biology
Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N. PO Box 19024 Seattle, WA 98109
Location: M1-B861
Telephone: 206 667-2793
More information about the R-help
mailing list