Beispiel #1
0
 def test_CVRangeVolumePeriodicSet(self):
     mins = [-1.5, -3.5]
     maxs = [2.0, 4.0]
     lv0 = volume.PeriodicCVDefinedVolume(op_id, mins[0], maxs[0])
     lv1 = volume.PeriodicCVDefinedVolume(op_id, mins[1], maxs[1])
     assert_equal([lv0, lv1],
                  volume.VolumeFactory.CVRangeVolumePeriodicSet(
                      op_id, mins, maxs))
Beispiel #2
0
 def test_periodic_xor_combos(self):
     assert self.pvolA ^ self.pvolA_ == volume.FullVolume()
     assert self.pvolA ^ self.pvolA == volume.EmptyVolume()
     assert (self.pvolE ^ self.pvolD == volume.UnionVolume(
         volume.PeriodicCVDefinedVolume(op_id, -150, -100),
         volume.PeriodicCVDefinedVolume(op_id, 100, 150)))
     assert self.pvolB ^ self.pvolC == self.pvolB | self.pvolC
     assert (self.pvolB ^ self.pvolD == volume.PeriodicCVDefinedVolume(
         op_id, -100, 50))
Beispiel #3
0
 def test_periodic_xor_combos(self):
     assert_equal(self.pvolA ^ self.pvolA_, volume.FullVolume())
     assert_equal(self.pvolA ^ self.pvolA, volume.EmptyVolume())
     assert_equal(self.pvolE ^ self.pvolD,
                  volume.UnionVolume(
                      volume.PeriodicCVDefinedVolume(op_id, -150, -100),
                      volume.PeriodicCVDefinedVolume(op_id, 100, 150)))
     assert_equal(self.pvolB ^ self.pvolC, self.pvolB | self.pvolC)
     assert_equal(self.pvolB ^ self.pvolD,
                  volume.PeriodicCVDefinedVolume(op_id, -100, 50))
Beispiel #4
0
 def test_periodic_sub_combos(self):
     assert self.pvolA - self.pvolA_ is self.pvolA
     assert self.pvolA_ - self.pvolA is self.pvolA_
     assert (self.pvolD - self.pvolA == volume.PeriodicCVDefinedVolume(
         op_id, 75, 100))
     assert (self.pvolD - self.pvolA)(80) is True
     assert (self.pvolD - self.pvolA)(50) is False
     assert self.pvolB - self.pvolC is self.pvolB
     assert self.pvolA - self.pvolA == volume.EmptyVolume()
     assert (self.pvolE - self.pvolD == volume.UnionVolume(
         volume.PeriodicCVDefinedVolume(op_id, -150, -100),
         volume.PeriodicCVDefinedVolume(op_id, 100, 150)))
     assert (self.pvolE - self.pvolA_ == volume.PeriodicCVDefinedVolume(
         op_id, -100, 75))
Beispiel #5
0
 def test_periodic_sub_combos(self):
     assert_equal(self.pvolA - self.pvolA_, self.pvolA)
     assert_equal(self.pvolA_ - self.pvolA, self.pvolA_)
     assert_equal(self.pvolD - self.pvolA,
                  volume.PeriodicCVDefinedVolume(op_id, 75, 100))
     assert_equal((self.pvolD - self.pvolA)(80), True)
     assert_equal((self.pvolD - self.pvolA)(50), False)
     assert_equal(self.pvolB - self.pvolC, self.pvolB)
     assert_equal(self.pvolA - self.pvolA, volume.EmptyVolume())
     assert_equal(self.pvolE - self.pvolD,
                  volume.UnionVolume(
                      volume.PeriodicCVDefinedVolume(op_id, -150, -100),
                      volume.PeriodicCVDefinedVolume(op_id, 100, 150)))
     assert_equal(self.pvolE - self.pvolA_,
                  volume.PeriodicCVDefinedVolume(op_id, -100, 75))
Beispiel #6
0
 def test_thru_pbc_to_image(self):
     '''max in next periodic domain'''
     lambda_min = 70
     lambda_max = 210
     vol = volume.PeriodicCVDefinedVolume(op_id, lambda_min, lambda_max,
                                          -180, 180)
     assert_equal(vol.lambda_max, -150)
Beispiel #7
0
 def test_volume_equals_bounds(self):
     '''max-min == pbc_range allows all points'''
     vol = volume.PeriodicCVDefinedVolume(op_id, 0, 360, -180, 180)
     assert_equal(vol.__str__(),
                  "{x|(Id(x) - -180) % 360 + -180 in [-180, 180]}")
     assert_equal(True, vol(0))
     assert_equal(True, vol(360))
     assert_equal(True, vol(-180))
     assert_equal(True, vol(180))
