@@ -169,51 +169,48 @@ def test_wrong_observers(case):
169
169
def test_incorporate_unincorporate (case ):
170
170
cgpm = VsCGpm (outputs = [0 ,1 ], inputs = [3 ], source = case .source , mode = case .mode )
171
171
172
- OBS = [[1.2 , .2 ], [1 , 4 ]]
173
- EV = [0 , 2 ]
174
-
175
- rowid = 0
172
+ observations = [[1.2 , .2 ], [1 , 4 ]]
173
+ inputs = [0 , 2 ]
174
+ rowid0 = 0
175
+ rowid1 = 1
176
176
177
177
# Missing input will raise a lookup error in Venture.
178
178
with pytest .raises (VentureException ):
179
- cgpm .incorporate (rowid , {1 :OBS [ rowid ][1 ]}, {})
179
+ cgpm .incorporate (rowid0 , {1 : observations [ rowid0 ][1 ]}, {})
180
180
# No query.
181
181
with pytest .raises (ValueError ):
182
- cgpm .incorporate (rowid , {}, {3 :EV [rowid ]})
183
-
184
- cgpm .incorporate (rowid , {0 :OBS [rowid ][0 ]}, {3 :EV [rowid ]})
185
-
182
+ cgpm .incorporate (rowid0 , {}, {3 : inputs [rowid0 ]})
183
+ cgpm .incorporate (rowid0 , {0 : observations [rowid0 ][0 ]}, {3 : inputs [rowid0 ]})
186
184
# Duplicate observation.
187
185
with pytest .raises (ValueError ):
188
- cgpm .incorporate (rowid , {0 :OBS [ rowid ][0 ]})
186
+ cgpm .incorporate (rowid0 , {0 : observations [ rowid0 ][0 ]})
189
187
# Incompatible evidence.
190
188
with pytest .raises (ValueError ):
191
- cgpm .incorporate (rowid , {1 :OBS [rowid ][1 ]}, {3 :EV [rowid ]+ 1 })
192
- # Compatible evidence.
193
- cgpm .incorporate (rowid , {1 :OBS [rowid ][1 ]}, {3 :EV [rowid ]})
189
+ cgpm .incorporate (rowid0 , {1 : observations [rowid0 ][1 ]},
190
+ {3 : inputs [rowid0 ]+ 1 })
191
+
192
+ cgpm .incorporate (rowid0 , {1 : observations [rowid0 ][1 ]}, {3 : inputs [rowid0 ]})
194
193
195
- rowid = 1
196
- cgpm .incorporate (rowid , {1 :OBS [rowid ][1 ]}, {3 :EV [rowid ]})
197
- # Optional evidence.
198
- cgpm .incorporate (rowid , {0 :OBS [rowid ][0 ]})
194
+ cgpm .incorporate (rowid1 , {0 : observations [rowid1 ][0 ]})
195
+ cgpm .incorporate (rowid1 , {1 : observations [rowid1 ][1 ]}, {3 : inputs [rowid1 ]})
199
196
200
197
# Test observation stable after transition.
201
198
def test_samples_match ():
202
- # Check all samples match .
203
- sample = cgpm .simulate (0 , [0 ,1 ])
204
- assert sample [0 ] == OBS [ 0 ][0 ]
205
- assert sample [1 ] == OBS [ 0 ][1 ]
206
-
207
- sample = cgpm .simulate (1 , [1 ])
208
- assert sample [1 ] == OBS [ rowid ][1 ]
199
+ # Test rowid0 .
200
+ sample = cgpm .simulate (rowid0 , [0 ,1 ])
201
+ assert sample [0 ] == observations [ rowid0 ][0 ]
202
+ assert sample [1 ] == observations [ rowid0 ][1 ]
203
+ # Test rowid1.
204
+ sample = cgpm .simulate (rowid1 , [1 ])
205
+ assert sample [1 ] == observations [ rowid1 ][1 ]
209
206
sample = cgpm .simulate (1 , [0 ])
210
- assert sample [0 ] == OBS [ rowid ][0 ]
207
+ assert sample [0 ] == observations [ rowid1 ][0 ]
211
208
212
209
test_samples_match ()
213
210
cgpm .transition (N = 10 )
214
211
test_samples_match ()
215
212
216
- # Test that simulating a hypothetical twice is different.
213
+ # Test simulating hypothetical rowid twice gives different results .
217
214
first = cgpm .simulate (- 100 , [0 , 1 ], None , {3 :4 })
218
215
second = cgpm .simulate (- 100 , [0 , 1 ], None , {3 :4 })
219
216
assert first != second
@@ -222,12 +219,12 @@ def test_samples_match():
222
219
cgpm .unincorporate (1 )
223
220
cgpm .simulate (1 , [0 ])
224
221
with pytest .raises (VentureException ):
225
- # Missing inputs required for output 1.
222
+ # Missing inputs, w is required for output 1.
226
223
cgpm .simulate (1 , [1 ])
227
224
cgpm .transition (N = 10 )
228
- sample = cgpm .simulate (1 , [0 ,1 ], None , {3 :EV [ rowid ]})
229
- assert not np .allclose (sample [0 ], OBS [ rowid ][0 ])
230
- assert not np .allclose (sample [1 ], OBS [ rowid ][1 ])
225
+ sample = cgpm .simulate (1 , [0 ,1 ], None , {3 : inputs [ rowid1 ]})
226
+ assert not np .allclose (sample [0 ], observations [ rowid1 ][0 ])
227
+ assert not np .allclose (sample [1 ], observations [ rowid1 ][1 ])
231
228
232
229
233
230
@pytest .mark .parametrize ('case' , cases )
@@ -248,7 +245,6 @@ def test_serialize(case):
248
245
# Load binary from JSON.
249
246
cgpm3 = builder .from_metadata (json .loads (json .dumps (binary )))
250
247
251
- print
252
248
for cgpm_test in [cgpm2 ]:
253
249
assert cgpm .outputs == cgpm_test .outputs
254
250
assert cgpm .inputs == cgpm_test .inputs
@@ -262,7 +258,16 @@ def test_serialize(case):
262
258
sample = cgpm_test .simulate (1 , [1 ])
263
259
assert sample [1 ] == 15
264
260
261
+ assert cgpm_test ._get_input_cell_value (0 , 3 ) == 0
262
+ assert cgpm_test ._get_input_cell_value (1 , 3 ) == 10
263
+
264
+ assert cgpm_test ._is_observed_output_cell (0 , 0 )
265
+ assert cgpm_test ._is_observed_output_cell (0 , 1 )
266
+ assert cgpm_test ._is_observed_output_cell (1 , 1 )
267
+ assert not cgpm_test ._is_observed_output_cell (1 , 0 )
268
+
265
269
cgpm_test .incorporate (1 , {0 :10 })
270
+ assert cgpm_test ._is_observed_output_cell (1 , 0 )
266
271
267
272
268
273
@pytest .mark .xfail (strict = True , reason = 'Github issue #215 (serialization).' )
0 commit comments