- initial work to put the Trajectory code into a separate object

This commit is contained in:
Paolo Tosco
2016-05-09 19:05:15 +01:00
parent 3bfe792653
commit 8b5176f8c9
20 changed files with 281 additions and 262 deletions

View File

@@ -13,7 +13,6 @@
#include <RDGeneral/Invariant.h>
#include <Numerics/Optimizer/BFGSOpt.h>
#include <Geometry/Trajectory.h>
namespace ForceFieldsHelper {
class calcEnergy {
@@ -186,7 +185,7 @@ int ForceField::minimize(unsigned int maxIts, double forceTol,
return minimize(0, NULL, maxIts, forceTol, energyTol);
}
int ForceField::minimize(unsigned int trajEverySteps, RDGeom::Trajectory *traj,
int ForceField::minimize(unsigned int trajEverySteps, std::vector<double *> *traj,
unsigned int maxIts, double forceTol, double energyTol) {
PRECONDITION(df_init, "not initialized");
PRECONDITION(static_cast<unsigned int>(d_numPoints) == d_positions.size(),

View File

@@ -131,7 +131,7 @@ class ForceField {
- 0: indicates success
- 1: the minimization did not converge in \c maxIts iterations.
*/
int minimize(unsigned int trajEverySteps, RDGeom::Trajectory *traj,
int minimize(unsigned int trajEverySteps, std::vector<double *> *traj,
unsigned int maxIts = 200, double forceTol = 1e-4,
double energyTol = 1e-6);
@@ -144,7 +144,7 @@ class ForceField {
will be stored after as many steps as indicated
through this parameter; defaults to 0 (no
trajectory stored)
\param traj the pointer to the Trajectory object where
\param traj a pointer to a std::vector<double *> where
coordinates will be stored
\return an integer value indicating whether or not the convergence

View File

@@ -1,6 +1,6 @@
rdkit_library(RDGeometryLib
point.cpp Transform2D.cpp Transform3D.cpp
Trajectory.cpp UniformGrid3D.cpp GridUtils.cpp
UniformGrid3D.cpp GridUtils.cpp
LINK_LIBRARIES DataStructs RDGeneral)
rdkit_headers(Grid3D.h
@@ -9,12 +9,10 @@ rdkit_headers(Grid3D.h
Transform2D.h
Transform3D.h
Transform.h
Trajectory.h
UniformGrid3D.h
Utils.h DEST Geometry)
rdkit_test(testTransforms testTransforms.cpp LINK_LIBRARIES RDGeometryLib DataStructs RDGeneral )
rdkit_test(testGrid testGrid.cpp LINK_LIBRARIES RDGeometryLib DataStructs RDGeneral )
rdkit_test(testTrajectory testTrajectory.cpp LINK_LIBRARIES RDGeometryLib RDGeneral )
add_subdirectory(Wrap)

View File

@@ -1,5 +1,5 @@
rdkit_python_extension(rdGeometry
Point.cpp Trajectory.cpp UniformGrid3D.cpp rdGeometry.cpp
Point.cpp UniformGrid3D.cpp rdGeometry.cpp
DEST Geometry
LINK_LIBRARIES RDGeometryLib DataStructs RDGeneral RDBoost)

View File

@@ -406,241 +406,6 @@ class TestCase(unittest.TestCase):
self.assertEqual(yi,2)
self.assertEqual(zi,1)
def testSnapshot(self):
s = geom.Snapshot([])
e = False
try:
s.GetPoint2D(12)
except:
e = True
self.assertTrue(e)
s = geom.Snapshot([0.0, 0.0, 0.0])
e = False
try:
s.GetPoint2D(0)
except:
e = True
self.assertTrue(e)
def testTrajectory2D(self):
dim = 2
np = 10
ns = 5
traj = geom.Trajectory(dim, np)
self.assertEqual(traj.Dimension(), dim)
self.assertEqual(traj.NumPoints(), np)
c = []
for i in range(np * dim):
c.append(float(i))
for i in range(ns):
traj.AddSnapshot(geom.Snapshot(c, float(i)))
self.assertEqual(len(traj), ns)
e = False
try:
traj.GetSnapshot(ns)
except:
e = True
self.assertTrue(e)
e = False
try:
traj.GetSnapshot(0).GetPoint2D(np)
except:
e = True
self.assertTrue(e)
for i in range(np):
self.assertAlmostEqual(traj.GetSnapshot(0).GetPoint2D(i).x, float(i * dim))
self.assertAlmostEqual(traj.GetSnapshot(0).GetPoint2D(i).y, float(i * dim + 1))
e = False
try:
self.assertAlmostEqual(traj.GetSnapshot(0).GetPoint3D(i).z, 0.0)
except:
e = True;
self.assertFalse(e)
for i in range(ns):
self.assertAlmostEqual(traj.GetSnapshot(i).GetEnergy(), float(i))
traj.RemoveSnapshot(0)
self.assertEqual(len(traj), ns - 1)
for i in range(ns - 1):
self.assertAlmostEqual(traj.GetSnapshot(i).GetEnergy(), float(i + 1))
traj.InsertSnapshot(0, geom.Snapshot(c, 999.0))
self.assertEqual(len(traj), ns)
copySnapshot = geom.Snapshot(traj.GetSnapshot(0))
traj.AddSnapshot(copySnapshot)
self.assertEqual(len(traj), ns + 1)
self.assertAlmostEqual(traj.GetSnapshot(0).GetEnergy(), 999.0)
self.assertAlmostEqual(traj.GetSnapshot(1).GetEnergy(), 1.0)
self.assertAlmostEqual(traj.GetSnapshot(len(traj) - 1).GetEnergy(), 999.0)
traj2 = geom.Trajectory(traj);
self.assertEqual(len(traj), len(traj2))
def testTrajectory3D(self):
dim = 3
np = 10
ns = 5
traj = geom.Trajectory(dim, np)
self.assertEqual(traj.Dimension(), dim)
self.assertEqual(traj.NumPoints(), np)
c = []
for i in range(np * dim):
c.append(float(i))
for i in range(ns):
traj.AddSnapshot(geom.Snapshot(c, float(i)))
self.assertEqual(len(traj), ns)
e = False
try:
traj.GetSnapshot(ns)
except:
e = True
self.assertTrue(e)
e = False
try:
traj.GetSnapshot(0).GetPoint2D(np)
except:
e = True
self.assertTrue(e)
for i in range(np):
self.assertAlmostEqual(traj.GetSnapshot(0).GetPoint3D(i).x, float(i * dim))
self.assertAlmostEqual(traj.GetSnapshot(0).GetPoint3D(i).y, float(i * dim + 1))
self.assertAlmostEqual(traj.GetSnapshot(0).GetPoint3D(i).z, float(i * dim + 2))
if (not i):
e = False
try:
traj.GetSnapshot(0).GetPoint2D(i)
except:
e = True
self.assertTrue(e)
for i in range(ns):
self.assertAlmostEqual(traj.GetSnapshot(i).GetEnergy(), float(i))
traj.RemoveSnapshot(0)
self.assertEqual(len(traj), ns - 1)
for i in range(ns - 1):
self.assertAlmostEqual(traj.GetSnapshot(i).GetEnergy(), float(i + 1))
traj.InsertSnapshot(0, geom.Snapshot(c, 999.0))
self.assertEqual(len(traj), ns)
copySnapshot = geom.Snapshot(traj.GetSnapshot(0))
traj.AddSnapshot(copySnapshot)
self.assertEqual(len(traj), ns + 1)
self.assertAlmostEqual(traj.GetSnapshot(0).GetEnergy(), 999.0)
self.assertAlmostEqual(traj.GetSnapshot(1).GetEnergy(), 1.0)
self.assertAlmostEqual(traj.GetSnapshot(len(traj) - 1).GetEnergy(), 999.0)
traj2 = geom.Trajectory(traj);
self.assertEqual(len(traj), len(traj2))
def testReadAmber(self):
rdbase = os.environ['RDBASE']
fName = os.path.join(rdbase, 'Code', 'Geometry', 'testData', 'water_coords_bad.trx')
traj = geom.Trajectory(2, 0)
ok = False
try:
geom.ReadAmberTrajectory(fName, traj)
except:
ok = True
self.assertTrue(ok)
traj = geom.Trajectory(3, 3)
ok = False
try:
geom.ReadAmberTrajectory(fName, traj)
except:
ok = True
self.assertTrue(ok)
fName = os.path.join(rdbase, 'Code', 'Geometry', 'testData', 'water_coords_bad2.trx')
ok = False
try:
traj = geom.Trajectory(3, 3)
geom.ReadAmberTrajectory(fName, traj)
except:
ok = True
self.assertTrue(ok)
fName = os.path.join(rdbase, 'Code', 'Geometry', 'testData', 'water_coords.trx')
traj = geom.Trajectory(3, 3)
geom.ReadAmberTrajectory(fName, traj)
self.assertEqual(len(traj), 1)
fName = os.path.join(rdbase, 'Code', 'Geometry', 'testData', 'water_coords2.trx')
traj = geom.Trajectory(3, 3)
geom.ReadAmberTrajectory(fName, traj)
self.assertEqual(len(traj), 2)
def testReadAmberPython(self):
# reimplemented the Amber trajectory reader in Python
# let's check we get the same data as the C++ reader
# (test for building a trajectory out of Snapshots from Python)
rdbase = os.environ['RDBASE']
fName = os.path.join(rdbase, 'Code', 'Geometry', 'testData', 'water_coords2.trx')
traj = geom.Trajectory(3, 3)
nCoords = traj.NumPoints() * 3
nSnapshots = 0
hnd = open(fName, 'r')
line = hnd.readline()
lineNum = 0
c = []
i = 0
while (line):
lineNum += 1
if (lineNum > 1):
tok = line.strip().split()
j = 0
while ((i < nCoords) and (j < len(tok))):
c.append(float(tok[j]))
j += 1
i += 1
if (i == nCoords):
nSnapshots += 1
traj.AddSnapshot(geom.Snapshot(c))
c = []
i = 0
line = ' '.join(tok[j:]) + ' '
else:
line = ''
else:
line = ''
line += hnd.readline()
hnd.close()
self.assertEqual(i, 0)
self.assertEqual(nSnapshots, 2)
traj2 = geom.Trajectory(3, 3)
geom.ReadAmberTrajectory(fName, traj2)
self.assertEqual(len(traj), len(traj2))
self.assertEqual(traj.NumPoints(), traj2.NumPoints())
for snapshotNum in range(len(traj)):
for pointNum in range(traj.NumPoints()):
for i in range(3):
self.assertEqual(traj.GetSnapshot(snapshotNum).GetPoint3D(pointNum)[i],
traj2.GetSnapshot(snapshotNum).GetPoint3D(pointNum)[i])
def testReadGromos(self):
rdbase = os.environ['RDBASE']
fName = os.path.join(rdbase, 'Code', 'Geometry', 'testData', 'water_coords_bad.trc')
traj = geom.Trajectory(2, 0)
ok = False
try:
geom.ReadGromosTrajectory(fName, traj)
except:
ok = True
self.assertTrue(ok)
traj = geom.Trajectory(3, 3)
ok = False
try:
geom.ReadGromosTrajectory(fName, traj)
except:
ok = True
self.assertTrue(ok)
fName = os.path.join(rdbase, 'Code', 'Geometry', 'testData', 'water_coords_bad2.trc')
ok = False
try:
traj = geom.Trajectory(3, 3)
geom.ReadGromosTrajectory(fName, traj)
except:
ok = True
self.assertTrue(ok)
fName = os.path.join(rdbase, 'Code', 'Geometry', 'testData', 'water_coords.trc')
traj = geom.Trajectory(3, 3)
geom.ReadGromosTrajectory(fName, traj)
self.assertEqual(len(traj), 1)
fName = os.path.join(rdbase, 'Code', 'Geometry', 'testData', 'water_coords2.trc')
traj = geom.Trajectory(3, 3)
geom.ReadGromosTrajectory(fName, traj)
self.assertEqual(len(traj), 2)
if __name__=='__main__':
print("Testing Geometry wrapper")
unittest.main()

View File

@@ -74,6 +74,7 @@ add_subdirectory(MMPA)
add_subdirectory(ReducedGraphs)
add_subdirectory(Trajectory)
if(RDK_BUILD_SLN_SUPPORT AND NOT CMAKE_COMPILER_IS_CLANG)
add_subdirectory(SLNParse)
@@ -110,3 +111,6 @@ rdkit_test(graphmolMemTest1 memtest1.cpp LINK_LIBRARIES SmilesParse GraphMol RDG
rdkit_test(resMolSupplierTest resMolSupplierTest.cpp
LINK_LIBRARIES SmilesParse GraphMol RDGeometryLib RDGeneral SubstructMatch FileParsers)
rdkit_test(trajectoryTest resMolSupplierTest.cpp
LINK_LIBRARIES SmilesParse GraphMol RDGeometryLib RDGeneral SubstructMatch FileParsers)

View File

@@ -15,7 +15,7 @@
#include <set>
#include "Trajectory.h"
namespace RDGeom {
namespace RDKit {
Snapshot::Snapshot(boost::shared_array<double> pos, double energy) :
d_trajectory(NULL),

View File

@@ -12,11 +12,11 @@
#define __RD_TRAJECTORY_H__
#include <vector>
#include <map>
#include "point.h"
#include "Geometry/point.h"
#include "boost/shared_ptr.hpp"
#include "boost/shared_array.hpp"
namespace RDGeom {
namespace RDKit {
class Trajectory;

View File

@@ -1,6 +1,6 @@
// $Id$
//
// Copyright (C) 2005-2013 Greg Landrum and Rational Discovery LLC
// Copyright (C) 2016 Sereina Riniker, Paolo Tosco
//
// @@ All Rights Reserved @@
// This file is part of the RDKit.
@@ -8,11 +8,11 @@
// which is included in the file license.txt, found at the root
// of the RDKit source tree.
//
#include "Trajectory.h"
#include "point.h"
#include "Geometry/point.h"
#include <RDGeneral/Invariant.h>
using namespace RDGeom;
using namespace RDKit;
void testSnapshot() {
@@ -180,7 +180,7 @@ void testReadAmber() {
BOOST_LOG(rdErrorLog) << "testReadAmber" << std::endl;
std::string rdbase = getenv("RDBASE");
std::string fName = rdbase + "/Code/Geometry/testData/water_coords_bad.trx";
std::string fName = rdbase + "/Code/GraphMol/testData/water_coords_bad.trx";
{
Trajectory traj(2, 0);
bool ok = false;
@@ -204,7 +204,7 @@ void testReadAmber() {
}
TEST_ASSERT(ok);
}
fName = rdbase + "/Code/Geometry/testData/water_coords_bad2.trx";
fName = rdbase + "/Code/GraphMol/testData/water_coords_bad2.trx";
{
bool ok = false;
try {
@@ -217,13 +217,13 @@ void testReadAmber() {
}
TEST_ASSERT(ok);
}
fName = rdbase + "/Code/Geometry/testData/water_coords.trx";
fName = rdbase + "/Code/GraphMol/testData/water_coords.trx";
{
Trajectory traj(3, 3);
readAmberTrajectory(fName, traj);
TEST_ASSERT(traj.size() == 1);
}
fName = rdbase + "/Code/Geometry/testData/water_coords2.trx";
fName = rdbase + "/Code/GraphMol/testData/water_coords2.trx";
{
Trajectory traj(3, 3);
readAmberTrajectory(fName, traj);
@@ -238,7 +238,7 @@ void testReadGromos() {
BOOST_LOG(rdErrorLog) << "testReadGromos" << std::endl;
std::string rdbase = getenv("RDBASE");
std::string fName = rdbase + "/Code/Geometry/testData/water_coords_bad.trc";
std::string fName = rdbase + "/Code/GraphMol/testData/water_coords_bad.trc";
{
Trajectory traj(2, 0);
bool ok = false;
@@ -262,7 +262,7 @@ void testReadGromos() {
}
TEST_ASSERT(ok);
}
fName = rdbase + "/Code/Geometry/testData/water_coords_bad2.trc";
fName = rdbase + "/Code/GraphMol/testData/water_coords_bad2.trc";
{
bool ok = false;
try {
@@ -275,13 +275,13 @@ void testReadGromos() {
}
TEST_ASSERT(ok);
}
fName = rdbase + "/Code/Geometry/testData/water_coords.trc";
fName = rdbase + "/Code/GraphMol/testData/water_coords.trc";
{
Trajectory traj(3, 3);
readGromosTrajectory(fName, traj);
TEST_ASSERT(traj.size() == 1);
}
fName = rdbase + "/Code/Geometry/testData/water_coords2.trc";
fName = rdbase + "/Code/GraphMol/testData/water_coords2.trc";
{
Trajectory traj(3, 3);
readGromosTrajectory(fName, traj);

View File

@@ -15,7 +15,7 @@
namespace python = boost::python;
namespace RDGeom {
namespace RDKit {
Snapshot *getSnapshot_wrap(Trajectory *traj, unsigned int snapshotNum) {
return new Snapshot(traj->getSnapshot(snapshotNum));

View File

@@ -0,0 +1,251 @@
from __future__ import print_function
import os,sys
import unittest
from rdkit import RDConfig
def feq(v1, v2, tol=1.0e-4):
return abs(v1-v2) < tol
class TestCase(unittest.TestCase):
def setUp(self) :
pass
def testSnapshot(self):
s = Snapshot([])
e = False
try:
s.GetPoint2D(12)
except:
e = True
self.assertTrue(e)
s = Snapshot([0.0, 0.0, 0.0])
e = False
try:
s.GetPoint2D(0)
except:
e = True
self.assertTrue(e)
def testTrajectory2D(self):
dim = 2
np = 10
ns = 5
traj = Trajectory(dim, np)
self.assertEqual(traj.Dimension(), dim)
self.assertEqual(traj.NumPoints(), np)
c = []
for i in range(np * dim):
c.append(float(i))
for i in range(ns):
traj.AddSnapshot(Snapshot(c, float(i)))
self.assertEqual(len(traj), ns)
e = False
try:
traj.GetSnapshot(ns)
except:
e = True
self.assertTrue(e)
e = False
try:
traj.GetSnapshot(0).GetPoint2D(np)
except:
e = True
self.assertTrue(e)
for i in range(np):
self.assertAlmostEqual(traj.GetSnapshot(0).GetPoint2D(i).x, float(i * dim))
self.assertAlmostEqual(traj.GetSnapshot(0).GetPoint2D(i).y, float(i * dim + 1))
e = False
try:
self.assertAlmostEqual(traj.GetSnapshot(0).GetPoint3D(i).z, 0.0)
except:
e = True;
self.assertFalse(e)
for i in range(ns):
self.assertAlmostEqual(traj.GetSnapshot(i).GetEnergy(), float(i))
traj.RemoveSnapshot(0)
self.assertEqual(len(traj), ns - 1)
for i in range(ns - 1):
self.assertAlmostEqual(traj.GetSnapshot(i).GetEnergy(), float(i + 1))
traj.InsertSnapshot(0, Snapshot(c, 999.0))
self.assertEqual(len(traj), ns)
copySnapshot = Snapshot(traj.GetSnapshot(0))
traj.AddSnapshot(copySnapshot)
self.assertEqual(len(traj), ns + 1)
self.assertAlmostEqual(traj.GetSnapshot(0).GetEnergy(), 999.0)
self.assertAlmostEqual(traj.GetSnapshot(1).GetEnergy(), 1.0)
self.assertAlmostEqual(traj.GetSnapshot(len(traj) - 1).GetEnergy(), 999.0)
traj2 = Trajectory(traj);
self.assertEqual(len(traj), len(traj2))
def testTrajectory3D(self):
dim = 3
np = 10
ns = 5
traj = Trajectory(dim, np)
self.assertEqual(traj.Dimension(), dim)
self.assertEqual(traj.NumPoints(), np)
c = []
for i in range(np * dim):
c.append(float(i))
for i in range(ns):
traj.AddSnapshot(Snapshot(c, float(i)))
self.assertEqual(len(traj), ns)
e = False
try:
traj.GetSnapshot(ns)
except:
e = True
self.assertTrue(e)
e = False
try:
traj.GetSnapshot(0).GetPoint2D(np)
except:
e = True
self.assertTrue(e)
for i in range(np):
self.assertAlmostEqual(traj.GetSnapshot(0).GetPoint3D(i).x, float(i * dim))
self.assertAlmostEqual(traj.GetSnapshot(0).GetPoint3D(i).y, float(i * dim + 1))
self.assertAlmostEqual(traj.GetSnapshot(0).GetPoint3D(i).z, float(i * dim + 2))
if (not i):
e = False
try:
traj.GetSnapshot(0).GetPoint2D(i)
except:
e = True
self.assertTrue(e)
for i in range(ns):
self.assertAlmostEqual(traj.GetSnapshot(i).GetEnergy(), float(i))
traj.RemoveSnapshot(0)
self.assertEqual(len(traj), ns - 1)
for i in range(ns - 1):
self.assertAlmostEqual(traj.GetSnapshot(i).GetEnergy(), float(i + 1))
traj.InsertSnapshot(0, Snapshot(c, 999.0))
self.assertEqual(len(traj), ns)
copySnapshot = Snapshot(traj.GetSnapshot(0))
traj.AddSnapshot(copySnapshot)
self.assertEqual(len(traj), ns + 1)
self.assertAlmostEqual(traj.GetSnapshot(0).GetEnergy(), 999.0)
self.assertAlmostEqual(traj.GetSnapshot(1).GetEnergy(), 1.0)
self.assertAlmostEqual(traj.GetSnapshot(len(traj) - 1).GetEnergy(), 999.0)
traj2 = Trajectory(traj);
self.assertEqual(len(traj), len(traj2))
def testReadAmber(self):
rdbase = os.environ['RDBASE']
fName = os.path.join(rdbase, 'Code', 'GraphMol', 'test_data', 'water_coords_bad.trx')
traj = Trajectory(2, 0)
ok = False
try:
ReadAmberTrajectory(fName, traj)
except:
ok = True
self.assertTrue(ok)
traj = Trajectory(3, 3)
ok = False
try:
ReadAmberTrajectory(fName, traj)
except:
ok = True
self.assertTrue(ok)
fName = os.path.join(rdbase, 'Code', 'GraphMol', 'test_data', 'water_coords_bad2.trx')
ok = False
try:
traj = Trajectory(3, 3)
ReadAmberTrajectory(fName, traj)
except:
ok = True
self.assertTrue(ok)
fName = os.path.join(rdbase, 'Code', 'GraphMol', 'test_data', 'water_coords.trx')
traj = Trajectory(3, 3)
ReadAmberTrajectory(fName, traj)
self.assertEqual(len(traj), 1)
fName = os.path.join(rdbase, 'Code', 'GraphMol', 'test_data', 'water_coords2.trx')
traj = Trajectory(3, 3)
ReadAmberTrajectory(fName, traj)
self.assertEqual(len(traj), 2)
def testReadAmberPython(self):
# reimplemented the Amber trajectory reader in Python
# let's check we get the same data as the C++ reader
# (test for building a trajectory out of Snapshots from Python)
rdbase = os.environ['RDBASE']
fName = os.path.join(rdbase, 'Code', 'GraphMol', 'test_data', 'water_coords2.trx')
traj = Trajectory(3, 3)
nCoords = traj.NumPoints() * 3
nSnapshots = 0
hnd = open(fName, 'r')
line = hnd.readline()
lineNum = 0
c = []
i = 0
while (line):
lineNum += 1
if (lineNum > 1):
tok = line.strip().split()
j = 0
while ((i < nCoords) and (j < len(tok))):
c.append(float(tok[j]))
j += 1
i += 1
if (i == nCoords):
nSnapshots += 1
traj.AddSnapshot(Snapshot(c))
c = []
i = 0
line = ' '.join(tok[j:]) + ' '
else:
line = ''
else:
line = ''
line += hnd.readline()
hnd.close()
self.assertEqual(i, 0)
self.assertEqual(nSnapshots, 2)
traj2 = Trajectory(3, 3)
ReadAmberTrajectory(fName, traj2)
self.assertEqual(len(traj), len(traj2))
self.assertEqual(traj.NumPoints(), traj2.NumPoints())
for snapshotNum in range(len(traj)):
for pointNum in range(traj.NumPoints()):
for i in range(3):
self.assertEqual(traj.GetSnapshot(snapshotNum).GetPoint3D(pointNum)[i],
traj2.GetSnapshot(snapshotNum).GetPoint3D(pointNum)[i])
def testReadGromos(self):
rdbase = os.environ['RDBASE']
fName = os.path.join(rdbase, 'Code', 'GraphMol', 'test_data', 'water_coords_bad.trc')
traj = Trajectory(2, 0)
ok = False
try:
ReadGromosTrajectory(fName, traj)
except:
ok = True
self.assertTrue(ok)
traj = Trajectory(3, 3)
ok = False
try:
ReadGromosTrajectory(fName, traj)
except:
ok = True
self.assertTrue(ok)
fName = os.path.join(rdbase, 'Code', 'GraphMol', 'test_data', 'water_coords_bad2.trc')
ok = False
try:
traj = Trajectory(3, 3)
ReadGromosTrajectory(fName, traj)
except:
ok = True
self.assertTrue(ok)
fName = os.path.join(rdbase, 'Code', 'GraphMol', 'test_data', 'water_coords.trc')
traj = Trajectory(3, 3)
ReadGromosTrajectory(fName, traj)
self.assertEqual(len(traj), 1)
fName = os.path.join(rdbase, 'Code', 'GraphMol', 'test_data', 'water_coords2.trc')
traj = Trajectory(3, 3)
ReadGromosTrajectory(fName, traj)
self.assertEqual(len(traj), 2)
if __name__=='__main__':
print("Testing Trajectory wrapper")
unittest.main()

View File

@@ -22,7 +22,6 @@
#include <GraphMol/ForceFieldHelpers/MMFF/AtomTyper.h>
#include <GraphMol/ForceFieldHelpers/MMFF/Builder.h>
#include <ForceField/ForceField.h>
#include <Geometry/Trajectory.h>
#include <sstream>
#include <iostream>
@@ -932,6 +931,7 @@ void test1() {
}
}
#if 0
void testAddConformersFromTrajectory() {
BOOST_LOG(rdInfoLog) << "-----------------------\n";
BOOST_LOG(rdInfoLog) << "Testing adding conformers from a trajectory" << std::endl;
@@ -1187,6 +1187,7 @@ void testAddConformersFromGromosTrajectory() {
delete mol;
BOOST_LOG(rdErrorLog) << "done" << std::endl;
}
#endif
void testPeriodicTable() {
BOOST_LOG(rdInfoLog) << "-----------------------\n";
@@ -1523,9 +1524,6 @@ int main() {
// boost::logging::enable_logs("rdApp.info");
#if 1
test1();
testAddConformersFromTrajectory();
testAddConformersFromAmberTrajectory();
testAddConformersFromGromosTrajectory();
testPropLeak();
testMolProps();
testAtomProps();
@@ -1535,6 +1533,10 @@ int main() {
testIssue1993296();
testIssue2381580();
testIssue2840217();
#else
testAddConformersFromTrajectory();
testAddConformersFromAmberTrajectory();
testAddConformersFromGromosTrajectory();
#endif
testPeriodicTable();
testAddAtomWithConf();