]> jspc29.x-matter.uni-frankfurt.de Git - hades_mdc_settings.git/commitdiff
add script to compare baselines
authorJan Michel <michel@physik.uni-frankfurt.de>
Mon, 9 Mar 2026 15:02:32 +0000 (16:02 +0100)
committerJan Michel <michel@physik.uni-frankfurt.de>
Mon, 9 Mar 2026 15:02:32 +0000 (16:02 +0100)
scripts/compare_baselines.pl [new file with mode: 0755]

diff --git a/scripts/compare_baselines.pl b/scripts/compare_baselines.pl
new file mode 100755 (executable)
index 0000000..d8d60f8
--- /dev/null
@@ -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 = <FILE>) {
+  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 = <FILE>) {
+  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");