Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
f1fc1b3
Steps toward speeding up ForwardApp wrapped SeqEns
dwhswenson Apr 27, 2015
a6a3438
Some tests for FwdAppTrajEns. Debug caching, too
dwhswenson Apr 28, 2015
8c92b8f
Switched Wrapped calls to trusted=None
dwhswenson Apr 28, 2015
e8728f8
Merge remote-tracking branch 'upstream/master' into faster_sequential…
dwhswenson Apr 28, 2015
633c413
Appears that I have faster can_append now.
dwhswenson Apr 29, 2015
cde7f98
Merge remote-tracking branch 'upstream/master' into faster_sequential…
dwhswenson Apr 29, 2015
cf7e724
Skeletons for adding BkwdPrep caching (tests)
dwhswenson Apr 30, 2015
f6a3294
Waiting on new traj funcs to merge (fails now)
dwhswenson Apr 30, 2015
72d2d87
Merge remote-tracking branch 'upstream/master' into faster_sequential…
dwhswenson Apr 30, 2015
cf4e912
Looks like working cache for BkwdPrep.can_prepend
dwhswenson Apr 30, 2015
8049e25
Added error on Bkwdprep.can_app. Removed debugs.
dwhswenson May 1, 2015
ef2102f
Merge remote-tracking branch 'upstream/master' into timing_test
dwhswenson May 1, 2015
c4f2092
Merge branch 'faster_sequential_ensemble' into timing_test
dwhswenson May 1, 2015
6e7498b
Removed very slow debug statement
dwhswenson May 1, 2015
a47c6fb
Merge pull request #13 from dwhswenson/timing_test
dwhswenson May 1, 2015
c5fefef
We appear to have near-linear scaling now
dwhswenson May 1, 2015
4e8e231
About as fast as I can get it (for now)
dwhswenson May 1, 2015
9cd3ebc
Merge remote-tracking branch 'upstream/master' into faster_sequential…
dwhswenson May 3, 2015
84f54a6
Fix tests. Tricks made redundant by #242.
dwhswenson May 3, 2015
86fba2b
Merge remote-tracking branch 'upstream/master' into faster_sequential…
dwhswenson May 7, 2015
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 33 additions & 10 deletions openpathsampling/ensemble.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,11 @@ def bad_direction_error(self):
def check(self, trajectory=None, reset=None):
"""Checks and resets (if necessary) the ensemble cache.
"""
logger.debug("Checking cache....")
logger.debug("traj " + str([id(s) for s in trajectory]))
logger.debug("start_frame " + str(id(self.start_frame)))
logger.debug("prev_last " + str(id(self.prev_last_frame)))

