ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/trunk/validation/comparator.py
Revision: 1782
Committed: Wed Aug 22 02:28:28 2012 UTC (12 years, 8 months ago) by gezelter
Content type: text/x-python
File size: 1407 byte(s)
Log Message:
MERGE OpenMD development branch 1465:1781 into trunk

File Contents

# Content
1 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 *