Beispiel #8
0
 def test_periodic_and_combos(self):
     assert ((self.pvolA & self.pvolB) == volume.PeriodicCVDefinedVolume(
         op_id, 50, 75))
     assert (self.pvolA & self.pvolB)(60) is True
     assert (self.pvolA & self.pvolB)(80) is False
     assert (self.pvolB & self.pvolC) == volume.EmptyVolume()
     assert (self.pvolC & self.pvolB) == volume.EmptyVolume()
     assert (self.pvolA & self.pvolA) is self.pvolA
     assert (self.pvolA & self.pvolA_) == volume.EmptyVolume()
     assert (self.pvolE & self.pvolD) == self.pvolD
     # go to special case for cyclic permutation
     assert (self.pvolB & self.pvolD) == self.pvolB
     # go to special case
     assert ((self.pvolE & self.pvolA_) == volume.UnionVolume(
         volume.PeriodicCVDefinedVolume(op_id, -150, -100),
         volume.PeriodicCVDefinedVolume(op_id, 75, 150)))
     # go to super if needed
     assert type(self.pvolA & volA) is volume.IntersectionVolume
Beispiel #9
0
 def test_periodic_and_combos(self):
     assert_equal((self.pvolA & self.pvolB),
                  volume.PeriodicCVDefinedVolume(op_id, 50, 75))
     assert_equal((self.pvolA & self.pvolB)(60), True)
     assert_equal((self.pvolA & self.pvolB)(80), False)
     assert_equal((self.pvolB & self.pvolC), volume.EmptyVolume())
     assert_equal((self.pvolC & self.pvolB), volume.EmptyVolume())
     assert_is((self.pvolA & self.pvolA), self.pvolA)
     assert_equal((self.pvolA & self.pvolA_), volume.EmptyVolume())
     assert_equal((self.pvolE & self.pvolD), self.pvolD)
     # go to special case for cyclic permutation
     assert_equal((self.pvolB & self.pvolD), self.pvolB)
     # go to special case
     assert_equal((self.pvolE & self.pvolA_),
                  volume.UnionVolume(
                      volume.PeriodicCVDefinedVolume(op_id, -150, -100),
                      volume.PeriodicCVDefinedVolume(op_id, 75, 150)))
     # go to super if needed
     assert_equal(type(self.pvolA & volA), volume.IntersectionVolume)
Beispiel #10
0
 def setup(self):
     self.pvolA = volume.PeriodicCVDefinedVolume(op_id, -100, 75)
     self.pvolA_ = volume.PeriodicCVDefinedVolume(op_id, 75, -100)
     self.pvolB = volume.PeriodicCVDefinedVolume(op_id, 50, 100)
     self.pvolC = volume.PeriodicCVDefinedVolume(op_id, -100, -50)
     self.pvolD = volume.PeriodicCVDefinedVolume(op_id, -100, 100)
     self.pvolE = volume.PeriodicCVDefinedVolume(op_id, -150, 150)
Beispiel #11
0
 def test_wrapped_volume_implicit(self):
     """max<min, no periodic domain defined"""
     lambda_min = 70
     lambda_max = -150
     vol = volume.PeriodicCVDefinedVolume(op_id, lambda_min, lambda_max)
     # out of state
     assert_equal(False, vol(lambda_min - 1.0))
     assert_equal(False, vol(lambda_max + 1.0))
     # in state
     assert_equal(True, vol(lambda_min + 1.0))
     assert_equal(True, vol(lambda_max - 1.0))
     # border
     assert_equal(True, vol(lambda_min))
     assert_equal(True, vol(lambda_max))
Beispiel #12
0
 def test_normal_implicit(self):
     """min<max, no periodic domain defined"""
     lambda_min = -150
     lambda_max = 70
     vol = volume.PeriodicCVDefinedVolume(op_id, lambda_min, lambda_max)
     assert_equal(vol.__str__(), "{x|Id(x) [periodic] in [-150, 70]}")
     # out of state
     assert_equal(False, vol(lambda_min - 1.0))
     assert_equal(False, vol(lambda_max + 1.0))
     # in state
     assert_equal(True, vol(lambda_min + 1.0))
     assert_equal(True, vol(lambda_max - 1.0))
     # border
     assert_equal(True, vol(lambda_min))
     assert_equal(True, vol(lambda_max))
Beispiel #13
0
 def test_normal_implicit(self):
     """min<max, no periodic domain defined"""
     lambda_min = -150
     lambda_max = 70
     vol = volume.PeriodicCVDefinedVolume(op_id, lambda_min, lambda_max)
     assert vol.__str__() == "{x|Id(x) [periodic] in [-150, 70]}"
     # out of state
     assert vol(lambda_min - 1.0) is False
     assert vol(lambda_max + 1.0) is False
     # in state
     assert vol(lambda_min + 1.0) is True
     assert vol(lambda_max - 1.0) is True
     # border
     assert vol(lambda_min) is True
     assert vol(lambda_max) is False
