Changeset 23433


Ignore:
Timestamp:
10/21/18 13:30:31 (6 years ago)
Author:
kruegern
Message:

BUG: fixed qmu's repr function so 'print md.qmu' works

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/m/classes/qmu.py

    r23095 r23433  
    88from WriteData import WriteData
    99from helpers import *
     10from dakota_method import *
    1011
    1112class qmu(object):
     
    2223                self.responses                   = OrderedStruct()
    2324                self.method                      = OrderedDict()
    24                 self.params                      = OrderedDict()
     25                self.params                      = OrderedStruct()
    2526                self.results                     = OrderedDict()
    2627                self.partition                   = float('NaN')
     
    4344
    4445                s+="%s\n" % fielddisplay(self,'isdakota','is qmu analysis activated?')
     46                maxlen = 0
     47                s+="         variables:  (arrays of each variable class)\n"
     48
     49                # OrderedStruct's iterator returns individual name/array-of-functions pairs
    4550                for variable in self.variables:
    46                         s+="         variables%s:  (arrays of each variable class)\n" % len(variable)
    47                         fnames=vars(variable)
    48                         maxlen=0
    49                         for fname in fnames:
    50                                 maxlen=max(maxlen,len(fname))
     51                        fname=variable[0]
     52                        maxlen=max(maxlen,len(fname))
     53                        size = np.shape(variable[1])
     54                        a = size[0]
     55                        b = 1 if len(size) < 2 else size[1]
     56                        s+="            %-*s:    [%ix%i]    '%s'\n" %  (maxlen+1,fname,a,b,type(variable[1][0]))
    5157
    52                         for fname in fnames:
    53                                 s+="'            %-*s:    [%ix%i]    '%s'\n" % \
    54                                                 (maxlen+1,fname,size(getattr(variable,fname)),type(getattr(variable,fname)))
     58                s+="         responses:  (arrays of each response class)\n"
     59                for response in self.responses:
     60                        fname=response[0]
     61                        maxlen=max(maxlen,len(fname))
     62                        size = np.shape(response[1])
     63                        a = size[0]
     64                        b = 1 if len(size) < 2 else size[1]
     65                        s+="            %-*s:    [%ix%i]    '%s'\n" %  (maxlen+1,fname,a,b,type(response[1][0]))
    5566
    56                 for response in self.responses:
    57                         s+="         responses%s:  (arrays of each response class)\n" % len(responses)
    58                         fnames=vars(response)
    59                         maxlen=0
    60                         for fname in fnames:
    61                                 maxlen=max(maxlen,len(fname))
     67                s+="%s\n" % fielddisplay(self,'numberofresponses','number of responses')
    6268
    63                         for fname in fnames:
    64                                 s+="            %-*s:    [%ix%i]    '%s'\n" % \
    65                                                 (maxlen+1,fname,size(getattr(response,fname)),type(getattr(response,fname)))
     69                if type(self.method) != OrderedDict:
     70                        self.method = [self.method]
     71                # self.method must be iterable
     72                for method in self.method:
     73                        if isinstance(method,dakota_method):
     74                                s+="            method :    '%s'\n" % (method.method)
    6675
    67                 s+="%s\n" % fielddisplay(self,'numberofresponses','number of responses')
    68 
    69                 for method in self.method:
    70                         if isinstance(method,'dakota_method'):
    71                                 s+="            method%s :    '%s'\n" % \
    72                                                 (len(method),method.method)
    73 
    74                 for param in self.params:
    75                         s+="         params%s:  (array of method-independent parameters)\n" % len(param)
     76                # params could be have a number of forms (mainly 1 struct or many)
     77                if type(self.params) == OrderedStruct:
     78                        params = [self.params]
     79                else:
     80                        params = np.hstack(np.atleast_1d(np.array(self.params)))
     81                for param in params:
     82                        print type(param)
     83                        print param
     84                        s+="         params:  (array of method-independent parameters)\n"
    7685                        fnames=vars(param)
    7786                        maxlen=0
     
    8089
    8190                        for fname in fnames:
    82                                 s+="            %-*s: %s\n" % \
    83                                                 (maxlen+1,fname,any2str(getattr(param,fname)))
     91                                s+="            %-*s: %s\n" %  (maxlen+1,fname,str(getattr(param,fname)))
    8492
    85                 for result in self.results:
    86                         s+="         results%s:  (information from dakota files)\n" % len(self.result)
     93                # results could be have a number of forms (mainly 1 struct or many)
     94                results = np.hstack(np.atleast_1d(np.array(self.results)))
     95                for result in results:
     96                        s+="         results:  (information from dakota files)\n"
    8797                        fnames=vars(result)
    8898                        maxlen=0
     
    91101
    92102                        for fname in fnames:
    93                                 s+="            %-*s:    [%ix%i]    '%s'\n" % \
    94                                                 (maxlen+1,fname,size(getattr(result,fname)),type(getattr(result,fname)))
     103                                size = np.shape(response[1])
     104                                a = size[0]
     105                                b = 0 if len(size) < 2 else size[1]
     106                                size = np.shape(getattr(result,fname))
     107                                s+="            %-*s:    [%ix%i]    '%s'\n" % (maxlen+1,fname,a,b,type(getattr(result,fname)))
    95108
    96109                s+="%s\n" % fielddisplay(self,'partition','user provided mesh partitioning, defaults to metis if not specified')
Note: See TracChangeset for help on using the changeset viewer.