#!/usr/bin/env perl use strict; my ($t,$tu,$tudelta,$thistudelta,$avelen,$last,$v,$l); my $win=5; my $winc=2; #my @val=(0 x $win); #my @vall=("-" x $win); my @val=(0,0,0,0,0); my @vall=("-","-","-","-","-"); my $head=<>; while(<>){ chomp; my @f = split(/\s+/,$_,0); $t += $f[5]; $tu ++; $thistudelta = abs($f[1]-$f[0]+1 - ($f[3]-$f[2]+1)); $tudelta += $thistudelta ; # $avelen = ($f[1]-$f[0]+1 + ($f[3]-$f[2]+1))/2; $avelen = jjmax($f[1]-$f[0]+1, $f[3]-$f[2]+1); $v= $f[5] / ($avelen+$thistudelta); push(@val,$v); shift(@val); $l = "$tu :: $_ :: " . sprintf('%5.1f',$v); push(@vall,$l); shift(@vall); print "$vall[$winc] :: ",sprintf('%.1f',ave(@val)),"\n"; # print "$_ :: ", sprintf('%5.1f',$v),"\n"; $last = $f[3] if $f[3]; } for ($winc+1 .. $win){ print "$vall[$_]\n"; } print "T=$t; TU=$tu; T/TU=", sprintf('%5.1f', $t/$tu), "; TUDELTA/TU=", sprintf('%5.1f', $tudelta/$tu), "; T/tokens=", sprintf('%5.1f', $tudelta/$last),"\n"; sub ave{ my ($s,$c); for(@_){ $s += $_; $c++} return($s/$c); } sub jjmax{ $_[0] > $_[1] ? $_[0] : $_[1] } __END__ c-ptc-11869-pml p c-enc-11869-pml p 16 17 16 17 1:1 70 18 47 18 39 1:1 4176 48 79 40 66 1:1 3123 80 109 67 89 1:1 4186 110 128 90 101 1:1 1234 129 151 102 122 1:1 3807 152 159 123 130 1:1 1163 160 194 131 163 1:1 3361 195 226 164 189 1:1 3123 227 244 190 204 1:1 3309 245 254 205 213 1:1 1353 255 304 214 256 1:1 6716 305 319 257 272 1:1 2616 320 344 273 297 1:1 4437