summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwukong <wukong@longaeva>2018-06-16 21:06:25 -0700
committerwukong <wukong@longaeva>2018-06-16 21:06:25 -0700
commit39d1486694b3baac5bfafe11f73e179530d6c109 (patch)
tree5d44a81df33a27af133e0c3a47f414e305e9d97d
parentce5e0a8f088e19e8ebe9a27d8efd4207363791af (diff)
added improvements from diff to diff1; increased number of digits printed in diff, diff1, lin_reg, lin_reg1, and lin_reg2;
Diffstat (limited to '')
-rw-r--r--diff.awk32
-rw-r--r--diff1.awk44
-rw-r--r--lin_reg.awk18
-rwxr-xr-x[-rw-r--r--]lin_reg1.awk18
-rw-r--r--lin_reg2.awk20
5 files changed, 75 insertions, 57 deletions
diff --git a/diff.awk b/diff.awk
index fb93b57..03bc398 100644
--- a/diff.awk
+++ b/diff.awk
@@ -13,13 +13,18 @@ BEGIN {
}
NR == 1 {
- ### orig columns
+ ### orig data columns
for (n=1; n<=NF; n++) {
- ($n !~ number) ? header[n] = $n : header[n] = "col" n
+ if ($n !~ number) {
+ header[n] = $n
+ dheader[n] = "d" $n
+ }
+ else {
+ header[n] = "col" n
+ dheader[n] = "dcol" n
+ }
printf(header[n])
- ($n !~ number) ? dheader[n] = "d" $n : dheader[n] = "dcol" n
- if (n <= NF)
- printf(OFS)
+ printf(OFS)
}
### diff columns
@@ -34,12 +39,12 @@ NF {
if (NF > nf_max)
nf_max = NF
- ### orig columns
+ ### data columns
for (y=1; y<=nf_max; y++) {
if ($y == header[y] || $y == dheader[y])
continue
if ($y ~ number)
- printf($y)
+ printf("%.12g", $y)
else
printf("")
printf(OFS)
@@ -47,15 +52,18 @@ NF {
### diff columns
for (y=1; y<=nf_max; y++) {
+ if ($y == header[y] || $y == dheader[y])
+ continue
if ($y ~ number) {
data[y] = $y
(data_prev[y] ~ number) ? diff[y] = data[y] - data_prev[y] : diff[y] = ""
data_prev[y] = data[y]
- printf(diff[y])
- if (y < nf_max)
- printf(OFS)
+ printf("%.12g", diff[y])
}
- diff[y] = ""
+ else
+ diff[y] = ""
+ if (y < nf_max)
+ printf(OFS)
}
- printf("\n")
+ printf(ORS)
}
diff --git a/diff1.awk b/diff1.awk
index 42cc5a8..e2c4a99 100644
--- a/diff1.awk
+++ b/diff1.awk
@@ -1,4 +1,4 @@
-#!/usr/bin/awk -f
+#!usr/bin/awk -f
### diff.awk
# numerical diff along columns
@@ -13,30 +13,40 @@ BEGIN {
}
NR == 1 {
- header_nf = NF
+ ### orig data columns
for (n=1; n<=NF; n++) {
- if ($n !~ number)
- header[n] = "d" $n
- else
- header[n] = "col_" n
- printf("%s,", header[n])
+ if ($n !~ number) {
+ header[n] = $n
+ dheader[n] = "d" $n
+ }
+ else {
+ header[n] = "col" n
+ dheader[n] = "dcol" n
+ }
+ printf(dheader[n])
+ if (n < NF)
+ printf(OFS)
}
}
-NF != 0 {
- if (NF > max_nf)
- max_nf = NF
+NF {
+ if (NF > nf_max)
+ nf_max = NF
- ### iterate over columns
- for (y=1; y<=max_nf; y++) {
+ ### data columns
+ for (y=1; y<=nf_max; y++) {
+ if ($y == header[y] || $y == dheader[y])
+ continue
if ($y ~ number) {
-
data[y] = $y
- diff[y] = data[y] - data_prev[y]
- printf("%g,", diff[y])
+ (data_prev[y] ~ number) ? diff[y] = data[y] - data_prev[y] : diff[y] = ""
data_prev[y] = data[y]
-
+ printf("%.12g", diff[y])
}
+ else
+ diff[y] = ""
+ if (y < nf_max)
+ printf(OFS)
}
- printf("\n")
+ printf(ORS)
}
diff --git a/lin_reg.awk b/lin_reg.awk
index 51f2e87..f82e2e8 100644
--- a/lin_reg.awk
+++ b/lin_reg.awk
@@ -4,6 +4,7 @@
# simple linear regression between columns
BEGIN {
+ OFS = "%.9g"
sign = "[+-]?"
decimal = "[0-9]+[.]?[0-9]*"
fraction = "[.][0-9]*"
@@ -14,17 +15,16 @@ BEGIN {
NR == 1 {
header_nf = NF
for (n=1; n<=NF; n++) {
- ($n !~ number) ? header[n] = $n : header[n] = "col_" n
+ ($n !~ number) ? header[n] = $n : header[n] = "col" n
}
}
NF != 0 {
- #printf("\n%s: %s", NR, $0)
- if (NF > max_nf)
- max_nf = NF
+ if (NF > nf_max)
+ nf_max = NF
### iterate over columns
- for (y=1; y<=max_nf; y++) {
+ for (y=1; y<=nf_max; y++) {
if ($y ~ number) {
### mean
@@ -42,7 +42,7 @@ NF != 0 {
(count[y] > 1) ? var[y] = sum_delta2[y]/(count[y] - 1) : var[y] = 0
# x = row, y = col
- for (x=1; x<=max_nf; x++) {
+ for (x=1; x<=nf_max; x++) {
count[x,y] += 1
sum_xy[x,y] += $x*$y
sum_delta_xy[x,y] += delta[x]*delta[y]
@@ -81,10 +81,10 @@ NF != 0 {
}
END {
- for (y=1; y<=max_nf; y++) {
- for (x=1; x<=max_nf; x++) {
+ for (y=1; y<=nf_max; y++) {
+ for (x=1; x<=nf_max; x++) {
if (x != y && r[x,y]) {
- printf("\n %g \t (%s) \t = (%g +/- %g)(%s) \t + (%g +/- %g)",
+ printf("\n %.9g \t (%s) \t = (%.9g +/- %.9g)(%s) \t + (%.9g +/- %.9g)",
10.0*log(r[x,y]*r[x,y])/log(10), header[y], b[x,y], b_err[x,y], header[x],
a[x,y], a_err[x,y])
}
diff --git a/lin_reg1.awk b/lin_reg1.awk
index cd3db8e..2d21c29 100644..100755
--- a/lin_reg1.awk
+++ b/lin_reg1.awk
@@ -1,7 +1,7 @@
#!/usr/bin/awk -f
### lin_reg1.awk
-# simple linear regression between individual text columns
+# simple linear regression between columns
BEGIN {
OFS = "%.9g"
@@ -15,16 +15,16 @@ BEGIN {
NR == 1 {
header_nf = NF
for (n=1; n<=NF; n++) {
- ($n !~ number) ? header[n] = $n : header[n] = sprintf("col_%g", n)
+ ($n !~ number) ? header[n] = $n : header[n] = "col" n
}
}
NF != 0 {
- if (NF > max_nf)
- max_nf = NF
+ if (NF > nf_max)
+ nf_max = NF
### iterate over columns
- for (y=1; y<= NF; y++) {
+ for (y=1; y<=nf_max; y++) {
if ($y ~ number) {
### mean
@@ -39,7 +39,7 @@ NF != 0 {
sum_delta2[y] += delta[y]*delta[y]
# x = row, y = col
- for (x=1; x<=max_nf; x++) {
+ for (x=1; x<=nf_max; x++) {
count[x,y] += 1
sum_xy[x,y] += $x*$y
sum_delta_xy[x,y] += delta[x]*delta[y]
@@ -64,11 +64,11 @@ NF != 0 {
}
END {
- for (y=1; y<=max_nf; y++) {
- for (x=1; x<=max_nf; x++) {
+ for (y=1; y<=nf_max; y++) {
+ for (x=1; x<=nf_max; x++) {
if (x != y && r[x,y]) {
r2[x,y] = r[x,y]*r[x,y]
- printf("\n %f \t (%s) \t = %g(%s) \t + %g",
+ printf("\n %.9g \t (%s) \t = %.9g(%s) \t + %.9g",
10.0*log(r2[x,y])/log(10), header[y], b[x,y], header[x], a[x,y])
}
}
diff --git a/lin_reg2.awk b/lin_reg2.awk
index 7553c4e..916b6cb 100644
--- a/lin_reg2.awk
+++ b/lin_reg2.awk
@@ -1,9 +1,10 @@
#!/usr/bin/awk -f
-### lin_reg.awk
+### lin_reg2.awk
# simple linear regression between columns
BEGIN {
+ OFS = "%.9g"
sign = "[+-]?"
decimal = "[0-9]+[.]?[0-9]*"
fraction = "[.][0-9]*"
@@ -14,17 +15,16 @@ BEGIN {
NR == 1 {
header_nf = NF
for (n=1; n<=NF; n++) {
- ($n !~ number) ? header[n] = $n : header[n] = n
+ ($n !~ number) ? header[n] = $n : header[n] = "col" n
}
}
NF != 0 {
- #printf("\n%s: %s", NR, $0)
- if (NF > max_nf)
- max_nf = NF
+ if (NF > nf_max)
+ nf_max = NF
### iterate over columns
- for (y=1; y<=max_nf; y++) {
+ for (y=1; y<=nf_max; y++) {
if ($y ~ number) {
### mean
@@ -42,7 +42,7 @@ NF != 0 {
(count[y] - 1) ? var[y] = sum_delta2[y]/(count[y] - 1) : var[y] = 0
# x = row, y = col
- for (x=1; x<=max_nf; x++) {
+ for (x=1; x<=nf_max; x++) {
count[x,y] += 1
sum_xy[x,y] += $x*$y
sum_delta_xy[x,y] += delta[x]*delta[y]
@@ -81,10 +81,10 @@ NF != 0 {
}
END {
- for (y=1; y<=max_nf; y++) {
- for (x=1; x<=max_nf; x++) {
+ for (y=1; y<=nf_max; y++) {
+ for (x=1; x<=nf_max; x++) {
if (x != y && r[x,y]) {
- printf("\n %g \t (%s) \t = (%g +/- %g)(%s) \t + (%g +/- %g)",
+ printf("\n %.9g \t (%s) \t = (%.9g +/- %.9g)(%s) \t + (%.9g +/- %.9g)",
10.0*log(r[x,y]*r[x,y])/log(10), header[y], b[x,y], b_err[x,y], header[x],
a[x,y], a_err[x,y])
}