compiled-knowledge 4.0.0a16__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.

Files changed (36) hide show
  1. ck/circuit/__init__.py +9 -2
  2. ck/circuit/_circuit_cy.cp312-win_amd64.pyd +0 -0
  3. ck/circuit/_circuit_cy.pxd +33 -0
  4. ck/circuit/{circuit.pyx → _circuit_cy.pyx} +115 -133
  5. ck/circuit/{circuit_py.py → _circuit_py.py} +16 -8
  6. ck/circuit_compiler/cython_vm_compiler/_compiler.cp312-win_amd64.pyd +0 -0
  7. ck/circuit_compiler/cython_vm_compiler/_compiler.pyx +88 -60
  8. ck/circuit_compiler/named_circuit_compilers.py +1 -1
  9. ck/pgm_compiler/factor_elimination.py +23 -13
  10. ck/pgm_compiler/support/circuit_table/__init__.py +9 -2
  11. ck/pgm_compiler/support/circuit_table/_circuit_table_cy.cp312-win_amd64.pyd +0 -0
  12. ck/pgm_compiler/support/circuit_table/_circuit_table_cy.pyx +332 -0
  13. ck/pgm_compiler/support/circuit_table/_circuit_table_cy_cpp_verion.pyx +601 -0
  14. ck/pgm_compiler/support/circuit_table/_circuit_table_cy_minimal_version.pyx +311 -0
  15. ck/pgm_compiler/support/circuit_table/{circuit_table.pyx → _circuit_table_cy_v4.0.0a17.pyx} +9 -9
  16. ck/pgm_compiler/support/circuit_table/{circuit_table_py.py → _circuit_table_py.py} +80 -45
  17. ck/pgm_compiler/support/clusters.py +16 -4
  18. ck/pgm_compiler/support/factor_tables.py +1 -1
  19. ck/pgm_compiler/support/join_tree.py +67 -10
  20. ck/pgm_compiler/support/named_compiler_maker.py +12 -2
  21. ck/pgm_compiler/variable_elimination.py +2 -0
  22. ck/utils/iter_extras.py +8 -1
  23. ck_demos/pgm_compiler/demo_compiler_dump.py +10 -0
  24. ck_demos/pgm_compiler/time_fe_compiler.py +93 -0
  25. ck_demos/utils/compare.py +5 -1
  26. {compiled_knowledge-4.0.0a16.dist-info → compiled_knowledge-4.0.0a18.dist-info}/METADATA +1 -1
  27. {compiled_knowledge-4.0.0a16.dist-info → compiled_knowledge-4.0.0a18.dist-info}/RECORD +30 -29
  28. {compiled_knowledge-4.0.0a16.dist-info → compiled_knowledge-4.0.0a18.dist-info}/WHEEL +1 -1
  29. ck/circuit/circuit.c +0 -38861
  30. ck/circuit/circuit.cp312-win_amd64.pyd +0 -0
  31. ck/circuit/circuit_node.pyx +0 -138
  32. ck/circuit_compiler/cython_vm_compiler/_compiler.c +0 -17373
  33. ck/pgm_compiler/support/circuit_table/circuit_table.c +0 -16042
  34. ck/pgm_compiler/support/circuit_table/circuit_table.cp312-win_amd64.pyd +0 -0
  35. {compiled_knowledge-4.0.0a16.dist-info → compiled_knowledge-4.0.0a18.dist-info}/licenses/LICENSE.txt +0 -0
  36. {compiled_knowledge-4.0.0a16.dist-info → compiled_knowledge-4.0.0a18.dist-info}/top_level.txt +0 -0
@@ -15,6 +15,11 @@ from ck.utils.np_extras import NDArrayFloat64
15
15
 
16
16
  @dataclass
17
17
  class JoinTree:
18
+ """
19
+ This is a recursive data structure representing a join-tree.
20
+ Each node in the join-tree is represented by a JoinTree object.
21
+ """
22
+
18
23
  # The PGM that this join tree is for.
19
24
  pgm: PGM
