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

root/gliderproc/trunk/gliderEcopuck_Generate_L1_Data.m

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

Add raw and reference counts to Ecopuck Level 1 processing.

Line 
1 %
2 %  gliderEcopuck_Generate_L1_Data.m
3 %
4 %  Purpose: Generate Level 1 data mat files for Ecopuck 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 Ecopuck data for ', strGliderName, ' Deployment ', strDeploymentNumber]);
58        
59         %*** READ IN EBD DATA ****
60         % declare arrays for accumulating data
61         chlor = [];
62         cdom = [];
63         scatter = [];
64         chlor_sig = [];
65         cdom_sig = [];
66         scatter_sig = [];
67         chlor_ref = [];
68         cdom_ref = [];
69         scatter_ref = [];
70         ptime_ebd = [];
71        
72         % different var names per glider
73         switch gliderIndex
74             case 1 % Pelagia
75                 chlor_name       = 'sci_bbfl2s_chlor_scaled';
76                 cdom_name        = 'sci_bbfl2s_cdom_scaled';
77                 scatter_name     = 'sci_bbfl2s_bb_scaled';
78                 chlor_sig_name   = 'sci_bbfl2s_chlor_sig';
79                 cdom_sig_name    = 'sci_bbfl2s_cdom_sig';
80                 scatter_sig_name = 'sci_bbfl2s_bb_sig';
81                 chlor_ref_name   = 'sci_bbfl2s_chlor_ref';
82                 cdom_ref_name    = 'sci_bbfl2s_cdom_ref';
83                 scatter_ref_name = 'sci_bbfl2s_bb_ref';
84             case 2 % Ramses
85                 chlor_name       = 'sci_flbbcd_chlor_units';
86                 cdom_name        = 'sci_flbbcd_cdom_units';
87                 scatter_name     = 'sci_flbbcd_bb_units';
88                 chlor_sig_name   = 'sci_flbbcd_chlor_sig';
89                 cdom_sig_name    = 'sci_flbbcd_cdom_sig';
90                 scatter_sig_name = 'sci_flbbcd_bb_sig';
91                 chlor_ref_name   = 'sci_flbbcd_chlor_ref';
92                 cdom_ref_name    = 'sci_flbbcd_cdom_ref';
93                 scatter_ref_name = 'sci_flbbcd_bb_ref';
94         end
95
96         % try to load all *.ebdasc files at once...
97         [files, Dstruct] = wilddir(datadir, '.ebdasc');
98         nfile = size(files, 1);
99
100         for i=1:nfile-1
101             % protect against empty ebd file
102             if(Dstruct(i).bytes>0)
103                 data = read_gliderasc2([datadir, files(i,:)]);
104
105                 % if the number of values (in data.data) is less than the number
106                 % of vars (in data.vars), this means that the data were not
107                 % completely read in. To correct this, pad data.data with NaNs
108                 % until its length equals that of data.vars...
109                 if (length(data.data) < length(data.vars))
110                     data.data = padarray(data.data, ...
111                         [0 length(data.vars)-length(data.data)], ...
112                         NaN, 'post');
113                 end
114
115                 % concatenate variables with data...
116                 if(~isempty(data.data))
117                     chlor = [chlor; ...
118                         data.data(:,strmatch(chlor_name,...
119                                              data.vars, 'exact'))];
120                     cdom = [cdom; ...
121                         data.data(:,strmatch(cdom_name,...
122                                              data.vars, 'exact'))];
123                     scatter = [scatter; ...
124                         data.data(:,strmatch(scatter_name,...
125                                              data.vars, 'exact'))];
126                     chlor_sig = [chlor_sig; ...
127                         data.data(:,strmatch(chlor_sig_name,...
128                                              data.vars, 'exact'))];
129                     cdom_sig = [cdom_sig; ...
130                         data.data(:,strmatch(cdom_sig_name,...
131                                              data.vars, 'exact'))];
132                     scatter_sig = [scatter_sig; ...
133                         data.data(:,strmatch(scatter_sig_name,...
134                                              data.vars, 'exact'))];
135                     chlor_ref = [chlor_ref; ...
136                         data.data(:,strmatch(chlor_ref_name,...
137                                              data.vars, 'exact'))];
138                     cdom_ref = [cdom_ref; ...
139                         data.data(:,strmatch(cdom_ref_name,...
140                                              data.vars, 'exact'))];
141                     scatter_ref = [scatter_ref; ...
142                         data.data(:,strmatch(scatter_ref_name,...
143                                              data.vars, 'exact'))];
144                     ptime_ebd = [ptime_ebd; ...
145                         data.data(:,strmatch('sci_m_present_time',...
146                                              data.vars, 'exact'))];
147                 end
148
149                 data = [];
150             end 
151         end
152         %*** END READ IN EBD DATA ****
153        
154         % remove nans from EBD data...
155         i = find(~isnan(chlor));
156         chlor = chlor(i);
157         cdom = cdom(i);
158         scatter = scatter(i);
159         chlor_sig = chlor_sig(i);
160         cdom_sig = cdom_sig(i);
161         scatter_sig = scatter_sig(i);
162         chlor_ref = chlor_ref(i);
163         cdom_ref = cdom_ref(i);
164         scatter_ref = scatter_ref(i);
165         ptime_ebd = ptime_ebd(i);
166        
167         % apply the sort() function to ptime_oxy
168         % to make sure it increases monotonically...
169         [Y,I] = sort(ptime_ebd);
170         ptime_ebd = Y;
171         chlor = chlor(I);
172         cdom = cdom(I);
173         scatter = scatter(I);
174         chlor_sig = chlor_sig(I);
175         cdom_sig = cdom_sig(I);
176         scatter_sig = scatter_sig(I);
177         chlor_ref = chlor_ref(I);
178         cdom_ref = cdom_ref(I);
179         scatter_ref = scatter_ref(I);
180
181         % convert ptime into datenum style...
182         ptime_ebd_datenum = (ptime_ebd/3600/24) + datenum(1970, 1, 1, 0, 0, 0);
183
184         % create configuration struct...
185         units = struct( ...
186             'chlor', '10e-6 g/l', ...
187             'cdom', 'ppb', ...
188             'scatter', '1/mm', ...
189             'chlor_sig', 'count', ...
190             'cdom_sig', 'count', ...
191             'scatter_sig', 'count', ...
192             'chlor_ref', 'count', ...
193             'cdom_ref', 'count', ...
194             'scatter_ref', 'count', ...
195             'ptime_ebd', 'seconds since 0000-01-01T00:00', ...
196             'ptime_ebd_datenum', 'days since 1970-01-01T00:00');
197        
198         variable_description = struct( ...
199             'chlor', 'chlorophyll', ...
200             'cdom', 'chromophoric dissolved organic matter', ...
201             'scatter', 'backscatter', ...
202             'chlor_sig', 'chlorophyll raw count', ...
203             'cdom_sig', 'chromophoric dissolved organic matter raw count', ...
204             'scatter_sig', 'backscatter raw count', ...
205             'chlor_ref', 'chlorophyll reference count', ...
206             'cdom_ref', 'chromophoric dissolved organic matter reference count', ...
207             'scatter_ref', 'backscatter reference count', ...
208             'ptime_ebd', 'science computer time', ...
209             'ptime_ebd_datenum', 'science computer date');
210
211         config = struct('glider_name', strGliderName,...
212                         'deployment_number', strDeploymentNumber,...
213                         'start_date', strStartDate,...
214                         'end_date', strEndDate,...
215                         'var_descriptions', variable_description,...
216                         'var_units', units);
217
218         % set Level 1 data mat file name...
219         strMatFileName = strcat(strGliderName, '_Deployment', strDeploymentNumber, '_ECO_L1.mat');
220
221         % save flight data to mat file...
222         save(strMatFileName,...
223              'config', ...
224              'chlor', ...
225              'cdom', ...
226              'scatter', ...
227              'chlor_sig', ...
228              'cdom_sig', ...
229              'scatter_sig', ...
230              'chlor_ref', ...
231              'cdom_ref', ...
232              'scatter_ref', ...
233              'ptime_ebd', ...
234              'ptime_ebd_datenum');
235
236     end
237 end
Note: See TracBrowser for help on using the browser.