Skip to content

Commit

Permalink
Merge dae388f into c267f1e
Browse files Browse the repository at this point in the history
  • Loading branch information
lh64 committed Jan 25, 2019
2 parents c267f1e + dae388f commit cb64362
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 4 deletions.
4 changes: 2 additions & 2 deletions pysb/bng.py
Expand Up @@ -225,7 +225,7 @@ def read_simulation_results_multi(base_filenames):

# Read concentrations data
try:
cdat_arr = numpy.loadtxt(base_filename + '.cdat', skiprows=1)
cdat_arr = numpy.loadtxt(base_filename + '.cdat', skiprows=1, ndmin=2)
# -1 for time column
names += ['__s%d' % i for i in range(cdat_arr.shape[1] - 1)]
except IOError:
Expand All @@ -237,7 +237,7 @@ def read_simulation_results_multi(base_filenames):
# Exclude \# and time column
names += f.readline().split()[2:]
# Exclude first column (time)
gdat_arr = numpy.loadtxt(f)
gdat_arr = numpy.loadtxt(f, ndmin=2)
if cdat_arr is None:
cdat_arr = numpy.ndarray((len(gdat_arr), 0))
else:
Expand Down
5 changes: 4 additions & 1 deletion pysb/simulator/bng.py
Expand Up @@ -228,7 +228,10 @@ def run(self, tspan=None, initials=None, param_values=None, n_runs=1,
1:(len(self.model.species) + 1)])
if len(self.model.observables) or len(self.model.expressions):
obs_exp_out.append(yfull_view[:,
(len(self.model.species) + 1):])
(len(self.model.species) + 1):
(len(self.model.species) + 1) +
len(self.model.observables) +
len(self.model.expressions_dynamic())])

return SimulationResult(self, tout=tout, trajectories=species_out,
observables_and_expressions=obs_exp_out,
Expand Down
20 changes: 19 additions & 1 deletion pysb/tests/test_simulator_bng.py
@@ -1,6 +1,6 @@
from pysb.testing import *
import numpy as np
from pysb import Monomer, Parameter, Initial, Observable, Rule
from pysb import Monomer, Parameter, Initial, Observable, Rule, Expression
from pysb.simulator.bng import BngSimulator, PopulationMap
from pysb.bng import generate_equations
from pysb.examples import robertson, expression_observables, earm_1_0
Expand Down Expand Up @@ -122,3 +122,21 @@ def test_hpp():
seed=_BNG_SEED)
observables = np.array(x.observables)
assert len(observables) == 50


def test_stop_if():
Model()
Monomer('A')
Rule('A_synth', None >> A(), Parameter('k', 1))
Observable('Atot', A())
Expression('exp_const', k + 1)
Expression('exp_dyn', Atot + 1)
sim = BngSimulator(model, verbose=5)
tspan = np.linspace(0, 100, 101)
x = sim.run(tspan, stop_if='Atot>9', seed=_BNG_SEED)
# All except the last Atot value should be <=9
assert all(x.observables['Atot'][:-1] <= 9)
assert x.observables['Atot'][-1] > 9
# Starting with Atot > 9 should terminate simulation immediately
y = sim.run(tspan, initials=x.species[-1], stop_if='Atot>9')
assert len(y.observables) == 1

0 comments on commit cb64362

Please sign in to comment.