1 |
gforget |
1.1 |
function [MITprof]=MITprof_stats_load(dirData,listData,varCur,varargin); |
2 |
|
|
%[MITprof]=MITprof_stats_load(dirData,listData,varCur,varargin); |
3 |
gforget |
1.4 |
%object: loads a series of MITprof files, and computes |
4 |
|
|
% normalized misfits for one variable |
5 |
|
|
%input: dirData is the data directory name |
6 |
|
|
% listData is the data file list (e.g. {'argo_in*'} or {'argo_in*','argo_at*'} ) |
7 |
|
|
% varCur is 'T' or 'S' |
8 |
|
|
% normFactor (optional) is the normalization factor (1./prof_?weight by default) |
9 |
|
|
%output: MITprof.prof is the normalized misfit |
10 |
|
|
%note: by assumption, all of the files in listData must share the same vertical grid |
11 |
gforget |
1.1 |
|
12 |
|
|
if nargin>3; normFactor=varargin{1}; else; normFactor=[]; end; |
13 |
|
|
|
14 |
gforget |
1.2 |
useExtendedProfDepth=1; |
15 |
|
|
|
16 |
gforget |
1.5 |
%develop listData (that may include wildcards) |
17 |
|
|
listData_bak=listData; |
18 |
|
|
listData={}; |
19 |
|
|
for ii=1:length(listData_bak); |
20 |
|
|
tmp1=dir([dirData listData_bak{ii}]); |
21 |
|
|
for jj=1:length(tmp1); |
22 |
|
|
ii2=length(listData)+1; |
23 |
|
|
listData{ii2}=tmp1(jj).name; |
24 |
|
|
end; |
25 |
|
|
end; |
26 |
|
|
%avoid duplicates |
27 |
|
|
listData=unique(listData); |
28 |
|
|
|
29 |
|
|
%loop over files |
30 |
gforget |
1.1 |
for iFile=1:length(listData); |
31 |
|
|
fileData=dir([dirData listData{iFile}]); |
32 |
gforget |
1.5 |
fileData=fileData.name; |
33 |
|
|
fprintf(['loading ' varCur ' from ' fileData '\n']); |
34 |
gforget |
1.1 |
MITprofCur=MITprof_load([dirData fileData]); |
35 |
|
|
|
36 |
|
|
% fixes: |
37 |
|
|
if ~isfield(MITprofCur,'prof_S'); |
38 |
|
|
tmp1=NaN*MITprofCur.prof_T; |
39 |
|
|
MITprofCur.prof_S=tmp1; MITprofCur.prof_Sestim=tmp1; |
40 |
|
|
MITprofCur.prof_Sweight=tmp1; MITprofCur.prof_Sflag=[]; |
41 |
|
|
end; |
42 |
|
|
% fixes |
43 |
|
|
|
44 |
|
|
if ~isempty(normFactor);%replace weights with normFactor |
45 |
|
|
eval(['tmp1=MITprofCur.prof_' varCur 'weight;']); |
46 |
|
|
tmp1(tmp1>0)=normFactor; |
47 |
|
|
eval(['MITprofCur.prof_' varCur 'weight=tmp1;']); |
48 |
|
|
end; |
49 |
|
|
|
50 |
|
|
if varCur=='T'; |
51 |
|
|
tmp1=(MITprofCur.prof_Testim-MITprofCur.prof_T).*sqrt(MITprofCur.prof_Tweight); |
52 |
|
|
tmp1(tmp1==0)=NaN; MITprofCur.prof=tmp1; |
53 |
|
|
else; |
54 |
|
|
tmp1=(MITprofCur.prof_Sestim-MITprofCur.prof_S).*sqrt(MITprofCur.prof_Sweight); |
55 |
|
|
tmp1(tmp1==0)=NaN; MITprofCur.prof=tmp1; |
56 |
gforget |
1.2 |
end; |
57 |
gforget |
1.3 |
|
58 |
gforget |
1.4 |
listRm={'prof_T','prof_Testim','prof_Tweight','prof_Tflag','prof_Terr',... |
59 |
|
|
'prof_S','prof_Sestim','prof_Sweight','prof_Sflag','prof_Serr',... |
60 |
|
|
'prof_T_SOSE59','prof_S_SOSE59','prof_madt_aviso'}; |
61 |
gforget |
1.2 |
for iRm=1:length(listRm); |
62 |
gforget |
1.3 |
if isfield(MITprofCur,listRm{iRm}); MITprofCur=rmfield(MITprofCur,listRm{iRm}); end; |
63 |
gforget |
1.1 |
end; |
64 |
|
|
|
65 |
|
|
MITprofCur.prof_date=datenum(num2str(MITprofCur.prof_YYYYMMDD*1e6+MITprofCur.prof_HHMMSS),'yyyymmddHHMMSS'); |
66 |
gforget |
1.3 |
%old: ii=find(MITprofCur.prof_date<datenum(1992,1,1)|MITprofCur.prof_date>datenum(2008,12,27)); MITprofCur.prof(ii,:)=NaN; |
67 |
gforget |
1.1 |
|
68 |
gforget |
1.2 |
if useExtendedProfDepth; |
69 |
gforget |
1.3 |
%use extended standard depth vector |
70 |
gforget |
1.2 |
all_depth=[ 0 5 10 15 20 25 30 35 45 50 55 65 75 85 95 100 ... |
71 |
gforget |
1.3 |
105 115 125 135 145 150 155 165 175 185 200 220 240 250 260 280 ... |
72 |
|
|
300 320 340 360 380 400 420 440 460 480 500 550 600 650 700 750 ... |
73 |
|
|
800 850 900 950 1000 1100 1200 1300 1400 1500 1600 1700 1750 1800 1900 2000 2100 ... |
74 |
|
|
2200 2300 2400 2500 2600 2700 2800 2900 3000 3100 3200 3300 3400 3500 3600 3700 ... |
75 |
|
|
3800 3900 4000 4100 4200 4300 4400 4500 4600 4700 4800 4900 5000 5100 5200 5300 ... |
76 |
|
|
5400 5500 5600 5700 5800 5900 6000 6500 7000 7500 8000 8500 9000]; |
77 |
gforget |
1.2 |
k_depth=NaN*zeros(1,MITprofCur.nr); |
78 |
|
|
for kk=1:MITprofCur.nr; k_depth(kk)=find(MITprofCur.prof_depth(kk)==all_depth); end; |
79 |
|
|
all_prof=NaN*ones(MITprofCur.np,length(all_depth)); |
80 |
gforget |
1.3 |
all_prof(:,k_depth)=MITprofCur.prof; |
81 |
|
|
MITprofCur.prof=all_prof; |
82 |
gforget |
1.2 |
MITprofCur.nr=length(all_depth); |
83 |
|
|
MITprofCur.prof_depth=all_depth; |
84 |
gforget |
1.1 |
end; |
85 |
|
|
|
86 |
|
|
if iFile==1; |
87 |
|
|
MITprof=MITprofCur; |
88 |
|
|
else; |
89 |
|
|
MITprof=MITprof_concat(MITprof,MITprofCur); |
90 |
|
|
end; |
91 |
|
|
clear MITprofCur; |
92 |
|
|
end; |
93 |
|
|
|
94 |
|
|
|