20
25
 
@@ -40,6 +45,12 @@ class JoinTree:
40
45
 
41
46
  def max_cluster_weighted_size(self, rv_log_sizes: Sequence[float]) -> float:
42
47
  """
48
+ Calculate the maximum cluster weighted size for this cluster and its children.
49
+
50
+ Args:
51
+ rv_log_sizes: is an array of random variable sizes, such that
52
+ for a random variable `rv`, `rv_log_sizes[rv.idx] = log2(len(rv))`.
53
+
43
54
  Returns:
44
55
  the maximum `log2` over self and all children, recursively.
45
56
  """
@@ -82,8 +93,8 @@ JoinTreeAlgorithm = Callable[[PGM], JoinTree]
82
93
 
83
94
  def _join_tree_algorithm(pgm_to_clusters: ClusterAlgorithm) -> JoinTreeAlgorithm:
84
95
  """
85
- Helper function for creating a standard JoinTreeAlgorithm from
86
- a ClusterAlgorithm.
96
+ Helper function for creating a standard JoinTreeAlgorithm
97
+ from a ClusterAlgorithm.
87
98
 
88
99
  Args:
89
100
  pgm_to_clusters: The clusters method to use.
@@ -112,14 +123,17 @@ MIN_TRADITIONAL_WEIGHTED_FILL: JoinTreeAlgorithm = _join_tree_algorithm(min_trad
112
123
 
113
124
  def clusters_to_join_tree(clusters: Clusters) -> JoinTree:
114
125
  """
115
- Construct a join tree maker for the given PGM and random variable clusters.
126
+ Construct a join tree from the given random variable clusters.
116
127
 
117
128
  A join tree is formed by finding a minimum spanning tree over the clusters
118
- where the cost between a pair of cluster is defined according to
119
- `separator_cost_counts` and `costing`.
129
+ where the cost between a pair of clusters is the number of random variables
130
+ in common (using separator state space size to break ties).
120
131
 
121
132
  Args:
122
- clusters: the clusters that resulted from graph clusters of the given PGM.
133
+ clusters: the clusters that resulted from graph clusters of a PGM.
134
+
135
+ Returns:
136
+ a JoinTree.
123
137
  """
124
138
  pgm: PGM = clusters.pgm
125
139
  cluster_sets: List[Set[int]] = clusters.clusters
@@ -170,6 +184,19 @@ def _make_spanning_tree_small_root(cost: NDArrayFloat64, clusters: List[Set[int]
170
184
  """
171
185
  Construct a minimum spanning tree over the clusters, where the root is the cluster with
172
186
  the smallest number of random variable.
187
+
188
+ Args:
189
+ cost: is an N x N matrix of costs between N clusters.
190
+ clusters: is a list of N clusters, each cluster is a set of random variable indices.
191
+
192
+ Returns:
193
+ (spanning_tree, root_index)
194
+
195
+ spanning_tree: is a spanning tree represented as a list of nodes, the list is coindexed with
196
+ the given cost matrix, each node is a list of children, each child being
197
+ represented as an index into the list of nodes.
198
+
199
+ root_index: is the index the chosen root of the spanning tree.
173
200
  """
174
201
  root_custer_index: int = 0
175
202
  root_size: int = len(clusters[root_custer_index])
@@ -185,10 +212,22 @@ def _make_spanning_tree_small_root(cost: NDArrayFloat64, clusters: List[Set[int]
185
212
  def _make_spanning_tree_arbitrary_root(cost: NDArrayFloat64) -> Tuple[List[List[int]], int]:
186
213
  """
187
214
  Construct a minimum spanning tree over the clusters, starting at an arbitrary root.
