def resume(self, options=None): """ """ ReplicaExchange.resume(self, options=options) # # Cache Context and integrator. # # Use first state as reference state. state = self.states[0] # If temperature and pressure are specified, make sure MonteCarloBarostat is attached. if state.temperature and state.pressure: forces = { state.system.getForce(index).__class__.__name__ : state.system.getForce(index) for index in range(state.system.getNumForces()) } if 'MonteCarloAnisotropicBarostat' in forces: raise Exception('MonteCarloAnisotropicBarostat is unsupported.') if 'MonteCarloBarostat' in forces: barostat = forces['MonteCarloBarostat'] # Set temperature and pressure. barostat.setTemperature(state.temperature) barostat.setDefaultPressure(state.pressure) barostat.setRandomNumberSeed(int(np.random.randint(0, MAX_SEED))) else: # Create barostat and add it to the system if it doesn't have one already. barostat = openmm.MonteCarloBarostat(state.pressure, state.temperature) barostat.setRandomNumberSeed(int(np.random.randint(0, MAX_SEED))) state.system.addForce(barostat)