/[MITgcm]/MITgcm_contrib/gael/profilesMatlabProcessing/profiles_stats/MITprof_stats_load.m
ViewVC logotype

Annotation of /MITgcm_contrib/gael/profilesMatlabProcessing/profiles_stats/MITprof_stats_load.m

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.10 - (hide annotations) (download)
Fri Mar 17 18:06:59 2017 UTC (8 years, 4 months ago) by gforget
Branch: MAIN
CVS Tags: checkpoint66f, checkpoint66e, checkpoint66o, HEAD
Changes since 1.9: +5 -1 lines
- MITprof_wrapper.m (new): wrapper routine to call applies encoded operation to MITprof variables
- MITprof_stats_load.m: improve print statement

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 gforget 1.7 %optional :
9     % EITHER normFactor (optional; double) is the normalization factor (1./prof_?weight by default)
10     % OR varSpec (optional; char) is e.g. 'prof_T' or 'prof_Testim'
11 gforget 1.8 % OR varSpec,true to remask varSpec according to e.g. prof_T & prof_Testim & prof_Tweight
12 gforget 1.4 %output: MITprof.prof is the normalized misfit
13     %note: by assumption, all of the files in listData must share the same vertical grid
14 gforget 1.1
15 gforget 1.8 normFactor=[]; varSpec=''; doRemask=false;
16     if nargin>3;
17     if isnumeric(varargin{1}); normFactor=varargin{1}; end;
18     if ischar(varargin{1}); varSpec=varargin{1}; end;
19     end;
20     if nargin>4;
21     if islogical(varargin{2}); doRemask=varargin{2}; end;
22 gforget 1.6 end;
23 gforget 1.1
24 gforget 1.8 useExtendedProfDepth=0;
25 gforget 1.2
26 gforget 1.5 %develop listData (that may include wildcards)
27     listData_bak=listData;
28     listData={};
29     for ii=1:length(listData_bak);
30     tmp1=dir([dirData listData_bak{ii}]);
31     for jj=1:length(tmp1);
32 gforget 1.8 ii2=length(listData)+1;
33     listData{ii2}=tmp1(jj).name;
34 gforget 1.5 end;
35     end;
36     %avoid duplicates
37 gforget 1.8 listData=unique(listData);
38 gforget 1.5
39     %loop over files
40 gforget 1.1 for iFile=1:length(listData);
41     fileData=dir([dirData listData{iFile}]);
42 gforget 1.5 fileData=fileData.name;
43 gforget 1.10 if ~isempty(varSpec);
44     fprintf([' loading ' varSpec ' from ' fileData '...\n']);
45     else;
46     fprintf([' loading ' varCur ' from ' fileData '...\n']);
47     end;
48 gforget 1.1 MITprofCur=MITprof_load([dirData fileData]);
49 gforget 1.9
50     if isfield(MITprofCur,'prof_TeccoV4R2')&~isfield(MITprofCur,'prof_Testim');
51     MITprofCur.prof_Testim=MITprofCur.prof_TeccoV4R2;
52     end;
53     if isfield(MITprofCur,'prof_SeccoV4R2')&~isfield(MITprofCur,'prof_Sestim');
54     MITprofCur.prof_Sestim=MITprofCur.prof_SeccoV4R2;
55     end;
56 gforget 1.1
57 gforget 1.8 %fixes:
58     if ~isfield(MITprofCur,['prof_' varCur]);
59     tmp1=NaN*ones(MITprofCur.np,MITprofCur.nr);
60     eval(['MITprofCur.prof_' varCur '=tmp1;']);
61     eval(['MITprofCur.prof_' varCur 'estim=tmp1;']);
62     eval(['MITprofCur.prof_' varCur 'weight=tmp1;']);
63     eval(['MITprofCur.prof_' varCur 'flag=[];']);
64 gforget 1.1 end;
65 gforget 1.8
66 gforget 1.7 if ~isfield(MITprofCur,['prof_' varCur 'weight']);
67     eval(['MITprofCur.prof_' varCur 'weight=1+0*MITprofCur.prof_' varCur ';']);
68     end;
69 gforget 1.1
70 gforget 1.8 %replace weights with normFactor:
71     if ~isempty(normFactor);
72 gforget 1.1 eval(['tmp1=MITprofCur.prof_' varCur 'weight;']);
73     tmp1(tmp1>0)=normFactor;
74     eval(['MITprofCur.prof_' varCur 'weight=tmp1;']);
75     end;
76    
77 gforget 1.8 %map variable of interest to MITprofCur.prof:
78     if isempty(varSpec);
79     eval(['tmp1=(MITprofCur.prof_' varCur 'estim-MITprofCur.prof_' varCur ')' ...
80     '.*sqrt(MITprofCur.prof_' varCur 'weight);']);
81     tmp1(tmp1==0)=NaN;
82 gforget 1.1 else;
83 gforget 1.8 eval(['tmp1=MITprofCur.' varSpec ';']);
84     if doRemask;
85     eval(['tmp1(isnan(MITprofCur.prof_' varCur '))=NaN;']);
86     eval(['tmp1(isnan(MITprofCur.prof_' varCur 'estim))=NaN;']);
87     eval(['tmp1(isnan(MITprofCur.prof_' varCur 'weight))=NaN;']);
88     eval(['tmp1(MITprofCur.prof_' varCur 'weight==0)=NaN;']);
89     end;
90 gforget 1.6 end;
91 gforget 1.8 %
92 gforget 1.6 MITprofCur.prof=tmp1;
93 gforget 1.3
94 gforget 1.8 %remove bad profiles:
95     if isfield(MITprofCur,'prof_flag');
96     tmp1=MITprofCur.prof_flag; tmp1=isnan(tmp1);
97     MITprofCur.prof_flag(tmp1)=0;
98     MITprofCur=MITprof_subset(MITprofCur,'flag',0);
99     MITprofCur=rmfield(MITprofCur,'prof_flag');
100     end;
101    
102     %remove un-needed variables:
103     listKeep={'prof_YYYYMMDD','prof_HHMMSS','prof_lon','prof_lat',...
104     'prof_depth','prof_date','prof_basin','prof_point','prof_descr',...
105     'list_descr','nd','np','nr','prof'};
106     listField=fieldnames(MITprofCur);
107     for iField=1:length(listField);
108     if sum(strcmp(listKeep,listField{iField}))==0;
109     MITprofCur=rmfield(MITprofCur,listField{iField});
110     end;
111 gforget 1.1 end;
112    
113 gforget 1.8 %bug in 2013b? the following return wrong dates when SS='60'
114     %MITprofCur.prof_date=datenum(num2str(MITprofCur.prof_YYYYMMDD*1e6+MITprofCur.prof_HHMMSS),'yyyymmddHHMMSS');
115 gforget 1.3 %old: ii=find(MITprofCur.prof_date<datenum(1992,1,1)|MITprofCur.prof_date>datenum(2008,12,27)); MITprofCur.prof(ii,:)=NaN;
116 gforget 1.1
117 gforget 1.8 %extend prof_depth if needed:
118     if iFile>1;
119     prof_depth=union(MITprof.prof_depth,MITprofCur.prof_depth,'rows');
120     for kk=1:2;
121     if kk==1; tmpProf=MITprof; else; tmpProf=MITprofCur; end;
122     if length(prof_depth)>length(tmpProf.prof_depth);
123     tmp1=tmpProf.prof;
124     tmp2=NaN*zeros(tmpProf.np,length(prof_depth));
125     ii=NaN*length(tmpProf.prof_depth);
126     for jj=1:length(tmpProf.prof_depth);
127     ii(jj)=find(prof_depth==tmpProf.prof_depth(jj));
128     end;
129     tmp2(:,ii)=tmpProf.prof;
130     tmpProf.prof=tmp2;
131     tmpProf.nr=length(prof_depth);
132     tmpProf.prof_depth=prof_depth;
133     end;
134     if kk==1; MITprof=tmpProf; else; MITprofCur=tmpProf; end;
135     end;
136 gforget 1.1 end;
137 gforget 1.8
138 gforget 1.1 if iFile==1;
139     MITprof=MITprofCur;
140     else;
141     MITprof=MITprof_concat(MITprof,MITprofCur);
142     end;
143     clear MITprofCur;
144     end;
145    
146    

  ViewVC Help
Powered by ViewVC 1.1.22