215
+
216
+ Args:
217
+ cost: is an N x N matrix of costs between N clusters.
218
+
219
+ Returns:
220
+ (spanning_tree, root_index)
221
+
222
+ spanning_tree: is a spanning tree represented as a list of nodes, the list is coindexed with
223
+ the given cost matrix, each node is a list of children, each child being
224
+ represented as an index into the list of nodes.
225
+
226
+ root_index: is the index the chosen root of the spanning tree.
188
227
  """
189
- root_custer_index: int = 0
190
- children: List[List[int]] = _make_spanning_tree_at_root(cost, root_custer_index)
191
- return children, root_custer_index
228
+ root_index: int = 0
229
+ spanning_tree: List[List[int]] = _make_spanning_tree_at_root(cost, root_index)
230
+ return spanning_tree, root_index
192
231
 
193
232
 
194
233
  def _make_spanning_tree_at_root(
@@ -202,6 +241,12 @@ def _make_spanning_tree_at_root(
202
241
  cost: and nxn matrix where n is the number of clusters and cost[i, j]
203
242
  gives the cost between clusters i and j.
204
243
  root_custer_index: a nominated root cluster to be the root of the tree.
244
+
245
+ Returns:
246
+ a spanning tree represented as a list of nodes, the list is coindexed with
247
+ the given cost matrix, each node is a list of children, each child being
248
+ represented as an index into the list of nodes. The root node is the
249
+ index `root_custer_index` as passed to this function.
205
250
  """
206
251
  number_of_clusters: int = cost.shape[0]
207
252
 
@@ -257,7 +302,19 @@ def _form_join_tree_r(
257
302
  cluster_factors: List[List[Factor]],
258
303
  ) -> JoinTree:
259
304
  """
260
- Recursively build the join tree data structure.
305
+ Recursively build a JoinTree from the spanning tree `children`.
306
+ This function merely pull the corresponding component from the
307
+ arguments to make a JoinTree object, doing this recursively
308
+ for the children.
309
+
310
+ Args:
311
+ pgm: the source PGM for the join tree.
312
+ cluster_index: index for the node we are processing (current root). This
313
+ indexes into `children`, `clusters`, and `cluster_factors`.
314
+ parent_cluster: set of random variable indices in the parent cluster.
315
+ children: list of spanning tree nodes, as per `_make_spanning_tree_at_root` result.
316
+ clusters: list of clusters, each cluster is a set of random variable indices.
317
+ cluster_factors: assignment of factors to clusters.
261
318
  """
262
319
  cluster: Set[int] = clusters[cluster_index]
263
320
  factors: List[Factor] = cluster_factors[cluster_index]
@@ -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
 
@@ -51,6 +51,8 @@ def compile_pgm(
51
51
 
52
52
  elimination_order: Sequence[int] = algorithm(pgm).eliminated
53
53
 
54
+ # Eliminate rvs from the factor tables according to the
55
+ # elimination order.
54
56
  cur_tables: List[CircuitTable] = list(factor_tables.tables)
55
57
  for rv_idx in elimination_order:
56
58
  next_tables: List[CircuitTable] = []
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)
@@ -9,6 +9,16 @@ from ck.pgm_compiler.support.join_tree import JoinTree, clusters_to_join_tree
9
9
 
10
10
 
11
11
  def main() -> None:
12
+ """
13
+ This demo shows the full compilation chain for factor elimination.
14
+
15
+ Process:
16
+ Rain example -> PGM
17
+ min_degree -> Clusters
18
+ clusters_to_join_tree -> JoinTree
19
+ join_tree_to_circuit -> PGMCircuit
20
+ default circuit compiler -> WMCProgram
21
+ """
12
22
  pgm: PGM = example.Rain()
13
23
 
14
24
  print(f'PGM {pgm.name!r}')