Beispiel #14
0
    def test_unit_support(self):
        u = unit

        vol = volume.CVDefinedVolume(op_id, -0.5 * u.nanometers,
                                     0.25 * u.nanometers)

        assert vol(-0.25 * u.nanometers)
        assert not vol(-0.75 * u.nanometers)

        vol = volume.PeriodicCVDefinedVolume(op_id, -30 * u.nanometers,
                                             90 * u.nanometers,
                                             -180 * u.nanometers,
                                             180 * u.nanometers)

        assert vol(50 * u.nanometers)
        assert not vol(-70 * u.nanometers)
Beispiel #15
0
    def test_unit_support(self):
        import simtk.unit as u

        vol = volume.CVDefinedVolume(op_id, -0.5 * u.nanometers,
                                     0.25 * u.nanometers)

        assert (vol(-0.25 * u.nanometers))
        assert (not vol(-0.75 * u.nanometers))

        vol = volume.PeriodicCVDefinedVolume(op_id, -30 * u.nanometers,
                                             90 * u.nanometers,
                                             -180 * u.nanometers,
                                             180 * u.nanometers)

        assert (vol(50 * u.nanometers))
        assert (not vol(-70 * u.nanometers))
Beispiel #16
0
    def test_unit_support(self):
        if not paths.integration_tools.HAS_SIMTK_UNIT:
            raise SkipTest
        u = unit

        vol = volume.CVDefinedVolume(op_id, -0.5 * u.nanometers,
                                     0.25 * u.nanometers)

        assert (vol(-0.25 * u.nanometers))
        assert (not vol(-0.75 * u.nanometers))

        vol = volume.PeriodicCVDefinedVolume(op_id, -30 * u.nanometers,
                                             90 * u.nanometers,
                                             -180 * u.nanometers,
                                             180 * u.nanometers)

        assert (vol(50 * u.nanometers))
        assert (not vol(-70 * u.nanometers))
Beispiel #17
0
 def test_wrapped_volume(self):
     """max<min and both within periodic domain"""
     lambda_min = 70
     lambda_max = -150
     vol = volume.PeriodicCVDefinedVolume(op_id, lambda_min, lambda_max,
                                          -180, 180)
     assert vol.__str__() == ("{x|(Id(x) - -180) % 360 + -180 "
                              "in [-180, -150] union [70, 180]}")
     for periodic_image in [-1, 0, 1]:
         # out of state
         assert vol(lambda_min - 1.0 + 360 * periodic_image) is False
         assert vol(lambda_max + 1.0 + 360 * periodic_image) is False
         # in state
         assert vol(lambda_min + 1.0 + 360 * periodic_image) is True
         assert vol(lambda_max - 1.0 + 360 * periodic_image) is True
         # border
         assert vol(lambda_min + 360 * periodic_image) is True
         assert vol(lambda_max + 360 * periodic_image) is False
Beispiel #18
0
 def test_normal(self):
     """min<max and both within periodic domain"""
     lambda_min = -150
     lambda_max = 70
     vol = volume.PeriodicCVDefinedVolume(op_id, lambda_min, lambda_max,
                                          -180, 180)
     assert_equal(vol._period_len, 360)
     assert_equal(vol._period_shift, -180)
     assert_equal(vol.__str__(),
                  "{x|(Id(x) - -180) % 360 + -180 in [-150, 70]}")
     for periodic_image in [-1, 0, 1]:
         # out of state
         assert_equal(False, vol(lambda_min - 1.0 + 360 * periodic_image))
         assert_equal(False, vol(lambda_max + 1.0 + 360 * periodic_image))
         # in state
         assert_equal(True, vol(lambda_min + 1.0 + 360 * periodic_image))
         assert_equal(True, vol(lambda_max - 1.0 + 360 * periodic_image))
         # border
         assert_equal(True, vol(lambda_min + 360 * periodic_image))
         assert_equal(False, vol(lambda_max + 360 * periodic_image))
Beispiel #19
0
 def test_volume_bigger_than_bounds(self):
     '''max-min > pbc_range raises Exception'''
     with pytest.raises(Exception, match='Range of volume'):
         volume.PeriodicCVDefinedVolume(op_id, 90, 720, -180, 180)
Beispiel #20
0
 def test_volume_bigger_than_bounds(self):
     '''max-min > pbc_range raises Exception'''
     vol = volume.PeriodicCVDefinedVolume(op_id, 90, 720, -180, 180)