0001 function data_st = ensemble_filter_by_metadata(data_st,params)
0002
0003
0004
0005
0006
0007
0008
0009 filt = params.filt;
0010
0011 inc_exc = fieldnames(filt);
0012
0013
0014 all_any = fieldnames(filt.(inc_exc{1}));
0015
0016 crit_fld = fieldnames(filt.(inc_exc{1}).(all_any{1}));
0017
0018
0019
0020 for ist = 1:length(data_st)
0021 idxCritFld = strmatch(crit_fld{1},data_st{ist}.vars,'exact');
0022 if(~isempty(idxCritFld))
0023 data_st = ensemble_filter(data_st,params);
0024 end
0025 end
0026
0027
0028
0029
0030
0031
0032 [tf,loc] = ismember(data_st{1}.vars,data_st{2}.vars);
0033
0034 for colIdx = 1:length(loc)
0035
0036 if(loc(colIdx) ~= 0)
0037
0038 fldIdx(1) = colIdx
0039 fldIdx(2) = loc(colIdx);
0040
0041 crit_vals = intersect(data_st{1}.data{fldIdx(1)},data_st{2}.data{fldIdx(2)});
0042
0043
0044
0045 for dataStIdx = 1:2
0046 if(~isempty(setdiff(data_st{dataStIdx}.data{fldIdx(dataStIdx)},crit_vals)))
0047
0048 critFiltParams.filt.include.all.(crit_fld{1}) = crit_vals;
0049
0050 data_st{dataStIdx} = ensemble_filter(data_st{dataStIdx},critFiltParams);
0051
0052 end
0053 end
0054 end
0055 end