@@ -0,0 +1,93 @@
1
+ from ck import example
2
+ from ck.circuit import CircuitNode, Circuit
3
+ from ck.circuit_compiler import DEFAULT_CIRCUIT_COMPILER
4
+ from ck.pgm import PGM
5
+ from ck.pgm_circuit import PGMCircuit
6
+ from ck.pgm_compiler.factor_elimination import DEFAULT_PRODUCT_SEARCH_LIMIT, _circuit_tables_from_join_tree
7
+ from ck.pgm_compiler.support.circuit_table import CircuitTable
8
+ from ck.pgm_compiler.support.clusters import min_degree, Clusters
9
+ from ck.pgm_compiler.support.factor_tables import FactorTables, make_factor_tables
10
+ from ck.pgm_compiler.support.join_tree import JoinTree, clusters_to_join_tree
11
+ from ck.program import ProgramBuffer, RawProgram
12
+ from ck_demos.utils.stop_watch import timer
13
+
14
+
15
+ def main() -> None:
16
+ """
17
+ Time components of the compilation chain for factor elimination.
18
+
19
+ Process:
20
+ example -> PGM
21
+ min_degree -> Clusters
22
+ clusters_to_join_tree -> JoinTree
23
+ join_tree_to_circuit -> PGMCircuit
24
+ default circuit compiler -> RawProgram
25
+ execute program
26
+ """
27
+ with timer('make PGM') as make_pgm_time:
28
+ pgm: PGM = example.Mildew()
29
+
30
+ with timer('make clusters') as make_clusters_time:
31
+ clusters: Clusters = min_degree(pgm)
32
+
33
+ with timer('make join tree') as make_join_tree_time:
34
+ join_tree: JoinTree = clusters_to_join_tree(clusters)
35
+
36
+ with timer('make factor tables') as make_factor_tables_time:
37
+ factor_tables: FactorTables = make_factor_tables(
38
+ pgm=pgm,
39
+ const_parameters=True,
40
+ multiply_indicators=True,
41
+ pre_prune_factor_tables=False,
42
+ )
43
+
44
+ with timer('make circuit tables') as make_circuit_tables_time:
45
+ top_table: CircuitTable = _circuit_tables_from_join_tree(
46
+ factor_tables,
47
+ join_tree,
48
+ DEFAULT_PRODUCT_SEARCH_LIMIT,
49
+ )
50
+ top: CircuitNode = top_table.top()
51
+ circuit: Circuit = top.circuit
52
+
53
+ orig_size = circuit.number_of_op_nodes
54
+ with timer('remove unreachable nodes') as remove_unreachable_time:
55
+ circuit.remove_unreachable_op_nodes(top)
56
+ print(f' saving {orig_size - circuit.number_of_op_nodes:10,}')
57
+ print(f' leaving {circuit.number_of_op_nodes:10,}')
58
+
59
+ with timer('make PGMCircuit') as make_pgm_time:
60
+ pgm_circuit = PGMCircuit(
61
+ rvs=tuple(pgm.rvs),
62
+ conditions=(),
63
+ circuit_top=top,
64
+ number_of_indicators=factor_tables.number_of_indicators,
65
+ number_of_parameters=factor_tables.number_of_parameters,
66
+ slot_map=factor_tables.slot_map,
67
+ parameter_values=factor_tables.parameter_values,
68
+ )
69
+
70
+ with timer('make program') as make_program_time:
71
+ program: RawProgram = DEFAULT_CIRCUIT_COMPILER(pgm_circuit.circuit_top)
72
+
73
+ program_buffer = ProgramBuffer(program)
74
+ with timer('execute program') as execute_program_time:
75
+ program_buffer.compute()
76
+
77
+ print()
78
+ print(f'make PGM {make_pgm_time.seconds():5.2f}')
79
+ print(f'make clusters {make_clusters_time.seconds():5.2f}')
80
+ print(f'make join_tree {make_join_tree_time.seconds():5.2f}')
81
+ print(f'make factor tables {make_factor_tables_time.seconds():5.2f}')
82
+ print(f'make circuit tables {make_circuit_tables_time.seconds():5.2f}')
83
+ print(f'remove unreachables {remove_unreachable_time.seconds():5.2f}')
84
+ print(f'make PGM circuit {make_pgm_time.seconds():5.2f}')
85
+ print(f'make program {make_program_time.seconds():5.2f}')
86
+ print(f'execute program {execute_program_time.seconds():5.2f}')
87
+
88
+ print()
89
+ print('Done.')
90
+
91
+
92
+ if __name__ == '__main__':
93
+ main()
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=sep)
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.0a16
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,22 +1,20 @@
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=tozFNNVzsgQDwFrtGzrgcFS4XTszhgyFmbMGfV5pimc,212
4
- ck/circuit/circuit.c,sha256=_DN78mWLcGdXOKoZv6Eq-m50KLpOP0SY_GjFrhLJoj0,1773051
5
- ck/circuit/circuit.cp312-win_amd64.pyd,sha256=T0hYyLn7cjYZ54ki85-HaKltQZcuO6oSWBtx3DNe4iI,252416
6
- ck/circuit/circuit.pyx,sha256=Y35CZMalySX8_uhNH6wIaZzS6ACn3rh3L99bog1lQx8,28060
7
- ck/circuit/circuit_node.pyx,sha256=8RuEC1ngYxnsGryzQ1lOEPc4ewTxvKwc56sOxWLB9zs,4103
8
- ck/circuit/circuit_py.py,sha256=_k8H1yZsfp2vERkX_CIo8VxxOf1ICw2zL8i2ckoaSlE,28127
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
9
8
  ck/circuit/tmp_const.py,sha256=dG9FuGfoAG5qjYG1rNwekqKiea_KmVfxHMTOgCPbBiQ,2372
