compiled-knowledge 4.0.0a23__cp313-cp313-win32.whl → 4.0.0a25__cp313-cp313-win32.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 (34) hide show
  1. ck/circuit/_circuit_cy.c +1 -1
  2. ck/circuit/_circuit_cy.cp313-win32.pyd +0 -0
  3. ck/circuit/tmp_const.py +5 -4
  4. ck/circuit_compiler/circuit_compiler.py +3 -2
  5. ck/circuit_compiler/cython_vm_compiler/_compiler.c +152 -152
  6. ck/circuit_compiler/cython_vm_compiler/_compiler.cp313-win32.pyd +0 -0
  7. ck/circuit_compiler/support/circuit_analyser/_circuit_analyser_cy.c +1 -1
  8. ck/circuit_compiler/support/circuit_analyser/_circuit_analyser_cy.cp313-win32.pyd +0 -0
  9. ck/circuit_compiler/support/llvm_ir_function.py +4 -4
  10. ck/example/diamond_square.py +3 -1
  11. ck/example/triangle_square.py +3 -1
  12. ck/example/truss.py +3 -1
  13. ck/in_out/parse_net.py +21 -19
  14. ck/in_out/parser_utils.py +7 -3
  15. ck/pgm.py +146 -139
  16. ck/pgm_circuit/mpe_program.py +3 -4
  17. ck/pgm_circuit/pgm_circuit.py +27 -18
  18. ck/pgm_circuit/program_with_slotmap.py +4 -1
  19. ck/pgm_compiler/pgm_compiler.py +1 -1
  20. ck/pgm_compiler/support/circuit_table/_circuit_table_cy.c +1 -1
  21. ck/pgm_compiler/support/circuit_table/_circuit_table_cy.cp313-win32.pyd +0 -0
  22. ck/pgm_compiler/support/join_tree.py +3 -3
  23. ck/probability/empirical_probability_space.py +4 -3
  24. ck/probability/pgm_probability_space.py +7 -3
  25. ck/probability/probability_space.py +20 -15
  26. ck/program/raw_program.py +23 -16
  27. ck/sampling/sampler_support.py +7 -5
  28. ck/utils/iter_extras.py +3 -2
  29. ck/utils/local_config.py +16 -8
  30. {compiled_knowledge-4.0.0a23.dist-info → compiled_knowledge-4.0.0a25.dist-info}/METADATA +1 -1
  31. {compiled_knowledge-4.0.0a23.dist-info → compiled_knowledge-4.0.0a25.dist-info}/RECORD +34 -34
  32. {compiled_knowledge-4.0.0a23.dist-info → compiled_knowledge-4.0.0a25.dist-info}/WHEEL +0 -0
  33. {compiled_knowledge-4.0.0a23.dist-info → compiled_knowledge-4.0.0a25.dist-info}/licenses/LICENSE.txt +0 -0
  34. {compiled_knowledge-4.0.0a23.dist-info → compiled_knowledge-4.0.0a25.dist-info}/top_level.txt +0 -0
@@ -16,33 +16,42 @@ class PGMCircuit:
16
16
  holds the values of the parameters. Specifically, given parameter id `param_id`, then
17
17
  `parameter_values[slot_map[param_id] - number_of_indicators]` is the value of the
18
18
  identified parameter as it was in the PGM.
19
-
20
- Fields:
21
- rvs: holds the random variables from the PGM as it was compiled, in order.
22
-
23
- conditions: any conditions on `rvs` that were compiled into the circuit.
24
-
25
- number_of_indicators: is the number of indicators in `rvs` which is
26
- `sum(len(rv) for rv in rvs`. Specifically, `circuit.vars[i]` is the circuit variable
27
- corresponding to the ith indicator, where `circuit` is `circuit_top.circuit` and
28
- indicators are ordered as per `rvs`.
29
-
30
- number_of_parameters: is the number of parameters from the PGM that are
31
- represented as circuit variables. This may be zero if parameters from the PGM
32
- were compiled as constants.
33
-
34
- slot_map[x]: gives the index of the circuit variable corresponding to x,
35
- where x is either a random variable indicator (Indicator) or a parameter id (ParamId).
36
-
37
19
  """
38
20
 
39
21
  rvs: Sequence[RandomVariable]
22
+ """holds the random variables from the PGM as it was compiled, in order."""
23
+
40
24
  conditions: Sequence[Indicator]
25
+ """any conditions on `rvs` that were compiled into the circuit."""
26
+
41
27
  circuit_top: CircuitNode
28
+ """the top circuit node defining the network function."""
29
+
42
30
  number_of_indicators: int
31
+ """
32
+ the number of indicators in `rvs` which is
33
+ `sum(len(rv) for rv in rvs`. Specifically, `circuit.vars[i]` is the circuit variable
34
+ corresponding to the ith indicator, where `circuit` is `circuit_top.circuit` and
35
+ indicators are ordered as per `rvs`.
36
+ """
37
+
43
38
  number_of_parameters: int
39
+ """
40
+ the number of parameters from the PGM that are
41
+ represented as circuit variables. This may be zero if parameters from the PGM
42
+ were compiled as constants.
43
+ """
44
+
44
45
  slot_map: SlotMap
46
+ """
47
+ gives the index of the circuit variable corresponding to x,
48
+ where x is either a random variable indicator (Indicator) or a parameter id (ParamId).
49
+ """
50
+
45
51
  parameter_values: NDArray
52
+ """
53
+ parameter values, co-indexed with the circuit variables, counting beyond `number_of_indicators`.
54
+ """
46
55
 
47
56
  def dump(self, *, prefix: str = '', indent: str = ' ') -> None:
48
57
  """
@@ -114,7 +114,10 @@ class ProgramWithSlotmap:
114
114
 
115
115
  def compute_conditioned(self, *condition: Condition) -> NDArrayNumeric:
116
116
  """
117
- Equivalent to:
117
+ Compute the program value, after setting the given condition.
118
+
119
+ Equivalent to::
120
+
118
121
  self.set_condition(*condition)
119
122
  return self.compute()
120
123
  """
