compiled-knowledge 4.1.0a3__tar.gz → 4.2.0a1__tar.gz

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 (207) hide show
  1. {compiled_knowledge-4.1.0a3/src/compiled_knowledge.egg-info → compiled_knowledge-4.2.0a1}/PKG-INFO +1 -1
  2. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/pyproject.toml +2 -3
  3. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/setup.py +1 -0
  4. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/circuit_compiler/llvm_compiler.py +4 -4
  5. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/circuit_compiler/support/input_vars.py +4 -4
  6. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/learning/coalesce_cross_tables.py +11 -3
  7. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/learning/model_from_cross_tables.py +64 -10
  8. compiled_knowledge-4.2.0a1/src/ck/utils/map_dict.py +89 -0
  9. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/learning/demo_bayesian_network_from_cross_tables.py +2 -3
  10. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1/src/compiled_knowledge.egg-info}/PKG-INFO +1 -1
  11. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/compiled_knowledge.egg-info/SOURCES.txt +1 -0
  12. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/LICENSE.txt +0 -0
  13. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/MANIFEST.in +0 -0
  14. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/README.md +0 -0
  15. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/setup.cfg +0 -0
  16. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/__init__.py +0 -0
  17. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/circuit/__init__.py +0 -0
  18. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/circuit/_circuit_cy.c +0 -0
  19. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/circuit/_circuit_cy.pxd +0 -0
  20. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/circuit/_circuit_cy.pyx +0 -0
  21. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/circuit/_circuit_py.py +0 -0
  22. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/circuit/tmp_const.py +0 -0
  23. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/circuit_compiler/__init__.py +0 -0
  24. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/circuit_compiler/circuit_compiler.py +0 -0
  25. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/circuit_compiler/cython_vm_compiler/__init__.py +0 -0
  26. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/circuit_compiler/cython_vm_compiler/_compiler.c +0 -0
  27. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/circuit_compiler/cython_vm_compiler/_compiler.pyx +0 -0
  28. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/circuit_compiler/cython_vm_compiler/cython_vm_compiler.py +0 -0
  29. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/circuit_compiler/interpret_compiler.py +0 -0
  30. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/circuit_compiler/llvm_vm_compiler.py +0 -0
  31. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/circuit_compiler/named_circuit_compilers.py +0 -0
  32. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/circuit_compiler/support/__init__.py +0 -0
  33. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/circuit_compiler/support/circuit_analyser/__init__.py +0 -0
  34. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/circuit_compiler/support/circuit_analyser/_circuit_analyser_cy.c +0 -0
  35. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/circuit_compiler/support/circuit_analyser/_circuit_analyser_cy.pyx +0 -0
  36. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/circuit_compiler/support/circuit_analyser/_circuit_analyser_py.py +0 -0
  37. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/circuit_compiler/support/llvm_ir_function.py +0 -0
  38. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/dataset/__init__.py +0 -0
  39. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/dataset/cross_table.py +0 -0
  40. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/dataset/dataset.py +0 -0
  41. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/dataset/dataset_builder.py +0 -0
  42. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/dataset/dataset_compute.py +0 -0
  43. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/dataset/dataset_from_crosstable.py +0 -0
  44. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/dataset/dataset_from_csv.py +0 -0
  45. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/dataset/sampled_dataset.py +0 -0
  46. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/example/__init__.py +0 -0
  47. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/example/alarm.py +0 -0
  48. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/example/asia.py +0 -0
  49. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/example/binary_clique.py +0 -0
  50. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/example/bow_tie.py +0 -0
  51. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/example/cancer.py +0 -0
  52. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/example/chain.py +0 -0
  53. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/example/child.py +0 -0
  54. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/example/clique.py +0 -0
  55. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/example/cnf_pgm.py +0 -0
  56. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/example/diamond_square.py +0 -0
  57. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/example/earthquake.py +0 -0
  58. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/example/empty.py +0 -0
  59. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/example/hailfinder.py +0 -0
  60. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/example/hepar2.py +0 -0
  61. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/example/insurance.py +0 -0
  62. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/example/loop.py +0 -0
  63. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/example/mildew.py +0 -0
  64. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/example/munin.py +0 -0
  65. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/example/pathfinder.py +0 -0
  66. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/example/rain.py +0 -0
  67. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/example/rectangle.py +0 -0
  68. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/example/run.py +0 -0
  69. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/example/sachs.py +0 -0
  70. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/example/sprinkler.py +0 -0
  71. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/example/star.py +0 -0
  72. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/example/stress.py +0 -0
  73. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/example/student.py +0 -0
  74. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/example/survey.py +0 -0
  75. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/example/triangle_square.py +0 -0
  76. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/example/truss.py +0 -0
  77. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/in_out/__init__.py +0 -0
  78. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/in_out/parse_ace_lmap.py +0 -0
  79. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/in_out/parse_ace_nnf.py +0 -0
  80. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/in_out/parse_net.py +0 -0
  81. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/in_out/parser_utils.py +0 -0
  82. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/in_out/pgm_pickle.py +0 -0
  83. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/in_out/pgm_python.py +0 -0
  84. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/in_out/render_bugs.py +0 -0
  85. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/in_out/render_net.py +0 -0
  86. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/in_out/render_pomegranate.py +0 -0
  87. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/learning/__init__.py +0 -0
  88. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/learning/parameters.py +0 -0
  89. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/learning/train_generative_bn.py +0 -0
  90. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/pgm.py +0 -0
  91. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/pgm_circuit/__init__.py +0 -0
  92. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/pgm_circuit/marginals_program.py +0 -0
  93. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/pgm_circuit/mpe_program.py +0 -0
  94. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/pgm_circuit/pgm_circuit.py +0 -0
  95. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/pgm_circuit/program_with_slotmap.py +0 -0
  96. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/pgm_circuit/slot_map.py +0 -0
  97. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/pgm_circuit/support/__init__.py +0 -0
  98. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/pgm_circuit/support/compile_circuit.py +0 -0
  99. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/pgm_circuit/target_marginals_program.py +0 -0
  100. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/pgm_circuit/wmc_program.py +0 -0
  101. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/pgm_compiler/__init__.py +0 -0
  102. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/pgm_compiler/ace/__init__.py +0 -0
  103. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/pgm_compiler/ace/ace.py +0 -0
  104. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/pgm_compiler/factor_elimination.py +0 -0
  105. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/pgm_compiler/named_pgm_compilers.py +0 -0
  106. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/pgm_compiler/pgm_compiler.py +0 -0
  107. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/pgm_compiler/recursive_conditioning.py +0 -0
  108. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/pgm_compiler/support/__init__.py +0 -0
  109. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/pgm_compiler/support/circuit_table/__init__.py +0 -0
  110. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/pgm_compiler/support/circuit_table/_circuit_table_cy.c +0 -0
  111. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/pgm_compiler/support/circuit_table/_circuit_table_cy.pyx +0 -0
  112. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/pgm_compiler/support/circuit_table/_circuit_table_py.py +0 -0
  113. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/pgm_compiler/support/clusters.py +0 -0
  114. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/pgm_compiler/support/factor_tables.py +0 -0
  115. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/pgm_compiler/support/join_tree.py +0 -0
  116. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/pgm_compiler/support/named_compiler_maker.py +0 -0
  117. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/pgm_compiler/variable_elimination.py +0 -0
  118. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/probability/__init__.py +0 -0
  119. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/probability/cross_table_probability_space.py +0 -0
  120. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/probability/divergence.py +0 -0
  121. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/probability/empirical_probability_space.py +0 -0
  122. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/probability/pgm_probability_space.py +0 -0
  123. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/probability/probability_space.py +0 -0
  124. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/program/__init__.py +0 -0
  125. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/program/program.py +0 -0
  126. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/program/program_buffer.py +0 -0
  127. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/program/raw_program.py +0 -0
  128. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/sampling/__init__.py +0 -0
  129. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/sampling/forward_sampler.py +0 -0
  130. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/sampling/marginals_direct_sampler.py +0 -0
  131. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/sampling/sampler.py +0 -0
  132. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/sampling/sampler_support.py +0 -0
  133. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/sampling/uniform_sampler.py +0 -0
  134. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/sampling/wmc_direct_sampler.py +0 -0
  135. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/sampling/wmc_gibbs_sampler.py +0 -0
  136. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/sampling/wmc_metropolis_sampler.py +0 -0
  137. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/sampling/wmc_rejection_sampler.py +0 -0
  138. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/utils/__init__.py +0 -0
  139. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/utils/iter_extras.py +0 -0
  140. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/utils/local_config.py +0 -0
  141. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/utils/map_list.py +0 -0
  142. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/utils/map_set.py +0 -0
  143. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/utils/np_extras.py +0 -0
  144. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/utils/random_extras.py +0 -0
  145. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck/utils/tmp_dir.py +0 -0
  146. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/__init__.py +0 -0
  147. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/ace/__init__.py +0 -0
  148. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/ace/copy_ace_to_ck.py +0 -0
  149. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/ace/demo_ace.py +0 -0
  150. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/ace/simple_ace_demo.py +0 -0
  151. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/all_demos.py +0 -0
  152. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/circuit/__init__.py +0 -0
  153. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/circuit/demo_circuit_dump.py +0 -0
  154. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/circuit/demo_derivatives.py +0 -0
  155. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/circuit_compiler/__init__.py +0 -0
  156. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/circuit_compiler/compare_circuit_compilers.py +0 -0
  157. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/circuit_compiler/show_llvm_program.py +0 -0
  158. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/dataset/__init__.py +0 -0
  159. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/dataset/demo_dataset_builder.py +0 -0
  160. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/dataset/demo_dataset_from_sampler.py +0 -0
  161. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/getting_started/__init__.py +0 -0
  162. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/getting_started/simple_demo.py +0 -0
  163. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/learning/__init__.py +0 -0
  164. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/learning/demo_simple_learning.py +0 -0
  165. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/pgm/__init__.py +0 -0
  166. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/pgm/demo_pgm_dump.py +0 -0
  167. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/pgm/demo_pgm_dump_stress.py +0 -0
  168. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/pgm/demo_pgm_string_rendering.py +0 -0
  169. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/pgm/show_examples.py +0 -0
  170. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/pgm_compiler/__init__.py +0 -0
  171. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/pgm_compiler/compare_pgm_compilers.py +0 -0
  172. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/pgm_compiler/demo_compiler_dump.py +0 -0
  173. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/pgm_compiler/demo_factor_elimination.py +0 -0
  174. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/pgm_compiler/demo_join_tree.py +0 -0
  175. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/pgm_compiler/demo_marginals_program.py +0 -0
  176. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/pgm_compiler/demo_mpe_program.py +0 -0
  177. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/pgm_compiler/demo_pgm_compiler.py +0 -0
  178. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/pgm_compiler/demo_recursive_conditioning.py +0 -0
  179. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/pgm_compiler/demo_variable_elimination.py +0 -0
  180. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/pgm_compiler/demo_wmc_program.py +0 -0
  181. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/pgm_compiler/time_fe_compiler.py +0 -0
  182. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/pgm_inference/__init__.py +0 -0
  183. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/pgm_inference/demo_inferencing_basic.py +0 -0
  184. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/pgm_inference/demo_inferencing_mpe_cancer.py +0 -0
  185. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/pgm_inference/demo_inferencing_wmc_and_mpe_sprinkler.py +0 -0
  186. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/pgm_inference/demo_inferencing_wmc_student.py +0 -0
  187. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/programs/__init__.py +0 -0
  188. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/programs/demo_program_buffer.py +0 -0
  189. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/programs/demo_program_multi.py +0 -0
  190. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/programs/demo_program_none.py +0 -0
  191. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/programs/demo_program_single.py +0 -0
  192. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/programs/demo_raw_program_dump.py +0 -0
  193. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/programs/demo_raw_program_interpreted.py +0 -0
  194. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/programs/demo_raw_program_llvm.py +0 -0
  195. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/sampling/__init__.py +0 -0
  196. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/sampling/check_sampler.py +0 -0
  197. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/sampling/demo_marginal_direct_sampler.py +0 -0
  198. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/sampling/demo_uniform_sampler.py +0 -0
  199. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/sampling/demo_wmc_direct_sampler.py +0 -0
  200. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/utils/__init__.py +0 -0
  201. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/utils/compare.py +0 -0
  202. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/utils/convert_network.py +0 -0
  203. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/utils/sample_model.py +0 -0
  204. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/ck_demos/utils/stop_watch.py +0 -0
  205. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/compiled_knowledge.egg-info/dependency_links.txt +0 -0
  206. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/compiled_knowledge.egg-info/requires.txt +0 -0
  207. {compiled_knowledge-4.1.0a3 → compiled_knowledge-4.2.0a1}/src/compiled_knowledge.egg-info/top_level.txt +0 -0