if trajectory is not None:
# if the first frame has changed, we should reset
if reset is None:
Expand Down Expand Up @@ -867,9 +872,9 @@ def _find_subtraj_final(self, traj, subtraj_first, ens_num,
# we overshoot
logger.debug("*Traj slice " + str(subtraj_first) + " " +
str(subtraj_final+1) + " / " + str(traj_final))
logger.debug("Ensemble " + str(ens.__class__.__name__))# + str(ens))
logger.debug("Can-app " + str(ens.can_append(subtraj, trusted=True)))
logger.debug("Call " + str(ens(subtraj, trusted=True)))
#logger.debug("Ensemble " + str(ens.__class__.__name__))# + str(ens))
#logger.debug("Can-app " + str(ens.can_append(subtraj, trusted=True)))
#logger.debug("Call " + str(ens(subtraj, trusted=True)))
while ( (ens.can_append(subtraj, trusted=True) or
ens(subtraj, trusted=True)
) and subtraj_final < traj_final):
Expand Down Expand Up @@ -1426,7 +1431,10 @@ def __init__(self, ensemble):
self.trusted = None
self._cache_can_append = EnsembleCache(+1)
self._cache_call = EnsembleCache(+1)
self._cache_can_prepend = EnsembleCache(-1)
self._cache_can_prepend = EnsembleCache(+1) #TODO: this is weird
# cache_can_prepend has to think it is going forward because the
# frames given to it are from a forward growing trajectory... only
# later is everything turned around

def __call__(self, trajectory, trusted=None):
return self._new_ensemble(self._alter(trajectory), trusted)
Expand Down Expand Up @@ -1479,18 +1487,33 @@ class BackwardPrependedTrajectoryEnsemble(WrappedEnsemble):
def __init__(self, ensemble, add_trajectory):
super(BackwardPrependedTrajectoryEnsemble, self).__init__(ensemble)
self.add_trajectory = add_trajectory
self._cached_trajectory = paths.Trajectory(add_trajectory)

def _alter(self, trajectory):
logger.debug("Starting BackwardPrepended._alter")
logger.debug("altered " + str([id(i) for i in self._cached_trajectory]))
reset = self._cache_can_prepend.check(trajectory)
logger.debug("altered " + str([id(i) for i in self._cached_trajectory]))
logger.debug("traj " + str([id(i) for i in trajectory]))
logger.debug("trajrev " + str([id(i) for i in trajectory.reversed]))
#reset = False
if not reset:
logger.debug("BackwardPrended was not reset")
first_frame = trajectory[-1]
first_frame.reversed
if self._cached_trajectory[0] != first_frame:
self._cached_trajectory.insert(0,first_frame)
else:
self._cached_trajectory = trajectory.reversed + self.add_trajectory

revtraj = trajectory.reversed
altered = revtraj + self.add_trajectory

logger.debug("revtraj " + str([id(i) for i in revtraj]))
#logger.debug("revtraj " + str([id(i) for i in revtraj]))
logger.debug("add " + str([id(i) for i in self.add_trajectory]))
logger.debug("altered " + str([id(i) for i in altered]))
logger.debug("altered " + str([id(i) for i in self._cached_trajectory]))

return self._cached_trajectory

return altered
def can_append(self, trajectory, trusted=None):
raise RuntimeError("BackwardPrependedTrajectoryEnsemble.can_append is nonsense.")

@ops_object
class ForwardAppendedTrajectoryEnsemble(WrappedEnsemble):
Expand Down
30 changes: 13 additions & 17 deletions openpathsampling/tests/testensemble.py
Original file line number Diff line number Diff line change
Expand Up @@ -1452,33 +1452,29 @@ def test_caching_in_bkwdprep_seq(self):
self.outX,
self.inX & length1
])
traj = make_1d_traj(ttraj['upper_in_out_in_in_out_in'])
traj = make_1d_traj(ttraj['upper_in_out_in_in_out_in'],
velocities=[1.0]*6)

# sanity checks before running the suffixed version
#assert_equal(pseudo_minus(traj), True)
#for i in range(-1, -6):
#assert_equal(pseudo_minus.can_prepend(traj[i:]), True)
assert_equal(pseudo_minus(traj), True)
for i in range(-1, -6):
assert_equal(pseudo_minus.can_prepend(traj[i:]), True)

logger.debug("alltraj " + str([id(i) for i in traj]))
ens = BackwardPrependedTrajectoryEnsemble(pseudo_minus, traj[-3:])
assert_equal(len(ens._cached_trajectory), 3)

assert_equal(ens.can_prepend(traj[-4:-3].reversed), True)
#assert_equal(ens._cached_trajectory, traj[-4:])
#assert_equal(ens._cache_can_append.trusted, False)
assert_equal(len(ens._cached_trajectory), 4)
assert_equal(ens._cache_can_prepend.trusted, False)

assert_equal(ens.can_prepend(traj[-5:-3].reversed), True)
#assert_equal(ens._cached_trajectory, traj[-5:])
#assert_equal(ens._cache_can_append.trusted, False)
assert_equal(len(ens._cached_trajectory), 5)
assert_equal(ens._cache_can_prepend.trusted, True)

assert_equal(ens.can_prepend(traj[-6:-3].reversed), False)
#assert_equal(ens._cached_trajectory, traj[-6:])
#assert_equal(ens._cache_can_append.trusted, False)






pass
assert_equal(len(ens._cached_trajectory), 6)
assert_equal(ens._cache_can_prepend.trusted, True)

class testMinusInterfaceEnsemble(EnsembleTest):
def setUp(self):
Expand Down