Source code for gemma.readfuncs
import struct
import numpy as np
[docs]def readbool(f):
return struct.unpack('?', f.read(1))[0]
[docs]def readint(f):
return struct.unpack('i', f.read(4))[0]
[docs]def readlong(f, x64=False):
'''if x64:
return struct.unpack('q', f.read(8))[0]
else:'''
return struct.unpack('l', f.read(4))[0]
[docs]def readfloat(f):
return struct.unpack('f', f.read(4))[0]
[docs]def readstring(f):
l = readint(f)
return struct.unpack('%ds'%(l), f.read(l))[0]
[docs]def readarray(f, m, n):
if m == 1:
return np.array(struct.unpack('%if'%n, f.read(n*4)))
else:
A = np.empty((m, n))
for i in xrange(m):
A[i] = struct.unpack('%if'%n, f.read(n*4))
return A