Changeset 13125


Ignore:
Timestamp:
08/22/12 10:42:58 (13 years ago)
Author:
jschierm
Message:

CHG: Rewrite python version of fielddisplay and make corresponding changes in matlab version.

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

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/m/miscellaneous/fielddisplay.m

    r13010 r13125  
    33%
    44%   Usage:
    5 %      fielddisplay(md,offset,name,comment)
     5%      fielddisplay(md,name,comment)
    66
    77        %get field
     
    5656                end
    5757
    58                 %structure
     58        %structure
    5959        elseif isstruct(field),
    60                 if ~isempty(fields(field))
    61                         displayunit(offset,name,'(structure)',comment),
    62                         struct_display(field,[offset '   ']),
    63                 else
    64                         displayunit(offset,name,'N/A',comment),
    65                 end
     60                struct_display(offset,name,field,comment),
    6661
    6762        %cell
     
    7570end%}}}
    7671
    77 function struct_display(structure,offset) % {{{
     72function struct_display(offset,name,field,comment) % {{{
    7873
    79         structure_fields=fields(structure);
     74        if ~isempty(fields(field))
     75                displayunit(offset,name,'(structure)',comment),
     76                offset=[offset '   '];
    8077
    81         for i=1:length(structure_fields),
     78                structure_fields=fields(field);
    8279
    83                 %get current field
    84                 field=structure.(structure_fields{i});
     80                for i=1:length(structure_fields),
    8581
    86                 %recursive call if necessary
    87                 if isstruct(field),
    88                         displayunit(offset,structure_fields{i},'(structure)',''),
    89                         struct_display(field,[offset '   ']);
     82                        %get current field
     83                        sfield=field.(structure_fields{i});
    9084
    91                 %display value
    92                 else
    93                         parsedisplay(offset,structure_fields{i},field,'');
     85                        %display value
     86                        parsedisplay(offset,structure_fields{i},sfield,'');
    9487                end
     88
     89        else
     90                displayunit(offset,name,'N/A',comment),
     91
    9592        end
    9693end% }}}
     
    149146                        end
    150147                else
    151                         error('fielddisplay error message: format for comment not supportet yet');
     148                        error('fielddisplay error message: format for comment not supported yet');
    152149                end
    153150        end
  • issm/trunk-jpl/src/m/miscellaneous/fielddisplay.py

    r13098 r13125  
    11#Module import
     2import numpy
    23from math import isnan
    3 
     4from MatlabFuncs import *
    45
    56def fielddisplay(md,name,comment):
    6 #FIELDDISPLAY - display model field
    7 #
    8 #   Usage:
    9 #      fielddisplay(md,name,comment)
     7        """
     8        FIELDDISPLAY - display model field
     9
     10           Usage:
     11              fielddisplay(md,name,comment)
     12        """
    1013
    1114        #get field
     
    1518        return parsedisplay("         ",name,field,comment);
    1619
    17 #parsedisplay{{{
    18 def  parsedisplay(offset,name,field,comment):
     20def parsedisplay(offset,name,field,comment):    # {{{
    1921
    2022        #string
    2123        if isinstance(field,(str,unicode)):
     24
    2225                if len(field)>30:
    2326                        string=displayunit(offset,name,"not displayed",comment)
    2427                else:
    25                         string=displayunit(offset,name,field,comment)
     28                        string=displayunit(offset,name,"'%s'" % field,comment)
    2629
    2730        #numeric
    28         elif isinstance(field, (int,long)):
    29                 string=displayunit(offset,name,"%i" % (field),comment)
     31        elif isinstance(field,(int,long,float)):
     32                string=displayunit(offset,name,str(field),comment)
    3033
    31         elif isinstance(field, complex):
    32                 raise RuntimeError("fielddisplay cannot handle complex numbers")
    33 
    34         elif isinstance(field, float):
    35                 string=displayunit(offset,name,"%g"%(field),comment)
     34        #matrix
     35        elif isinstance(field,numpy.ndarray):
     36                string=displayunit(offset,name,str(field.shape),comment)
    3637
    3738        #logical
    3839        elif isinstance(field,bool):
    3940                if field:
    40                         string=displayunit(offset,name,"true",comment)
     41                        string=displayunit(offset,name,"True",comment)
    4142                else:
    42                         string=displayunit(offset,name,"false",comment)
     43                        string=displayunit(offset,name,"False",comment)
    4344       
     45        #dictionary
    4446        elif isinstance(field,dict):
    45                 if not field:
    46                         string=displayunit(offset,name,'N/A',comment)
    47                 else:
    48                         string=displayunit(offset,name,'(dictionary)',comment)
    49                         for key in field.keys():
    50                                 string="%s\n%s"%(string,parsedisplay(offset + '   ',key,field[key],''))
     47                string=dict_display(offset,name,field,comment)
    5148
    52         elif isinstance(field,list):
    53                 if not field:
    54                         string=displayunit(offset,name,'N/A',comment),
    55                 else:
    56                         string=displayunit(offset,name,'(structure)',comment)
    57                         for i in range(len(field)):
    58                                 string="%s\n%s"%(string,displayunit(offset + '   ',name,field[i],comment))
    59         #cell
    60         #elif  iscell(field):
    61         #       cell_display(offset,name,field,comment),
     49        #list or tuple
     50        elif isinstance(field,(list,tuple)):
     51                string=list_display(offset,name,field,comment)
    6252
    6353        else:
     
    6555               
    6656        return string
     57        # }}}
    6758
    68 #}}}
    69 #displayunit {{{
    70 def  displayunit(offset,name,characterization,comment):
     59def dict_display(offset,name,field,comment):    # {{{
     60
     61        if field:
     62                string =displayunit(offset,name,'{dictionary}',comment)+'\n'
     63                offset+='   '
     64
     65                for structure_field,sfield in field.iteritems():
     66                        string+=parsedisplay(offset,str(structure_field),sfield,'')+'\n'
     67
     68                if string and string[-1]=='\n':
     69                        string=string[:-1]
     70
     71        else:
     72                string=displayunit(offset,name,'N/A',comment)
     73
     74        return string
     75        # }}}
     76
     77def list_display(offset,name,field,comment):    # {{{
     78
     79        #initialization
     80        if   isinstance(field,tuple):
     81                sbeg='('
     82                send=')'
     83        elif isinstance(field,list):
     84                sbeg='['
     85                send=']'
     86        string=sbeg
     87
     88        #go through the cell and fill string
     89        if len(field)<5:
     90                for fieldi in field:
     91                        if   isinstance(fieldi,(str,unicode)):
     92                                string+="'%s'," % fieldi
     93                        elif isinstance(fieldi,(bool,int,long,float)):
     94                                string+="%s," % str(fieldi)
     95                        else:
     96                                string=sbeg
     97                                break
     98
     99        if strcmp(string,sbeg):
     100                string="%s%dx1%s" % (sbeg,len(field),send)
     101        else:
     102                string=string[:-1]+send
     103
     104        #call displayunit
     105        return displayunit(offset,name,string,comment)
     106        # }}}
     107
     108def displayunit(offset,name,characterization,comment):    # {{{
    71109
    72110        #take care of name
    73111        if len(name)>23:
    74                 name="%s..." % (name[:19])
     112                name="%s..." % name[:20]
    75113       
    76114        #take care of characterization
    77         if characterization=="":
    78                 characterization="N/A"
    79        
    80         if characterization=="nan":
     115        if strcmp(characterization,"''") or strcmp(characterization,'""') or strcmpi(characterization,'nan'):
    81116                characterization="N/A"
    82117       
    83118        if len(characterization)>15:
    84                 characterization="%s%s" % (characterization[:11],"...")
     119                characterization="%s..." % characterization[:12]
    85120       
    86121        #print
     
    88123                string="%s%-23s: %-15s" % (offset,name,characterization)
    89124        else:
    90                 if isinstance(comment,(str,unicode)):
     125                if   isinstance(comment,(str,unicode)):
    91126                        string="%s%-23s: %-15s -- %s" % (offset,name,characterization,comment)
    92127                elif isinstance(comment,list):
    93                         print(comment)
    94128                        string="%s%-23s: %-15s -- %s" % (offset,name,characterization,comment[0])
    95                         for i in range(1,len(comment)):
    96                                 string2="%s%-23s  %-15s    %s" %(offset,"","",comment[i])
    97                                 string="%s\n%s"%(string,string2)
     129                        for commenti in comment:
     130                                string+="\n%s%-23s  %-15s    %s" % (offset,'','',comment[i])
    98131                else:
    99                         raise RuntimeError("fielddisplay error message: format for comment not supportet yet")
     132                        raise RuntimeError("fielddisplay error message: format for comment not supported yet")
    100133
    101134        return string
    102 #}}}
     135        # }}}
     136
Note: See TracChangeset for help on using the changeset viewer.