NCCOOS Trac Projects: Top | Web | Platforms | Processing | Viz | Sprints | Sandbox | (Wind)

root/gliderproc/trunk/gliderCurrents_Generate_L1_Data.m

Revision 517 (checked in by cbc, 10 years ago)

Add Level 1 extraction for currents.

Line 
1 %
2 %  gliderCurrents_Generate_L1_Data.m
3 %
4 %  Purpose: Generate Level 1 data mat files for vx/vy data.
5 %
6 %  Requires:
7 %  MATLAB folder - contains util
8 %
9 %  Authors:  Chris Calloway
10 %            Marine Sciences Department
11 %            UNC-Chapel Hill
12 %
13 %  Created: January 2014
14 %
15 %//////////////////////////////////////////////////////////////////////////
16
17 clear all;
18
19 % add paths for required files...
20 addpath('MATLAB/util/');
21
22 % populate arrays for the deployment start and end dates...
23 % ex. strStart(2, 3) is start date for Ramses, Deployment 3
24 strStart = {'26-Jan-2012', '16-Feb-2012', '16-Mar-2012'; ...
25             '26-Jan-2012', '16-Feb-2012', '16-Mar-2012'};
26 strEnd   = {'14-Feb-2012', '08-Mar-2012', '04-Apr-2012'; ...
27             '14-Feb-2012', '12-Mar-2012', '03-Apr-2012'};
28
29 % SET THE GLIDER INDEX (Pelagia = 1, Ramses = 2) ...
30 for gliderIndex=1:2
31    
32     % SET THE DEPLOYMENT NUMBER (1, 2 or 3) ...
33     for deploymentNumber=1:3
34        
35         clearvars -except gliderIndex deploymentNumber strStart strEnd;
36
37         % glider name string...
38         if (gliderIndex==1)
39             strGliderName = 'Pelagia';
40         else
41             strGliderName = 'Ramses';
42         end
43
44         % deployment number string...
45         strDeploymentNumber = num2str(deploymentNumber);
46
47         % deployment start date string...
48         strStartDate = strStart(gliderIndex, deploymentNumber);
49
50         % deployment end date string...
51         strEndDate = strEnd(gliderIndex, deploymentNumber);
52
53         % define the path to the glider ascii files...
54         datadir = strcat('GLIDER_DATA_LEVEL0/', strGliderName, ...
55                          '_Deployment', strDeploymentNumber, '/');
56
57         disp(['Processing Currents data for ', strGliderName, ' Deployment ', strDeploymentNumber]);
58        
59         %*** READ IN DBD DATA ****
60         % declare arrays for accumulating data
61         final_vx = [];
62         initial_vx = [];
63         delta_vx = [];
64         vx = [];
65         prior_seg_vx = [];
66         final_vy = [];
67         initial_vy = [];
68         delta_vy = [];
69         vy = [];
70         prior_seg_vy = [];
71         ptime_dbd = [];
72         ptime_ebd = [];
73        
74         % try to load all *.dbdasc files at once...
75         [files, Dstruct] = wilddir(datadir, '.dbdasc');
76         nfile = size(files, 1);
77
78         for i=1:nfile-1
79             % protect against empty dbd file
80             if(Dstruct(i).bytes>0)
81                 data = read_gliderasc2([datadir, files(i,:)]);
82
83                 % if the number of values (in data.data) is less than the number
84                 % of vars (in data.vars), this means that the data were not
85                 % completely read in. To correct this, pad data.data with NaNs
86                 % until its length equals that of data.vars...
87                 if (length(data.data) < length(data.vars))
88                     data.data = padarray(data.data, ...
89                         [0 length(data.vars)-length(data.data)], ...
90                         NaN, 'post');
91                 end
92
93                 % concatenate variables with data...
94                 if(~isempty(data.data))
95                     final_vx = [final_vx; ...
96                         data.data(:,strmatch('m_final_water_vx',...
97                                              data.vars, 'exact'))];
98                     initial_vx = [initial_vx; ...
99                         data.data(:,strmatch('m_initial_water_vx',...
100                                              data.vars, 'exact'))];
101                     delta_vx = [delta_vx; ...
102                         data.data(:,strmatch('m_water_delta_vx',...
103                                              data.vars, 'exact'))];
104                     vx = [vx; ...
105                         data.data(:,strmatch('m_water_vx',...
106                                              data.vars, 'exact'))];
107                     prior_seg_vx = [prior_seg_vx; ...
108                         data.data(:,strmatch('x_prior_seg_water_vx',...
109                                              data.vars, 'exact'))];
110                     final_vy = [final_vy; ...
111                         data.data(:,strmatch('m_final_water_vy',...
112                                              data.vars, 'exact'))];
113                     initial_vy = [initial_vy; ...
114                         data.data(:,strmatch('m_initial_water_vy',...
115                                              data.vars, 'exact'))];
116                     delta_vy = [delta_vy; ...
117                         data.data(:,strmatch('m_water_delta_vy',...
118                                              data.vars, 'exact'))];
119                     vy = [vy; ...
120                         data.data(:,strmatch('m_water_vy',...
121                                              data.vars, 'exact'))];
122                     prior_seg_vy = [prior_seg_vy; ...
123                         data.data(:,strmatch('x_prior_seg_water_vy',...
124                                              data.vars, 'exact'))];
125                     ptime_dbd = [ptime_dbd; ...
126                         data.data(:,strmatch('m_present_time',...
127                                              data.vars, 'exact'))];
128                     ptime_ebd = [ptime_ebd; ...
129                         data.data(:,strmatch('sci_m_present_time',...
130                                              data.vars, 'exact'))];
131                 end
132
133                 data = [];
134             end 
135         end
136         %*** END READ IN DBD DATA ****
137        
138         % remove nans from DBD data...
139         i = find(~isnan(vx));
140         vx = vx(i);
141         final_vx = final_vx(i);
142         initial_vx = initial_vx(i);
143         delta_vx = delta_vx(i);
144         prior_seg_vx = prior_seg_vx(i);
145         vy = vy(i);
146         final_vy = final_vy(i);
147         initial_vy = initial_vy(i);
148         delta_vy = delta_vy(i);
149         prior_seg_vy = prior_seg_vy(i);
150         ptime_dbd = ptime_dbd(i);
151         ptime_ebd = ptime_ebd(i);
152        
153         % apply the sort() function to ptime_dbd
154         % to make sure it increases monotonically...
155         [Y,I] = sort(ptime_dbd);
156         ptime_dbd = Y;
157         vx = vx(I);
158         final_vx = final_vx(I);
159         initial_vx = initial_vx(I);
160         delta_vx = delta_vx(I);
161         prior_seg_vx = prior_seg_vx(I);
162         vy = vy(I);
163         final_vy = final_vy(I);
164         initial_vy = initial_vy(I);
165         delta_vy = delta_vy(I);
166         prior_seg_vy = prior_seg_vy(I);
167         ptime_ebd = ptime_ebd(I);
168
169         % convert ptime into datenum style...
170         ptime_dbd_datenum = (ptime_dbd/3600/24) + datenum(1970, 1, 1, 0, 0, 0);
171         ptime_ebd_datenum = (ptime_ebd/3600/24) + datenum(1970, 1, 1, 0, 0, 0);
172
173         % create configuration struct...
174         units = struct( ...
175             'vx', 'm/s', ...
176             'final_vx', 'm/s', ...
177             'initial_vx', 'm/s', ...
178             'delta_vx', 'm/s', ...
179             'prior_seg_vx', 'm/s', ...
180             'vy', 'm/s', ...
181             'final_vy', 'm/s', ...
182             'initial_vy', 'm/s', ...
183             'delta_vy', 'm/s', ...
184             'prior_seg_vy', 'm/s', ...
185             'ptime_dbd', 'seconds since 0000-01-01T00:00', ...
186             'ptime_dbd_datenum', 'days since 1970-01-01T00:00', ...
187             'ptime_ebd', 'seconds since 0000-01-01T00:00', ...
188             'ptime_ebd_datenum', 'days since 1970-01-01T00:00');
189        
190         variable_description = struct( ...
191             'vx', 'Eastward water velocity', ...
192             'final_vx', 'Final eastward water velocity', ...
193             'initial_vx', 'Initial eastward water velocity', ...
194             'delta_vx', 'Change in eastward water velocity', ...
195             'prior_seg_vx', 'Eastward water velocity of prior segment', ...
196             'vy', 'Northward water velocity', ...
197             'final_vy', 'Final northward water velocity', ...
198             'initial_vy', 'Initial northward water velocity', ...
199             'delta_vy', 'Change in northward water velocity', ...
200             'prior_seg_vy', 'Northward water velocity of prior segment', ...
201             'ptime_dbd', 'flight computer time', ...
202             'ptime_dbd_datenum', 'flight computer date', ...
203             'ptime_ebd', 'science computer time', ...
204             'ptime_ebd_datenum', 'science computer date');
205
206         config = struct('glider_name', strGliderName,...
207                         'deployment_number', strDeploymentNumber,...
208                         'start_date', strStartDate,...
209                         'end_date', strEndDate,...
210                         'var_descriptions', variable_description,...
211                         'var_units', units);
212
213         % set Level 1 data mat file name...
214         strMatFileName = strcat(strGliderName, '_Deployment', strDeploymentNumber, '_Currents_L1.mat');
215
216         % save flight data to mat file...
217         save(strMatFileName,...
218              'config', ...
219              'vx', ...
220              'final_vx', ...
221              'initial_vx', ...
222              'delta_vx', ...
223              'prior_seg_vx', ...
224              'vy', ...
225              'final_vy', ...
226              'initial_vy', ...
227              'delta_vy', ...
228              'prior_seg_vy', ...
229              'ptime_dbd', ...
230              'ptime_dbd_datenum', ...
231              'ptime_ebd', ...
232              'ptime_ebd_datenum');
233
234     end
235 end
Note: See TracBrowser for help on using the browser.