10
9
  ck/circuit_compiler/__init__.py,sha256=T0Igyp5jPgnIXv4oRcIYhmsOdcNOb3L4Za6dK6eYk7g,132
11
10
  ck/circuit_compiler/circuit_compiler.py,sha256=8BLB8DUnPbpl5PXZsIopydPbItytdn2rzRfM2U1EC84,1018
12
11
  ck/circuit_compiler/interpret_compiler.py,sha256=Vlu4VnZ_VWGoBb4yx6wuJOlhJ2nGVhkzQpIyJ8xyjbI,7350
13
12
  ck/circuit_compiler/llvm_compiler.py,sha256=ejeNPkO5Og2FyjjyA5JAexxUl1f8IJ6mwU5Ng5EafAA,14009
14
13
  ck/circuit_compiler/llvm_vm_compiler.py,sha256=I46_XV5FrClDKO06zIjn8T3ME5XQ9RYJ_1aAE8e_YzM,21873
15
- ck/circuit_compiler/named_circuit_compilers.py,sha256=gKhRvYLflSCkk6CBI-CBQ2UwR-bhEhMxLvnefPm8288,2282
14
+ ck/circuit_compiler/named_circuit_compilers.py,sha256=snlD3JnhAZC-atKpf5GD0v4CGdvj2_ZhCZ3O-tsxzxc,2284
16
15
  ck/circuit_compiler/cython_vm_compiler/__init__.py,sha256=pEAwTleuZgdYhTAQMea2f9YsFK54eoNbZSbrWkW8aeE,49
17
- ck/circuit_compiler/cython_vm_compiler/_compiler.c,sha256=xpYybtj-aRcMJV1oKkB-p0kciZVW3gLRd0OJBfDg3sc,757006
18
- ck/circuit_compiler/cython_vm_compiler/_compiler.cp312-win_amd64.pyd,sha256=XSQU7oikafjfsOaiBfI70kS2cLn69kn2CJjKgs2i5cw,92160
19
- ck/circuit_compiler/cython_vm_compiler/_compiler.pyx,sha256=hHuNo99TbodNpWgQwQ8qzW1cTwGXZj5SW0tKAo9u6cw,7718
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
20
18
  ck/circuit_compiler/cython_vm_compiler/cython_vm_compiler.py,sha256=yUkBNr5HnoVXyWjJdXHp8lyAXFiIDYapvMvHtzKuhI8,3140
21
19
  ck/circuit_compiler/support/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
20
  ck/circuit_compiler/support/circuit_analyser.py,sha256=jM0QW2flucvpc6fqcT8mL00ZA0rPTUhaE-yFfFQMXgE,2722
@@ -74,23 +72,25 @@ ck/pgm_circuit/wmc_program.py,sha256=WtABU74FOCCJuKRCoDL4CyZ4CJXFmt9RSxiNNHsOhRY
74
72
  ck/pgm_circuit/support/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
75
73
  ck/pgm_circuit/support/compile_circuit.py,sha256=RuYzDCRpfXZcY96sSW8v7x6ev9ScQ4IZkVqMdJUoMp8,3484
76
74
  ck/pgm_compiler/__init__.py,sha256=XCK1AWBBB9UYi6kbFnxMFzBL9a25EWfHnz_yn3ZKYuM,112
77
- ck/pgm_compiler/factor_elimination.py,sha256=Eu7wJWYjRK4aTEsJP4P_femktbqqZkWN3aI-nqHyNzU,13247
75
+ ck/pgm_compiler/factor_elimination.py,sha256=6iMh_NdOQh4D5cuo8q1y7yUuj3glnM9I0OJ9vlJAGqU,13807
78
76
  ck/pgm_compiler/named_pgm_compilers.py,sha256=kYMomYlsW7xbL0hzTWQb41EckkugaCfuYHUJqbEWBBs,3421
79
77
  ck/pgm_compiler/pgm_compiler.py,sha256=F44PtlwqMG0FS6KzOYKZuyZT6olWAVtBH-QXZPzz4O8,616
80
78
  ck/pgm_compiler/recursive_conditioning.py,sha256=U0NdIns8yLQtYR_MOf1w__CChpOMDlgRCL2nFRhtnzU,7936
81
- ck/pgm_compiler/variable_elimination.py,sha256=YNBurWTz8_BoaZgRZFj-T9gRVGek7ZutGkvjegyLkCM,3460
79
+ ck/pgm_compiler/variable_elimination.py,sha256=irAZ5b0vRGL_WGq7UrfQpMXhYBZO5YI2U_jf1-YV92Q,3547
82
80
  ck/pgm_compiler/ace/__init__.py,sha256=BkZXAF32Pk8QU7jhkuKvHqtsFasPjf8gxiZbyrGDDbQ,82
83
81
  ck/pgm_compiler/ace/ace.py,sha256=iyDacqArXW1cVP6tBabxRmmLWIHabuPkCoq2tWBm2ww,10397
84
82
  ck/pgm_compiler/support/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
85
- ck/pgm_compiler/support/clusters.py,sha256=96Up5XUgERh-t6KzSIOF2gtP5T4Ul83JK_aPtIR72Ic,20821
86
- ck/pgm_compiler/support/factor_tables.py,sha256=N7BNBBA-BX6RN-eiDwENtMLczW3JAkV-qW0i0k8OZEM,15558
87
- ck/pgm_compiler/support/join_tree.py,sha256=tRHev655cwRsOSyLK9HYwfX8EEkubmlg1fw748Kztb4,10418
88
- ck/pgm_compiler/support/named_compiler_maker.py,sha256=tQ79JOI8MknAziUiFhFGV9n4y6PPKrnbq3-quMmnrwY,974
89
- ck/pgm_compiler/support/circuit_table/__init__.py,sha256=eWMP5ywgd51RJexKkhcpKJb_8iEluL0C4_hyOpzlAvQ,167
90
- ck/pgm_compiler/support/circuit_table/circuit_table.c,sha256=aO3bq3V-FwbmJDzWVYwigOFeQUC6gFz-nAq091XQp2E,702527
91
- ck/pgm_compiler/support/circuit_table/circuit_table.cp312-win_amd64.pyd,sha256=D8n3mBrIXbSPyFVOWJUwKb7F3h1O1SXmdGq7igfQFpA,94720
92
- ck/pgm_compiler/support/circuit_table/circuit_table.pyx,sha256=jhzstay-3EUgu0CIbWKd0eNDNToX1tmm9IQxk0ZgpYM,11904
93
- ck/pgm_compiler/support/circuit_table/circuit_table_py.py,sha256=1WFCxgBFu4oaYRCdk_1uXeufFQu6PqMOsYIQ_SkXDS4,10156
83
+ ck/pgm_compiler/support/clusters.py,sha256=7jsZfPqv29vZNxmtiHBCBo3mEfvLQ_ejYh69M_d-nmo,21381
84
+ ck/pgm_compiler/support/factor_tables.py,sha256=tV9qE2zC8iwEQxTuXE6qiE6lmMpz4-Vc80_w5woo1tk,15556
85
+ ck/pgm_compiler/support/join_tree.py,sha256=OGAuZVHzT0i4e6TJ03dOM7e3gbpuW9AyjZKvSBvKvJA,12894
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
94
94
  ck/probability/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
95
95
  ck/probability/empirical_probability_space.py,sha256=HoLxmigzlWFWQlcZQwDOYk-mjgf6RW1IPE-l0t8vMPw,1950
96
96
  ck/probability/pgm_probability_space.py,sha256=vK-drx145PWW2aYB8HttQcvhvqPfxVl72bPcFO8jw8M,1034
@@ -110,7 +110,7 @@ ck/sampling/wmc_gibbs_sampler.py,sha256=GMKVW2AVtsWtP6vxE3Y2dy-dKr7GoO_vLEA9eC30
110
110
  ck/sampling/wmc_metropolis_sampler.py,sha256=PRv7wtPZz7BcwN8iArsykVwqgY77v5km7rXcawFAUPQ,6470
111
111
  ck/sampling/wmc_rejection_sampler.py,sha256=cd0VONZf-oa491RRKfwT2LakQs0o_slgPCes8AOvSNc,4897
112
112
  ck/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
113
- ck/utils/iter_extras.py,sha256=DDml5Jprmun2RovJxkwXx1uJkWacYhZEnX1ARSX2TB4,4310
113
+ ck/utils/iter_extras.py,sha256=QNd3mJxPsKN0Wg12K_Iuefto5A2Vv9leuMvymAdt4uo,4479
114
114
  ck/utils/local_config.py,sha256=-oTKvKCpm29JeHEhV1_qLC5fMS523unDzXr0VYE3M0U,9535
115
115
  ck/utils/map_list.py,sha256=T2OpjI7eDgC4geCtW_FsEr6ryiePOnKZwfDahB63zfA,3847
116
116
  ck/utils/map_set.py,sha256=BLu9BO3FCtzZlZ9MfP9STtIdQ4Me8-QKdwB7o15y7f8,3809
@@ -135,7 +135,7 @@ ck_demos/pgm/demo_pgm_string_rendering.py,sha256=JTf_M6pPwl9RtOLlpJFQIgNgGuHnsdd
135
135
  ck_demos/pgm/show_examples.py,sha256=KxK37hKqWD9w9k9RoMCdJgkBIMePf8udQbqaFs-s91c,461
136
136
  ck_demos/pgm_compiler/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
137
137
  ck_demos/pgm_compiler/compare_pgm_compilers.py,sha256=pG0OQBl2wjdCIUU0RM70j8TfCjYUxRU0i13OWpfXUHc,1611
138
- ck_demos/pgm_compiler/demo_compiler_dump.py,sha256=OlLJi1wwdFQxave5lpceyVx0-ihHEn2-d-0XFFTjowY,1370
138
+ ck_demos/pgm_compiler/demo_compiler_dump.py,sha256=Jz51szVxaa21cGzibWZ1rzON3U_fdUana87CdCfSoVE,1672
139
139
  ck_demos/pgm_compiler/demo_factor_elimination.py,sha256=KDzYwNZJ9HTcPoNxg6lxFoaXJ26QW-nnBI-0Ux_yWoM,1320
140
140
  ck_demos/pgm_compiler/demo_join_tree.py,sha256=E7ZqFrRuAmnSRmBTDqNGxD-KFlHOtd_jIju8UJssUfM,574
141
141
  ck_demos/pgm_compiler/demo_marginals_program.py,sha256=44-ZkA8KyWPXWBnbnRGQin6cP_hWY50OfQpy7LckWNo,1863
@@ -144,6 +144,7 @@ ck_demos/pgm_compiler/demo_pgm_compiler.py,sha256=LaBVSD5bXAVvEelQiT_PxA4U9AC76g
144
144
  ck_demos/pgm_compiler/demo_recursive_conditioning.py,sha256=kVZ4nQ_vlDM94a3ebjyX9sG4gAvsHdKzlVqUJ4dlxNc,862
145
145
  ck_demos/pgm_compiler/demo_variable_elimination.py,sha256=9zDPxTYr6pnxNDBGa989Ffr3tvQdKXioG2A6JPzKw4Y,858
146
146
  ck_demos/pgm_compiler/demo_wmc_program.py,sha256=SPyok8RqXY2q6NsQc6e2OW_WtyOw10etPfocRdGF1ng,818
147
+ ck_demos/pgm_compiler/time_fe_compiler.py,sha256=F6huBVmJ3jDdDDXOGt1BVTt5zmGGK127HnnV-RK2zbE,3700
147
148
  ck_demos/pgm_inference/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
148
149
  ck_demos/pgm_inference/demo_inferencing_basic.py,sha256=qrai48Kn7fbpGb_RF5olUsavqzjyZ0JOpk3DvovS18I,5774
149
150
  ck_demos/pgm_inference/demo_inferencing_mpe_cancer.py,sha256=HJ3QHUqe090HEbhXHLCtkwDBdcIxec9zbZYDuaWZMW8,1599
@@ -162,12 +163,12 @@ ck_demos/sampling/demo_marginal_direct_sampler.py,sha256=RhNunuIUnYI_GXp9m8wzadM
162
163
  ck_demos/sampling/demo_uniform_sampler.py,sha256=Z6tX_OYKGLc_w3-kEPK4KEZlJo7F5HOq_tUVppB_VQE,962
163
164
  ck_demos/sampling/demo_wmc_direct_sampler.py,sha256=c7maxTmZyIijaVdFs2h_KQbK30LvI-oCm2BXSUXVoD8,1113
164
165
  ck_demos/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
165
- ck_demos/utils/compare.py,sha256=MwigxgMqeV7slrzdIJYVJ340QBCCXOeUzUKOJkkd98w,4972
166
+ ck_demos/utils/compare.py,sha256=Bwjpflevl4nusfA0zp96rInaVKFGuhC5Xv7HzA1Fobk,5088
166
167
  ck_demos/utils/convert_network.py,sha256=TSKj8q7L7J5rhrvwjaDkdYZ0Sg8vV5FRL_vCanX1CQw,1363
167
168
  ck_demos/utils/sample_model.py,sha256=in-Nlv-iuNIu6y9fDuMyo7nzgimBuTAnCWcpnVqvqDQ,8839
168
169
  ck_demos/utils/stop_watch.py,sha256=VzXHRWx0V8vPSD-bLgLlEYkCkR2FA0-KmM_pfKx-Pxo,13205
169
- compiled_knowledge-4.0.0a16.dist-info/licenses/LICENSE.txt,sha256=uMYx7tmroEKNASizbCOwPveMQsD5UErLDC1_SANmNn8,1089
170
- compiled_knowledge-4.0.0a16.dist-info/METADATA,sha256=5y-1ZXcu9vGc2PE6lccfgtWTwjOstq_vY0Uk6OT9AQc,1838
171
- compiled_knowledge-4.0.0a16.dist-info/WHEEL,sha256=b7PoVIxzH_MOHKjftqMzQiGKfdHRlRFepVBVPg0y3vc,101
172
- compiled_knowledge-4.0.0a16.dist-info/top_level.txt,sha256=Cf8DAfd2vcnLiA7HlxoduOzV0Q-8surE3kzX8P9qdks,12
173
- compiled_knowledge-4.0.0a16.dist-info/RECORD,,
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,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.7.1)
2
+ Generator: setuptools (80.9.0)
3
3
  Root-Is-Purelib: false
4
4
  Tag: cp312-cp312-win_amd64
5
5