def test1dData(self): n = 3 data = np.arange(n) reader = DataInMemory(data) self.assertEqual(reader.trajectory_lengths(), np.array([n])) self.assertEqual(reader.ndim, 1) self.assertEqual(reader.number_of_trajectories(), 1) self.assertEqual(reader.n_frames_total(), n)
def test1dDataList(self): n = 10 data = [np.arange(n), np.arange(n)] reader = DataInMemory(data) np.testing.assert_equal(reader.trajectory_lengths(), np.array([n, n])) self.assertEqual(reader.ndim, 1) self.assertEqual(reader.number_of_trajectories(), 2) self.assertEqual(reader.n_frames_total(), 2 * n)
def test1dDataList(self): n = 10 data = [np.arange(n), np.arange(n)] reader = DataInMemory(data) self.assertEqual(reader.trajectory_lengths(), [n, n]) self.assertEqual(reader.dimension(), 1) self.assertEqual(reader.number_of_trajectories(), 2) self.assertEqual(reader.n_frames_total(), 2 * n)
def test1dData(self): n = 3 data = np.arange(n) reader = DataInMemory(data) self.assertEqual(reader.trajectory_lengths(), [n]) self.assertEqual(reader.dimension(), 1) self.assertEqual(reader.number_of_trajectories(), 1) self.assertEqual(reader.n_frames_total(), n)
def test_ndim_input(self): data = np.empty((4, 2, 2, 2)) reader = DataInMemory(data) self.assertEqual(reader.ndim, 2 * 2 * 2) self.assertEqual(reader.number_of_trajectories(), 1) self.assertEqual(reader.n_frames_total(), 4) np.testing.assert_equal(reader.trajectory_lengths(), np.array([reader.n_frames_total()]))
def test_ndim_input(self): data = np.empty((4, 2, 2, 2)) reader = DataInMemory(data) self.assertEqual(reader.dimension(), 2 * 2 * 2) self.assertEqual(reader.number_of_trajectories(), 1) self.assertEqual(reader.n_frames_total(), 4) self.assertEqual( reader.trajectory_lengths(), [reader.n_frames_total()])
def test_time_lagged_chunked_access(self): n = 100 data = [ np.random.random((n, 3)), np.zeros((29, 3)), np.random.random((n - 50, 3)) ] reader = DataInMemory(data) self.assertEqual(reader.n_frames_total(), n + n - 50 + 29) # iterate over data ctx = TransformerIteratorContext(lag=30) t = 0 itraj = 0 last_chunk = False while not last_chunk: last_chunk_in_traj = False t = 0 while not last_chunk_in_traj: X, Y = reader._next_chunk(ctx) if itraj == 0: self.assertEqual(X.shape, (100, 3)) self.assertEqual(Y.shape, (70, 3)) elif itraj == 1: # the time lagged chunk can not be built due to lag time self.assertEqual(X.shape, (29, 3)) self.assertEqual(Y.shape, (0, 3)) elif itraj == 2: self.assertEqual(X.shape, (50, 3)) self.assertEqual(Y.shape, (20, 3)) L = np.shape(X)[0] # last chunk in traj? last_chunk_in_traj = (t + L >= reader.trajectory_length(itraj)) # last chunk? last_chunk = (last_chunk_in_traj and itraj >= reader.number_of_trajectories() - 1) t += L # increment trajectory itraj += 1
def test_time_lagged_chunked_access(self): n = 100 data = [np.random.random((n, 3)), np.zeros((29, 3)), np.random.random((n - 50, 3))] reader = DataInMemory(data) self.assertEqual(reader.n_frames_total(), n + n - 50 + 29) # iterate over data lag = 30 t = 0 itraj = 0 last_chunk = False while not last_chunk: last_chunk_in_traj = False t = 0 while not last_chunk_in_traj: X, Y = reader._next_chunk(lag=lag) if itraj == 0: self.assertEqual(X.shape, (100, 3)) self.assertEqual(Y.shape, (70, 3)) elif itraj == 1: # the time lagged chunk can not be built due to lag time self.assertEqual(X.shape, (29, 3)) self.assertEqual(Y.shape, (0, 3)) elif itraj == 2: self.assertEqual(X.shape, (50, 3)) self.assertEqual(Y.shape, (20, 3)) L = np.shape(X)[0] # last chunk in traj? last_chunk_in_traj = ( t + L >= reader.trajectory_length(itraj)) # last chunk? last_chunk = ( last_chunk_in_traj and itraj >= reader.number_of_trajectories() - 1) t += L # increment trajectory itraj += 1