Use python array instead of numpy array for appending data.

This commit is contained in:
Niels Müller
2016-10-07 10:21:04 +02:00
parent 9cf16bc602
commit 108200cea8

View File

@ -59,39 +59,23 @@ cdef class EDRFile:
types.append((self.etypes[i].name.decode(), self.etypes[i].unit.decode()))
return types
def read(self, steps=None):
def read(self):
cdef:
t_enxframe *frame
np.ndarray[float, ndim=2] energies
np.ndarray[float, ndim=1] times
if steps is None:
energies = np.empty((1,self.n_etypes), np.float32)
times = np.empty((1,), np.float32)
else:
energies = np.empty((steps,self.n_etypes), np.float32)
times = np.empty((steps,), np.float32)
snew(frame, 1)
energies = array('f')
times = array('f')
i = 0
while True:
cont = do_enx(self.efile, frame)
while do_enx(self.efile, frame):
times.append(frame.t)
for j in range(frame.nre):
energies[i, j] = frame.ener[j].e
times[i] = frame.t
if cont:
i += 1
if len(energies) <= i:
energies = np.resize(energies, (len(energies)+1, self.n_etypes))
times = np.resize(times, (len(times)+1,))
else:
break
energies.append(frame.ener[j].e)
free_enxframe(frame)
sfree(frame)
return times, energies
return np.array(times), np.array(energies).reshape(len(times), self.n_etypes)
def __init__(self, filename):
@ -101,7 +85,6 @@ cdef class EDRFile:
self.etypes = NULL
do_enxnms(self.efile, &self.n_etypes, &self.etypes)
print(self.n_etypes)
#do_enx(self.efile, self.frames)