Changeset 12842


Ignore:
Timestamp:
07/31/12 14:41:46 (13 years ago)
Author:
jschierm
Message:

Preliminary python version of checkfield.

Location:
issm/trunk-jpl/src/m
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/m/model/MatlabFuncs.py

    r12675 r12842  
    1 def strcmp(str1,str2):
     1def strcmp(s1,s2):
    22
    3         if str1 == str2:
     3        if s1 == s2:
    44                return True
    55        else:
    66                return False
    77
    8 def strncmp(str1,str2,n):
     8def strncmp(s1,s2,n):
    99
    10         if str1[0:n] == str2[0:n]:
     10        if s1[0:n] == s2[0:n]:
    1111                return True
    1212        else:
    1313                return False
    1414
    15 def strcmpi(str1,str2):
     15def strcmpi(s1,s2):
    1616
    17         if str1.lower() == str2.lower():
     17        if s1.lower() == s2.lower():
    1818                return True
    1919        else:
    2020                return False
    2121
    22 def strncmpi(str1,str2,n):
     22def strncmpi(s1,s2,n):
    2323
    24         if str1.lower()[0:n] == str2.lower()[0:n]:
     24        if s1.lower()[0:n] == s2.lower()[0:n]:
    2525                return True
    2626        else:
    2727                return False
    2828
     29def ismember(a,s):
     30        import numpy
     31
     32        if not isinstance(s,(tuple,list,dict,numpy.ndarray)):
     33                s=[s]
     34
     35        if not isinstance(a,(tuple,list,dict,numpy.ndarray)):
     36                a=[a]
     37
     38        if not isinstance(a,numpy.ndarray):
     39                b=[item in s for item in a]
     40
     41        else:
     42                b=numpy.empty_like(a)
     43                for i,item in enumerate(a.flat):
     44                        b.flat[i]=item in s
     45
     46        return b
     47
  • issm/trunk-jpl/src/m/utils/consistency/checkfield.m

    r12674 r12842  
    5454                end
    5555        else
    56                 if ((size(field)~=fieldsize(1)) |  (size(field,2)~=fieldsize(2)))
     56                if ((size(field,1)~=fieldsize(1)) |  (size(field,2)~=fieldsize(2)))
    5757                        md = checkmessage(md,getfieldvalue(options,'message',...
    5858                                ['field ''' fieldname ''' size should be ' num2str(fieldsize(1)) ' x ' num2str(fieldsize(2))]));
     
    8787end
    8888
    89 %check NaN
     89%check cell
    9090if getfieldvalue(options,'cell',0);
    9191        if ~iscell(field),
     
    9999        fieldvalues=getfieldvalue(options,'values');
    100100        if iscell(fieldvalues), %strings
    101         if ischar(field) | iscell(fieldvalues),
    102                 if any(~ismember(field,fieldvalues)),
    103                         if length(fieldvalues)==1
    104                                 md = checkmessage(md,getfieldvalue(options,'message',...
    105                                         ['field ''' fieldname ''' value should be ' fieldvalues{1} ]));
    106                         elseif length(fieldvalues)==2
    107                                 md = checkmessage(md,getfieldvalue(options,'message',...
    108                                         ['field ''' fieldname ''' values should be ' fieldvalues{1} ' or ' fieldvalues{2} ]));
    109                         else
    110                                 md = checkmessage(md,getfieldvalue(options,'message',...
    111                                         ['field ''' fieldname ''' should have values in ' sprintf('''%s'', ',fieldvalues{1:end-1}) 'or ''' fieldvalues{end} '''']));
     101                if ischar(field) | iscell(fieldvalues),
     102                        if any(~ismember(field,fieldvalues)),
     103                                if length(fieldvalues)==1
     104                                        md = checkmessage(md,getfieldvalue(options,'message',...
     105                                                ['field ''' fieldname ''' value should be ''' fieldvalues{1} '''']));
     106                                elseif length(fieldvalues)==2
     107                                        md = checkmessage(md,getfieldvalue(options,'message',...
     108                                                ['field ''' fieldname ''' values should be ''' fieldvalues{1} ''' or ''' fieldvalues{2} '''']));
     109                                else
     110                                        md = checkmessage(md,getfieldvalue(options,'message',...
     111                                                ['field ''' fieldname ''' should have values in ' sprintf('''%s'', ',fieldvalues{1:end-1}) 'or ''' fieldvalues{end} '''']));
     112                                end
    112113                        end
     114                else
     115                        md = checkmessage(md,getfieldvalue(options,'message',...
     116                                ['field ''' fieldname ''' should be one of the following strings: ' sprintf('''%s'', ',fieldvalues{1:end-1}) 'or ''' fieldvalues{end} '''']));
    113117                end
    114118        else
    115                 md = checkmessage(md,getfieldvalue(options,'message',...
    116                         ['field ''' fieldname ''' should be one of the following strings: ' sprintf('''%s'', ',fieldvalues{1:end-1}) 'or ''' fieldvalues{end} '''']));
    117         end
    118 else
    119         field2=reshape(field,prod(size(field)),1);
    120         if isnumeric(field),
    121                 if any(~ismember(field2,fieldvalues)),
     119                field2=reshape(field,prod(size(field)),1);
     120                if isnumeric(field),
     121                        if any(~ismember(field2,fieldvalues)),
     122                                md = checkmessage(md,getfieldvalue(options,'message',...
     123                                        ['field ''' fieldname ''' should have values in [' num2str(fieldvalues) ']']));
     124                        end
     125                else
    122126                        md = checkmessage(md,getfieldvalue(options,'message',...
    123                                 ['field ''' fieldname ''' should have values in [' num2str(fieldvalues) ']']));
     127                                ['field ''' fieldname ''' should be a number in [' num2str(fieldvalues) ']']));
    124128                end
    125         else
    126                 md = checkmessage(md,getfieldvalue(options,'message',...
    127                         ['field ''' fieldname ''' should be a number in [' num2str(fieldvalues) ']']));
    128         end
    129129        end
    130130end
     
    162162        if any(field2>=upperbound),
    163163                md = checkmessage(md,getfieldvalue(options,'message',...
    164                         ['field ''' fieldname ''' should have values below ' num2str(upperbound(1))]));
     164                        ['field ''' fieldname ''' should have values below ' num2str(upperbound)]));
    165165        end
    166166end
     
    169169if getfieldvalue(options,'file',0),
    170170        if ~exist(field,'file')
    171                 md = checkmessage(md,['file profided in ''' fieldname ''': ''' field ''' does not exist']);
     171                md = checkmessage(md,['file provided in ''' fieldname ''': ''' field ''' does not exist']);
    172172        end
    173173end
Note: See TracChangeset for help on using the changeset viewer.