Abstracted out these fixtures.
This commit is contained in:
parent
afc1640d17
commit
3d0c89c814
1 changed files with 93 additions and 0 deletions
93
glymur/test/fixtures.py
Normal file
93
glymur/test/fixtures.py
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
import re
|
||||
import sys
|
||||
|
||||
import numpy as np
|
||||
|
||||
def mse(A, B):
|
||||
"""Mean Square Error"""
|
||||
diff = A.astype(np.double) - B.astype(np.double)
|
||||
#e = np.sqrt(np.mean(diff**2))
|
||||
e = np.mean(diff**2)
|
||||
return e
|
||||
|
||||
|
||||
def peak_tolerance(A, B):
|
||||
"""Peak Tolerance"""
|
||||
diff = np.abs(A.astype(np.double) - B.astype(np.double))
|
||||
p = diff.max()
|
||||
return p
|
||||
|
||||
|
||||
def read_pgx(pgx_file):
|
||||
"""Helper function for reading the PGX comparison files.
|
||||
|
||||
Open the file in ascii mode and read the header line.
|
||||
Will look something like
|
||||
|
||||
PG ML + 8 128 128
|
||||
PG%[ \t]%c%c%[ \t+-]%d%[ \t]%d%[ \t]%d"
|
||||
"""
|
||||
header = ''
|
||||
with open(pgx_file, 'rb') as fp:
|
||||
while True:
|
||||
x = fp.read(1)
|
||||
if x[0] == 10 or x == '\n':
|
||||
pos = fp.tell()
|
||||
break
|
||||
else:
|
||||
if sys.hexversion < 0x03000000:
|
||||
header += x
|
||||
else:
|
||||
header += chr(x[0])
|
||||
|
||||
header = header.rstrip()
|
||||
n = re.split('\s', header)
|
||||
|
||||
if (n[1][0] == 'M') and (sys.byteorder == 'little'):
|
||||
swapbytes = True
|
||||
elif (n[1][0] == 'L') and (sys.byteorder == 'big'):
|
||||
swapbytes = True
|
||||
else:
|
||||
swapbytes = False
|
||||
|
||||
if (len(n) == 6):
|
||||
bitdepth = int(n[3])
|
||||
signed = bitdepth < 0
|
||||
if signed:
|
||||
bitdepth = -1 * bitdepth
|
||||
nrows = int(n[5])
|
||||
ncols = int(n[4])
|
||||
else:
|
||||
bitdepth = int(n[2])
|
||||
signed = bitdepth < 0
|
||||
if signed:
|
||||
bitdepth = -1 * bitdepth
|
||||
nrows = int(n[4])
|
||||
ncols = int(n[3])
|
||||
|
||||
if signed:
|
||||
if bitdepth <= 8:
|
||||
dtype = np.int8
|
||||
elif bitdepth <= 16:
|
||||
dtype = np.int16
|
||||
else:
|
||||
raise RuntimeError("unhandled bitdepth")
|
||||
else:
|
||||
if bitdepth <= 8:
|
||||
dtype = np.uint8
|
||||
elif bitdepth <= 16:
|
||||
dtype = np.uint16
|
||||
else:
|
||||
raise RuntimeError("unhandled bitdepth")
|
||||
|
||||
shape = [nrows, ncols]
|
||||
|
||||
# Reopen the file in binary mode and seek to the start of the binary
|
||||
# data
|
||||
with open(pgx_file, 'rb') as fp:
|
||||
fp.seek(pos)
|
||||
data = np.fromfile(file=fp, dtype=dtype).reshape(shape)
|
||||
|
||||
return(data.byteswap(swapbytes))
|
||||
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue