compiled-knowledge 4.1.0a3__cp312-cp312-macosx_11_0_arm64.whl → 4.2.0a1__cp312-cp312-macosx_11_0_arm64.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.

@@ -1,7 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from dataclasses import dataclass
4
- from enum import Enum
4
+ from enum import Enum, auto
5
5
  from typing import Sequence, Optional, Tuple, Dict, Protocol, assert_never
6
6
 
7
7
  import llvmlite.binding as llvm
@@ -15,9 +15,9 @@ from ..program.raw_program import RawProgramFunction
15
15
 
16
16
 
17
17
  class Flavour(Enum):
18
- STACK = 0 # No working temporary memory requested - all on stack.
19
- TMPS = 1 # Working temporary memory used for op node calculations.
20
- FUNCS = 2 # Working temporary memory used for op node calculations, one sub-function per op-node.
18
+ STACK = auto() # No working temporary memory requested - all on stack.
19
+ TMPS = auto() # Working temporary memory used for op node calculations.
20
+ FUNCS = auto() # Working temporary memory used for op node calculations, one sub-function per op-node.
21
21
 
22
22
 
23
23
  DEFAULT_TYPE_INFO: TypeInfo = DataType.FLOAT_64.value
@@ -15,7 +15,7 @@
15
15
  "-O3"
16
16
  ],
17
17
  "include_dirs": [
18
- "/private/var/folders/y6/nj790rtn62lfktb1sh__79hc0000gn/T/build-env-ocuq5f7z/lib/python3.12/site-packages/numpy/_core/include"
18
+ "/private/var/folders/y6/nj790rtn62lfktb1sh__79hc0000gn/T/build-env-puw5bxqw/lib/python3.12/site-packages/numpy/_core/include"
19
19
  ],
20
20
  "name": "ck.circuit_compiler.support.circuit_analyser._circuit_analyser_cy",
