From: Lincoln S. <ls...@us...> - 2008-02-22 14:42:32
|
Update of /cvsroot/gmod/Generic-Genome-Browser/lib/Bio/Graphics/Wiggle In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv6587/lib/Bio/Graphics/Wiggle Modified Files: Tag: stable Loader.pm Log Message: another bug fix in the loading of wig files. The performance optimization was setting the file offsets incorrectly Index: Loader.pm =================================================================== RCS file: /cvsroot/gmod/Generic-Genome-Browser/lib/Bio/Graphics/Wiggle/Attic/Loader.pm,v retrieving revision 1.1.2.13 retrieving revision 1.1.2.14 diff -C2 -d -r1.1.2.13 -r1.1.2.14 *** Loader.pm 21 Feb 2008 18:14:59 -0000 1.1.2.13 --- Loader.pm 22 Feb 2008 14:42:35 -0000 1.1.2.14 *************** *** 323,340 **** } - sub updatemm { - my $self = shift; - my ($chrom,$value) = @_; - my $seqids = $self->current_track->{seqids}; - if (!exists $seqids->{$chrom}{min} || - $value < $seqids->{$chrom}{min}) { - $seqids->{$chrom}{min} = $value; - } - if (!exists $seqids->{$chrom}{max} || - $value > $seqids->{$chrom}{max}) { - $seqids->{$chrom}{max} = $value; - } - } - sub process_bed { my $self = shift; --- 323,326 ---- *************** *** 375,383 **** my $start = $self->{track_options}{start}; my $step = $self->{track_options}{step}; # update span $self->{track_options}{span} ||= 1; ! $self->current_track->{seqids}{$seqid}{start} = $start; ! $self->current_track->{seqids}{$seqid}{end} = ! $self->current_track->{seqids}{$seqid}{start} + $self->{track_options}{span} - 1; # write out data in 500K chunks for efficiency my @buffer; --- 361,374 ---- my $start = $self->{track_options}{start}; my $step = $self->{track_options}{step}; + # update span $self->{track_options}{span} ||= 1; ! my $chrom = $self->current_track->{seqids}{$seqid}; ! $chrom->{start} = $start ! if !defined $chrom->{start} || $chrom->{start} > $start; ! my $end = $chrom->{start} + $self->{track_options}{span} - 1; ! $chrom->{end} = $end ! if !defined $chrom->{end} || $chrom->{end} < $end; ! # write out data in 500K chunks for efficiency my @buffer; *************** *** 390,400 **** $wigfile->set_values($start=>\@buffer); @buffer = (); } - # update span - $self->current_track->{seqids}{$seqid}{end} = $start+$step-1; - $start += $step; } $wigfile->set_values($start=>\@buffer) if @buffer; } --- 381,392 ---- $wigfile->set_values($start=>\@buffer); @buffer = (); + my $big_step = $step * @buffer; + $start += $big_step; + $self->current_track->{seqids}{$seqid}{end} = $start+$big_step-1; } } $wigfile->set_values($start=>\@buffer) if @buffer; + $self->current_track->{seqids}{$seqid}{end} = $start+@buffer*$step-1; } *************** *** 404,407 **** --- 396,400 ---- my $seqid = $self->{track_options}{chrom}; my $span = $self->{track_options}{span} || 1; + my $chrom = $self->current_track->{seqids}{$seqid}; my $wigfile = $self->wigfile($seqid); while (<$infh>) { *************** *** 413,423 **** # update span ! $self->current_track->{seqids}{$seqid}{start} = $start ! unless exists $self->current_track->{seqids}{$seqid}{start} ! and $self->current_track->{seqids}{$seqid}{start} < $start; - $self->current_track->{seqids}{$seqid}{end} = $start + ($span-1) - if !defined $self->current_track->{seqids}{$seqid}{end} - || $self->current_track->{seqids}{$seqid}{end} < $start + ($span-1); } $self->current_track->{seqids}{$seqid}{end} ||= $self->current_track->{seqids}{$seqid}{start}; --- 406,415 ---- # update span ! $chrom->{start} = $start ! if !defined $chrom->{start} || $chrom->{start} > $start; ! my $end = $chrom->{start} + $span - 1; ! $chrom->{end} = $end ! if !defined $chrom->{end} || $chrom->{end} < $end; } $self->current_track->{seqids}{$seqid}{end} ||= $self->current_track->{seqids}{$seqid}{start}; |