@@ -7,7 +7,7 @@ from ck.pgm_circuit import PGMCircuit
7
7
  class PGMCompiler(Protocol):
8
8
  def __call__(self, pgm: PGM, *, const_parameters: bool = True) -> PGMCircuit:
9
9
  """
10
- A PGM compiler is a function with this signature.
10
+ A PGM compiler compiles a PGM to an arithmetic circuit.
11
11
 
12
12
  Args:
13
13
  pgm: The PGM to compile.
@@ -13,7 +13,7 @@
13
13
  "/O2"
14
14
  ],
15
15
  "include_dirs": [
16
- "C:\\Users\\runneradmin\\AppData\\Local\\Temp\\build-env-ca0w3uvm\\Lib\\site-packages\\numpy\\_core\\include"
16
+ "C:\\Users\\runneradmin\\AppData\\Local\\Temp\\build-env-8cwjzb8_\\Lib\\site-packages\\numpy\\_core\\include"
17
17
  ],
18
18
  "name": "ck.pgm_compiler.support.circuit_table._circuit_table_cy",
19
19
  "sources": [
@@ -192,7 +192,7 @@ def _make_spanning_tree_small_root(cost: NDArrayFloat64, clusters: List[Set[int]
192
192
  Returns:
193
193
  (spanning_tree, root_index)
194
194
 
195
- spanning_tree: is a spanning tree represented as a list of nodes, the list is coindexed with
195
+ spanning_tree: is a spanning tree represented as a list of nodes, the list is co-indexed with
196
196
  the given cost matrix, each node is a list of children, each child being
197
197
  represented as an index into the list of nodes.
198
198
 
@@ -219,7 +219,7 @@ def _make_spanning_tree_arbitrary_root(cost: NDArrayFloat64) -> Tuple[List[List[
219
219
  Returns:
220
220
  (spanning_tree, root_index)
221
221
 
222
- spanning_tree: is a spanning tree represented as a list of nodes, the list is coindexed with
222
+ spanning_tree: is a spanning tree represented as a list of nodes, the list is co-indexed with
223
223
  the given cost matrix, each node is a list of children, each child being
224
224
  represented as an index into the list of nodes.
225
225
 
@@ -243,7 +243,7 @@ def _make_spanning_tree_at_root(
243
243
  root_custer_index: a nominated root cluster to be the root of the tree.
244
244
 
245
245
  Returns:
246
- a spanning tree represented as a list of nodes, the list is coindexed with
246
+ a spanning tree represented as a list of nodes, the list is co-indexed with
247
247
  the given cost matrix, each node is a list of children, each child being
248
248
  represented as an index into the list of nodes. The root node is the
249
249
  index `root_custer_index` as passed to this function.
@@ -1,4 +1,4 @@
1
- from typing import Sequence, Iterable, Tuple, Dict, List
1
+ from typing import Sequence, Iterable, Tuple, Dict
2
2
 
3
3
  from ck.pgm import RandomVariable, Indicator, Instance
4
4
  from ck.probability.probability_space import ProbabilitySpace, Condition, check_condition
@@ -10,6 +10,8 @@ class EmpiricalProbabilitySpace(ProbabilitySpace):
10
10
  Enable probabilistic queries over a sample from a sample space.
11
11
  Note that this is not necessarily an efficient approach to calculating probabilities and statistics.
12
12
 
13
+ This probability space treats each of the samples as equally weighted.
14
+
13
15
  Assumes:
14
16
  len(sample) == len(rvs), for each sample in samples.
15
17
  0 <= sample[i] < len(rvs[i]), for each sample in samples, for i in range(len(rvs)).
@@ -19,7 +21,7 @@ class EmpiricalProbabilitySpace(ProbabilitySpace):
19
21
  samples: instances (state indexes) that are samples from the given rvs.
20
22
  """
21
23
  self._rvs: Sequence[RandomVariable] = tuple(rvs)
