plot_attitude_biases_w.pl
changeset 46 cc6c4309828a
parent 45 6d49c7420a6c
equal deleted inserted replaced
45:6d49c7420a6c 46:cc6c4309828a
     1 #======================================================================
     1 #======================================================================
     2 #                    P L O T _ A T T I T U D E _ B I A S E S _ W . P L 
     2 #                    P L O T _ A T T I T U D E _ B I A S E S _ W . P L 
     3 #                    doc: Sun May 15 16:08:59 2016
     3 #                    doc: Sun May 15 16:08:59 2016
     4 #                    dlm: Wed May 18 19:43:55 2016
     4 #                    dlm: Tue May 24 16:38:31 2016
     5 #                    (c) 2016 A.M. Thurnherr
     5 #                    (c) 2016 A.M. Thurnherr
     6 #                    uE-Info: 41 37 NIL 0 0 72 2 2 4 NIL ofnI
     6 #                    uE-Info: 15 31 NIL 0 0 72 2 2 4 NIL ofnI
     7 #======================================================================
     7 #======================================================================
     8 
     8 
     9 # HISTORY:
     9 # HISTORY:
    10 #	May 15, 2016: - created from [plot_mean_residuals.pl]
    10 #	May 15, 2016: - created from [plot_mean_residuals.pl]
    11 #	May 16, 2016: - continued
    11 #	May 16, 2016: - continued
    12 #	May 17, 2016: - renamed from [plot_attitude_biases.pl]
    12 #	May 17, 2016: - renamed from [plot_attitude_biases.pl]
    13 #   May 18, 2016: - added version
    13 #   May 18, 2016: - added version
    14 #				  - expunged $realLastGoodEns
    14 #				  - expunged $realLastGoodEns
       
    15 #	May 19, 2016: - added notes about wrong beam plane
       
    16 #   May 24, 2016: - calc_binDepths() -> binDepths()
       
    17 
       
    18 # IMPORTANT NOTE:
       
    19 #   - the variables prefixed with p/r refer to beam-pairs 1,2 and 3,4 respectively,
       
    20 #     i.e. the p variables correspond to the roll plane and the r variables
       
    21 #          correspond to the pitch plane
    15 
    22 
    16 require "$ANTS/libGMT.pl";
    23 require "$ANTS/libGMT.pl";
    17 
    24 
    18 sub plot_attitude_biases_w($)
    25 sub plot_attitude_biases_w($)
    19 {
    26 {
    38 	my(@pHistDC,@rHistDC,@pSumDC,@rSumDC,$pHistDC,$rHistDC,$pSumDC,$rSumDC);
    45 	my(@pHistDC,@rHistDC,@pSumDC,@rSumDC,$pHistDC,$rHistDC,$pSumDC,$rSumDC);
    39 	my(@pHistUC,@rHistUC,@pSumUC,@rSumUC,$pHistUC,$rHistUC,$pSumUC,$rSumUC);
    46 	my(@pHistUC,@rHistUC,@pSumUC,@rSumUC,$pHistUC,$rHistUC,$pSumUC,$rSumUC);
    40 	my(@pValsDC,@rValsDC,@pValsUC,@rValsUC,$mode);
    47 	my(@pValsDC,@rValsDC,@pValsUC,@rValsUC,$mode);
    41 	for (my($e)=$firstGoodEns; $e<=$lastGoodEns; $e++) {
    48 	for (my($e)=$firstGoodEns; $e<=$lastGoodEns; $e++) {
    42 		next unless numberp($LADCP{ENSEMBLE}[$e]->{CTD_DEPTH});
    49 		next unless numberp($LADCP{ENSEMBLE}[$e]->{CTD_DEPTH});
    43 		my(@bindepth) = calc_binDepths($e);
    50 		my(@bindepth) = binDepths($e);
    44 		for (my($bin)=$LADCP_firstBin-1; $bin<=$LADCP_lastBin-1; $bin++) {
    51 		for (my($bin)=$LADCP_firstBin-1; $bin<=$LADCP_lastBin-1; $bin++) {
    45 			next if ($bindepth[$bin] <= $excluded_surf_layer);
    52 			next if ($bindepth[$bin] <= $excluded_surf_layer);
    46 			next unless ($bin+1>=$outGrid_firstBin && $bin+1<=$outGrid_lastBin);
    53 			next unless ($bin+1>=$outGrid_firstBin && $bin+1<=$outGrid_lastBin);
    47 			next unless numberp($LADCP{ENSEMBLE}[$e]->{SSCORRECTED_OCEAN_W12}[$bin]) &&
    54 			next unless numberp($LADCP{ENSEMBLE}[$e]->{SSCORRECTED_OCEAN_W12}[$bin]) &&
    48 						numberp($LADCP{ENSEMBLE}[$e]->{SSCORRECTED_OCEAN_W34}[$bin]);
    55 						numberp($LADCP{ENSEMBLE}[$e]->{SSCORRECTED_OCEAN_W34}[$bin]);
    79 
    86 
    80 	# ZERO LINE
    87 	# ZERO LINE
    81 	GMT_psxy('-W4,CornflowerBlue');
    88 	GMT_psxy('-W4,CornflowerBlue');
    82 		print(GMT "$xmin 0\n$xmax 0\n");
    89 		print(GMT "$xmin 0\n$xmax 0\n");
    83 
    90 
    84 	# DC PITCH
    91 	# DC BEAMS 1,2
    85 	GMT_psxy('-Ey0.2/2,coral');
    92 	GMT_psxy('-Ey0.2/2,coral');
    86 		for (my($i)=0; $i<2*round($opt_t); $i++) {
    93 		for (my($i)=0; $i<2*round($opt_t); $i++) {										# error bars
    87 			next unless ($pHistDC[$i] >= $min_fat);
    94 			next unless ($pHistDC[$i] >= $min_fat);
    88 			my($minLim,$maxLim) = &bootstrap($btstrp_ndraw,0.95,\&avg,@{$pValsDC[$i]});	# 95% bootstrap conf limits
    95 			my($minLim,$maxLim) = &bootstrap($btstrp_ndraw,0.95,\&avg,@{$pValsDC[$i]});	# 95% bootstrap conf limits
    89 			printf(GMT "%f %f %f\n",$i-round($opt_t)-0.3,($maxLim+$minLim)/2,($maxLim-$minLim)/2);
    96 			printf(GMT "%f %f %f\n",$i-round($opt_t)-0.3,($maxLim+$minLim)/2,($maxLim-$minLim)/2);
    90 		}
    97 		}
    91 	GMT_psxy('-Ey0.2/1,coral');															# dc pitch
    98 	GMT_psxy('-Ey0.2/1,coral');
    92 		for (my($i)=0; $i<2*round($opt_t); $i++) {
    99 		for (my($i)=0; $i<2*round($opt_t); $i++) {
    93 			next unless ($pHistDC[$i]>=$min_thin && $pHistDC[$i]<$min_fat);
   100 			next unless ($pHistDC[$i]>=$min_thin && $pHistDC[$i]<$min_fat);
    94 			my($minLim,$maxLim) = &bootstrap($btstrp_ndraw,0.95,\&avg,@{$pValsDC[$i]});	# 95% bootstrap conf limits
   101 			my($minLim,$maxLim) = &bootstrap($btstrp_ndraw,0.95,\&avg,@{$pValsDC[$i]});	# 95% bootstrap conf limits
    95 			printf(GMT "%f %f %f\n",$i-round($opt_t)-0.3,($maxLim+$minLim)/2,($maxLim-$minLim)/2);
   102 			printf(GMT "%f %f %f\n",$i-round($opt_t)-0.3,($maxLim+$minLim)/2,($maxLim-$minLim)/2);
    96 		}
   103 		}
   113 					$i-round($opt_t)-0.3+0.5,$ymin+0.03*$pHistDC[$i]/$mode,
   120 					$i-round($opt_t)-0.3+0.5,$ymin+0.03*$pHistDC[$i]/$mode,
   114 					$i-round($opt_t)-0.3+0.5,$ymin,
   121 					$i-round($opt_t)-0.3+0.5,$ymin,
   115 					$i-round($opt_t)-0.3+0.5,$ymin+0.03*$pHistDC[$i]/$mode);
   122 					$i-round($opt_t)-0.3+0.5,$ymin+0.03*$pHistDC[$i]/$mode);
   116 		}
   123 		}
   117 
   124 
   118 	GMT_psxy('-Ey0.2/2,coral');															# dc roll
   125 	# DC BEAMS 3,4
       
   126 	GMT_psxy('-Ey0.2/2,coral');															
   119 		for (my($i)=0; $i<2*round($opt_t); $i++) {
   127 		for (my($i)=0; $i<2*round($opt_t); $i++) {
   120 			next unless ($rHistDC[$i] >= $min_fat);
   128 			next unless ($rHistDC[$i] >= $min_fat);
   121 			my($minLim,$maxLim) = &bootstrap($btstrp_ndraw,0.95,\&avg,@{$rValsDC[$i]});
   129 			my($minLim,$maxLim) = &bootstrap($btstrp_ndraw,0.95,\&avg,@{$rValsDC[$i]});
   122 			printf(GMT "%f %f %f\n",$i-round($opt_t)-0.1,($maxLim+$minLim)/2,($maxLim-$minLim)/2);
   130 			printf(GMT "%f %f %f\n",$i-round($opt_t)-0.1,($maxLim+$minLim)/2,($maxLim-$minLim)/2);
   123 		}
   131 		}
   146 					$i-round($opt_t)-0.1+0.5,$ymin+0.03*$rHistDC[$i]/$mode,
   154 					$i-round($opt_t)-0.1+0.5,$ymin+0.03*$rHistDC[$i]/$mode,
   147 					$i-round($opt_t)-0.1+0.5,$ymin,
   155 					$i-round($opt_t)-0.1+0.5,$ymin,
   148 					$i-round($opt_t)-0.1+0.5,$ymin+0.03*$rHistDC[$i]/$mode);
   156 					$i-round($opt_t)-0.1+0.5,$ymin+0.03*$rHistDC[$i]/$mode);
   149 		}
   157 		}
   150 
   158 
   151 	GMT_psxy('-Ey0.2/2,SeaGreen');													# uc pitch
   159 	# UC BEAMS 1,2
       
   160 	GMT_psxy('-Ey0.2/2,SeaGreen');													
   152 		for (my($i)=0; $i<2*round($opt_t); $i++) {
   161 		for (my($i)=0; $i<2*round($opt_t); $i++) {
   153 			next unless ($pHistUC[$i] >= $min_fat);
   162 			next unless ($pHistUC[$i] >= $min_fat);
   154 			my($minLim,$maxLim) = &bootstrap($btstrp_ndraw,0.95,\&avg,@{$pValsUC[$i]});
   163 			my($minLim,$maxLim) = &bootstrap($btstrp_ndraw,0.95,\&avg,@{$pValsUC[$i]});
   155 			printf(GMT "%f %f %f\n",$i-round($opt_t)+0.1,($maxLim+$minLim)/2,($maxLim-$minLim)/2);
   164 			printf(GMT "%f %f %f\n",$i-round($opt_t)+0.1,($maxLim+$minLim)/2,($maxLim-$minLim)/2);
   156 		}
   165 		}
   179 					$i-round($opt_t)+0.1+0.5,$ymin+0.03*$pHistUC[$i]/$mode,
   188 					$i-round($opt_t)+0.1+0.5,$ymin+0.03*$pHistUC[$i]/$mode,
   180 					$i-round($opt_t)+0.1+0.5,$ymin,
   189 					$i-round($opt_t)+0.1+0.5,$ymin,
   181 					$i-round($opt_t)+0.1+0.5,$ymin+0.03*$pHistUC[$i]/$mode);
   190 					$i-round($opt_t)+0.1+0.5,$ymin+0.03*$pHistUC[$i]/$mode);
   182 		}
   191 		}
   183 
   192 
   184 	GMT_psxy('-Ey0.2/2,SeaGreen');													# uc roll
   193 	# UC BEAMS 3,4
       
   194 	GMT_psxy('-Ey0.2/2,SeaGreen');													
   185 		for (my($i)=0; $i<2*round($opt_t); $i++) {
   195 		for (my($i)=0; $i<2*round($opt_t); $i++) {
   186 			next unless ($rHistUC[$i] >= $min_fat);
   196 			next unless ($rHistUC[$i] >= $min_fat);
   187 			my($minLim,$maxLim) = &bootstrap($btstrp_ndraw,0.95,\&avg,@{$rValsUC[$i]});
   197 			my($minLim,$maxLim) = &bootstrap($btstrp_ndraw,0.95,\&avg,@{$rValsUC[$i]});
   188 			printf(GMT "%f %f %f\n",$i-round($opt_t)+0.3,($maxLim+$minLim)/2,($maxLim-$minLim)/2);
   198 			printf(GMT "%f %f %f\n",$i-round($opt_t)+0.3,($maxLim+$minLim)/2,($maxLim-$minLim)/2);
   189 		}
   199 		}