Changeset 1820


Ignore:
Timestamp:
Sep 12, 2005, 6:05:53 PM (18 years ago)
Author:
ole
Message:

Refactored how interpolation_function reports it's statistics. Now it usus the repr method.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • inundation/pyvolution/least_squares.py

    r1819 r1820  
    961961
    962962        #Use keys if no names are specified
    963         if quantity_names is not None:
    964             self.quantity_names = quantity_names
    965         else:
    966             self.quantity_names = quantities.keys()
     963        if quantity_names is None:
     964            quantity_names = quantities.keys()
    967965
    968966
     
    977975            self.spatial = True           
    978976           
     977
    979978 
    980         #     
     979        #Save for use with statistics
     980        self.quantity_names = quantity_names       
     981        self.quantities = quantities       
     982        self.vertex_coordinates = vertex_coordinates
    981983        self.interpolation_points = interpolation_points
    982984        self.T = time[:]  #Time assumed to be relative to starttime
     
    993995
    994996            try:
    995                 interpolation_points = ensure_numeric(interpolation_points)
     997                self.interpolation_points =\
     998                                          ensure_numeric(self.interpolation_points)
    996999            except:
    9971000                msg = 'Interpolation points must be an N x 2 Numeric array '+\
    9981001                      'or a list of points\n'
    999                 msg += 'I got: %s.' %( str(interpolation_points)[:60] + '...')
     1002                msg += 'I got: %s.' %( str(self.interpolation_points)[:60] + '...')
    10001003                raise msg
    10011004
     
    10041007                self.precomputed_values[name] =\
    10051008                                              zeros((len(self.T),
    1006                                                      len(interpolation_points)),
     1009                                                     len(self.interpolation_points)),
    10071010                                                    Float)
    10081011
     
    10101013            interpol = Interpolation(vertex_coordinates,
    10111014                                     triangles,
    1012                                      point_coordinates = interpolation_points,
     1015                                     point_coordinates = self.interpolation_points,
    10131016                                     alpha = 0,
    10141017                                     precrop = False,
     
    10251028            #Report
    10261029            if verbose:
    1027                 #FIXME: Move to e.g. __repr__
    1028                 x = vertex_coordinates[:,0]
    1029                 y = vertex_coordinates[:,1]               
    1030            
    1031                 print '------------------------------------------------'
    1032                 print 'Interpolation_function statistics:'
    1033                 print '  Extent:'
    1034                 print '    x in [%f, %f], len(x) == %d'\
    1035                       %(min(x), max(x), len(x))
    1036                 print '    y in [%f, %f], len(y) == %d'\
    1037                       %(min(y), max(y), len(y))
    1038                 print '    t in [%f, %f], len(t) == %d'\
    1039                       %(min(self.T), max(self.T), len(self.T))
    1040                 print '  Quantities:'
    1041                 for name in quantity_names:
    1042                     q = quantities[name][:].flat
    1043                     print '    %s in [%f, %f]' %(name, min(q), max(q))
    1044                 print '  Interpolation points (xi, eta):'\
    1045                       ' number of points == %d ' %interpolation_points.shape[0]
    1046                 print '    xi in [%f, %f]' %(min(interpolation_points[:,0]),
    1047                                              max(interpolation_points[:,0]))
    1048                 print '    eta in [%f, %f]' %(min(interpolation_points[:,1]),
    1049                                               max(interpolation_points[:,1]))
    1050                 print '  Interpolated quantities (over all timesteps):'
    1051                
    1052                 for name in quantity_names:
    1053                     q = self.precomputed_values[name][:].flat
    1054                     print '    %s at interpolation points in [%f, %f]'\
    1055                           %(name, min(q), max(q))
    1056                 print '------------------------------------------------'
     1030                print self.statistics()
     1031                #self.print_statistics()
    10571032           
    10581033        else:
     
    10771052
    10781053    def __repr__(self):
    1079         return 'Interpolation function (spation-temporal)'
     1054        #return 'Interpolation function (spation-temporal)'
     1055        return self.statistics()
     1056   
    10801057
    10811058    def __call__(self, t, point_id = None, x = None, y = None):
     
    11991176
    12001177
     1178    def statistics(self):
     1179        """Output statistics about interpolation_function
     1180        """
     1181       
     1182        vertex_coordinates = self.vertex_coordinates
     1183        interpolation_points = self.interpolation_points               
     1184        quantity_names = self.quantity_names
     1185        quantities = self.quantities
     1186        precomputed_values = self.precomputed_values                 
     1187               
     1188        x = vertex_coordinates[:,0]
     1189        y = vertex_coordinates[:,1]               
     1190
     1191        str =  '------------------------------------------------\n'
     1192        str += 'Interpolation_function (spation-temporal) statistics:\n'
     1193        str += '  Extent:\n'
     1194        str += '    x in [%f, %f], len(x) == %d\n'\
     1195               %(min(x), max(x), len(x))
     1196        str += '    y in [%f, %f], len(y) == %d\n'\
     1197               %(min(y), max(y), len(y))
     1198        str += '    t in [%f, %f], len(t) == %d\n'\
     1199               %(min(self.T), max(self.T), len(self.T))
     1200        str += '  Quantities:\n'
     1201        for name in quantity_names:
     1202            q = quantities[name][:].flat
     1203            str += '    %s in [%f, %f]\n' %(name, min(q), max(q))
     1204        str += '  Interpolation points (xi, eta):'\
     1205               ' number of points == %d\n' %interpolation_points.shape[0]
     1206        str += '    xi in [%f, %f]\n' %(min(interpolation_points[:,0]),
     1207                                        max(interpolation_points[:,0]))
     1208        str += '    eta in [%f, %f]\n' %(min(interpolation_points[:,1]),
     1209                                         max(interpolation_points[:,1]))
     1210        str += '  Interpolated quantities (over all timesteps):\n'
     1211       
     1212        for name in quantity_names:
     1213            q = precomputed_values[name][:].flat
     1214            str += '    %s at interpolation points in [%f, %f]\n'\
     1215                   %(name, min(q), max(q))
     1216        str += '------------------------------------------------\n'
     1217
     1218        return str
     1219
     1220        #FIXME: Delete
     1221        #print '------------------------------------------------'
     1222        #print 'Interpolation_function statistics:'
     1223        #print '  Extent:'
     1224        #print '    x in [%f, %f], len(x) == %d'\
     1225        #      %(min(x), max(x), len(x))
     1226        #print '    y in [%f, %f], len(y) == %d'\
     1227        #      %(min(y), max(y), len(y))
     1228        #print '    t in [%f, %f], len(t) == %d'\
     1229        #      %(min(self.T), max(self.T), len(self.T))
     1230        #print '  Quantities:'
     1231        #for name in quantity_names:
     1232        #    q = quantities[name][:].flat
     1233        #    print '    %s in [%f, %f]' %(name, min(q), max(q))
     1234        #print '  Interpolation points (xi, eta):'\
     1235        #      ' number of points == %d ' %interpolation_points.shape[0]
     1236        #print '    xi in [%f, %f]' %(min(interpolation_points[:,0]),
     1237        #                             max(interpolation_points[:,0]))
     1238        #print '    eta in [%f, %f]' %(min(interpolation_points[:,1]),
     1239        #                              max(interpolation_points[:,1]))
     1240        #print '  Interpolated quantities (over all timesteps):'
     1241        #
     1242        #for name in quantity_names:
     1243        #    q = precomputed_values[name][:].flat
     1244        #    print '    %s at interpolation points in [%f, %f]'\
     1245        #          %(name, min(q), max(q))
     1246        #print '------------------------------------------------'
    12011247
    12021248
Note: See TracChangeset for help on using the changeset viewer.