Changeset 4329


Ignore:
Timestamp:
Mar 28, 2007, 1:34:29 PM (17 years ago)
Author:
ole
Message:

Refactored automated_validation_tests/okushiri_tank_validation/compare_timeseries_with_measures.py

File:
1 edited

Legend:

Unmodified
Added
Removed
  • anuga_validation/automated_validation_tests/okushiri_tank_validation/compare_timeseries_with_measures.py

    r4323 r4329  
    2424# No plotting for automated unittest (unless one wishes to run
    2525# this manually and look at the outputs)
    26 plotting = False
     26plotting = True
    2727
    2828
     
    273273
    274274
     275def report_difference(name, computed_value, reference_value, eps):
     276
     277    print '%s = %.18e' %(name, computed_value)
     278
     279    if computed_value < reference_value-eps:
     280        print '  Result is better than expected by: %.18e'\
     281              %(computed_value - reference_value)
     282        print '  Expect = %.18e' %reference_value   
     283    elif computed_value > reference_value+eps:
     284        print '  FAIL: Result is worse than expected by: %.18e'\
     285                                %(computed_value-reference_value)
     286        print '  Expect = %.18e' %reference_value
     287    else:
     288        pass
     289
     290    if abs(reference_value) > 0:
     291        msg = '%s (expected, computed): (%.18e, %.18e): Relative error=%.18e'\
     292              %(name, reference_value, computed_value, abs(reference_value-computed_value)/reference_value)
     293    else:
     294        msg = '%s (expected, computed): (%.18e, %.18e): Absolute error=%.18e'\
     295              %(name, reference_value, computed_value, abs(reference_value-computed_value))       
     296    print msg
     297   
     298    #assert allclose(expected_covariance[name], res), msg
     299   
     300
     301
    275302#--------------------------------------------------
    276303# Compare model output to validation data
     
    278305
    279306eps = get_machine_precision()
     307print 'Machine precision: ', eps
    280308for k, name in enumerate(gauge_names):
    281309    sqsum = 0
     
    289317
    290318
    291     # Covariance measures   
    292     res = cov(observed_timeseries, model)     
    293     print 'Covariance = %.18e' %res
    294 
    295     if res < expected_covariance[name]-eps:
    296         print '  Result is better than expected by: %.18e'\
    297               %(res-expected_covariance[name])
    298         print '  Expect = %.18e' %expected_covariance[name]   
    299     elif res > expected_covariance[name]+eps:
    300         print '  FAIL: Result is worse than expected by: %.18e'\
    301                                 %(res-expected_covariance[name])
    302         print '  Expect = %.18e' %expected_covariance[name]
    303     else:
    304         pass
    305 
    306     msg = 'Covariance (expected, computed): (%.18e, %.18e)'\
    307           %(expected_covariance[name], res)             
    308     assert res-eps <= expected_covariance[name] <= res+eps, msg
    309    
    310    
    311 
     319    # Covariance measure   
     320    res = cov(observed_timeseries, model)
     321    report_difference('Covariance', res, expected_covariance[name], eps)
     322     
    312323    # Difference measures   
    313     res = sum(abs(observed_timeseries-model))/len(model)     
    314     print 'Accumulated difference = %.18e' %res
    315 
    316     if res < expected_difference[name]-eps:
    317         print '  Result is better than expected by: %.18e'\
    318               %(res-expected_difference[name])
    319         print '  Expect = %.18e' %expected_difference[name]   
    320     elif res > expected_difference[name]+eps:
    321         print '  FAIL: Result is worse than expected by: %.18e'\
    322                                 %(res-expected_difference[name])
    323         print '  Expect = %.18e' %expected_difference[name]
    324     else:
    325         pass
    326 
    327 
    328     assert res-eps <= expected_difference[name] <= res+eps
     324    res = sum(abs(observed_timeseries-model))/len(model)
     325    report_difference('Accumulated difference', res, expected_difference[name], eps)   
    329326
    330327    # Extrema
    331328    res = abs(max(observed_timeseries)-max(model))
    332     print 'Difference in maxima = %.18e' %res
    333 
    334     if res < expected_maximum_diff[name]-eps:
    335         print '  Result is better than expected by: %.18e'\
    336               %(res-expected_maximum_diff[name])
    337         print '  Expect = %.18e' %expected_maximum_diff[name]   
    338     elif res > expected_maximum_diff[name]+eps:
    339         print '  FAIL: Result is worse than expected by: %.18e'\
    340                                 %(res-expected_maximum_diff[name])
    341         print '  Expect = %.18e' %expected_maximum_diff[name]
    342     else:
    343         pass
    344 
    345     assert res-eps <= expected_maximum_diff[name] <= res+eps   
    346 
     329    report_difference('Difference in maxima', res, expected_maximum_diff[name], eps)
    347330   
    348331    res = abs(min(observed_timeseries)-min(model))
    349     print 'Difference in minima = %.18e' %res
    350 
    351     if res < expected_minimum_diff[name]-eps:
    352         print '  Result is better than expected by: %.18e'\
    353               %(res-expected_minimum_diff[name])
    354         print '  Expect = %.18e' %expected_minimum_diff[name]   
    355     elif res > expected_minimum_diff[name]+eps:
    356         print '  FAIL: Result is worse than expected by: %.18e'\
    357                                 %(res-expected_minimum_diff[name])
    358         print '  Expect = %.18e' %expected_minimum_diff[name]
    359     else:
    360         pass
    361 
    362     assert res-eps <= expected_minimum_diff[name] <= res+eps
    363    
     332    report_difference('Difference in minima', res, expected_minimum_diff[name], eps)   
    364333
    365334    # Locations of extrema
     
    367336    i1 = argmax(model)
    368337    res = abs(reference_time[i1] - reference_time[i0])
    369     print 'Timelag between maxima = %.18e' %res
    370 
    371     if res < expected_argmax_timelag[name]-eps:
    372         print '  Result is better than expected by: %.18e'\
    373               %(res-expected_argmax_timelag[name])
    374         print '  Expect = %.18e' %expected_argmax_timelag[name]   
    375     elif res > expected_argmax_timelag[name]+eps:
    376         print '  FAIL: Result is worse than expected by: %.18e'\
    377                                 %(res-expected_argmax_timelag[name])
    378         print '  Expect = %.18e' %expected_argmax_timelag[name]
    379     else:
    380         pass
    381    
    382     assert res-eps <= expected_argmax_timelag[name] <= res+eps
     338    report_difference('Timelag between maxima', res, expected_argmax_timelag[name], eps)   
     339   
    383340
    384341    i0 = argmin(observed_timeseries)
    385342    i1 = argmin(model)
    386343    res = abs(reference_time[i1] - reference_time[i0])
    387     print 'Timelag between minima = %.18e' %res
    388     if res < expected_argmin_timelag[name]-eps:
    389         print '  Result is better than expected by: %.18e'\
    390               %(res-expected_argmin_timelag[name])
    391         print '  Expect = %.18e' %expected_argmin_timelag[name]   
    392     elif res > expected_argmin_timelag[name]+eps:
    393         print '  FAIL: Result is worse than expected by: %.18e'\
    394                                 %(res-expected_argmin_timelag[name])
    395         print '  Expect = %.18e' %expected_argmin_timelag[name]
    396     else:
    397         pass
    398 
    399     assert res-eps <= expected_argmin_timelag[name] <= res+eps
     344    report_difference('Timelag between minima', res, expected_argmin_timelag[name], eps)       
    400345
    401346
Note: See TracChangeset for help on using the changeset viewer.