class TestSimulator(nengo_mpi.Simulator): """ Simulator for testing C++ operators. Note that this Simulator does not need to be closed as nengo_mpi.Simulator does. Parameters ---------- operators: list List of python operators. signal_probes: list List of SignalProbes. """ def __init__( self, operators, signal_probes, dt=0.001, seed=None): self.runnable = True self.dt = dt assignments = defaultdict(int) print "Building MPI model..." self.model = MpiModel(1, assignments, dt=dt, label="TestSimulator") self.model.assign_ops(0, operators) for probe in signal_probes: self.model.sig[probe]['in'] = probe.signal self.model.probes = signal_probes print "Finalizing MPI model..." self.model.finalize_build() # probe -> python list self._probe_outputs = self.model.params self.data = ProbeDict(self._probe_outputs) print "TestSimulator ready." seed = np.random.randint(npext.maxint) if seed is None else seed self.reset(seed=seed) def run_steps(self, steps, progress_bar=False, log_filename=""): """Simulate for the given number of `dt` steps.""" if progress_bar: raise Exception( "TestSimulator does not allow showing the progress bar.") if log_filename: raise Exception("TestSimulator cannot use log-files.") super(TestSimulator, self).run_steps(steps, False, "") def run(self, time_in_seconds, progress_bar=False, log_filename=""): """Simulate for the given length of time.""" if progress_bar: raise Exception( "TestSimulator does not allow showing the progress bar.") if log_filename: raise Exception("TestSimulator cannot use log-files.") super(TestSimulator, self).run(time_in_seconds, False, "")