// $Id$ // // Copyright (C) 2005-2008 Greg Landrum and Rational Discovery LLC // // @@ All Rights Reserved @@ // This file is part of the RDKit. // The contents are covered by the terms of the BSD license // which is included in the file license.txt, found at the root // of the RDKit source tree. // #include "UniformGrid3D.h" #include #include "point.h" #include #include #include "GridUtils.h" #include #include #include #include #include using namespace RDGeom; using namespace RDKit; void testUniformGrid1() { UniformGrid3D grd(6.0, 5.0, 4.0); CHECK_INVARIANT(grd.getSize() == 960, ""); CHECK_INVARIANT(RDKit::feq(grd.getSpacing(), .5), ""); CHECK_INVARIANT(grd.getNumX()==12, ""); CHECK_INVARIANT(grd.getNumY()==10, ""); CHECK_INVARIANT(grd.getNumZ()==8, ""); grd.setSphereOccupancy(Point3D(0.0, 0.0, 0.0), 1.5, 0.25); CHECK_INVARIANT(grd.getOccupancyVect()->getTotalVal() == 523, "" ); //writeGridToFile(grd, "junk.grd"); UniformGrid3D grd2(grd); CHECK_INVARIANT(grd2.getSize() == 960, ""); CHECK_INVARIANT(RDKit::feq(grd2.getSpacing(), .5), ""); CHECK_INVARIANT(grd2.getNumX()==12, ""); CHECK_INVARIANT(grd2.getNumY()==10, ""); CHECK_INVARIANT(grd2.getNumZ()==8, ""); CHECK_INVARIANT(grd2.getOccupancyVect()->getTotalVal() == 523, "" ); // make sure the data are actually decoupled: grd.setSphereOccupancy(Point3D(1.0, 1.0, 0.0), 1.5, 0.25); CHECK_INVARIANT(grd.getOccupancyVect()->getTotalVal()>523, "" ); CHECK_INVARIANT(grd2.getOccupancyVect()->getTotalVal() == 523, "" ); } void testUniformGrid2() { // test distance metrics: UniformGrid3D grd(10.0, 10.0, 10.0); grd.setSphereOccupancy(Point3D(-2.0, -2.0, 0.0), 1.5, 0.25); grd.setSphereOccupancy(Point3D(-2.0, 2.0, 0.0), 1.5, 0.25); grd.setSphereOccupancy(Point3D(2.0, -2.0, 0.0), 1.5, 0.25); grd.setSphereOccupancy(Point3D(2.0, 2.0, 0.0), 1.5, 0.25); writeGridToFile(grd, "junk.grd"); #if 1 std::ofstream outS; outS.open("junk.bin",std::ios_base::binary); std::string pkl=grd.toString(); unsigned int sz=pkl.size(); outS<> length; char *buff = new char[length]; unsigned int nRead=0; while(nRead