summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--diff.awk6
-rw-r--r--diff1.awk54
-rw-r--r--lin_reg1.awk83
-rw-r--r--lin_reg2.awk96
4 files changed, 3 insertions, 236 deletions
diff --git a/diff.awk b/diff.awk
index 83fd0b5..2b42a2d 100644
--- a/diff.awk
+++ b/diff.awk
@@ -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])
- }
- }
- }
-}
-