Changeset 4329
- Timestamp:
- Mar 28, 2007, 1:34:29 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
anuga_validation/automated_validation_tests/okushiri_tank_validation/compare_timeseries_with_measures.py
r4323 r4329 24 24 # No plotting for automated unittest (unless one wishes to run 25 25 # this manually and look at the outputs) 26 plotting = False26 plotting = True 27 27 28 28 … … 273 273 274 274 275 def 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 275 302 #-------------------------------------------------- 276 303 # Compare model output to validation data … … 278 305 279 306 eps = get_machine_precision() 307 print 'Machine precision: ', eps 280 308 for k, name in enumerate(gauge_names): 281 309 sqsum = 0 … … 289 317 290 318 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 312 323 # 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) 329 326 330 327 # Extrema 331 328 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) 347 330 348 331 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) 364 333 365 334 # Locations of extrema … … 367 336 i1 = argmax(model) 368 337 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 383 340 384 341 i0 = argmin(observed_timeseries) 385 342 i1 = argmin(model) 386 343 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) 400 345 401 346
Note: See TracChangeset
for help on using the changeset viewer.