ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/branches/development/validation/comparator.py
Revision: 1658
Committed: Thu Oct 27 18:37:20 2011 UTC (13 years, 6 months ago) by chuckv
Content type: text/x-python
File size: 1407 byte(s)
Log Message:
Adding bits for numerical validation of openmd results.

File Contents

# User Rev Content
1 chuckv 1658 import sys
2     import math
3     import logging
4    
5     def absDiff( one, two , ignoreSign = False):
6     if ignoreSign:
7     one, two = math.fabs(one), math.fabs(two)
8     return max(one, two) - min(one, two)
9    
10     def compare( fExpected, fNew, epsilon, scalar=1.0, ignoreSign=False):
11     fone = open( fExpected, 'r' )
12     ftwo = open( fNew, 'r' )
13    
14     epsilon = float( epsilon )
15    
16     diffs = 0
17    
18     i = 0
19     for lineone in fone:
20     linetwo = ftwo.readline()
21    
22     elementsone = lineone.split()
23     elementstwo = linetwo.split()
24    
25     i = i + 1
26    
27     lenone = len( elementsone )
28     lentwo = len( elementstwo )
29    
30     if lenone != lentwo:
31     diffs = diffs + 1
32     logging.debug( "Line: %d differs in size." % ( i ) )
33     logging.debug( "Should be %d elements but there are %d." % ( lenone, lentwo ) )
34     else:
35     for j in range( lenone ):
36     # used to ignore XYZ meta data such as # of frames and # of atoms
37     try:
38     feone = int(elementsone[j])
39     fetwo = int(elementstwo[j])
40     # these are ints -- skip this pair
41     continue
42     except ValueError:
43     pass
44     try:
45     feone = float( elementsone[j] ) * scalar
46     fetwo = float( elementstwo[j] )
47    
48     fediff = absDiff( feone, fetwo, ignoreSign)
49    
50     if fediff > epsilon:
51     diffs = diffs + 1
52     logging.debug( "Line %d, Element %d Differs" % ( i, j ) )
53     logging.debug( "Expected: %f, Actual: %f, Difference: %f" % ( feone, fetwo, fediff ) )
54     except ValueError:
55     pass
56     return diffs == 0
57    
58    

Properties

Name Value
svn:executable *