22
- self._samples: List[Instance] = list(samples)
24
+ self._samples: Sequence[Instance] = tuple(samples)
23
25
  self._rv_idx_to_sample_idx: Dict[int, int] = {
24
26
  rv.idx: i
25
27
  for i, rv in enumerate(self._rvs)
@@ -47,4 +49,3 @@ class EmpiricalProbabilitySpace(ProbabilitySpace):
47
49
  @property
48
50
  def z(self) -> float:
49
51
  return len(self._samples)
50
-
@@ -1,6 +1,6 @@
1
- from typing import Sequence, Iterable, Tuple, Dict, List
1
+ from typing import Sequence, Tuple
2
2
 
3
- from ck.pgm import RandomVariable, Indicator, Instance, PGM
3
+ from ck.pgm import RandomVariable, Indicator, PGM
4
4
  from ck.probability.probability_space import ProbabilitySpace, Condition, check_condition
5
5
 
6
6
 
@@ -12,6 +12,11 @@ class PGMProbabilitySpace(ProbabilitySpace):
12
12
 
13
13
  Args:
14
14
  pgm: The PGM to query.
15
+
16
+ Warning:
17
+ The resulting probability space assumes that the value of the partition
18
+ function, `z`, remains constant for the lifetime of the PGM. If the value
19
+ changes, then probabilities and statistics will be incorrect.
15
20
  """
16
21
  self._pgm = pgm
17
22
  self._z = None
@@ -29,4 +34,3 @@ class PGMProbabilitySpace(ProbabilitySpace):
29
34
  if self._z is None:
30
35
  self._z = self._pgm.value_product_indicators()
31
36
  return self._z
32
-
@@ -1,10 +1,7 @@
1
- """
2
- An abstract class for object providing probabilities.
3
- """
4
1
  import math
5
2
  from abc import ABC, abstractmethod
6
3
  from itertools import chain
7
- from typing import Sequence, Tuple, Iterable, Callable
4
+ from typing import Sequence, Tuple, Iterable, Callable, TypeAlias
8
5
 
9
6
  import numpy as np
10
7
 
@@ -13,8 +10,19 @@ from ck.utils.iter_extras import combos as _combos
13
10
  from ck.utils.map_set import MapSet
14
11
  from ck.utils.np_extras import dtype_for_number_of_states, NDArrayFloat64, DTypeStates, NDArrayNumeric
15
12
 
16
- # Type defining a condition.
17
- Condition = None | Indicator | Iterable[Indicator]
13
+ Condition: TypeAlias = None | Indicator | Iterable[Indicator]
14
+ """
15
+ Type defining a condition. A condition is logically a set of
16
+ indicators, each indicator representing a random variable being in some state.
17
+
18
+ If multiple indicators of the same random variable appear in
19
+ a condition, then they are interpreted as
20
+ a disjunction, otherwise indicators are interpreted as
21
+ a conjunction. E.g., the condition (X=0, Y=1, Y=3) means
22
+ X=0 and (Y=1 or Y=3).
23
+ """
24
+
25
+ _NAN: float = np.nan # Not-a-number (i.e., the result of an invalid calculation).
18
26
 
19
27
 
20
28
  class ProbabilitySpace(ABC):
@@ -41,13 +49,9 @@ class ProbabilitySpace(ABC):
41
49
  """
42
50
  Return the weight of instances matching the given condition.
43
51
 
44
- If multiple indicators of the same random variable appear in
45
- the parameter 'indicators' then they are interpreted as
46
- a disjunction, otherwise indicators are interpreted as
47
- a conjunction. E.g.: X=0, Y=1, Y=3 means X=0 and (Y=1 or Y=3)
48
-
49
52
  Args:
50
- condition: zero or more indicators that specify a condition.
53
+ condition: a condition restricting the instances that are
54
+ considered in the result.
51
55
  """
52
56
 
53
57
  @property
@@ -56,6 +60,7 @@ class ProbabilitySpace(ABC):
56
60
  """
57
61
  Return the summed weight of all instances.
58
62
  This is equivalent to self.wmc(), with no arguments.
63
+ This is also known as the "partition function".
59
64
  """
60
65
 
61
66
  def probability(self, *indicators: Indicator, condition: Condition = ()) -> float:
@@ -80,11 +85,11 @@ class ProbabilitySpace(ABC):
80
85
  if len(condition) == 0:
81
86
  z = self.z
82
87
  if z <= 0:
83
- return np.nan
88
+ return _NAN
84
89
  else:
85
90
  z = self.wmc(*condition)
86
91
  if z <= 0:
87
- return np.nan
92
+ return _NAN
88
93
 
89
94
  # Combine the indicators with the condition
90
95
  # If a variable is mentioned in both the indicators and condition, then
@@ -617,6 +622,6 @@ def _normalise_marginal(distribution: NDArrayFloat64) -> None:
617
622
  """
618
623
  total = np.sum(distribution)
619
624
  if total <= 0:
620
- distribution[:] = np.nan
625
+ distribution[:] = _NAN
621
626
  elif total != 1:
622
627
  distribution /= total
ck/program/raw_program.py CHANGED
@@ -1,5 +1,5 @@
1
1
  from dataclasses import dataclass
2
- from typing import Callable, Sequence
2
+ from typing import Callable, Sequence, TypeAlias
3
3
 
4
4
  import numpy as np
5
5
  import ctypes as ct
@@ -7,12 +7,14 @@ import ctypes as ct
7
7
 
8
8
  from ck.utils.np_extras import NDArrayNumeric, DTypeNumeric
9
9
 
10
- # RawProgramFunction is a function of three ctypes arrays, returning nothing.
11
- # Args:
12
- # [0]: input values,
13
- # [1]: temporary working memory,
14
- # [2]: output values.
15
- RawProgramFunction = Callable[[ct.POINTER, ct.POINTER, ct.POINTER], None]
10
+ RawProgramFunction: TypeAlias = Callable[[ct.POINTER, ct.POINTER, ct.POINTER], None]
11
+ """
12
+ RawProgramFunction is a function of three ctypes arrays, returning nothing.
13
+ Args:
14
+ [0]: input values,
15
+ [1]: temporary working memory,
16
+ [2]: output values.
17
+ """
16
18
 
17
19
 
18
20
  @dataclass
@@ -26,23 +28,28 @@ class RawProgram:
26
28
  an efficient method for executing a program as buffers are reallocated for
27
29
  each call. Alternatively, a `RawProgram` can be wrapped in a `ProgramBuffer`
28
30
  for computationally efficient memory buffer reuse.
29
-
30
- Fields:
31
- function: is a function of three ctypes arrays, returning nothing.
32
- dtype: the numpy data type of the array values.
33
- number_of_vars: the number of input values (first function argument).
34
- number_of_tmps: the number of working memory values (second function argument).
35
- number_of_results: the number of result values (third function argument).
36
- var_indices: maps the index of inputs (from 0 to self.number_of_vars - 1) to the index
37
- of the corresponding circuit var.
38
31
  """
39
32
 
40
33
  function: RawProgramFunction
34
+ """a function of three ctypes arrays, returning nothing."""
35
+
41
36
  dtype: DTypeNumeric
37
+ """the numpy data type of the array values."""
38
+
42
39
  number_of_vars: int
40
+ """the number of input values (first function argument)."""
41
+
43
42
  number_of_tmps: int
43
+ """the number of working memory values (second function argument)."""
44
+
44
45
  number_of_results: int
46
+ """the number of result values (third function argument)."""
47
+
45
48
  var_indices: Sequence[int]
49
+ """
50
+ a map from the index of inputs (from 0 to self.number_of_vars - 1) to the index
51
+ of the corresponding circuit var.
52
+ """
46
53
 
47
54
  def __call__(self, var_values: NDArrayNumeric | Sequence[int | float] | int | float) -> NDArrayNumeric:
48
55
  """
@@ -1,6 +1,6 @@
1
1
  from dataclasses import dataclass
2
2
  from itertools import count
3
- from typing import Callable, Sequence, Optional, Set, Tuple, Dict, Collection
3
+ from typing import Callable, Sequence, Optional, Set, Tuple, Dict, Collection, TypeAlias
4
4
 
5
5
  from ck.pgm import Instance, RandomVariable, Indicator
6
6
  from ck.pgm_circuit.program_with_slotmap import ProgramWithSlotmap
@@ -10,10 +10,12 @@ from ck.utils.map_set import MapSet
10
10
  from ck.utils.np_extras import NDArrayStates, NDArrayNumeric
11
11
  from ck.utils.random_extras import Random
12
12
 
13
- # Type of a yield function. Support for a sampler.
14
- # A yield function may be used to implement a sampler's iterator, thus
15
- # it provides an Instance or single state index.
16
- YieldF = Callable[[NDArrayStates], int] | Callable[[NDArrayStates], Instance]
13
+ YieldF: TypeAlias = Callable[[NDArrayStates], int] | Callable[[NDArrayStates], Instance]
14
+ """
15
+ Type of a yield function. Support for a sampler.
16
+ A yield function may be used to implement a sampler's iterator, thus
17
+ it provides an Instance or single state index.
18
+ """
17
19
 
18
20
 
19
21
  @dataclass
ck/utils/iter_extras.py CHANGED
@@ -33,11 +33,12 @@ def combos(list_of_lists: Sequence[Sequence[_T]], flip=False) -> Iterable[Tuple[
33
33
  Iterate over all combinations of taking one element from each of the lists.
34
34
 
35
35
  The order of results has the first element changing most rapidly.
36
- For example, given [[1,2,3],[4,5],[6,7]], combos yields the following:
36
+ For example, given [[1,2,3],[4,5],[6,7]], combos yields the following::
37
+
37
38
  (1,4,6), (2,4,6), (3,4,6), (1,5,6), (2,5,6), (3,5,6),
38
39
  (1,4,7), (2,4,7), (3,4,7), (1,5,7), (2,5,7), (3,5,7).
39
40
 
40
- If flip, then the last changes most rapidly.
41
+ If `flip` is true, then the last changes most rapidly.
41
42
  """
42
43
  num = len(list_of_lists)
43
44
  if num == 0:
ck/utils/local_config.py CHANGED
@@ -12,10 +12,13 @@ other getter methods wrap `get`.
12
12
 
13
13
  The `get` method will search for a value for a requested variable
14
14
  using the following steps.
15
+
15
16
  1) Check the `programmatic config` which is a dictionary that
16
- can be directly updated.
17
+ can be directly updated.
18
+
17
19
  2) Check the PYTHONPATH for a module called `config` (i.e., a
18
- `config.py` file) for global variables defined in that module.
20
+ `config.py` file) for global variables defined in that module.
21
+
19
22
  3) Check the system environment variables (`os.environ`).
20
23
 
21
24
  Variable names must be a valid Python identifier. Only valid
@@ -171,8 +174,9 @@ def get_params(
171
174
  are returned as a single string with `delim` as the delimiter. If
172
175
  `delim` is not None then the default value for `sep` is '='.
173
176
 
174
- For example, assume config.py contains: ABC = 123 and DEF = 456,
175
- then:
177
+ For example, assume `config.py` contains: `ABC = 123` and `DEF = 456`,
178
+ then::
179
+
176
180
  get_params('ABC') -> ('ABC', 123)
177
181
  get_params('ABC', 'DEF') -> ('ABC', 123), ('DEF', 456)
178
182
  get_params('ABC', sep='=') = 'ABC=123'
@@ -180,10 +184,14 @@ def get_params(
180
184
  get_params('ABC;DEF', delim=';') = 'ABC=123;DEF=456'
181
185
  get_params('ABC;DEF', sep='==', delim=';') = 'ABC==123;DEF==456'
182
186
 
183
- :param keys: the names of variables to access.
184
- :param sep: the separator character between {variable} and {value}.
185
- :param delim: the delimiter character between key-value pairs.
186
- :param config: a Config instance to update. Default is the global config.
187
+ Args:
188
+ keys: the names of variables to access.
189
+ sep: the separator character between {variable} and {value}.
190
+ delim: the delimiter character between key-value pairs.
191
+ config: a Config instance to update. Default is the global config.
192
+
193
+ Returns:
194
+ the requested parameter values.
187
195
  """
188
196
  if delim is not None:
189
197
  keys = flatten(key.split(delim) for key in keys)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: compiled-knowledge
3
- Version: 4.0.0a23
3
+ Version: 4.0.0a25
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,29 +1,29 @@
1
1
  ck/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- ck/pgm.py,sha256=Uwo2A4qEtgwmKkma1HOsozn837435zEN9JUByYlfe-w,120701
2
+ ck/pgm.py,sha256=DyCDjmqbEUqMh5qCBmWxwGdGefMYA3m574rsuclu7Zk,120987
3
3
  ck/circuit/__init__.py,sha256=klUR7OVESf53-8Ho4f32clHFsR2SOz4XgwZzfDlms88,418
4
- ck/circuit/_circuit_cy.c,sha256=TU_8mS7m-QLkAok8SHoYza7v4HINNxmi-MqPwEFwD2g,1741715
5
- ck/circuit/_circuit_cy.cp313-win32.pyd,sha256=DAUfNgFC9m2UOr78f1seDAw9PfE1erBJhipA88VDacA,220672
4
+ ck/circuit/_circuit_cy.c,sha256=N0ck098MdBsR3aCRgp9Gtkyf5-IPQQDN6rccUJLRVVU,1741715
5
+ ck/circuit/_circuit_cy.cp313-win32.pyd,sha256=8Fk7bKc6TB7AsQri4v9MJs40oGzOUbaNTYwSJRkwzeI,220672
6
6
  ck/circuit/_circuit_cy.pxd,sha256=F1WU4KuX_knXQX-hwNKoHsoUK3fJLbLOxEnomWMJFpI,1057
7
7
  ck/circuit/_circuit_cy.pyx,sha256=TIjqsdyN_IzOm9XQw26kEURpL6GSL1kJO3K-UUlkbQc,27763
8
8
  ck/circuit/_circuit_py.py,sha256=gQZoEphxut2UyBL0ZqmNc8KlNBSMST_VOCqOpDMIRSM,28331
9
- ck/circuit/tmp_const.py,sha256=dG9FuGfoAG5qjYG1rNwekqKiea_KmVfxHMTOgCPbBiQ,2372
9
+ ck/circuit/tmp_const.py,sha256=9DVKsAqwNb3BrmaLoxrBoVmFqQ3nacz3wIx7k3qe8SE,2375
10
10
  ck/circuit_compiler/__init__.py,sha256=T0Igyp5jPgnIXv4oRcIYhmsOdcNOb3L4Za6dK6eYk7g,132
11
- ck/circuit_compiler/circuit_compiler.py,sha256=8BLB8DUnPbpl5PXZsIopydPbItytdn2rzRfM2U1EC84,1018
11
+ ck/circuit_compiler/circuit_compiler.py,sha256=xujLh120_G7AGJpv-IZTI4S1TpNf4gzHilaqvlKvfXA,1148
12
12
  ck/circuit_compiler/interpret_compiler.py,sha256=KMzLzIV-BU5l8GQ2833kjios4sbGSVUm4ero7MEYvVk,8786
13
13
  ck/circuit_compiler/llvm_compiler.py,sha256=6RHUCVWCOgt3ZNyjRTl2Z2npYJMWyAFJVAIc5SAx2mY,14023
14
14
  ck/circuit_compiler/llvm_vm_compiler.py,sha256=XJhiAZmGMRRz49XUfng9lgETxVw6NgD6XCI0H3fX-1E,22200
15
15
  ck/circuit_compiler/named_circuit_compilers.py,sha256=snlD3JnhAZC-atKpf5GD0v4CGdvj2_ZhCZ3O-tsxzxc,2284
16
16
  ck/circuit_compiler/cython_vm_compiler/__init__.py,sha256=pEAwTleuZgdYhTAQMea2f9YsFK54eoNbZSbrWkW8aeE,49
17
- ck/circuit_compiler/cython_vm_compiler/_compiler.c,sha256=kXSePtDuUQ0VQBdO4neKwtfwS7l1L7G66BwuHcU_fh8,871325
18
- ck/circuit_compiler/cython_vm_compiler/_compiler.cp313-win32.pyd,sha256=URkxKlrGSX3xpbl4ubfukw9rrG2Ddyk3uPkpJyqUaIE,91648
17
+ ck/circuit_compiler/cython_vm_compiler/_compiler.c,sha256=ehRoFxtI8THJayBTg8Epq4dVPXc50xbiqPH-fBzeRSQ,871325
18
+ ck/circuit_compiler/cython_vm_compiler/_compiler.cp313-win32.pyd,sha256=8c54xxU0b6SXL0Yl44M7SLbTy1X7QKOaXRG9qO3WhHc,91648
19
19
  ck/circuit_compiler/cython_vm_compiler/_compiler.pyx,sha256=550r0AkOh8ZuuTRy3e6Aq-YqBQ82EKcap8e6f3zlEuM,13278
20
20
  ck/circuit_compiler/cython_vm_compiler/cython_vm_compiler.py,sha256=3Q-HCyA7VWFoXS9gn-k4LXedzqHPvdFNvWHfDcKYv6s,4473
21
21
  ck/circuit_compiler/support/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
22
  ck/circuit_compiler/support/input_vars.py,sha256=x6krN6sW9A-vZTteY4M4on_0vS4ChaaCcmnXcnQ4y0s,4812
23
- ck/circuit_compiler/support/llvm_ir_function.py,sha256=f4gD591d8cytln4vY9Lxw_cJrSyQJ3iHES49eN44eec,8612
23
+ ck/circuit_compiler/support/llvm_ir_function.py,sha256=07IUmx4bGReDu-BsUhJEWM_onm8NmsHwQzJan1rnAFE,8572
24
24
  ck/circuit_compiler/support/circuit_analyser/__init__.py,sha256=RbyIObAAb-w0Ky4fB198xAfxTh2doquN9ez68SZSZgo,536
25
- ck/circuit_compiler/support/circuit_analyser/_circuit_analyser_cy.c,sha256=FN43CmGEBQv72l7rqE6qnjb_8MzYLZRwudYkRrxRSD0,448751
26
- ck/circuit_compiler/support/circuit_analyser/_circuit_analyser_cy.cp313-win32.pyd,sha256=lvD3122eOShlJhrBCxrhTEwYo4gdR5-f4CxYmPWAS0c,46592
25
+ ck/circuit_compiler/support/circuit_analyser/_circuit_analyser_cy.c,sha256=uhRe4nQzPL2VAhDz3PsG-hja8MV7S6FwgfvncMNOhhQ,448751
26
+ ck/circuit_compiler/support/circuit_analyser/_circuit_analyser_cy.cp313-win32.pyd,sha256=nJ-5_P2n0AB_n9nPhE5NKUGcxzaqGvpvvEV3dfL_Tms,46592
27
27
  ck/circuit_compiler/support/circuit_analyser/_circuit_analyser_cy.pyx,sha256=ctDOHOjnUhdsR_XHBrgchFVTImLhsEUjU3cqkP-GdF8,3331
28
28
  ck/circuit_compiler/support/circuit_analyser/_circuit_analyser_py.py,sha256=eWjc2B946LeSzcGa9PyI4XQvlx_B1KPEiQuM6OOFjjQ,3086
29
29
  ck/example/__init__.py,sha256=BXVxvTcl3tqgai-xJiGQIaG_ChlpPRdfWg985MQ7dwM,1744
@@ -36,7 +36,7 @@ ck/example/chain.py,sha256=AAqLeEUzZYir3fqBl9bzY1SZKW3HLT_FJPzXTFSOvuU,1351
36
36
  ck/example/child.py,sha256=IkYgd3LBSQI8S3-hwEWcusHuH5MjqGSKNCl0NJnw7O4,7811
37
37
  ck/example/clique.py,sha256=auWWzCV3s-r6ctdPKGcb_bulMymU2pEUuKJsqE1Onm4,1088
38
38
  ck/example/cnf_pgm.py,sha256=vzr36kokWutGgbfmsI0ZDIgdmWIsUegnO49EUYjgpVQ,1283
39
- ck/example/diamond_square.py,sha256=VYvrdFJv_E297RGneu98CV-mH2AXiPpCalCXoYjTVuE,2790
39
+ ck/example/diamond_square.py,sha256=IkHuzn_04SKXk2a9YRrxmyr5hxyL7CY3-R-GLbWq-P8,2795
40
40
  ck/example/earthquake.py,sha256=KuvHciKlidAJAxgti07BS8XoVIXHJth3khvQkP8tGls,1289
41
41
  ck/example/empty.py,sha256=tyg8Z8JIwTMR2C8oXD81pzAzvKpHRBX21ocWLdAUfE8,182
42
42
  ck/example/hailfinder.py,sha256=KMT9VobwFGWnw0JRymQTkd35HAIRFQhXnoN87mlhCYQ,39405
@@ -55,13 +55,13 @@ ck/example/star.py,sha256=3vf6xRl4MxRlhj3MGPfwKk3ipSVym-qLYJUDkiUqfe0,1578
55
55
  ck/example/stress.py,sha256=ENeOKFVFMa8WkbhhCLt2CIeYdPmHaiU_FOGIy80RYpI,1998
56
56
  ck/example/student.py,sha256=XqUIX0DxR0a3G1sqK4MM3V_pvUm3IQ5aY2hpbo_BMlo,1333
57
57
  ck/example/survey.py,sha256=KrqDgzU1V-yJHy4BEAAJQatqH9YAy8acrp6rVYAqQag,1611
58
- ck/example/triangle_square.py,sha256=D-ADGOSxCffsgukLTySsb6HVQpUnOJ-ZyMGBz_qGna4,2148
59
- ck/example/truss.py,sha256=5ud1qvPZMSKqSx0Sq1ZKcEeD_ZVUdKbEBfk5eyqhpm4,1974
58
+ ck/example/triangle_square.py,sha256=WQpFrIm8h51ZYNZ9kAtoq3XamUNiVGKCGAsMdSv5urI,2153
59
+ ck/example/truss.py,sha256=w1DNacSg2HyEz_m38t__hdl3zqzKX5pf-tc8M9PLRGo,1979
60
60
  ck/in_out/__init__.py,sha256=PKhy5qeUrmmUaECSQIkoLQ2McAfQFSwB06vQZk3vpmo,112
61
61
  ck/in_out/parse_ace_lmap.py,sha256=EZnSLhsZwdPnk2Fbe2El0YXYqvjd_cBh7PZro7ZeR04,7891
62
62
  ck/in_out/parse_ace_nnf.py,sha256=zO3smkKKiUy_g0S7WeNyhEaZu5x65wuSNIDWlA3YU_g,13350
63
- ck/in_out/parse_net.py,sha256=cBY7X4k5U8v9x_dtFZWdOpSPh-q-U47gdImNo2Tf9dY,14302
64
- ck/in_out/parser_utils.py,sha256=IKwgXBrIhHdL85n92RzB5yau_ja7DB3iAV-FHMgWsnI,5440
63
+ ck/in_out/parse_net.py,sha256=ZeHgMXBYUkboMFkbs0y7Px4Ngbooi000obl_wFfym7k,14307
64
+ ck/in_out/parser_utils.py,sha256=5OnvBKGGQbbc9ez8GwwudX2BFYTCF4gbkj6t2f73Esk,5567
65
65
  ck/in_out/pgm_pickle.py,sha256=i5LYxez356we7MzHwsQBmFdOvBJOLVKBp4u4lSwBOjU,1004
66
66
  ck/in_out/pgm_python.py,sha256=c2-yxXxJ4fF00gUD5Lvt_CSE07EgwYeHW3nSNXunEvc,10092
67
67
  ck/in_out/render_bugs.py,sha256=6YBhMIq3VRKFS0XqHbaWj6iz1io7O9icW23kukF_Cic,3383
@@ -69,9 +69,9 @@ ck/in_out/render_net.py,sha256=LpQYAo_tF45vMIcHW1Ir5Zd_Ot69SPAK-e1Tl_6Ygo0,5147
69
69
  ck/in_out/render_pomegranate.py,sha256=gGvXyX9vOoilGIIL3rsMB07gERMU-12XPsttfSb4xLI,5764
70
70
  ck/pgm_circuit/__init__.py,sha256=B0CCjNMnPzrd0YiOEFdK4JzmRCvFIGJi3RJQ5Vg6fqA,37
71
71
  ck/pgm_circuit/marginals_program.py,sha256=DUvSND3ozQuBCZcmIsgwZ4w_IWCVV7O31Pm4PJ7ZDok,14786
72
- ck/pgm_circuit/mpe_program.py,sha256=sKj1hoxN3dTYOegj6tf5fV7KLHuqJ9FaP3tRK3HM4Xg,10245
73
- ck/pgm_circuit/pgm_circuit.py,sha256=3vKOh2gFGyB_PhfQgviCQGXv1t4dbawBL89sjm4-SPA,3287
74
- ck/pgm_circuit/program_with_slotmap.py,sha256=boS8Y1X60F-_pTM3wFyC4oP9jc-5zDc8Iv4vn7JUJWM,8959
72
+ ck/pgm_circuit/mpe_program.py,sha256=-8fcb-txUiKo2bPKhApl_GD7U_gREC5SvU_D5sQe9sg,10226
73
+ ck/pgm_circuit/pgm_circuit.py,sha256=DLjQmaVuAQ0YF6kCi15vDRiydLCJmufeo0hQJndqv2Y,3375
74
+ ck/pgm_circuit/program_with_slotmap.py,sha256=ZQeWu32ebgmLZb6GN_8Qp_9ZxARZoPkKDeVkgEYVhrU,9035
75
75
  ck/pgm_circuit/slot_map.py,sha256=T4nBweoiivEdBDhYZ6GWpOXqSusRbp3vrSbCTyP1qpI,857
76
76
  ck/pgm_circuit/target_marginals_program.py,sha256=x4YQM-hUQRo2OLxodKJVOAKxqNlxmiDl9nGbbknypkY,3768
77
77
  ck/pgm_circuit/wmc_program.py,sha256=WtABU74FOCCJuKRCoDL4CyZ4CJXFmt9RSxiNNHsOhRY,12699
@@ -80,7 +80,7 @@ ck/pgm_circuit/support/compile_circuit.py,sha256=krsTlZxLk_RHZL0qoRVAjyW78Zk2HZi
80
80
  ck/pgm_compiler/__init__.py,sha256=XCK1AWBBB9UYi6kbFnxMFzBL9a25EWfHnz_yn3ZKYuM,112
81
81
  ck/pgm_compiler/factor_elimination.py,sha256=6iMh_NdOQh4D5cuo8q1y7yUuj3glnM9I0OJ9vlJAGqU,13807
82
82
  ck/pgm_compiler/named_pgm_compilers.py,sha256=sI-dwF7mht6aEuVfsN3sIO_4oH7RrjIt5x9ZlBwVQys,3376
83
- ck/pgm_compiler/pgm_compiler.py,sha256=F44PtlwqMG0FS6KzOYKZuyZT6olWAVtBH-QXZPzz4O8,616
83
+ ck/pgm_compiler/pgm_compiler.py,sha256=rhbICo7eAY9_dlGfg937zZal7hoc4slTvhxsob-6h_E,622
84
84
  ck/pgm_compiler/recursive_conditioning.py,sha256=U0NdIns8yLQtYR_MOf1w__CChpOMDlgRCL2nFRhtnzU,7936
85
85
  ck/pgm_compiler/variable_elimination.py,sha256=irAZ5b0vRGL_WGq7UrfQpMXhYBZO5YI2U_jf1-YV92Q,3547
86
86
  ck/pgm_compiler/ace/__init__.py,sha256=Rud883H68yz2Dw-NkiiTPC6rmii6hHKMHbtiU6_liug,97
@@ -88,34 +88,34 @@ ck/pgm_compiler/ace/ace.py,sha256=iyDacqArXW1cVP6tBabxRmmLWIHabuPkCoq2tWBm2ww,10
88
88
  ck/pgm_compiler/support/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
89
89
  ck/pgm_compiler/support/clusters.py,sha256=BzMmPWXBEXPvp9dZAuzA19Gbt4j9d-tdQuFbfwXD6MU,21504
90
90
  ck/pgm_compiler/support/factor_tables.py,sha256=tV9qE2zC8iwEQxTuXE6qiE6lmMpz4-Vc80_w5woo1tk,15556
91
- ck/pgm_compiler/support/join_tree.py,sha256=OGAuZVHzT0i4e6TJ03dOM7e3gbpuW9AyjZKvSBvKvJA,12894
91
+ ck/pgm_compiler/support/join_tree.py,sha256=Chkyyo--ChgWEsDqTh8RCxPN7Z1NyvL--GjTC4ONvkY,12897
92
92
  ck/pgm_compiler/support/named_compiler_maker.py,sha256=g2MLnlkWXkISHL6dh23EY53SptTo7-itfuZogSpMdB8,1420
93
93
  ck/pgm_compiler/support/circuit_table/__init__.py,sha256=yJ05NvuNE9j0E_QnjDzHYfLqcHn5TdOleEpG3wSRgXQ,579
94
- ck/pgm_compiler/support/circuit_table/_circuit_table_cy.c,sha256=8m9UlrszjsKjINoU0lDBmNyeNhJ13ApY4OaPnY8riI4,730350
95
- ck/pgm_compiler/support/circuit_table/_circuit_table_cy.cp313-win32.pyd,sha256=PPAQrN719evkRGB-o8K3DR1t5nKTNRKaYDQrdrR5VzI,86528
94
+ ck/pgm_compiler/support/circuit_table/_circuit_table_cy.c,sha256=8M2f5eQLd2cOk2au7IRML7Lh1h_K_X9LAGC6y5IBIvc,730350
95
+ ck/pgm_compiler/support/circuit_table/_circuit_table_cy.cp313-win32.pyd,sha256=8uDF4CjVbTz3KgCQb_-miWxjPrGQ9qhATAHy79Sxt4Y,86528
96
96
  ck/pgm_compiler/support/circuit_table/_circuit_table_cy.pyx,sha256=rVO1yxjZmZ6yv5s0zKq4Ji9WYrDuYTZsRG_zeF1_1xE,12015
97
97
  ck/pgm_compiler/support/circuit_table/_circuit_table_py.py,sha256=h6xPYGBSy6XHQBFLPD2D1-V7Kiw9utY68nWrcGRMEg4,11287
98
98
  ck/probability/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
99
- ck/probability/empirical_probability_space.py,sha256=HoLxmigzlWFWQlcZQwDOYk-mjgf6RW1IPE-l0t8vMPw,1950
100
- ck/probability/pgm_probability_space.py,sha256=vK-drx145PWW2aYB8HttQcvhvqPfxVl72bPcFO8jw8M,1034
101
- ck/probability/probability_space.py,sha256=itv3dNEpSTLhKg6JCNhe7Iy6n9MKWqeKO4RxKR9kKF0,25882
99
+ ck/probability/empirical_probability_space.py,sha256=aLUdmN98KpmgZjuO4QXqcMkK9GmF-Btvoj1SwK_gSQI,2029
100
+ ck/probability/pgm_probability_space.py,sha256=Slmp0mwDMoVh_86Y8L1QjAQsneazcK2VGQcRW8O2C3M,1267
101
+ ck/probability/probability_space.py,sha256=RXNm2gIVcabjbr6WsNebZMKqL8LY32RRaRMGHE2cU6o,26109
102
102
  ck/program/__init__.py,sha256=Ss9-0eqsGxCGloD6liH-0iqBG5Q3vPRF4XCw2hkDJ0M,110
103
103
  ck/program/program.py,sha256=gDJ5Q2kXZuaoHboa9yNTg0tQH9S-Gmw0BRx6PPV28pU,4184
104
104
  ck/program/program_buffer.py,sha256=1fiUcT7sqyr4vu8jXzK3ZsrgURFhWMdm6hr2BeS9ONA,5665
105
- ck/program/raw_program.py,sha256=J8jbyhc1X9PxX5DFMFeIIRHbh65JTkAxFRbjVjzxz7s,4257
105
+ ck/program/raw_program.py,sha256=3_XXudmdg_z9bwoul7pdrvaWgxRONjveXgPR1CK4hos,4212
106
106
  ck/sampling/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
107
107
  ck/sampling/forward_sampler.py,sha256=pTtpaH_ONH67G4P-aJ1p8YZSaXr4TTD6pj3ZEI2y7KM,8348
108
108
  ck/sampling/marginals_direct_sampler.py,sha256=p1jDr1stG2Hjay3D8hILezW-5YZTX1p3odUcJDAI-OQ,4466
109
109
  ck/sampling/sampler.py,sha256=qhfguy8rnVQBVVXhJylvh-8Kq7rfHW62a3DEtv9v7Xc,2306
110
- ck/sampling/sampler_support.py,sha256=beFJ993yXyvy5y2T7tJmK638ESp3qvErFWoM3BEwD5E,9742
110
+ ck/sampling/sampler_support.py,sha256=q2osk-o6iWfsMXUhzfv1spPtyB9WQlQAlnuclLyOSQQ,9768
111
111
  ck/sampling/uniform_sampler.py,sha256=NCN1T77v4g4hsdNgIsZDxHBndfj4AghLSk8WKQt_2a0,2586
112
112
  ck/sampling/wmc_direct_sampler.py,sha256=7qiz-bRlQ59ZBJmg0bEG0y63pXTVXNVx4d410BGhnJg,7265
113
113
  ck/sampling/wmc_gibbs_sampler.py,sha256=GMKVW2AVtsWtP6vxE3Y2dy-dKr7GoO_vLEA9eC304fo,6567
114
114
  ck/sampling/wmc_metropolis_sampler.py,sha256=PRv7wtPZz7BcwN8iArsykVwqgY77v5km7rXcawFAUPQ,6470
115
115
  ck/sampling/wmc_rejection_sampler.py,sha256=cd0VONZf-oa491RRKfwT2LakQs0o_slgPCes8AOvSNc,4897
116
116
  ck/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
117
- ck/utils/iter_extras.py,sha256=QNd3mJxPsKN0Wg12K_Iuefto5A2Vv9leuMvymAdt4uo,4479
118
- ck/utils/local_config.py,sha256=-oTKvKCpm29JeHEhV1_qLC5fMS523unDzXr0VYE3M0U,9535
117
+ ck/utils/iter_extras.py,sha256=4OwHqOsChnJzTwejqU6Dl4NQX0OOd37ThOltx1NlBUc,4492
118
+ ck/utils/local_config.py,sha256=U-Yt4XW5kjXQmF0X6IPJqq0RgSPWeitA7ggomjpG6HM,9600
119
119
  ck/utils/map_list.py,sha256=T2OpjI7eDgC4geCtW_FsEr6ryiePOnKZwfDahB63zfA,3847
120
120
  ck/utils/map_set.py,sha256=BLu9BO3FCtzZlZ9MfP9STtIdQ4Me8-QKdwB7o15y7f8,3809
121
121
  ck/utils/np_extras.py,sha256=Dt9Y-afUYIf_z5PBQOzh22pg8jRt-DKm2n5jJ6APIdA,1752
@@ -175,8 +175,8 @@ ck_demos/utils/compare.py,sha256=Bwjpflevl4nusfA0zp96rInaVKFGuhC5Xv7HzA1Fobk,508
175
175
  ck_demos/utils/convert_network.py,sha256=TSKj8q7L7J5rhrvwjaDkdYZ0Sg8vV5FRL_vCanX1CQw,1363
176
176
  ck_demos/utils/sample_model.py,sha256=in-Nlv-iuNIu6y9fDuMyo7nzgimBuTAnCWcpnVqvqDQ,8839
177
177
  ck_demos/utils/stop_watch.py,sha256=VzXHRWx0V8vPSD-bLgLlEYkCkR2FA0-KmM_pfKx-Pxo,13205
178
- compiled_knowledge-4.0.0a23.dist-info/licenses/LICENSE.txt,sha256=uMYx7tmroEKNASizbCOwPveMQsD5UErLDC1_SANmNn8,1089
179
- compiled_knowledge-4.0.0a23.dist-info/METADATA,sha256=OR-iFkTIH02rufAdmjgY7BW_Q5ECJ6ZveWe-jFjK8qI,1838
180
- compiled_knowledge-4.0.0a23.dist-info/WHEEL,sha256=0ABLuJ37exXk5N_efmYNs2NU9NK1K2Qlod_6bYkofEA,97
181
- compiled_knowledge-4.0.0a23.dist-info/top_level.txt,sha256=Cf8DAfd2vcnLiA7HlxoduOzV0Q-8surE3kzX8P9qdks,12
182
- compiled_knowledge-4.0.0a23.dist-info/RECORD,,
178
+ compiled_knowledge-4.0.0a25.dist-info/licenses/LICENSE.txt,sha256=uMYx7tmroEKNASizbCOwPveMQsD5UErLDC1_SANmNn8,1089
179
+ compiled_knowledge-4.0.0a25.dist-info/METADATA,sha256=ZO8hdsBltgQQkeXRlEg3WZgsLvjpBrz5CO9-m-64PE0,1838
180
+ compiled_knowledge-4.0.0a25.dist-info/WHEEL,sha256=0ABLuJ37exXk5N_efmYNs2NU9NK1K2Qlod_6bYkofEA,97
181
+ compiled_knowledge-4.0.0a25.dist-info/top_level.txt,sha256=Cf8DAfd2vcnLiA7HlxoduOzV0Q-8surE3kzX8P9qdks,12
182
+ compiled_knowledge-4.0.0a25.dist-info/RECORD,,