Ignore:
Timestamp:
Aug 24, 2005, 1:49:47 PM (19 years ago)
Author:
ole
Message:

Embedded caching functionality within quantity.set_values and modified validation example lwru2.py to illustrate the advantages that can be gained from supervised caching.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • inundation/pyvolution/quantity.py

    r1752 r1753  
    9191                   location = 'vertices',                   
    9292                   indices = None,
    93                    verbose = None):
     93                   verbose = None,
     94                   use_cache = False):
    9495       
    9596        """Set values for quantity based on different sources.
     
    155156                  will be left undefined.
    156157
     158        verbose: True means that output to stdout is generated
     159
     160        use_cache: True means that caching of intermediate results is
     161                   attempted for least squares fit.
     162                   
     163                   
     164       
    157165
    158166        Exactly one of the arguments
     
    211219            assert values is not None, msg
    212220            self.set_values_from_points(points, values, alpha,
    213                                         location, indices, verbose)
     221                                        location, indices, verbose,
     222                                        use_cache)
    214223        elif filename is not None:
    215224            self.set_values_from_file(filename, attribute_name, alpha,
    216                                       location, indices, verbose)
     225                                      location, indices, verbose,
     226                                      use_cache)
    217227        else:
    218228            raise 'This can\'t happen :-)'
     
    437447
    438448    def set_values_from_points(self, points, values, alpha,
    439                                location, indices, verbose):
    440         """
    441         """
    442 
    443        
    444         #FIXME: Needs unit test         
     449                               location, indices, verbose, use_cache):
     450        """Set quantity values from arbitray data points using least squares
     451        """
     452
     453        from Numeric import Float
    445454        from util import ensure_numeric
    446455        from least_squares import fit_to_mesh
     
    457466        triangles = self.domain.triangles
    458467
    459         #FIXME Pass and use caching here
    460         vertex_attributes = fit_to_mesh(coordinates,
    461                                         triangles,
    462                                         points,
    463                                         values,
    464                                         alpha = alpha,
    465                                         verbose = verbose)
     468        if use_cache is True:
     469            try:
     470                from caching import cache
     471            except:
     472                msg = 'Caching was requested, but caching module'+\
     473                      'could not be imported'
     474                raise msg
     475           
     476            args = (coordinates, triangles, points, values)
     477            kwargs = {'alpha': alpha, 'verbose': verbose}
     478            vertex_attributes = cache(fit_to_mesh,
     479                                      args, kwargs,
     480                                      verbose = verbose)
     481        else:   
     482            vertex_attributes = fit_to_mesh(coordinates,
     483                                            triangles,
     484                                            points,
     485                                            values,
     486                                            alpha = alpha,
     487                                            verbose = verbose)
     488           
    466489       
    467490        self.set_values_from_array(vertex_attributes,
     
    473496   
    474497    def set_values_from_file(self, filename, attribute_name, alpha,
    475                              location, indices, verbose):
     498                             location, indices, verbose, use_cache):
    476499        """Set quantity based on arbitrary points in .pts file
    477500        using least_squares attribute_name selects name of attribute
     
    481504
    482505
    483         #FIXME: Needs unit test
    484506        from types import StringType
    485507        msg = 'Filename must be a text string'
     
    513535        #Call least squares method   
    514536        self.set_values_from_points(points, z, alpha,
    515                                     location, indices, verbose)
     537                                    location, indices, verbose, use_cache)
    516538
    517539
     
    523545        location: Where values are to be stored.
    524546                  Permissible options are: vertices, edges, centroid
    525                   Default is "vertices"
     547                  and unique vertices. Default is 'vertices'
    526548
    527549        In case of location == 'centroids' the dimension values must
Note: See TracChangeset for help on using the changeset viewer.