Skip to content

Commit 31f073e

Browse files
committedJan 13, 2022
Allow even number of samples
1 parent 9a504b4 commit 31f073e

File tree

2 files changed

+13
-8
lines changed

2 files changed

+13
-8
lines changed
 

‎simphony/simulation.py

+12-4
Original file line numberDiff line numberDiff line change
@@ -286,17 +286,25 @@ def sample(self, num_samples: int = 1) -> np.ndarray:
286286
be the theoretical value of the circuit. If more than one sample is
287287
taken, they will vary based on simulated noise.
288288
"""
289-
# we enforce an odd number of samples so filter implementation is easy
289+
# filtering requires an odd number of samples.
290+
# if they want an even number, we will add one and then remove a
291+
# sample at the end
292+
_num_samples = num_samples
290293
if num_samples % 2 == 0:
291-
raise ValueError("`num_samples` must be an odd number.")
294+
_num_samples += 1
292295

293296
# if we are taking more than one sample, include noise
294-
self.num_samples = num_samples
297+
self.num_samples = _num_samples
295298
self.noise = self.num_samples > 1
296299

297300
# sample the signals
298301
signals = self._get_signals()
299-
return signals
302+
303+
# remove the extra sample if we added one
304+
if _num_samples != num_samples:
305+
return signals[:, :, :num_samples]
306+
else:
307+
return signals
300308

301309
@classmethod
302310
def get_context(cls) -> "Simulation":

‎simphony/tests/test_simulation.py

+1-4
Original file line numberDiff line numberDiff line change
@@ -196,10 +196,7 @@ def test_sampling(self, mzi):
196196
Laser().connect(gc_input)
197197
Detector().connect(gc_output)
198198

199-
with pytest.raises(Exception) as _:
200-
# sample only takes odd numbers
201-
sim1.sample(100)
202-
199+
assert len(sim1.sample(100)[0][0]) == 100
203200
assert len(sim1.sample(101)[0][0]) == 101
204201

205202
def test_seed(self, mzi):

0 commit comments

Comments
 (0)