# Last edited on 2023-04-18 22:25:56 by stolfi

#   {min_sharp}   min sharpness to accept for computing..
#   {max_zdev}    max {zdev} to consider for computing.
  if (min_sharp == "") { arg_error("must define {min_sharp}"); } min_sharp += 0;
  if (max_zdev == "") { arg_error("must define {max_zdev}"); } max_zdev += 0;
  nr_sharp = 0; # Number of data lines rejected for small {sharp}
  if (sharp < min_sharp) { nr_sharp++; next; }

echo "generating the regression input file ${regrDataFile}..." 1>&2
cat ${histDataFile} \
  | gawk -v unitTerm=${unitTerm} \
      ' /^ *[0-9]/{ 
          ih = $1; sh = $2; 
          wt = sh;
          printf "%s %s %12.6f ", ih, sh, wt;
          for (kf = 3; kf <= NF; kf++) { printf " %s", $(kf) }
          if (unitTerm+0 > 0) { printf " 1"; }
          printf "\n";
        }
      ' \
  > ${regrDataFile}

# Do a regression on the modified histogram file:

# Prepare the data for regression:
echo "generating the regression input file ${regrDataFile}..." 1>&2
cat ${pixDataFile} \
  | filter_pixel_data.gawk \
  | gawk \
      -v unitTerm=${unitTerm} \
      -v nb=${nb} \
      -v nt=${nt} \
      ' /^ *P[0-9]/{ 
          if (NF + unitTerm  != 6 + nb + nt) { printf "BUG\n" > "/dev/stderr"; exit(1); }
          pi = $1; va = $2; vd = $3; sh = $4; za = $5; zd = $6; 
          # wp = sh;
          wp = 1.0;
          printf "%s %s %12.6f ", pi, sh, wp;
          for (kf = 7+nb; kf <= NF; kf++) { printf " %s", $(kf) }
          if (unitTerm+0 > 0) { printf " 1"; }
          printf "\n";
        }
      ' \
  > ${regrDataFile}
  
if [[ ! ( -s ${regrDataFile} ) ]]; then
  echo "** failed to create the regression data file" 1>&2; exit 1
fi

# Do a regression on the modified histogram file:
