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 } |