From: Jan Michel Date: Mon, 9 Mar 2026 15:02:32 +0000 (+0100) Subject: add script to compare baselines X-Git-Url: https://jspc29.x-matter.uni-frankfurt.de/git/?a=commitdiff_plain;h=4b8b872eceb8a6b30b943bd1b7b38f7f42d0f6a3;p=hades_mdc_settings.git add script to compare baselines --- diff --git a/scripts/compare_baselines.pl b/scripts/compare_baselines.pl new file mode 100755 index 0000000..d8d60f8 --- /dev/null +++ b/scripts/compare_baselines.pl @@ -0,0 +1,123 @@ +#!/usr/bin/perl -w +use warnings; +no warnings "portable"; +use FileHandle; +use Getopt::Long; +use Data::Dumper; +use HADES::TrbNet; +use Pod::Usage; +use File::Slurp; +use List::Util qw(min max); +use lib '.'; +use MDC; + +my $baselines; + +my @scanlines; +my $newbaselines; + +############################################################################### +#Read baseline file and store values +############################################################################### +open FILE, "../pasttrec/pasttrec_baseline.db" or die $!."\npasttrec_baseline.db not found."; +while (my $a = ) { + if(my @values = $a =~ /^\s*(\d+)\s+(\d)\s+(\w\w)\s+(\w\w)\s+(\w\w)\s+(\w\w)\s+(\w\w)\s+(\w\w)\s+(\w\w)\s+(\w\w)\s*$/) { + my $s = shift @values; + my $pt = shift @values; + $baselines->{$s}{$pt}=\@values; + } + } +close FILE; + + +############################################################################### +#Read file with list of installed boards & MBO size +############################################################################### +my $addresses; +open FILE, "../installation/mbo_positions.db" or die $!."\nmbo_positions.db not found."; +while (my $a = ) { + if(my @values = $a =~ /^\s*(\d)\s+(\d)\s+(\d+)\s+(\d)\s+(\d+)\s*/) { + my $p = shift @values; + my $s = shift @values; + my $b = shift @values; + my $long = shift @values; + my $id = shift @values; + + $addresses->{$id."0"} = MDC::get_address($p,$s,$b,0); + $addresses->{$id."1"} = MDC::get_address($p,$s,$b,1); + $addresses->{$id."2"} = MDC::get_address($p,$s,$b,2) if $long; + } + } +close FILE; + + +############################################################################### +#Get new values +############################################################################### +while (my $a = <>) { +# print $a; + if(my @values = $a =~ /^\s*(\d+)\s+(\d)\s+(\w\w)\s+(\w\w)\s+(\w\w)\s+(\w\w)\s+(\w\w)\s+(\w\w)\s+(\w\w)\s+(\w\w)\s*$/) { + push(@scanlines,$a); + my $s = shift @values; + my $pt = shift @values; + $s = "0".$s if($s<1000); + $newbaselines->{$s}{$pt}=\@values; + } + } + + + +############################################################################### +#Extract same lines from baseline file +############################################################################### +my $newvalues =""; +my $oldvalues =""; +my @counters; +foreach my $l (@scanlines) { + my @values = $l =~ /^\s*(\d+)\s+(\d)\s+(\w\w)\s+(\w\w)\s+(\w\w)\s+(\w\w)\s+(\w\w)\s+(\w\w)\s+(\w\w)\s+(\w\w)\s*$/; + $values[0] = "0".$values[0] if($values[0]<1000); + + $oldvalues .= " $values[0]\t$values[1]\t".join("\t",@{$baselines->{$values[0]}{$values[1]}}); + $oldvalues .= sprintf("\t%04x\n",$addresses->{$values[0]}); + + $newvalues .= " $values[0]\t$values[1]"; + for(my $i=0; $i<8; $i++) { + my $ov = $baselines->{$values[0]}{$values[1]}[$i]; + my $nv = $values[$i+2]; + if($nv==$ov-1) { + $counters[2]++; + $newvalues .= "\t$ov"; + } + elsif($nv==$ov+1) { + $counters[1]++; + $newvalues .= "\t$ov"; + } + elsif($nv==$ov) { + $counters[0]++; + $newvalues .= "\t$ov"; + } + elsif($nv==77) { + $counters[4]++; + $newvalues .= "\t$nv"; + } + else { + $counters[3]++; + $newvalues .= "\t$nv"; + } + } + + $newvalues .= sprintf("\t%04x\n",$addresses->{$values[0]}); + } + +print("$counters[0]\t identical\n"); +print("$counters[1]\t 1 lower\n"); +print("$counters[2]\t 1 higher\n"); +print("$counters[3]\t different\n"); +print("$counters[4]\t no threshold found\n"); + + +write_file("/tmp/mdc_newbaselines.csv",$newvalues); +write_file("/tmp/mdc_oldbaselines.csv",$oldvalues); +system("sort /tmp/mdc_oldbaselines.csv -k 11 -o /tmp/mdc_oldbaselines.csv"); +system("sort /tmp/mdc_newbaselines.csv -k 11 -o /tmp/mdc_newbaselines.csv"); +system("meld /tmp/mdc_oldbaselines.csv /tmp/mdc_newbaselines.csv");