diff options
| -rw-r--r-- | diff.awk | 6 | ||||
| -rw-r--r-- | diff1.awk | 54 | ||||
| -rw-r--r-- | lin_reg1.awk | 83 | ||||
| -rw-r--r-- | lin_reg2.awk | 96 |
4 files changed, 3 insertions, 236 deletions
@@ -30,7 +30,7 @@ NR == 1 { printf(OFS) } - # diff columns + # new diff columns for (n=1; n<=NF; n++) { printf(dheader[n]) printf(n < NF ? OFS : ORS) @@ -41,7 +41,7 @@ NR == 1 { NF > 0 { (NF > nf_max) ? nf_max = NF : nf_max = nf_max - # data columns + # orig data columns for (n=1; n<=nf_max; n++) { if ($n == header[n] || $n == dheader[n]) continue @@ -52,7 +52,7 @@ NF > 0 { printf(OFS) } - # diff columns + # new diff columns for (n=1; n<=nf_max; n++) { if ($n == header[n] || $n == dheader[n]) continue diff --git a/diff1.awk b/diff1.awk deleted file mode 100644 index a6bf6ec..0000000 --- a/diff1.awk +++ /dev/null @@ -1,54 +0,0 @@ -#!/usr/bin/awk -f - -### diff1.awk -# print numerical diff along columns - - -BEGIN { - OFS = FS - sign = "[+-]?" - decimal = "[0-9]+[.]?[0-9]*" - fraction = "[.][0-9]*" - exponent = "([Ee]" sign "[0-9]+)?" - number = "^" sign "(" decimal "|" fraction ")" exponent "$" -} - - -# column headers -NR == 1 { - # orig data columns - for (n=1; n<=NF; n++) { - if ($n !~ number) { - header[n] = $n - dheader[n] = "d" $n - } - else { - header[n] = "col" n - dheader[n] = "dcol" n - } - printf(dheader[n]) - printf(n < NF ? OFS : ORS) - } -} - - -NF > 0 { - (NF > nf_max) ? nf_max = NF : nf_max = nf_max - - # data columns - for (n=1; n<=nf_max; n++) { - if ($n == header[n] || $n == dheader[n]) - continue - if ($n ~ number) { - data[n] = $n - if (data_prev[n] ~ number) - diff[n] = data[n] - data_prev[n] - else - diff[n] = "" - data_prev[n] = data[n] - } - printf(diff[n]) - printf(n < nf_max ? OFS : ORS) - } -} - diff --git a/lin_reg1.awk b/lin_reg1.awk deleted file mode 100644 index 7786247..0000000 --- a/lin_reg1.awk +++ /dev/null @@ -1,83 +0,0 @@ -#!/usr/bin/awk -f - -### lin_reg1.awk -# simple linear regression between columns - - -BEGIN { - sign = "[+-]?" - decimal = "[0-9]+[.]?[0-9]*" - fraction = "[.][0-9]*" - exponent = "([Ee]" sign "[0-9]+)?" - number = "^" sign "(" decimal "|" fraction ")" exponent "$" -} - - -# column headers -NR == 1 { - for (n=1; n<=NF; n++) - ($n ~ number) ? header[n] = "col" n : header[n] = $n -} - - -# read input data -NF > 0 { - (NF > nf_max) ? nf_max = NF : nf_max = nf_max - - # columns - for (y=1; y<=nf_max; y++) { - if ($y == header[n]) - continue - - if ($y ~ number) { - - # mean - count[y] += 1 - sum[y] += $y - sum2[y] += $y*$y - delta0[y] = $y - mean[y] - mean[y] += delta0[y]/count[y] - delta1[y] = $y - mean[y] - sum_delta[y] += delta1[y] - sum_delta2[y] += delta0[y]*delta1[y] - - # x = row, y = col, trendline: y = A + Bx - for (x=1; x<=nf_max; x++) { - count[x,y] += 1 - sum_xy[x,y] += $x*$y - sum_delta_xy[x,y] += delta0[x]*delta1[y] - - # correlation - r_den[x,y] = sqrt(sum_delta2[x]*sum_delta2[y]) - (r_den[x,y]) ? r[x,y] = sum_delta_xy[x,y]/r_den[x,y] : r[x,y] = 1 - - ab_den[x,y] = (count[x,y]*sum2[x] - sum[x]*sum[x]) - if (ab_den[x,y]) { - a[x,y] = (sum[y]*sum2[x] - sum[x]*sum_xy[x,y])/ab_den[x,y] - b[x,y] = (count[x,y]*sum_xy[x,y] - sum[x]*sum[y])/ab_den[x,y] - } - else { - a[x,y] = 0 - b[x,y] = 1 - } - } - } - else - continue - } -} - - -END { - for (y=1; y<=nf_max; y++) { - for (x=1; x<=nf_max; x++) { - if (x != y && r[x,y]) { - printf(OFMT OFS "(%s)" OFS " = " OFMT "(%s)" OFS " + " OFMT ORS, - 10.0*log(r[x,y]*r[x,y])/log(10.0), - header[y], b[x,y], - header[x], a[x,y]) - } - } - } -} - diff --git a/lin_reg2.awk b/lin_reg2.awk deleted file mode 100644 index d6097e3..0000000 --- a/lin_reg2.awk +++ /dev/null @@ -1,96 +0,0 @@ -#!/usr/bin/awk -f - -### lin_reg2.awk -# simple linear regression between columns - - -BEGIN { - sign = "[+-]?" - decimal = "[0-9]+[.]?[0-9]*" - fraction = "[.][0-9]*" - exponent = "([Ee]" sign "[0-9]+)?" - number = "^" sign "(" decimal "|" fraction ")" exponent "$" -} - - -# column headers -NR == 1 { - for (n=1; n<=NF; n++) - ($n ~ number) ? header[n] = "col" n : header[n] = $n -} - - -# read input data -NF > 0 { - (NF > nf_max) ? nf_max = NF : nf_max = nf_max - - # columns - for (y=1; y<=nf_max; y++) { - if ($y == header[n]) - continue - - if ($y ~ number) { - - # mean - count[y] += 1 - sum[y] += $y - sum2[y] += $y*$y - delta0[y] = $y - mean[y] - mean[y] += delta0[y]/count[y] - delta1[y] = $y - mean[y] - sum_delta[y] += delta1[y] - sum_delta2[y] += delta0[y]*delta1[y] - - # x = row, y = col, trendline: y = A + Bx - for (x=1; x<=nf_max; x++) { - count[x,y] += 1 - sum_xy[x,y] += $x*$y - sum_delta_xy[x,y] += delta0[x]*delta1[y] - - # correlation - r_den[x,y] = sqrt(sum_delta2[x]*sum_delta2[y]) - (r_den[x,y]) ? r[x,y] = sum_delta_xy[x,y]/r_den[x,y] : r[x,y] = 1 - - ab_den[x,y] = (count[x,y]*sum2[x] - sum[x]*sum[x]) - if (ab_den[x,y]) { - a[x,y] = (sum[y]*sum2[x] - sum[x]*sum_xy[x,y])/ab_den[x,y] - b[x,y] = (count[x,y]*sum_xy[x,y] - sum[x]*sum[y])/ab_den[x,y] - } - else { - a[x,y] = 0 - b[x,y] = 1 - } - - # error estimate - err_den[x,y] = count[x,y]*(count[x,y] - 2) - if (count[x,y] > 2) { - err[x,y] = $y - (a[x,y] + b[x,y]*$x) - sum_err2[x,y] += err[x,y]*err[x,y] - } - b_err_den[x,y] = (count[x,y] - 2)*sum_delta2[x] - if (b_err_den[x,y]) - b_err[x,y] = sqrt(sum_err2[x,y]/b_err_den[x,y]) - a_err_den[x,y] = count[x,y]*b_err_den[x,y] - if (a_err_den[x,y]) - a_err[x,y] = sqrt(sum2[x]/count[x,y])*b_err[x,y] - } - } - else - continue - } -} - - -END { - for (y=1; y<=nf_max; y++) { - for (x=1; x<=nf_max; x++) { - if (x != y && r[x,y]) { - printf(OFMT OFS "(%s)" OFS " = (" OFMT " +/- " OFMT ")(%s)" OFS " + (" OFMT " +/- " OFMT ")" ORS, - 10.0*log(r[x,y]*r[x,y])/log(10.0), - header[y], b[x,y], b_err[x,y], - header[x], a[x,y], a_err[x,y]) - } - } - } -} - |
