plot_residual_profs.pl
author A.M. Thurnherr <athurnherr@yahoo.com>
Fri, 09 Sep 2022 12:36:19 -0400
changeset 61 20d9316fdeb8
parent 59 4118a8e880de
permissions -rw-r--r--
after local merge
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
45
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     1
#======================================================================
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     2
#                    P L O T _ R E S I D U A L _ P R O F S . P L 
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     3
#                    doc: Wed May 18 18:43:33 2016
58
7688bec6fe87 adapted to SBE files with badly formatted records
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 46
diff changeset
     4
#                    dlm: Sun Apr 11 06:52:26 2021
45
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     5
#                    (c) 2016 A.M. Thurnherr
58
7688bec6fe87 adapted to SBE files with badly formatted records
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 46
diff changeset
     6
#                    uE-Info: 62 52 NIL 0 0 72 2 2 4 NIL ofnI
45
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     7
#======================================================================
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     8
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     9
# HISTORY:
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    10
#   May 18, 2016: - created from [plot_mean_residuals.pl]
46
cc6c4309828a V1.3beta1
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 45
diff changeset
    11
#	May 24, 2016: - improved
58
7688bec6fe87 adapted to SBE files with badly formatted records
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 46
diff changeset
    12
#	Apr 11, 2021: - halved x-axis range
45
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    13
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    14
require "$ANTS/libGMT.pl";
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    15
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    16
sub plotDC($$)
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    17
{
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    18
	my($f,$minsamp) = @_;
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    19
	my($sum,$n);
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    20
	for (my($bi)=0; $bi<=$#{$DNCAST{$f}}; $bi++) {
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    21
		if (numberp($DNCAST{$f}[$bi]) && $DNCAST{N_SAMP}[$bi]>=$minsamp) {
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    22
			$sum += $DNCAST{$f}[$bi]**2; $n++;
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    23
			printf(GMT "%g %g\n",$DNCAST{$f}[$bi],($bi+0.5)*$opt_o);
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    24
		} else {
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    25
			print(GMT "nan nan\n");
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    26
		}
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    27
	}
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    28
	return $n ? sqrt($sum/$n) : nan;
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    29
}
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    30
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    31
sub plotUC($$)																		# from [plot_wprofs.pl]
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    32
{
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    33
	my($f,$minsamp) = @_;
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    34
	my($sum,$n);
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    35
	for (my($bi)=0; $bi<=$#{$UPCAST{$f}}; $bi++) {
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    36
		if (numberp($UPCAST{$f}[$bi]) && $UPCAST{N_SAMP}[$bi]>=$minsamp) {
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    37
			$sum += $UPCAST{$f}[$bi]**2; $n++;
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    38
			printf(GMT "%g %g\n",$UPCAST{$f}[$bi],($bi+0.5)*$opt_o);
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    39
		} else {
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    40
			print(GMT "nan nan\n");
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    41
		}
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    42
	}
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    43
	return $n ? sqrt($sum/$n) : nan;
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    44
}
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    45
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    46
sub plot_residual_profs($)
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    47
{
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    48
	my($pfn) = @_;
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    49
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    50
	my($yellow_light) = 0.004;
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    51
	my($red_light)	  = 0.01;
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    52
58
7688bec6fe87 adapted to SBE files with badly formatted records
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 46
diff changeset
    53
	my($xmin) = -0.01;
7688bec6fe87 adapted to SBE files with badly formatted records
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 46
diff changeset
    54
	my($xmax) =  0.01;
46
cc6c4309828a V1.3beta1
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 45
diff changeset
    55
	my($ymin) = round(antsParam('min_depth')-25,50);
cc6c4309828a V1.3beta1
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 45
diff changeset
    56
	my($ymax) = ($P{water_depth} > 0) ?
cc6c4309828a V1.3beta1
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 45
diff changeset
    57
				round($P{water_depth}+25,50) :
56
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 46
diff changeset
    58
				round($P{'depth.max'}+$P{ADCP_bin_length}+25,50);
45
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    59
	                                              
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    60
	my($R) = "-R$xmin/$xmax/$ymin/$ymax";
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    61
	my($depth_tics) = ($ymax < 1000 ) ? 'f10a100g100' : 'f100a500g500';
58
7688bec6fe87 adapted to SBE files with badly formatted records
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 46
diff changeset
    62
	GMT_begin($pfn,'-JX10/-10',$R,"-P -Bf0.001a0.005g0.005:'Residual Vertical Velocity [m/s]':/$depth_tics:'Depth [m]':WeSn");
45
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    63
46
cc6c4309828a V1.3beta1
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 45
diff changeset
    64
	GMT_psxy('-W2,CornflowerBlue');													# zero line
45
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    65
		printf(GMT "0 $ymin\n0 $ymax\n");
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    66
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    67
	GMT_psxy('-W1,coral,8_2:0'); my($r12DC) = plotDC('MEAN_RESIDUAL12',$opt_k);		# dc residual12 (pitch plane)
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    68
	GMT_psxy('-W1,coral,1_1:0'); my($r34DC) = plotDC('MEAN_RESIDUAL34',$opt_k);		# dc residual34 (roll plane)
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    69
	GMT_psxy('-W1,SeaGreen,8_2:0'); my($r12UC) = plotUC('MEAN_RESIDUAL12',$opt_k);	# uc residual12 (pitch plane)
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    70
	GMT_psxy('-W1,SeaGreen,1_1:0'); my($r34UC) = plotUC('MEAN_RESIDUAL34',$opt_k);	# uc residual34 (roll plane)
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    71
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    72
	GMT_unitcoords();																# LABELS
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    73
	GMT_pstext('-F+f9,Helvetica,orange+jTR -N -Gwhite');
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    74
        print(GMT "0.99 0.01 V$VERSION\n");
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    75
	GMT_pstext('-F+f14,Helvetica,blue+jBL -N');										# profile id
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    76
		print(GMT "0.0 -0.03 $P{out_basename} $P{run_label}\n");
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    77
46
cc6c4309828a V1.3beta1
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 45
diff changeset
    78
	GMT_pstext('-F+f12,Helvetica-Bold,black+jBL -Gwhite'); 							# rms residuals
56
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 46
diff changeset
    79
		print(GMT "0.1 0.89 beams <1,2>\n");
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 46
diff changeset
    80
	GMT_pstext('-F+f12,Helvetica-Bold,black+jBR -Gwhite');
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 46
diff changeset
    81
		print(GMT "0.99 0.89 beams <3,4>\n");
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 46
diff changeset
    82
	GMT_pstext('-F+f12,Helvetica,coral+jBL -Gwhite');								# rms residuals
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 46
diff changeset
    83
		print(GMT "0.01 0.93 dc\n");
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 46
diff changeset
    84
	GMT_pstext('-F+f12,Helvetica,SeaGreen+jBL -Gwhite');
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 46
diff changeset
    85
		print(GMT "0.01 0.98 uc\n");
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 46
diff changeset
    86
46
cc6c4309828a V1.3beta1
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 45
diff changeset
    87
	if ($r12DC >= $red_light) { 		GMT_pstext('-F+f12,Helvetica-Bold,coral+jBL -Gred'); }	
45
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    88
	elsif ($r12DC >= $yellow_light) { 	GMT_pstext('-F+f12,Helvetica-Bold,coral+jBL -Gyellow'); }
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    89
	else {								GMT_pstext('-F+f12,Helvetica-Bold,coral+jBL -Gwhite'); }
56
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 46
diff changeset
    90
		printf(GMT "0.1 0.935 %.1f mm/s rms\n",1000*$r12DC);
45
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    91
	if ($r12UC >= $red_light) { 		GMT_pstext('-F+f12,Helvetica-Bold,SeaGreen+jBL -Gred'); }
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    92
	elsif ($r12UC >= $yellow_light) { 	GMT_pstext('-F+f12,Helvetica-Bold,SeaGreen+jBL -Gyellow'); }
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    93
	else {								GMT_pstext('-F+f12,Helvetica-Bold,SeaGreen+jBL -Gwhite'); }
56
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 46
diff changeset
    94
		printf(GMT "0.1 0.98 %.1f mm/s rms\n",1000*$r12UC);
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 46
diff changeset
    95
45
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    96
	if ($r34DC >= $red_light) { 		GMT_pstext('-F+f12,Helvetica-Bold,coral+jBR -Gred'); }
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    97
	elsif ($r34DC >= $yellow_light) { 	GMT_pstext('-F+f12,Helvetica-Bold,coral+jBR -Gyellow'); }
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    98
	else {								GMT_pstext('-F+f12,Helvetica-Bold,coral+jBR -Gwhite'); }
46
cc6c4309828a V1.3beta1
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 45
diff changeset
    99
		printf(GMT "0.99 0.935 %.1f mm/s rms\n",1000*$r34DC);
45
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   100
	if ($r34UC >= $red_light) { 		GMT_pstext('-F+f12,Helvetica-Bold,SeaGreen+jBR -Gred'); }
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   101
	elsif ($r34UC >= $yellow_light) { 	GMT_pstext('-F+f12,Helvetica-Bold,SeaGreen+jBR -Gyellow'); }
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   102
	else {								GMT_pstext('-F+f12,Helvetica-Bold,SeaGreen+jBR -Gwhite'); }
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   103
		printf(GMT "0.99 0.98 %.1f mm/s rms\n",1000*$r34UC);
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   104
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   105
	GMT_end();
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   106
}
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   107
6d49c7420a6c stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   108
1; # return true on require