Mercurial > hg > cc > cirrus_shared
comparison bin/hist @ 2:345f8b12fd2f
mostly quite old
| author | Henry S. Thompson <ht@inf.ed.ac.uk> |
|---|---|
| date | Sat, 28 Feb 2026 15:52:47 +0000 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 1:fef95c7a391f | 2:345f8b12fd2f |
|---|---|
| 1 #!/bin/sh | |
| 2 # Usage: hist file bins [-max n] [-min n] [-ll n] [-t title] [-ntile n] | |
| 3 file=$1 | |
| 4 shift | |
| 5 nb=$1 | |
| 6 shift | |
| 7 date=`date` | |
| 8 while | |
| 9 case "x$1" in | |
| 10 x-max) shift; max=$1 ;; | |
| 11 x-ll) shift; ll=$1 ;; | |
| 12 x-min) shift; min=$1 ;; | |
| 13 x-t) shift; title=$1 ;; | |
| 14 x-ntile) shift; ntile=$1 ;; | |
| 15 x) break ;; | |
| 16 *) echo hunh 1>&2; exit 1 ;; | |
| 17 esac | |
| 18 do | |
| 19 shift | |
| 20 done | |
| 21 if [ \( -z "$max" -o -z "$min" \) ] | |
| 22 then | |
| 23 rfile=/tmp/hist$$ | |
| 24 sort -n $file > $rfile | |
| 25 fi | |
| 26 perl -e " | |
| 27 (\$max,\$min,\$nb,\$ll,\$title,\$ntile)=(${max:-`tail -1 /tmp/hist$$`}, | |
| 28 ${min:-`head -1 /tmp/hist$$`} | |
| 29 ,$nb,${ll:-80},\"${title:-$file}\",${ntile:-0});"' | |
| 30 $#bins=$nb; | |
| 31 $range=$max-$min; | |
| 32 while (<>) { | |
| 33 if ($_<$min) { | |
| 34 $minn+=1; | |
| 35 } | |
| 36 elsif ($_>$max) { | |
| 37 $maxn+=1; | |
| 38 } | |
| 39 else { | |
| 40 $n+=1; | |
| 41 $i=(($_-$min)/$range)*$nb; | |
| 42 if ($i==$nb) {$bins[$i-1]+=1} else {$bins[int($i)]+=1}; | |
| 43 }; | |
| 44 }; | |
| 45 $start=$min+$range/(2*$nb); | |
| 46 $step=$range/$nb; | |
| 47 foreach $i (0..$nb-1) { | |
| 48 $mb=$bins[$i] if ($bins[$i]>$mb); | |
| 49 }; | |
| 50 $bscale=$mb/($ll-16); | |
| 51 $bscale=1 if ($bscale<1); | |
| 52 print "$title ",`date`,"\n"; | |
| 53 print " n min max width maxcnt bscale"; | |
| 54 if ($ntile) { | |
| 55 print " ntiles tilew"; | |
| 56 $tile=$tstep=($n/$ntile); | |
| 57 $ntile--; | |
| 58 } | |
| 59 print "\n"; | |
| 60 printf("%7d%7.3f %7.3f%7.3f%6d %7.3f",$n,$min,$max,$step,$mb,$bscale); | |
| 61 printf("%5d %7.2f",$ntile+1,$tstep) if ($ntile); | |
| 62 print "\n\n"; | |
| 63 if ($minn) {printf("<%7.3f%7d\n",$min,$minn)}; | |
| 64 foreach $i (0..$nb-1) { | |
| 65 $n=$bins[$i]; | |
| 66 if ($ntile) { | |
| 67 $cum+=$n; | |
| 68 if ($cum>=$tile) { | |
| 69 print "-"; $tile+=$tstep; $ntile--; | |
| 70 } | |
| 71 else { | |
| 72 print " "; | |
| 73 }; | |
| 74 } | |
| 75 else { | |
| 76 print " "; | |
| 77 }; | |
| 78 printf("%7.3f%7d ",$start+($i*$step),$bins[$i]); | |
| 79 $nx=$bins[$i]/$bscale; | |
| 80 $nx=1 if (($nx<1) && ($bins[$i]>0)); | |
| 81 print "*" x $nx; print "\n"; | |
| 82 }; | |
| 83 if ($maxn) {printf(">%7.3f%7d\n",$max,$maxn)};' ${rfile:-$file} | |
| 84 if [ "$rfile" ] | |
| 85 then | |
| 86 rm $rfile | |
| 87 fi | |
| 88 |
