예제 #1
0
 def test_ensure_umbrella_force_matrix_from_scalar(self):
     # dimension=1
     us_force_matrix = util._ensure_force_constant(1.0, 1)
     self._assert_us_force_matrix(us_force_matrix, 1)
     np.testing.assert_array_equal(us_force_matrix,
                                   np.array([[1.0]], dtype=np.float64))
     # dimension=2
     us_force_matrix = util._ensure_force_constant(1.0, 2)
     self._assert_us_force_matrix(us_force_matrix, 2)
     np.testing.assert_array_equal(
         us_force_matrix,
         np.array([[1.0, 0.0], [0.0, 1.0]], dtype=np.float64))
예제 #2
0
 def test_umbrella_sampling_bias_sequences_1x1(self):
     trajs = [np.array([[0.0], [0.5], [1.0]])]
     umbrella_centers = np.array([
         util._ensure_umbrella_center(0.0, 1),
         util._ensure_umbrella_center(1.0, 1)
     ],
                                 dtype=np.float64)
     force_constants = np.array([
         util._ensure_force_constant(1.0, 1),
         util._ensure_force_constant(2.0, 1)
     ],
                                dtype=np.float64)
     self._assert_bias_sequences(
         util._get_umbrella_bias_sequences(trajs, umbrella_centers,
                                           force_constants),
         [np.array([[0.0, 1.0], [0.125, 0.25], [0.5, 0.0]])])
예제 #3
0
 def test_umbrella_sampling_bias_sequences_1x0(self):
     trajs = [np.array([0.0, 0.5, 1.0])]
     umbrella_centers = np.array([
         util._ensure_umbrella_center(0.0, 1),
         util._ensure_umbrella_center(1.0, 1)
     ],
                                 dtype=np.float64)
     force_constants = np.array([
         util._ensure_force_constant(1.0, 1),
         util._ensure_force_constant(2.0, 1)
     ],
                                dtype=np.float64)
     width = np.zeros(shape=(umbrella_centers.shape[1], ), dtype=np.float64)
     self._assert_bias_sequences(
         util._get_umbrella_bias_sequences(trajs, umbrella_centers,
                                           force_constants, width),
         [np.array([[0.0, 1.0], [0.125, 0.25], [0.5, 0.0]])])
예제 #4
0
 def test_ensure_umbrella_force_matrix_from_ndarray(self):
     # dimension=1
     us_force_matrix = util._ensure_force_constant(np.array([1.0]), 1)
     self._assert_us_force_matrix(us_force_matrix, 1)
     np.testing.assert_array_equal(us_force_matrix,
                                   np.array([[1.0]], dtype=np.float64))
     # dimension=1x1
     us_force_matrix = util._ensure_force_constant(np.array([[1.0]]), 1)
     self._assert_us_force_matrix(us_force_matrix, 1)
     np.testing.assert_array_equal(us_force_matrix,
                                   np.array([[1.0]], dtype=np.float64))
     # dimension=2, not uniform, diagonal
     us_force_matrix = util._ensure_force_constant(np.array([1.0, 2.0]), 2)
     self._assert_us_force_matrix(us_force_matrix, 2)
     np.testing.assert_array_equal(
         us_force_matrix,
         np.array([[1.0, 0.0], [0.0, 2.0]], dtype=np.float64))
     # dimension=2, not uniform, not diagonal
     us_force_matrix = util._ensure_force_constant(
         np.array([[1.0, 2.0], [3.0, 4.0]]), 2)
     self._assert_us_force_matrix(us_force_matrix, 2)
     np.testing.assert_array_equal(
         us_force_matrix,
         np.array([[1.0, 2.0], [3.0, 4.0]], dtype=np.float64))
예제 #5
0
 def test_ensure_umbrella_force_matrix_catches_unmatching_dimension(self):
     with self.assertRaises(ValueError):
         util._ensure_force_constant([1.0, 1.0], 1)
     with self.assertRaises(ValueError):
         util._ensure_force_constant([1.0, 1.0, 1.0], 2)
     with self.assertRaises(ValueError):
         util._ensure_force_constant([1.0, 1.0], 3)
     with self.assertRaises(ValueError):
         util._ensure_force_constant([[1.0], [1.0]], 1)
     with self.assertRaises(ValueError):
         util._ensure_force_constant([[1.0], [1.0]], 3)
     with self.assertRaises(ValueError):
         util._ensure_force_constant([[1.0, 1.0], 1.0], 3)
     with self.assertRaises(ValueError):
         util._ensure_force_constant([1.0, [1.0, 1.0]], 3)
     with self.assertRaises(ValueError):
         util._ensure_force_constant([[1.0, 1.0], [1.0, 1.0]], 3)