def test4GridPickles(self):
        grd = geom.UniformGrid3D(10.0, 9.0, 8.0, 0.5)
        self.assertTrue(grd.GetNumX() == 20)
        self.assertTrue(grd.GetNumY() == 18)
        self.assertTrue(grd.GetNumZ() == 16)
        grd.SetSphereOccupancy(geom.Point3D(-2.0, -2.0, 0.0), 1.5, 0.25)
        grd.SetSphereOccupancy(geom.Point3D(-2.0, 2.0, 0.0), 1.5, 0.25)
        grd.SetSphereOccupancy(geom.Point3D(2.0, -2.0, 0.0), 1.5, 0.25)
        grd.SetSphereOccupancy(geom.Point3D(2.0, 2.0, 0.0), 1.5, 0.25)

        self.assertTrue(geom.TanimotoDistance(grd, grd) == 0.0)

        grd2 = pickle.loads(pickle.dumps(grd))
        self.assertTrue(grd2.GetNumX() == 20)
        self.assertTrue(grd2.GetNumY() == 18)
        self.assertTrue(grd2.GetNumZ() == 16)
        self.assertTrue(geom.TanimotoDistance(grd, grd2) == 0.0)
Example #2
0
    def test3UniformGrid(self):
        ugrid = geom.UniformGrid3D(20, 18, 15)
        self.failUnless(ugrid.GetNumX() == 40)
        self.failUnless(ugrid.GetNumY() == 36)
        self.failUnless(ugrid.GetNumZ() == 30)
        dvect = ugrid.GetOccupancyVect()
        ugrid = geom.UniformGrid3D(20, 18, 15, 0.5,
                                   DataStructs.DiscreteValueType.TWOBITVALUE)
        dvect = ugrid.GetOccupancyVect()
        self.failUnless(
            dvect.GetValueType() == DataStructs.DiscreteValueType.TWOBITVALUE)

        grd = geom.UniformGrid3D(10.0, 10.0, 10.0, 0.5)
        grd.SetSphereOccupancy(geom.Point3D(-2.0, -2.0, 0.0), 1.5, 0.25)
        grd.SetSphereOccupancy(geom.Point3D(-2.0, 2.0, 0.0), 1.5, 0.25)
        grd.SetSphereOccupancy(geom.Point3D(2.0, -2.0, 0.0), 1.5, 0.25)
        grd.SetSphereOccupancy(geom.Point3D(2.0, 2.0, 0.0), 1.5, 0.25)

        geom.WriteGridToFile(grd, "junk.grd")
        grd2 = geom.UniformGrid3D(10.0, 10.0, 10.0, 0.5)
        grd2.SetSphereOccupancy(geom.Point3D(-2.0, -2.0, 0.0), 1.5, 0.25)
        grd2.SetSphereOccupancy(geom.Point3D(-2.0, 2.0, 0.0), 1.5, 0.25)
        grd2.SetSphereOccupancy(geom.Point3D(2.0, -2.0, 0.0), 1.5, 0.25)

        dist = geom.TanimotoDistance(grd, grd2)
        self.failUnless(dist == 0.25)
        dist = geom.ProtrudeDistance(grd, grd2)
        self.failUnless(dist == 0.25)
        dist = geom.ProtrudeDistance(grd2, grd)
        self.failUnless(dist == 0.0)

        grd2 = geom.UniformGrid3D(10.0, 10.0, 10.0, 0.5,
                                  DataStructs.DiscreteValueType.FOURBITVALUE)
        grd2.SetSphereOccupancy(geom.Point3D(-2.0, -2.0, 0.0), 1.5, 0.25, 3)
        grd2.SetSphereOccupancy(geom.Point3D(-2.0, 2.0, 0.0), 1.5, 0.25, 3)
        grd2.SetSphereOccupancy(geom.Point3D(2.0, -2.0, 0.0), 1.5, 0.25, 3)
        self.failUnlessRaises(ValueError,
                              lambda: geom.TanimotoDistance(grd, grd2))

        grd2 = geom.UniformGrid3D(10.0, 10.0, 10.0, 1.0)
        self.failUnlessRaises(ValueError,
                              lambda: geom.TanimotoDistance(grd, grd2))

        grd2 = geom.UniformGrid3D(11.0, 10.0, 10.0, 1.0)
        self.failUnlessRaises(ValueError,
                              lambda: geom.TanimotoDistance(grd, grd2))
    def test5GridOps(self):
        grd = geom.UniformGrid3D(10, 10, 10)
        grd.SetSphereOccupancy(geom.Point3D(-2.0, -2.0, 0.0), 1.0, 0.25)
        grd.SetSphereOccupancy(geom.Point3D(-2.0, 2.0, 0.0), 1.0, 0.25)

        grd2 = geom.UniformGrid3D(10, 10, 10)
        grd2.SetSphereOccupancy(geom.Point3D(2.0, -2.0, 0.0), 1.0, 0.25)
        grd2.SetSphereOccupancy(geom.Point3D(2.0, 2.0, 0.0), 1.0, 0.25)

        self.assertTrue(geom.TanimotoDistance(grd, grd) == 0.0)
        self.assertTrue(geom.TanimotoDistance(grd, grd2) == 1.0)

        grd3 = copy.deepcopy(grd)
        grd3 |= grd2
        self.assertTrue(geom.TanimotoDistance(grd3, grd) == .5)
        self.assertTrue(geom.TanimotoDistance(grd3, grd2) == .5)

        grd3 = copy.deepcopy(grd)
        grd3 += grd2
        self.assertTrue(geom.TanimotoDistance(grd3, grd) == .5)
        self.assertTrue(geom.TanimotoDistance(grd3, grd2) == .5)

        grd3 -= grd
        self.assertTrue(geom.TanimotoDistance(grd3, grd) == 1.0)
        self.assertTrue(geom.TanimotoDistance(grd3, grd2) == 0)

        grd4 = geom.UniformGrid3D(10, 10, 10)
        grd4.SetSphereOccupancy(geom.Point3D(-2.0, -2.0, 0.0), 1.0, 0.25)
        grd4.SetSphereOccupancy(geom.Point3D(-2.0, 2.0, 0.0), 1.0, 0.25)
        grd4.SetSphereOccupancy(geom.Point3D(2.0, -2.0, 0.0), 1.0, 0.25)
        self.assertTrue(feq(geom.TanimotoDistance(grd4, grd), .3333))
        self.assertTrue(feq(geom.TanimotoDistance(grd4, grd2), .75))

        grd4 &= grd2
        self.assertTrue(feq(geom.TanimotoDistance(grd4, grd), 1.0))
        self.assertTrue(feq(geom.TanimotoDistance(grd4, grd2), .5))