diff options
| author | wukong <wukong@longaeva> | 2018-06-16 21:06:25 -0700 |
|---|---|---|
| committer | wukong <wukong@longaeva> | 2018-06-16 21:06:25 -0700 |
| commit | 39d1486694b3baac5bfafe11f73e179530d6c109 (patch) | |
| tree | 5d44a81df33a27af133e0c3a47f414e305e9d97d | |
| parent | ce5e0a8f088e19e8ebe9a27d8efd4207363791af (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.awk | 32 | ||||
| -rw-r--r-- | diff1.awk | 44 | ||||
| -rw-r--r-- | lin_reg.awk | 18 | ||||
| -rwxr-xr-x[-rw-r--r--] | lin_reg1.awk | 18 | ||||
| -rw-r--r-- | lin_reg2.awk | 20 |
5 files changed, 75 insertions, 57 deletions
@@ -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) } @@ -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]) } |
