mc = RigidBodyMC( UniformSampler(all_mols) ) mc.setMaximumTranslation( 0.1 * angstrom ) volmc = VolumeMove( MapAsMolecules(all_mols) ) volmc.setVolumeChangingFunction( UniformVolumeChange(50 * angstrom3) ) moves = WeightedMoves() moves.add(mc, 125) moves.add(volmc, 1) for i in range(1,1001): print("Running block %d" % i) timer.start() moves = system.run(moves, 100000) print("Took %d ms" % timer.elapsed()) print("Energy = %f | Volume = %f" % (system.forceFields().energy(), system.info().space().volume())) print("MC Accept %d Reject %d" % (moves.moves()[0].clone().nAccepted(), moves.moves()[0].clone().nRejected())) print("VMC Accept %d Reject %d" % (moves.moves()[1].clone().nAccepted(), moves.moves()[1].clone().nRejected())) PDB().write(system.forceFields().molecules(), "test%0004d.pdb" % i)
system = System(all_mols, ffields) system.setSpace(space) mc = RigidBodyMC(UniformSampler(all_mols)) mc.setMaximumTranslation(0.1 * angstrom) volmc = VolumeMove(MapAsMolecules(all_mols)) volmc.setVolumeChangingFunction(UniformVolumeChange(50 * angstrom3)) moves = WeightedMoves() moves.add(mc, 125) moves.add(volmc, 1) for i in range(1, 1001): print("Running block %d" % i) timer.start() moves = system.run(moves, 100000) print("Took %d ms" % timer.elapsed()) print("Energy = %f | Volume = %f" % (system.forceFields().energy(), system.info().space().volume())) print("MC Accept %d Reject %d" % (moves.moves()[0].clone().nAccepted(), moves.moves()[0].clone().nRejected())) print("VMC Accept %d Reject %d" % (moves.moves()[1].clone().nAccepted(), moves.moves()[1].clone().nRejected())) PDB().write(system.forceFields().molecules(), "test%0004d.pdb" % i)
# rigid body moves of the solvent using e_fast, then accepts # or rejects the whole block of moves using e_total mtsmc = MTSMC(mc, e_fast.function(), 500) mtsmc.setEnergyComponent(e_total.function()) PDB().write(system.info().groups().molecules(), "test000.pdb") for i in range(1, 21): nmoves = 1000 print("Block %d: Running %d moves" % (i, nmoves)) timer.start() moves = system.run(mtsmc, nmoves) ms = timer.elapsed() print("%d moves took %d ms" % (nmoves, ms)) PDB().write(system.info().groups().molecules(), "test%3.3d.pdb" % i) mtsmc = moves.moves()[0].clone() print("%d accepted, %d rejected, ratio == %f %%" % \ (mtsmc.nAccepted(), mtsmc.nRejected(), mtsmc.acceptanceRatio())) # check that the QM and MM energies have been conserved... new_molpro = MolproFF(space, switchfunc) new_molpro.setMolproExe(qmff.molproExe())
system = System(groups, ffields, monitors) mc = RigidBodyMC(UniformSampler(solute)) mc.setTemperature(25 * celsius) mc.setMaximumTranslation(0.3 * angstrom) #for i in range(0,50): # moves = system.run(mc, 10000) # # mc = moves.moves()[0].clone() # print "%d accepted, %d rejected, ratio = %f %%" % \ # (mc.nAccepted(), mc.nRejected(), 100 * mc.acceptanceRatio()) # # print system.monitors().monitor(ffields.total()).average() mtsmc = MTSMC(mc, e_fast.function(), 500) mtsmc.setEnergyComponent(e_slow.function()) for i in range(0, 5000): moves = system.run(mtsmc, 20) mtsmc = moves.moves()[0].clone() print("%d accepted, %d rejected, ratio = %f %%" % \ (mtsmc.nAccepted(), mtsmc.nRejected(), 100 * mtsmc.acceptanceRatio())) print("AVGENERGY: %f" % system.monitors().monitor(ffields.total()).average()) print("ENERGY: %f" % system.forceFields().energy()) sys.stdout.flush()
# rigid body moves of the solvent using e_fast, then accepts # or rejects the whole block of moves using e_total mtsmc = MTSMC(mc, e_fast.function(), 500) mtsmc.setEnergyComponent(e_total.function()) PDB().write(system.info().groups().molecules(), "test000.pdb") for i in range(1, 21): nmoves = 1000 print("Block %d: Running %d moves" % (i, nmoves)) timer.start() moves = system.run(mtsmc, nmoves) ms = timer.elapsed() print("%d moves took %d ms" % (nmoves, ms)) PDB().write(system.info().groups().molecules(), "test%3.3d.pdb" % i) mtsmc = moves.moves()[0].clone() print("%d accepted, %d rejected, ratio == %f %%" % (mtsmc.nAccepted(), mtsmc.nRejected(), mtsmc.acceptanceRatio())) # check that the QM and MM energies have been conserved... new_molpro = MolproFF(space, switchfunc) new_molpro.setMolproExe(qmff.molproExe()) new_molpro.setEnergyOrigin(qmff.energyOrigin())
system = System(groups, ffields, monitors) mc = RigidBodyMC( UniformSampler(solute) ) mc.setTemperature( 25 * celsius ) mc.setMaximumTranslation( 0.3 * angstrom ) #for i in range(0,50): # moves = system.run(mc, 10000) # # mc = moves.moves()[0].clone() # print "%d accepted, %d rejected, ratio = %f %%" % \ # (mc.nAccepted(), mc.nRejected(), 100 * mc.acceptanceRatio()) # # print system.monitors().monitor(ffields.total()).average() mtsmc = MTSMC(mc, e_fast.function(), 500) mtsmc.setEnergyComponent(e_slow.function()) for i in range(0,5000): moves = system.run(mtsmc, 20) mtsmc = moves.moves()[0].clone() print("%d accepted, %d rejected, ratio = %f %%" % \ (mtsmc.nAccepted(), mtsmc.nRejected(), 100 * mtsmc.acceptanceRatio())) print("AVGENERGY: %f" % system.monitors().monitor(ffields.total()).average()) print("ENERGY: %f" % system.forceFields().energy()) sys.stdout.flush()