@@ -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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "compiled-knowledge"
3
- version = "4.1.0a3"
3
+ version = "4.2.0a1"
4
4
  description = "A Python package for compiling and querying discrete probabilistic graphical models."
5
5
  readme = "README.md"
6
6
  license = "MIT"
@@ -20,8 +20,7 @@ classifiers = [
20
20
  ]
21
21
 
22
22
  [doc_extra]
23
- version_note = "A pre-release version of 4.1.0 that includes dataset and machine learning functionality for community feedback."
24
-
23
+ version_note = "A pre-release version of 4.2.0 that includes enhancements for `synthorus`."
25
24
 
26
25
  [project.urls]
27
26
  Homepage = "https://github.com/ropeless/compiled_knowledge"
@@ -3,6 +3,7 @@
3
3
  # Usage:
4
4
  # python setup.py build_ext --inplace
5
5
  # python setup.py sdist bdist_wheel
6
+ #
6
7
  import sys
7
8
  from pathlib import Path
8
9
  from typing import List, Tuple
@@ -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
@@ -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
 
@@ -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
@@ -132,6 +132,7 @@ src/ck/sampling/wmc_rejection_sampler.py
132
132
  src/ck/utils/__init__.py
133
133
  src/ck/utils/iter_extras.py
134
134
  src/ck/utils/local_config.py
135
+ src/ck/utils/map_dict.py
135
136
  src/ck/utils/map_list.py
136
137
  src/ck/utils/map_set.py
137
138
  src/ck/utils/np_extras.py