function time_dependent_quintuple_well¶
- deeptime.data.time_dependent_quintuple_well(h=0.001, n_steps=10000, beta=5.0)¶
This dataset generates trajectories of a two-dimensional particle living in a time-dependent quintuple-well potential landscape. The potential wells are slowly oscillating around the origin.
The dynamics are described by the potential landscape
\[V(t, x, y) = \cos \left(s\;\mathrm{arctan}(y, x) - \frac{\pi}{2}t \right) + 10 \left( \sqrt{x^2+y^2} - \frac{3}{2} - \frac{1}{2}\sin(2\pi t) \right)^2 \]subject to the SDE
\[dX_t = -\nabla V(X_t, t) dt + \sqrt{2\beta^{-1}}dW_t, \]where \(\beta\) is the temperature and \(W_t\) a Wiener process.
- Parameters:
h (float, optional, default=1e-3) – Integration step size.
n_steps (int, optional, default=10000) – Number of steps to evaluate between recording states.
beta (float, default=5.) – The inverse temperature.
- Returns:
system – The system.
- Return type:
Examples
The model possesses the capability to simulate trajectories as well as be evaluated at test points:
>>> import numpy as np >>> import deeptime as dt
First, set up the model (which internally already creates the integrator).
>>> model = dt.data.time_dependent_quintuple_well(h=1e-3, n_steps=100, beta=5.) # create model instance
Now, a trajectory can be generated:
>>> traj = model.trajectory(0., np.array([[-1., 0.]]), 1000, seed=42, n_jobs=1) # simulate trajectory >>> assert traj.shape == (1000, 2) # 1000 evaluations from initial condition [0, 0] with t=0
Or, alternatively the model can be evaluated at test points (mapping forward using the dynamical system):
>>> test_points = np.random.uniform(-2, 2, (100, 2)) # 100 test point in [-2, 2] x [-2, 2] >>> evaluations = model(0, test_points, seed=53, n_jobs=1) # start at t=0 >>> assert evaluations.shape == (100, 2)