21
21
  "sources": [
@@ -3,7 +3,7 @@ This module supports circuit compilers and interpreters by inferring and checkin
3
3
  that are explicitly or implicitly referred to by a client.
4
4
  """
5
5
 
6
- from enum import Enum
6
+ from enum import Enum, auto
7
7
  from itertools import chain
8
8
  from typing import Sequence, Optional, Set, Iterable, List
9
9
 
@@ -15,9 +15,9 @@ class InferVars(Enum):
15
15
  An enum specifying how to automatically infer a program's input variables.
16
16
  """
17
17
 
18
- ALL = 'all' # all circuit vars are input vars
19
- REF = 'ref' # only referenced vars are input vars
20
- LOW = 'low' # input vars are circuit vars[0 : max_referenced + 1]
18
+ ALL = auto() # all circuit vars are input vars
19
+ REF = auto() # only referenced vars are input vars
20
+ LOW = auto() # input vars are circuit vars[0 : max_referenced + 1]
21
21
 
22
22
 
23
23
  # Type for specifying input circuit vars
@@ -22,10 +22,18 @@ def coalesce_cross_tables(crosstabs: Sequence[CrossTable], rvs: Sequence[RandomV
22
22
 
23
23
  `a` is a column vector with one entry for each instance of rvs seen in the cross-tables.
24
24
 
25
- `b` is a column vector containing all probabilities from all cross-tables (normalised weights).
25
+ `b` is a column vector containing all probabilities from all cross-tables.
26
26
 
27
27
  `m` is a sparse matrix with m[i, j] = 1 where b[j] is in the sum for source probability a[i].
28
28
 
29
+ "Best" means the vector `a` with:
30
+ * `a[i] >= 0` for all i, then
31
+ * `b - m a` having the smallest L2 norm, then
32
+ * `a` having the smallest L2 norm.
33
+
34
+ The given crosstables will be used to form `b`. The entries each cross-table will be normalised
35
+ to represent a probability distribution over the cross-table's instances (keys).
36
+
29
37
  Args:
30
38
  crosstabs: a collection of cross-tables to coalesce.
31
39
  rvs: the random variables that cross-tables will be projected on to.
@@ -171,8 +179,8 @@ def _make_matrix(
171
179
  Returns:
172
180
  the tuple (m, b, a_keys) where
173
181
  'm' is a sparse matrix,
174
- 'b' is a numpy array of crosstab probabilities,
175
- 'a_keys' are the keys for the solution probabilities.
182
+ 'b' is a numpy array of crosstab probabilities (normalised as needed),
183
+ 'a_keys' are the keys for the solution probabilities, co-indexed with `a`.
176
184
  """
177
185
 
178
186
  # Sum out any unneeded random variables
@@ -1,6 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from dataclasses import dataclass, field
4
+ from enum import Enum, auto
4
5
  from itertools import chain
5
6
  from typing import Iterable, List, Tuple, Dict, Sequence, Set, Optional
6
7
 
@@ -12,7 +13,37 @@ from ck.pgm import PGM, RandomVariable
12
13
  from ck.utils.map_list import MapList
13
14
 
14
15
 
15
- def model_from_cross_tables(pgm: PGM, cross_tables: Iterable[CrossTable]) -> None:
16
+ class ParameterInference(Enum):
17
+ """
18
+ There are variations on the method for inferring a CPT's parameter values.
19
+ This enum defines the possible variations.
20
+ """
21
+ first = auto()
22
+ """
23
+ Use the first cross-table found that covers the CPT's random variables.
24
+ If there is no such cross-table, revert to the `all` method.
25
+ This is the fastest method.
26
+ """
27
+
28
+ sum = auto()
29
+ """
30
+ Use the sum of cross-tables that cover the CPT's random variables.
31
+ If there are no such cross-tables, revert to the `all` method.
32
+ This is the second fastest method.
33
+ """
34
+
35
+ all = auto()
36
+ """
37
+ Project all cross-tables onto the needed random variables, then use
38
+ `coalesce_cross_tables` to solve for the best parameter values.
39
+ """
40
+
41
+
42
+ def model_from_cross_tables(
43
+ pgm: PGM,
44
+ cross_tables: Iterable[CrossTable],
45
+ method: ParameterInference = ParameterInference.sum,
46
+ ) -> None:
16
47
  """
17
48
  Make best efforts to construct a Bayesian network model given only the
18
49
  evidence from the supplied cross-tables.
@@ -24,6 +55,7 @@ def model_from_cross_tables(pgm: PGM, cross_tables: Iterable[CrossTable]) -> Non
24
55
  Args:
25
56
  pgm: the PGM to add factors and potential function to.
26
57
  cross_tables: available cross-tables to build a model from.
58
+ method: what parameter inference method to use.
27
59
 
28
60
  Raises:
29
61
  ValueError: If `pgm` has any existing factors.
@@ -33,11 +65,16 @@ def model_from_cross_tables(pgm: PGM, cross_tables: Iterable[CrossTable]) -> Non
33
65
  cpts: List[CrossTable] = get_cpts(
34
66
  rvs=pgm.rvs,
35
67
  cross_tables=cross_tables,
68
+ method=method,
36
69
  )
37
70
  make_factors(pgm, cpts)
38
71
 
39
72
 
40
- def get_cpts(rvs: Sequence[RandomVariable], cross_tables: Iterable[CrossTable]) -> ParameterValues:
73
+ def get_cpts(
74
+ rvs: Sequence[RandomVariable],
75
+ cross_tables: Iterable[CrossTable],
76
+ method: ParameterInference = ParameterInference.sum,
77
+ ) -> ParameterValues:
41
78
  """
42
79
  Make best efforts to define a Bayesian network model given only the
43
80
  evidence from the supplied cross-tables.
@@ -53,6 +90,7 @@ def get_cpts(rvs: Sequence[RandomVariable], cross_tables: Iterable[CrossTable])
53
90
  Args:
54
91
  rvs: the random variables to define a network structure over.
55
92
  cross_tables: available cross-tables to build a model from.
93
+ method: what parameter inference method to use.
56
94
 
57
95
  Returns:
58
96
  ParameterValues object as a list of CPTs, each CPT can be used to create
@@ -90,13 +128,17 @@ def get_cpts(rvs: Sequence[RandomVariable], cross_tables: Iterable[CrossTable])
90
128
  # Make the factors, depth first.
91
129
  done: Set[int] = set()
92
130
  for model_factor in model_factors:
93
- _infer_cpt(model_factor, done)
131
+ _infer_cpt(model_factor, done, method)
94
132
 
95
133
  # Return the CPTs that define the structure
96
134
  return [model_factor.cpt for model_factor in model_factors]
97
135
 
98
136
 
99
- def _infer_cpt(model_factor: _ModelFactor, done: Set[int]) -> None:
137
+ def _infer_cpt(
138
+ model_factor: _ModelFactor,
139
+ done: Set[int],
140
+ method: ParameterInference,
141
+ ) -> None:
100
142
  """
101
143
  Depth-first recursively infer the model factors as CPTs.
102
144
  This sets `model_factor.cpt` and `model_factor.parent_rvs` for
@@ -110,7 +152,7 @@ def _infer_cpt(model_factor: _ModelFactor, done: Set[int]) -> None:
110
152
 
111
153
  # Recursively visit the child factors
112
154
  for child_model_factor in model_factor.child_factors:
113
- _infer_cpt(child_model_factor, done)
155
+ _infer_cpt(child_model_factor, done, method)
114
156
 
115
157
  # Get all relevant cross-tables to set the parameters
116
158
  crosstabs: Sequence[CrossTable] = model_factor.cross_tables
@@ -121,19 +163,20 @@ def _infer_cpt(model_factor: _ModelFactor, done: Set[int]) -> None:
121
163
 
122
164
  # Get the parameters
123
165
  rvs = [child_rv] + list(model_factor.parent_rvs)
124
- crosstab: CrossTable = _infer_parameters(rvs, crosstabs, child_crosstabs)
166
+ crosstab: CrossTable = _infer_parameter_values(rvs, crosstabs, child_crosstabs, method)
125
167
  cpt, parent_sums = cpt_and_parent_sums_from_crosstab(crosstab)
126
168
  model_factor.cpt = cpt
127
169
  model_factor.parent_sums = parent_sums
128
170
 
129
171
 
130
- def _infer_parameters(
172
+ def _infer_parameter_values(
131
173
  rvs: Sequence[RandomVariable],
132
174
  crosstabs: Sequence[CrossTable],
133
175
  child_crosstabs: Sequence[CrossTable],
176
+ method: ParameterInference,
134
177
  ) -> CrossTable:
135
178
  """
136
- Make best efforts to infer a probability distribution over the give random variables,
179
+ Make best efforts to infer a probability distribution over the given random variables,
137
180
  with evidence from the given cross-tables.
138
181
 
139
182
  Returns:
@@ -144,8 +187,16 @@ def _infer_parameters(
144
187
  `rvs` has no duplicates.
145
188
  """
146
189
 
190
+ if method == ParameterInference.all:
191
+ # Forced to use all cross-tables with `coalesce_cross_tables`
192
+ projected_crosstabs: List[CrossTable] = [
193
+ crosstab.project(rvs)
194
+ for crosstab in chain(crosstabs, child_crosstabs)
195
+ ]
196
+ return coalesce_cross_tables(projected_crosstabs, rvs)
197
+
147
198
  # Project crosstables onto rvs, splitting them into complete and partial coverage of `rvs`.
148
- # Completely covering cross-tables will be accumulated into `complete_crosstab` while others
199
+ # Completely covering cross-tables will be summed into `complete_crosstab` while others
149
200
  # will be appended to partial_crosstabs.
150
201
  complete_crosstab: Optional[CrossTable] = None
151
202
  partial_crosstabs: List[CrossTable] = []
@@ -153,10 +204,13 @@ def _infer_parameters(
153
204
  available_rvs: Set[RandomVariable] = set(available_crosstab.rvs)
154
205
  if available_rvs.issuperset(rvs):
155
206
  to_add: CrossTable = available_crosstab.project(rvs)
207
+ if method == ParameterInference.first:
208
+ # Take the first available solution.
209
+ return to_add
156
210
  if complete_crosstab is None:
157
211
  complete_crosstab = to_add
158
212
  else:
159
- complete_crosstab.add_all(to_add.project(rvs).items())
213
+ complete_crosstab.add_all(to_add.items())
160
214
  else:
161
215
  partial_crosstabs.append(available_crosstab)
162
216
 
@@ -15,7 +15,7 @@
15
15
  "-O3"
16
16
  ],
17
17
  "include_dirs": [
18
- "/private/var/folders/y6/nj790rtn62lfktb1sh__79hc0000gn/T/build-env-ocuq5f7z/lib/python3.12/site-packages/numpy/_core/include"
18
+ "/private/var/folders/y6/nj790rtn62lfktb1sh__79hc0000gn/T/build-env-puw5bxqw/lib/python3.12/site-packages/numpy/_core/include"
19
19
  ],
20
20
  "name": "ck.pgm_compiler.support.circuit_table._circuit_table_cy",
21
21
  "sources": [
ck/utils/map_dict.py ADDED
@@ -0,0 +1,89 @@
1
+ """
2
+ This module defines a class "MapDict" for mapping keys to dicts.
3
+ """
4
+
5
+ from typing import TypeVar, Generic, Dict, MutableMapping, Iterator, KeysView, ValuesView, ItemsView
6
+
7
+ _K = TypeVar('_K')
8
+ _KV = TypeVar('_KV')
9
+ _V = TypeVar('_V')
10
+
11
+
12
+ class MapDict(Generic[_K, _KV, _V], MutableMapping[_K, Dict[_KV, _V]]):
13
+ """
14
+ A MapDict keeps a dict for each key.
15
+ """
16
+ __slots__ = ('_map',)
17
+
18
+ def __init__(self):
19
+ self._map: Dict[_K, Dict[_KV, _V]] = {}
20
+
21
+ def __str__(self) -> str:
22
+ return str(self._map)
23
+
24
+ def __repr__(self) -> str:
25
+ args = ', '.join(f'{key!r}:{key!r}' for key, val in self.items())
26
+ class_name = self.__class__.__name__
27
+ return f'{class_name}({args})'
28
+
29
+ def __len__(self) -> int:
30
+ return len(self._map)
31
+
32
+ def __bool__(self) -> bool:
33
+ return len(self) > 0
34
+
35
+ def __getitem__(self, key: _K) -> Dict[_KV, _V]:
36
+ return self._map[key]
37
+
38
+ def __setitem__(self, key: _K, val: Dict[_KV, _V]):
39
+ if not isinstance(val, dict):
40
+ class_name = self.__class__.__name__
41
+ raise RuntimeError(f'every {class_name} value must be a dict')
42
+ self._map[key] = val
43
+
44
+ def __delitem__(self, key: _K):
45
+ del self._map[key]
46
+
47
+ def __iter__(self) -> Iterator[_K]:
48
+ return iter(self._map)
49
+
50
+ def __contains__(self, key: _K) -> bool:
51
+ return key in self._map
52
+
53
+ def keys(self) -> KeysView[_K]:
54
+ return self._map.keys()
55
+
56
+ def values(self) -> ValuesView[Dict[_KV, _V]]:
57
+ return self._map.values()
58
+
59
+ def items(self) -> ItemsView[_K, Dict[_KV, _V]]:
60
+ return self._map.items()
61
+
62
+ def get(self, key: _K, default=None):
63
+ """
64
+ Get the list corresponding to the given key.
65
+ If the key is not yet in the MapList then the
66
+ supplied default will be returned.
67
+ """
68
+ return self._map.get(key, default)
69
+
70
+ def get_dict(self, key: _K) -> Dict[_KV, _V]:
71
+ """
72
+ Get the dict corresponding to the given key.
73
+
74
+ This method will always return a dict in the MapDict, even if
75
+ it requires a new dict being created.
76
+
77
+ Modifying the returned dict affects this MapDict object.
78
+ """
79
+ the_dict = self._map.get(key)
80
+ if the_dict is None:
81
+ the_dict = {}
82
+ self._map[key] = the_dict
83
+ return the_dict
84
+
85
+ def clear(self):
86
+ """
87
+ Remove all items.
88
+ """
89
+ return self._map.clear()
@@ -14,11 +14,10 @@ EXCLUDE_UNNECESSARY_CROSS_TABLES = True
14
14
 
15
15
 
16
16
  def main() -> None:
17
- number_of_samples: int = 10000 # How many instances to make for the model dataset
18
-
19
17
  # Create a dataset based on model which is an example PGM
18
+ number_of_samples: int = 10000 # How many instances to make for the model dataset
20
19
  model: PGM = example.Student()
21
- model_dataset = dataset_from_sampler(
20
+ model_dataset: HardDataset = dataset_from_sampler(
22
21
  WMCProgram(DEFAULT_PGM_COMPILER(model)).sample_direct(),
23
22
  number_of_samples,
24
23
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: compiled-knowledge
3
- Version: 4.1.0a3
3
+ Version: 4.2.0a1
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
@@ -5,7 +5,7 @@ ck_demos/dataset/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,
5
5
  ck_demos/dataset/demo_dataset_builder.py,sha256=a9o-rw8PzpLq_5wtwjH0L15-eacbELlc7tfLrREJBqM,987
6
6
  ck_demos/learning/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
7
  ck_demos/learning/demo_simple_learning.py,sha256=CZPzcsnTD8TK7nzGg3XUsx4exqggQXOT6UVwrV0ScF8,1483
8
- ck_demos/learning/demo_bayesian_network_from_cross_tables.py,sha256=sUpeUFI8WjveRo8Evz4woWyarrVN84E1DzYcM-2NOy0,2579
8
+ ck_demos/learning/demo_bayesian_network_from_cross_tables.py,sha256=FmW5ylFVu7ONkKQVDCUGXXcOuNKdz3f1qbktOt2cX6Q,2591
9
9
  ck_demos/circuit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
10
  ck_demos/circuit/demo_derivatives.py,sha256=6VwnW_Dbm2MWQFfJ46UQQFecV56QdfGpL7srthw5Py0,1143
11
11
  ck_demos/circuit/demo_circuit_dump.py,sha256=85x7UJV6cg6XVYU-PPsuKQVTBw5WZBfkhi6Avo9XbOs,436
@@ -58,11 +58,11 @@ ck_demos/pgm_inference/demo_inferencing_mpe_cancer.py,sha256=hS9U2kyqjFgJ8jnVBtT
58
58
  ck_demos/pgm_inference/demo_inferencing_wmc_and_mpe_sprinkler.py,sha256=-q4Z1Fzf7-BuwVFTFXdGRY-zUNrY-SAU7ooaov2o_lM,5128
59
59
  ck_demos/getting_started/simple_demo.py,sha256=hiYscNnfkEwHCQ3ymXAswAYO5jAKR7cseb36pjzuus8,650
60
60
  ck_demos/getting_started/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
61
- compiled_knowledge-4.1.0a3.dist-info/RECORD,,
62
- compiled_knowledge-4.1.0a3.dist-info/WHEEL,sha256=V1loQ6TpxABu1APUg0MoTRBOzSKT5xVc3skizX-ovCU,136
63
- compiled_knowledge-4.1.0a3.dist-info/top_level.txt,sha256=Cf8DAfd2vcnLiA7HlxoduOzV0Q-8surE3kzX8P9qdks,12
64
- compiled_knowledge-4.1.0a3.dist-info/METADATA,sha256=GsnkOBTsYHaifQhlQzBzQdrpKIBNWLPhSNuC6sUjET8,1808
65
- compiled_knowledge-4.1.0a3.dist-info/licenses/LICENSE.txt,sha256=-LmkmqXKYojmS3zDxXAeTbsA82fnHA0KaRvpfIoEdjA,1068
61
+ compiled_knowledge-4.2.0a1.dist-info/RECORD,,
62
+ compiled_knowledge-4.2.0a1.dist-info/WHEEL,sha256=V1loQ6TpxABu1APUg0MoTRBOzSKT5xVc3skizX-ovCU,136
63
+ compiled_knowledge-4.2.0a1.dist-info/top_level.txt,sha256=Cf8DAfd2vcnLiA7HlxoduOzV0Q-8surE3kzX8P9qdks,12
64
+ compiled_knowledge-4.2.0a1.dist-info/METADATA,sha256=3YM6rMFGtHgoZ7Uj1QPmIUiSN0oznniDl6p7JEl0_Rk,1808
65
+ compiled_knowledge-4.2.0a1.dist-info/licenses/LICENSE.txt,sha256=-LmkmqXKYojmS3zDxXAeTbsA82fnHA0KaRvpfIoEdjA,1068
66
66
  ck/pgm.py,sha256=EwKTWuYV9-0OfgJQfBw59MfGDLtxFe3wlgbYlkTqj1Y,117703
67
67
  ck/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
68
68
  ck/pgm_circuit/target_marginals_program.py,sha256=qWz9FkAFzt8YHLZJzPkpRnvDH76BXm-dcEWhoqCkrOw,3665
@@ -120,18 +120,18 @@ ck/dataset/dataset.py,sha256=iQGOqVrNll6QMPcRcV2phUbe0fCfpVmUVbcBIaqYx0s,25531
120
120
  ck/dataset/dataset_from_crosstable.py,sha256=rOdDFfb_2rnUJT3iZrLbZkeQcRJa5EzFVBs0hSdE57U,2281
121
121
  ck/dataset/sampled_dataset.py,sha256=Vcz2WN6IKdmK8DsFeXLten7Id3Kc2epC6qs2ZW7mvWU,3261
122
122
  ck/dataset/dataset_from_csv.py,sha256=q4qjOsJFYAmw22xDaHcS6XC3nwqmkT-RoOaRNr_zJ8I,5802
123
- ck/learning/model_from_cross_tables.py,sha256=nB4dCsGgFtTMS-WaNvlJjzKCvRbs7uTUUxFQr5EcGG4,9083
123
+ ck/learning/model_from_cross_tables.py,sha256=227hBGF0hAmcObdI3wG1RUIPE-Y92wYp2gOcSAeUp44,10750
124
124
  ck/learning/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
125
125
  ck/learning/parameters.py,sha256=x5yP-zxkpm0HfBusOxK5vImUnYanUJeZUjxgOwKNVAc,4388
126
- ck/learning/coalesce_cross_tables.py,sha256=dQcHXasQU1bEmTCLuiuCVDHEIRt77BNbFp1E5y-qfaI,12926
126
+ ck/learning/coalesce_cross_tables.py,sha256=pPBH4GcNHtmLfEpstyq3zFYyarYxyAduEEXpqaimLAM,13297
127
127
  ck/learning/train_generative_bn.py,sha256=hwmhbg4RKh3JvDlG7xOJm1apScXJ1Mmfgu4nasM-cwQ,8019
128
- ck/circuit/_circuit_cy.c,sha256=aUtvxUkF49UVCUYoFIuvdVRUgW9iBIBorKLciPlRaMA,1704292
128
+ ck/circuit/_circuit_cy.c,sha256=gYwPt5JgPL9uq2kjpqyN_IelnfxdG4dEmm2SqNQCbig,1704292
129
129
  ck/circuit/_circuit_cy.pyx,sha256=mER1HK5yyf4UAj9ibn7fUQNyXwoxwxp7PClULPhY9B4,26995
130
130
  ck/circuit/__init__.py,sha256=B1jwDE_Xb6hOQE8DecjaTVotOnDxJaT7jsvPfGDXqCU,401
131
131
  ck/circuit/_circuit_cy.pxd,sha256=ZcW8xjw4oGQqD5gwz73GXc1H8NxpdAswFWzc2CUWWcA,1025
132
132
  ck/circuit/_circuit_py.py,sha256=hADjCFDC1LJKUdyiKZzNLFt7ZkUNJ0IYwEYRj594K4g,27495
133
133
  ck/circuit/tmp_const.py,sha256=q01bkIvTEg1l-qFcfl2B8NrSzKlqcWU7McNm4HKv7bU,2300
134
- ck/circuit/_circuit_cy.cpython-312-darwin.so,sha256=vHyDzjVhhIfFWG3m4vFqZkdh09lq25c22SUOcIVrDtE,335296
134
+ ck/circuit/_circuit_cy.cpython-312-darwin.so,sha256=B58E391BE1pjGHl2yOlXsb2j7tqLICkUPduqeUg2J9g,335296
135
135
  ck/sampling/wmc_metropolis_sampler.py,sha256=jfXb-MG0jAoMyepgq9zel2amqK-gmYrCtKuxJStl8VY,6305
136
136
  ck/sampling/wmc_direct_sampler.py,sha256=Pkv-u4GjN3npBrcQ92raoTrEIel1vpiDoE8LrlcfYJE,7094
137
137
  ck/sampling/sampler_support.py,sha256=AD47QPXlXSTiy7Jm-adD6US3cYeSwBimOY2jB5b2qn4,9534
@@ -142,6 +142,7 @@ ck/sampling/uniform_sampler.py,sha256=XV7i0urWgsJ0nIQA6ONlO8GevsfRdw1dfZuqzRdbnB
142
142
  ck/sampling/sampler.py,sha256=LtMm9_kBlZeuIEdYr_DcO218f7OUSnciddiEaEE22Dc,2244
143
143
  ck/sampling/wmc_gibbs_sampler.py,sha256=t5pIxr3Kkz37hG0guxVUQWivUZ1T-4lT47yu8qxrZko,6414
144
144
  ck/sampling/forward_sampler.py,sha256=gHWEue69Z7EcrnHlVURJBhZh1t5RApMV0ioxJao3GkU,8137
145
+ ck/utils/map_dict.py,sha256=TSSh4CL1wZC9JBlwGWRGmFQ3hcpZwmZ0kpjI1gPZ-pQ,2458
145
146
  ck/utils/random_extras.py,sha256=l9CfQM6k-b6KGESJXw9zF--Hqp4yadw2IU9uSoklai0,1796
146
147
  ck/utils/map_set.py,sha256=T5E3j4Lz08vg8eviRBc-4F10xz1-CKIg6KiHVoGhdts,3681
147
148
  ck/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -164,15 +165,15 @@ ck/pgm_compiler/support/named_compiler_maker.py,sha256=Qz8a9gwY46Q3dtRCZEZ2czq5z
164
165
  ck/pgm_compiler/support/circuit_table/__init__.py,sha256=1kWjAZR5Rj6PYNdbCEbuyE2VtIDQU4Qf-3HPFzBlezs,562
165
166
  ck/pgm_compiler/support/circuit_table/_circuit_table_cy.pyx,sha256=Fsjw8P9clKQioqlLyr1JirUK5oYkeotpDMy5sMo7Khk,11683
166
167
  ck/pgm_compiler/support/circuit_table/_circuit_table_py.py,sha256=OZJC-JGX3ovCSv7nJtNYq7735KZ2eb4TQOlZdZbhPmk,10983
167
- ck/pgm_compiler/support/circuit_table/_circuit_table_cy.c,sha256=Ga_LmT5hlGc_mn8muLefX9zdt3vXEMiZDUxtMOLTKFU,714044
168
- ck/pgm_compiler/support/circuit_table/_circuit_table_cy.cpython-312-darwin.so,sha256=AupPKDwtObM-KjI_dNhVC46hsCE3lKCNU86ArZJKbFo,165096
168
+ ck/pgm_compiler/support/circuit_table/_circuit_table_cy.c,sha256=jl_Vj-dyyNjLvg8Bwqjg8qjLVtmT5QIsdQ4GfMnRo5M,714044
169
+ ck/pgm_compiler/support/circuit_table/_circuit_table_cy.cpython-312-darwin.so,sha256=IMUXynqFcx7T_CppIJkG8Ynd5aH2X8htHIiiHK4SNj8,165096
169
170
  ck/pgm_compiler/ace/ace.py,sha256=An83dHxE_gQFcEs6H5qgm0PlNFnJSGGuvLJNC2H3hGU,10098
170
171
  ck/pgm_compiler/ace/__init__.py,sha256=5HWep-yL1Mr6z5VWEaIYpLumCdeso85J-l_-hQaVusM,96
171
172
  ck/program/raw_program.py,sha256=U7kLBCSLtP1CfG09RrzmGo7E3sZdNr7wr2V1qkTfVGc,4106
172
173
  ck/program/program_buffer.py,sha256=IHwAHTKIaUlhcbNFTuSxPWKyExIsOxxX6ffUn4KfheU,5485
173
174
  ck/program/__init__.py,sha256=Rifdxk-l6cCjXLpwc6Q0pVXNDsllAwaFlRqRx3cURho,107
174
175
  ck/program/program.py,sha256=ohsnE0CEy8O4q8uGB_YEjoJKAPhY1Mz_a08Z7fy7TLw,4047
175
- ck/circuit_compiler/llvm_compiler.py,sha256=SFhfrthrDuAYUjH_DYRD7FBU8eg2db5T4QGBGfoewnw,13635
176
+ ck/circuit_compiler/llvm_compiler.py,sha256=XaAPrMaR5Y0EQT7Zukpa5TFybdBXVLo8_A2cU2lzPtw,13656
176
177
  ck/circuit_compiler/circuit_compiler.py,sha256=Sl7FS42GXrDL6eG_WNKILcSQl7Wlccgs5Dd1l0EZMsU,1121
177
178
  ck/circuit_compiler/__init__.py,sha256=eRN6chBEt64PK5e6EFGyBNZBn6BXhXb6R3m12zPA1Qg,130
178
179
  ck/circuit_compiler/named_circuit_compilers.py,sha256=paKyG876tdG_bdSHJU6KW5HxQrutmV_T80GPpz8A65s,2227
@@ -181,15 +182,15 @@ ck/circuit_compiler/llvm_vm_compiler.py,sha256=rM_6F5st3k9X5K1_MwzKJwDhQo1794voo
181
182
  ck/circuit_compiler/cython_vm_compiler/cython_vm_compiler.py,sha256=GdtBkipud8vylXYArOJvZ-10U9L_PL0oJrkyrnFGH2Q,4345
182
183
  ck/circuit_compiler/cython_vm_compiler/__init__.py,sha256=ks0sISOJ-XHIHgHnESyFsheNWvcSJQkbsrj1wVlnzTE,48
183
184
  ck/circuit_compiler/cython_vm_compiler/_compiler.pyx,sha256=RssdkoAcB3Ahes8xisqFy0PQyOPmC3GLEC2xR-miQaE,12898
184
- ck/circuit_compiler/cython_vm_compiler/_compiler.cpython-312-darwin.so,sha256=2wyk0kvPM3Fh5jhKb4vYxEjNXmugaqPSDMwsVA7Ss9c,163488
185
- ck/circuit_compiler/cython_vm_compiler/_compiler.c,sha256=BQYbYiuXvCtEBoKnQZIRfX7pMcCsZ0zTg1BVrGxMDc0,857789
185
+ ck/circuit_compiler/cython_vm_compiler/_compiler.cpython-312-darwin.so,sha256=drpILWhPHsPsqPdu7r60g64OQGXkE5t3YJTSEEhY-qc,163488
186
+ ck/circuit_compiler/cython_vm_compiler/_compiler.c,sha256=OKxPxgQnSwjLUp6nlxquGeabFXf5xqP_kLw904VLl4A,857789
186
187
  ck/circuit_compiler/support/llvm_ir_function.py,sha256=sMLKfwz90YcsrVyxsuY0Ymo1ibFOcul4Qiwdake-VkI,8321
187
- ck/circuit_compiler/support/input_vars.py,sha256=EZrvyhD9XVtf5GuDBluFNWhAOVixP7-_ETxAHLTpBcs,4664
188
+ ck/circuit_compiler/support/input_vars.py,sha256=0g1I5GezT6Dt6ptJJgNFPTyHfRrpunTIkJOUqZhkP84,4673
188
189
  ck/circuit_compiler/support/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
189
190
  ck/circuit_compiler/support/circuit_analyser/_circuit_analyser_cy.pyx,sha256=a0fKmkwRNscJmy6qoO2AOqJYmHYptrQmkRSrDg3G-wg,3233
190
191
  ck/circuit_compiler/support/circuit_analyser/__init__.py,sha256=WhNwfg7GHVeI4k_m7owPGWxX0MyZg_wtcp2MA07qbWg,523
191
- ck/circuit_compiler/support/circuit_analyser/_circuit_analyser_cy.cpython-312-darwin.so,sha256=uJDX2rKQ7KKz5JJ2SHRfAH2c8ZA_fJIXn_l688fFUAo,104936
192
- ck/circuit_compiler/support/circuit_analyser/_circuit_analyser_cy.c,sha256=R9IDuwbPkxUv9Xne8j_ulU0Dd3eXhY2hq5I1XmjnbUk,438223
192
+ ck/circuit_compiler/support/circuit_analyser/_circuit_analyser_cy.cpython-312-darwin.so,sha256=MycKij0HvH7_FfYgSD_RYrwMbTaDdgq7k_Tz2iGzca8,104936
193
+ ck/circuit_compiler/support/circuit_analyser/_circuit_analyser_cy.c,sha256=OiC5DlYl76XoiEzX71ssoRLT-a3aEJsyQ82WyDEakVQ,438223
193
194
  ck/circuit_compiler/support/circuit_analyser/_circuit_analyser_py.py,sha256=CMdXV6Rot5CCoK1UsurQdGK0UOx_09B6V7mCc_6-gfI,2993
194
195
  ck/in_out/render_net.py,sha256=VePvN6aYWuzEkW-Hv-qGT9QneOvsnrBMmS_KYueuj2I,4970
195
196
  ck/in_out/render_bugs.py,sha256=c39KbaD4gEiauFsZq2KUhDEEa-3cuY5kuvz97pEWVpw,3272