compiled-knowledge 4.0.0a17__cp312-cp312-win_amd64.whl → 4.0.0a18__cp312-cp312-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of compiled-knowledge might be problematic. Click here for more details.
- ck/circuit/__init__.py +7 -0
- ck/circuit/_circuit_cy.cp312-win_amd64.pyd +0 -0
- ck/circuit/_circuit_cy.pxd +33 -0
- ck/circuit/_circuit_cy.pyx +84 -110
- ck/circuit/_circuit_py.py +2 -2
- ck/circuit_compiler/cython_vm_compiler/_compiler.cp312-win_amd64.pyd +0 -0
- ck/circuit_compiler/cython_vm_compiler/_compiler.pyx +6 -5
- ck/pgm_compiler/support/circuit_table/__init__.py +7 -0
- ck/pgm_compiler/support/circuit_table/_circuit_table_cy.cp312-win_amd64.pyd +0 -0
- ck/pgm_compiler/support/circuit_table/_circuit_table_cy.pyx +44 -37
- ck/pgm_compiler/support/circuit_table/_circuit_table_cy_cpp_verion.pyx +601 -0
- ck/pgm_compiler/support/circuit_table/_circuit_table_cy_minimal_version.pyx +311 -0
- ck/pgm_compiler/support/circuit_table/_circuit_table_cy_v4.0.0a17.pyx +325 -0
- ck/pgm_compiler/support/circuit_table/_circuit_table_py.py +76 -41
- ck/pgm_compiler/support/named_compiler_maker.py +12 -2
- ck/utils/iter_extras.py +8 -1
- ck_demos/utils/compare.py +5 -1
- {compiled_knowledge-4.0.0a17.dist-info → compiled_knowledge-4.0.0a18.dist-info}/METADATA +1 -1
- {compiled_knowledge-4.0.0a17.dist-info → compiled_knowledge-4.0.0a18.dist-info}/RECORD +22 -19
- {compiled_knowledge-4.0.0a17.dist-info → compiled_knowledge-4.0.0a18.dist-info}/WHEEL +1 -1
- ck/circuit_compiler/cython_vm_compiler/_compiler.c +0 -16946
- {compiled_knowledge-4.0.0a17.dist-info → compiled_knowledge-4.0.0a18.dist-info}/licenses/LICENSE.txt +0 -0
- {compiled_knowledge-4.0.0a17.dist-info → compiled_knowledge-4.0.0a18.dist-info}/top_level.txt +0 -0
|
@@ -40,21 +40,38 @@ class CircuitTable:
|
|
|
40
40
|
* all row instances conform to the indexed random variables.
|
|
41
41
|
* all row circuit nodes belong to the given circuit.
|
|
42
42
|
"""
|
|
43
|
-
self.
|
|
44
|
-
self.
|
|
45
|
-
self.
|
|
43
|
+
self._circuit: Circuit = circuit
|
|
44
|
+
self._rv_idxs: Tuple[int, ...] = tuple(rv_idxs)
|
|
45
|
+
self._rows: Dict[TableInstance, CircuitNode] = dict(rows)
|
|
46
|
+
|
|
47
|
+
@property
|
|
48
|
+
def circuit(self) -> Circuit:
|
|
49
|
+
return self._circuit
|
|
50
|
+
|
|
51
|
+
@property
|
|
52
|
+
def rv_idxs(self) -> Tuple[int, ...]:
|
|
53
|
+
return self._rv_idxs
|
|
46
54
|
|
|
47
55
|
def __len__(self) -> int:
|
|
48
|
-
return len(self.
|
|
56
|
+
return len(self._rows)
|
|
49
57
|
|
|
50
58
|
def get(self, key, default=None):
|
|
51
|
-
return self.
|
|
59
|
+
return self._rows.get(key, default)
|
|
60
|
+
|
|
61
|
+
def keys(self) -> Iterable[TableInstance]:
|
|
62
|
+
return self._rows.keys()
|
|
63
|
+
|
|
64
|
+
def values(self) -> Iterable[CircuitNode]:
|
|
65
|
+
return self._rows.values()
|
|
66
|
+
|
|
67
|
+
def items(self) -> Iterable[Tuple[TableInstance, CircuitNode]]:
|
|
68
|
+
return self._rows.items()
|
|
52
69
|
|
|
53
70
|
def __getitem__(self, key):
|
|
54
|
-
return self.
|
|
71
|
+
return self._rows[key]
|
|
55
72
|
|
|
56
73
|
def __setitem__(self, key, value):
|
|
57
|
-
self.
|
|
74
|
+
self._rows[key] = value
|
|
58
75
|
|
|
59
76
|
def top(self) -> CircuitNode:
|
|
60
77
|
"""
|
|
@@ -66,10 +83,10 @@ class CircuitTable:
|
|
|
66
83
|
Returns:
|
|
67
84
|
A single circuit node.
|
|
68
85
|
"""
|
|
69
|
-
if len(self.
|
|
70
|
-
return self.
|
|
71
|
-
elif len(self.
|
|
72
|
-
return next(iter(self.
|
|
86
|
+
if len(self._rows) == 0:
|
|
87
|
+
return self._circuit.zero
|
|
88
|
+
elif len(self._rows) == 1:
|
|
89
|
+
return next(iter(self._rows.values()))
|
|
73
90
|
else:
|
|
74
91
|
raise RuntimeError('cannot get top node from a table with more that 1 row')
|
|
75
92
|
|
|
@@ -119,20 +136,34 @@ def sum_out(table: CircuitTable, rv_idxs: Iterable[int]) -> CircuitTable:
|
|
|
119
136
|
for remaining_rv_index in remaining_rv_idxs
|
|
120
137
|
)
|
|
121
138
|
|
|
139
|
+
# This is a one-pass version to sum the groups. The
|
|
140
|
+
# two-pass version (below) seems to have better performance.
|
|
141
|
+
#
|
|
142
|
+
# circuit: Circuit = table.circuit
|
|
143
|
+
# result = CircuitTable(circuit, remaining_rv_idxs)
|
|
144
|
+
# result_rows: Dict[TableInstance, CircuitNode] = result._rows
|
|
145
|
+
# for instance, node in table.items():
|
|
146
|
+
# group_instance = tuple(instance[i] for i in index_map)
|
|
147
|
+
# prev_sum = result_rows.get(group_instance)
|
|
148
|
+
# if prev_sum is None:
|
|
149
|
+
# result_rows[group_instance] = node
|
|
150
|
+
# else:
|
|
151
|
+
# result_rows[group_instance] = circuit.add(prev_sum, node)
|
|
152
|
+
# return result
|
|
153
|
+
|
|
122
154
|
groups: MapList[TableInstance, CircuitNode] = MapList()
|
|
123
|
-
for instance, node in table.
|
|
155
|
+
for instance, node in table.items():
|
|
124
156
|
group_instance = tuple(instance[i] for i in index_map)
|
|
125
157
|
groups.append(group_instance, node)
|
|
126
|
-
|
|
127
158
|
circuit: Circuit = table.circuit
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
159
|
+
return CircuitTable(
|
|
160
|
+
circuit,
|
|
161
|
+
remaining_rv_idxs,
|
|
162
|
+
(
|
|
163
|
+
(group, circuit.add(to_add))
|
|
164
|
+
for group, to_add in groups.items()
|
|
165
|
+
)
|
|
166
|
+
)
|
|
136
167
|
|
|
137
168
|
|
|
138
169
|
def sum_out_all(table: CircuitTable) -> CircuitTable:
|
|
@@ -145,9 +176,9 @@ def sum_out_all(table: CircuitTable) -> CircuitTable:
|
|
|
145
176
|
if num_rows == 0:
|
|
146
177
|
return CircuitTable(circuit, ())
|
|
147
178
|
elif num_rows == 1:
|
|
148
|
-
node = next(iter(table.
|
|
179
|
+
node = next(iter(table.values()))
|
|
149
180
|
else:
|
|
150
|
-
node: CircuitNode = circuit.optimised_add(table.
|
|
181
|
+
node: CircuitNode = circuit.optimised_add(table.values())
|
|
151
182
|
if node.is_zero:
|
|
152
183
|
return CircuitTable(circuit, ())
|
|
153
184
|
|
|
@@ -168,7 +199,7 @@ def product(x: CircuitTable, y: CircuitTable) -> CircuitTable:
|
|
|
168
199
|
"""
|
|
169
200
|
Return a circuit table that results from the product of the two given tables.
|
|
170
201
|
|
|
171
|
-
If x or y
|
|
202
|
+
If x or y have a single row with value 1, then the other table is returned. Otherwise,
|
|
172
203
|
a new circuit table will be constructed and returned.
|
|
173
204
|
"""
|
|
174
205
|
circuit: Circuit = x.circuit
|
|
@@ -193,18 +224,18 @@ def product(x: CircuitTable, y: CircuitTable) -> CircuitTable:
|
|
|
193
224
|
# Set operations on rv indexes. After these operations:
|
|
194
225
|
# * co_rv_idxs is the set of rv indexes common (co) to x and y,
|
|
195
226
|
# * yo_rv_idxs is the set of rv indexes in y only (yo), and not in x.
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
227
|
+
yo_rv_idxs_set: Set[int] = set(y_rv_idxs)
|
|
228
|
+
co_rv_idxs_set: Set[int] = set(x_rv_idxs)
|
|
229
|
+
co_rv_idxs_set.intersection_update(yo_rv_idxs_set)
|
|
230
|
+
yo_rv_idxs_set.difference_update(co_rv_idxs_set)
|
|
200
231
|
|
|
201
|
-
if len(
|
|
232
|
+
if len(co_rv_idxs_set) == 0:
|
|
202
233
|
# Special case: no common random variables.
|
|
203
234
|
return _product_no_common_rvs(x, y)
|
|
204
235
|
|
|
205
236
|
# Convert random variable index sets to sequences
|
|
206
|
-
yo_rv_idxs: Tuple[int, ...] = tuple(
|
|
207
|
-
co_rv_idxs: Tuple[int, ...] = tuple(
|
|
237
|
+
yo_rv_idxs: Tuple[int, ...] = tuple(yo_rv_idxs_set) # y only random variables
|
|
238
|
+
co_rv_idxs: Tuple[int, ...] = tuple(co_rv_idxs_set) # common random variables
|
|
208
239
|
|
|
209
240
|
# Cache mappings from result Instance to index into source Instance (x or y).
|
|
210
241
|
# This will be used in indexing and product loops to pull our needed values
|
|
@@ -215,7 +246,7 @@ def product(x: CircuitTable, y: CircuitTable) -> CircuitTable:
|
|
|
215
246
|
|
|
216
247
|
# Index the y rows by common-only key (y is the smaller of the two tables).
|
|
217
248
|
y_index: MapList[TableInstance, Tuple[TableInstance, CircuitNode]] = MapList()
|
|
218
|
-
for y_instance, y_node in y.
|
|
249
|
+
for y_instance, y_node in y.items():
|
|
219
250
|
co = tuple(y_instance[i] for i in co_from_y_map)
|
|
220
251
|
yo = tuple(y_instance[i] for i in yo_from_y_map)
|
|
221
252
|
y_index.append(co, (yo, y_node))
|
|
@@ -223,7 +254,7 @@ def product(x: CircuitTable, y: CircuitTable) -> CircuitTable:
|
|
|
223
254
|
def _result_rows() -> Iterator[Tuple[TableInstance, CircuitNode]]:
|
|
224
255
|
# Iterate over x rows, yielding (instance, value).
|
|
225
256
|
# Rows with constant node values of one are optimised out.
|
|
226
|
-
for _x_instance, _x_node in x.
|
|
257
|
+
for _x_instance, _x_node in x.items():
|
|
227
258
|
_co = tuple(_x_instance[i] for i in co_from_x_map)
|
|
228
259
|
if _x_node.is_one:
|
|
229
260
|
# Multiplying by one.
|
|
@@ -233,7 +264,10 @@ def product(x: CircuitTable, y: CircuitTable) -> CircuitTable:
|
|
|
233
264
|
else:
|
|
234
265
|
# Iterate over matching y rows.
|
|
235
266
|
for _yo, _y_node in y_index.get(_co, ()):
|
|
236
|
-
|
|
267
|
+
if _y_node.is_one:
|
|
268
|
+
yield _x_instance + _yo, _x_node
|
|
269
|
+
else:
|
|
270
|
+
yield _x_instance + _yo, circuit.mul(_x_node, _y_node)
|
|
237
271
|
|
|
238
272
|
return CircuitTable(circuit, x_rv_idxs + yo_rv_idxs, _result_rows())
|
|
239
273
|
|
|
@@ -256,14 +290,15 @@ def _product_no_common_rvs(x: CircuitTable, y: CircuitTable) -> CircuitTable:
|
|
|
256
290
|
result_rv_idxs: Tuple[int, ...] = x.rv_idxs + y.rv_idxs
|
|
257
291
|
|
|
258
292
|
def _result_rows() -> Iterator[Tuple[TableInstance, CircuitNode]]:
|
|
259
|
-
for x_instance, x_node in x.
|
|
293
|
+
for x_instance, x_node in x.items():
|
|
260
294
|
if x_node.is_one:
|
|
261
|
-
for y_instance, y_node in y.
|
|
262
|
-
|
|
263
|
-
yield instance, y_node
|
|
295
|
+
for y_instance, y_node in y.items():
|
|
296
|
+
yield x_instance + y_instance, y_node
|
|
264
297
|
else:
|
|
265
|
-
for y_instance, y_node in y.
|
|
266
|
-
|
|
267
|
-
|
|
298
|
+
for y_instance, y_node in y.items():
|
|
299
|
+
if y_node.is_one:
|
|
300
|
+
yield x_instance + y_instance, y_node
|
|
301
|
+
else:
|
|
302
|
+
yield x_instance + y_instance, circuit.mul(x_node, y_node)
|
|
268
303
|
|
|
269
304
|
return CircuitTable(circuit, result_rv_idxs, _result_rows())
|
|
@@ -12,6 +12,7 @@ def get_compiler(module: ModuleType, **kwargs) -> Tuple[PGMCompiler]:
|
|
|
12
12
|
|
|
13
13
|
Args:
|
|
14
14
|
module: module containing `compile_pgm` function.
|
|
15
|
+
kwargs: are additional keyword arguments to `compile_pgm`.
|
|
15
16
|
|
|
16
17
|
Returns:
|
|
17
18
|
a singleton tuple containing PGMCompiler function.
|
|
@@ -24,10 +25,19 @@ def get_compiler(module: ModuleType, **kwargs) -> Tuple[PGMCompiler]:
|
|
|
24
25
|
return compiler,
|
|
25
26
|
|
|
26
27
|
|
|
27
|
-
def get_compiler_algorithm(module, algorithm: str, **kwargs) -> Tuple[PGMCompiler]:
|
|
28
|
+
def get_compiler_algorithm(module: ModuleType, algorithm: str, **kwargs) -> Tuple[PGMCompiler]:
|
|
28
29
|
"""
|
|
29
30
|
Helper function to create a named PGM compiler, with a named algorithm argument.
|
|
31
|
+
|
|
32
|
+
Args:
|
|
33
|
+
module: module containing `compile_pgm` function.
|
|
34
|
+
algorithm: name of the algorithm, to pass as keyword argument to `compile_pgm`.
|
|
35
|
+
The algorithm should be declared in the module.
|
|
36
|
+
kwargs: are additional keyword arguments to `compile_pgm`.
|
|
37
|
+
|
|
38
|
+
Returns:
|
|
39
|
+
a singleton tuple containing PGMCompiler function.
|
|
30
40
|
"""
|
|
31
|
-
return get_compiler(module, algorithm=getattr(module, algorithm, **kwargs)
|
|
41
|
+
return get_compiler(module, algorithm=getattr(module, algorithm), **kwargs)
|
|
32
42
|
|
|
33
43
|
|
ck/utils/iter_extras.py
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
A module with extra iteration functions.
|
|
3
3
|
"""
|
|
4
4
|
from functools import reduce as _reduce
|
|
5
|
-
from itertools import combinations, chain
|
|
5
|
+
from itertools import combinations, chain, islice
|
|
6
6
|
from operator import mul as _mul
|
|
7
7
|
from typing import Iterable, Tuple, Sequence, TypeVar
|
|
8
8
|
|
|
@@ -154,3 +154,10 @@ def first(items: Iterable[_T]) -> _T:
|
|
|
154
154
|
Return the first element of the iterable.
|
|
155
155
|
"""
|
|
156
156
|
return next(iter(items))
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
def take(iterable: Iterable[_T], n: int) -> Iterable[_T]:
|
|
160
|
+
"""
|
|
161
|
+
Take the first n elements of the iterable.
|
|
162
|
+
"""
|
|
163
|
+
return islice(iterable, n)
|
ck_demos/utils/compare.py
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import gc
|
|
1
2
|
from typing import Sequence
|
|
2
3
|
|
|
3
4
|
from ck.circuit_compiler import NamedCircuitCompiler
|
|
@@ -88,6 +89,7 @@ def compare(
|
|
|
88
89
|
print(f'{"":{col_cct_ops}}', end=sep)
|
|
89
90
|
print(f'{"":{col_pgm_compile_time}}', end=sep)
|
|
90
91
|
else:
|
|
92
|
+
gc.collect()
|
|
91
93
|
time.start()
|
|
92
94
|
pgm_cct: PGMCircuit = pgm_compiler(pgm)
|
|
93
95
|
time.stop()
|
|
@@ -97,6 +99,7 @@ def compare(
|
|
|
97
99
|
prev_pgm = pgm
|
|
98
100
|
prev_pgm_compiler = pgm_compiler
|
|
99
101
|
|
|
102
|
+
gc.collect()
|
|
100
103
|
time.start()
|
|
101
104
|
# `pgm_cct` will always be set but the IDE can't work that out.
|
|
102
105
|
# noinspection PyUnboundLocalVariable
|
|
@@ -104,11 +107,12 @@ def compare(
|
|
|
104
107
|
time.stop()
|
|
105
108
|
print(f'{time.seconds():{col_cct_compile_time}{comma}.3f}', end=sep)
|
|
106
109
|
|
|
110
|
+
gc.collect()
|
|
107
111
|
time.start()
|
|
108
112
|
for _ in range(1000):
|
|
109
113
|
wmc.compute()
|
|
110
114
|
time.stop()
|
|
111
|
-
print(f'{time.seconds() * 1000:{col_execute_time}{comma}.3f}', end=
|
|
115
|
+
print(f'{time.seconds() * 1000:{col_execute_time}{comma}.3f}', end='')
|
|
112
116
|
except Exception as err:
|
|
113
117
|
print(repr(err), end='')
|
|
114
118
|
print()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: compiled-knowledge
|
|
3
|
-
Version: 4.0.
|
|
3
|
+
Version: 4.0.0a18
|
|
4
4
|
Summary: A Python package for compiling and querying discrete probabilistic graphical models.
|
|
5
5
|
Author-email: Barry Drake <barry@compiledknowledge.org>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
ck/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
2
|
ck/pgm.py,sha256=rbqgP-clfSvgpzUXxVjk_6SdM9neHmpChku6qpyeidk,120700
|
|
3
|
-
ck/circuit/__init__.py,sha256=
|
|
4
|
-
ck/circuit/_circuit_cy.cp312-win_amd64.pyd,sha256=
|
|
5
|
-
ck/circuit/_circuit_cy.
|
|
6
|
-
ck/circuit/
|
|
3
|
+
ck/circuit/__init__.py,sha256=7ZSBPV6HGKTJ9a_jSAgUbPNOZVHGaeR-e0H1-6cA0HY,621
|
|
4
|
+
ck/circuit/_circuit_cy.cp312-win_amd64.pyd,sha256=9AhhezX-NSuOC0fItKegFsoE3trossTXenTyMzW4d_U,252928
|
|
5
|
+
ck/circuit/_circuit_cy.pxd,sha256=hWdx4rcPS2iwHr6NBTjB38LAJZiLktTXhcoVqmGpwkk,1098
|
|
6
|
+
ck/circuit/_circuit_cy.pyx,sha256=F9ut2mI92pIvBVAaetJqFpxbsBx--mNvHqVCTQ6Ad7k,27622
|
|
7
|
+
ck/circuit/_circuit_py.py,sha256=vN8lg01RyjA_YUphjx1dr0Uj4ql4seczRcoCaH7ylAw,28341
|
|
7
8
|
ck/circuit/tmp_const.py,sha256=dG9FuGfoAG5qjYG1rNwekqKiea_KmVfxHMTOgCPbBiQ,2372
|
|
8
9
|
ck/circuit_compiler/__init__.py,sha256=T0Igyp5jPgnIXv4oRcIYhmsOdcNOb3L4Za6dK6eYk7g,132
|
|
9
10
|
ck/circuit_compiler/circuit_compiler.py,sha256=8BLB8DUnPbpl5PXZsIopydPbItytdn2rzRfM2U1EC84,1018
|
|
@@ -12,9 +13,8 @@ ck/circuit_compiler/llvm_compiler.py,sha256=ejeNPkO5Og2FyjjyA5JAexxUl1f8IJ6mwU5N
|
|
|
12
13
|
ck/circuit_compiler/llvm_vm_compiler.py,sha256=I46_XV5FrClDKO06zIjn8T3ME5XQ9RYJ_1aAE8e_YzM,21873
|
|
13
14
|
ck/circuit_compiler/named_circuit_compilers.py,sha256=snlD3JnhAZC-atKpf5GD0v4CGdvj2_ZhCZ3O-tsxzxc,2284
|
|
14
15
|
ck/circuit_compiler/cython_vm_compiler/__init__.py,sha256=pEAwTleuZgdYhTAQMea2f9YsFK54eoNbZSbrWkW8aeE,49
|
|
15
|
-
ck/circuit_compiler/cython_vm_compiler/_compiler.
|
|
16
|
-
ck/circuit_compiler/cython_vm_compiler/_compiler.
|
|
17
|
-
ck/circuit_compiler/cython_vm_compiler/_compiler.pyx,sha256=c9NVKWtL2ctY_ja5MZg74hgw8hKKztLi7FB6S1kLTe4,8542
|
|
16
|
+
ck/circuit_compiler/cython_vm_compiler/_compiler.cp312-win_amd64.pyd,sha256=KXGhDoWnKSTxyi66ojn2FDlYL5ZqkR8bwQhsA4aLYog,82432
|
|
17
|
+
ck/circuit_compiler/cython_vm_compiler/_compiler.pyx,sha256=L90JvxOXJq1eXy11ykWaFNcWU_p0pyfDVm9A4LKBjr8,8583
|
|
18
18
|
ck/circuit_compiler/cython_vm_compiler/cython_vm_compiler.py,sha256=yUkBNr5HnoVXyWjJdXHp8lyAXFiIDYapvMvHtzKuhI8,3140
|
|
19
19
|
ck/circuit_compiler/support/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
20
20
|
ck/circuit_compiler/support/circuit_analyser.py,sha256=jM0QW2flucvpc6fqcT8mL00ZA0rPTUhaE-yFfFQMXgE,2722
|
|
@@ -83,11 +83,14 @@ ck/pgm_compiler/support/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG
|
|
|
83
83
|
ck/pgm_compiler/support/clusters.py,sha256=7jsZfPqv29vZNxmtiHBCBo3mEfvLQ_ejYh69M_d-nmo,21381
|
|
84
84
|
ck/pgm_compiler/support/factor_tables.py,sha256=tV9qE2zC8iwEQxTuXE6qiE6lmMpz4-Vc80_w5woo1tk,15556
|
|
85
85
|
ck/pgm_compiler/support/join_tree.py,sha256=OGAuZVHzT0i4e6TJ03dOM7e3gbpuW9AyjZKvSBvKvJA,12894
|
|
86
|
-
ck/pgm_compiler/support/named_compiler_maker.py,sha256=
|
|
87
|
-
ck/pgm_compiler/support/circuit_table/__init__.py,sha256=
|
|
88
|
-
ck/pgm_compiler/support/circuit_table/_circuit_table_cy.cp312-win_amd64.pyd,sha256
|
|
89
|
-
ck/pgm_compiler/support/circuit_table/_circuit_table_cy.pyx,sha256=
|
|
90
|
-
ck/pgm_compiler/support/circuit_table/
|
|
86
|
+
ck/pgm_compiler/support/named_compiler_maker.py,sha256=g2MLnlkWXkISHL6dh23EY53SptTo7-itfuZogSpMdB8,1420
|
|
87
|
+
ck/pgm_compiler/support/circuit_table/__init__.py,sha256=Ct1i7jP4sZI_G4IU75pubf4tLyMrB8u47ZbTC8_zBqU,576
|
|
88
|
+
ck/pgm_compiler/support/circuit_table/_circuit_table_cy.cp312-win_amd64.pyd,sha256=-vH_LNfBmGcD2fJEaNaARI7zO2bIfiWJNfrbHYrYVTE,93696
|
|
89
|
+
ck/pgm_compiler/support/circuit_table/_circuit_table_cy.pyx,sha256=rVO1yxjZmZ6yv5s0zKq4Ji9WYrDuYTZsRG_zeF1_1xE,12015
|
|
90
|
+
ck/pgm_compiler/support/circuit_table/_circuit_table_cy_cpp_verion.pyx,sha256=C6jQPXmZgLCFf799o1MoRnEr7ihlMYdSf_c4r1TPDEM,20614
|
|
91
|
+
ck/pgm_compiler/support/circuit_table/_circuit_table_cy_minimal_version.pyx,sha256=n7qdSQwnpyQ_0g9esXGtFB3STI7N3uWLzEVhCjNXb_U,11417
|
|
92
|
+
ck/pgm_compiler/support/circuit_table/_circuit_table_cy_v4.0.0a17.pyx,sha256=JLC4_nsRPb8xC3alHE0G9Ojie9K4oUULVPrulkQnhds,11886
|
|
93
|
+
ck/pgm_compiler/support/circuit_table/_circuit_table_py.py,sha256=h6xPYGBSy6XHQBFLPD2D1-V7Kiw9utY68nWrcGRMEg4,11287
|
|
91
94
|
ck/probability/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
92
95
|
ck/probability/empirical_probability_space.py,sha256=HoLxmigzlWFWQlcZQwDOYk-mjgf6RW1IPE-l0t8vMPw,1950
|
|
93
96
|
ck/probability/pgm_probability_space.py,sha256=vK-drx145PWW2aYB8HttQcvhvqPfxVl72bPcFO8jw8M,1034
|
|
@@ -107,7 +110,7 @@ ck/sampling/wmc_gibbs_sampler.py,sha256=GMKVW2AVtsWtP6vxE3Y2dy-dKr7GoO_vLEA9eC30
|
|
|
107
110
|
ck/sampling/wmc_metropolis_sampler.py,sha256=PRv7wtPZz7BcwN8iArsykVwqgY77v5km7rXcawFAUPQ,6470
|
|
108
111
|
ck/sampling/wmc_rejection_sampler.py,sha256=cd0VONZf-oa491RRKfwT2LakQs0o_slgPCes8AOvSNc,4897
|
|
109
112
|
ck/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
110
|
-
ck/utils/iter_extras.py,sha256=
|
|
113
|
+
ck/utils/iter_extras.py,sha256=QNd3mJxPsKN0Wg12K_Iuefto5A2Vv9leuMvymAdt4uo,4479
|
|
111
114
|
ck/utils/local_config.py,sha256=-oTKvKCpm29JeHEhV1_qLC5fMS523unDzXr0VYE3M0U,9535
|
|
112
115
|
ck/utils/map_list.py,sha256=T2OpjI7eDgC4geCtW_FsEr6ryiePOnKZwfDahB63zfA,3847
|
|
113
116
|
ck/utils/map_set.py,sha256=BLu9BO3FCtzZlZ9MfP9STtIdQ4Me8-QKdwB7o15y7f8,3809
|
|
@@ -160,12 +163,12 @@ ck_demos/sampling/demo_marginal_direct_sampler.py,sha256=RhNunuIUnYI_GXp9m8wzadM
|
|
|
160
163
|
ck_demos/sampling/demo_uniform_sampler.py,sha256=Z6tX_OYKGLc_w3-kEPK4KEZlJo7F5HOq_tUVppB_VQE,962
|
|
161
164
|
ck_demos/sampling/demo_wmc_direct_sampler.py,sha256=c7maxTmZyIijaVdFs2h_KQbK30LvI-oCm2BXSUXVoD8,1113
|
|
162
165
|
ck_demos/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
163
|
-
ck_demos/utils/compare.py,sha256=
|
|
166
|
+
ck_demos/utils/compare.py,sha256=Bwjpflevl4nusfA0zp96rInaVKFGuhC5Xv7HzA1Fobk,5088
|
|
164
167
|
ck_demos/utils/convert_network.py,sha256=TSKj8q7L7J5rhrvwjaDkdYZ0Sg8vV5FRL_vCanX1CQw,1363
|
|
165
168
|
ck_demos/utils/sample_model.py,sha256=in-Nlv-iuNIu6y9fDuMyo7nzgimBuTAnCWcpnVqvqDQ,8839
|
|
166
169
|
ck_demos/utils/stop_watch.py,sha256=VzXHRWx0V8vPSD-bLgLlEYkCkR2FA0-KmM_pfKx-Pxo,13205
|
|
167
|
-
compiled_knowledge-4.0.
|
|
168
|
-
compiled_knowledge-4.0.
|
|
169
|
-
compiled_knowledge-4.0.
|
|
170
|
-
compiled_knowledge-4.0.
|
|
171
|
-
compiled_knowledge-4.0.
|
|
170
|
+
compiled_knowledge-4.0.0a18.dist-info/licenses/LICENSE.txt,sha256=uMYx7tmroEKNASizbCOwPveMQsD5UErLDC1_SANmNn8,1089
|
|
171
|
+
compiled_knowledge-4.0.0a18.dist-info/METADATA,sha256=ZjA0RqiyN9UdM20v0vQ_qb7Ru6dr8ZO7Bis-dX7rIM0,1838
|
|
172
|
+
compiled_knowledge-4.0.0a18.dist-info/WHEEL,sha256=8UP9x9puWI0P1V_d7K2oMTBqfeLNm21CTzZ_Ptr0NXU,101
|
|
173
|
+
compiled_knowledge-4.0.0a18.dist-info/top_level.txt,sha256=Cf8DAfd2vcnLiA7HlxoduOzV0Q-8surE3kzX8P9qdks,12
|
|
174
|
+
compiled_knowledge-4.0.0a18.dist-info/RECORD,,
|