No project description provided
Project description
Puan DB Python Client
Install
pip install puan-db-python
A quick what-is-dis
A Python library for connecting to a puan-db
instance. Puan DB is a logical reasoning database which draws conclusions from a model and finds combinations which satisfies a model while minimizing/maximizing some objective function.
There are two types of variables to keep in mind:
- Primitives. These are defined by an ID given by you, and a lower and upper bound representing which integer values this variable may take in the future. The bound is a complex number so a boolean variable
x
would be declared with the bound0+1j
, or just1j
, as suchmodel.set_primitive("x", 1j)
- Composites. These are created using one or more other primitives or composites as a connecter between them. For instance, an OR-connector is defined as
model.set_or(["x","y","z"])
.
Example
import puan_db_python
# Connect to back end
model = puan_db_python.PuanClient(
host="localhost",
port=50051,
password=None,
ssl=False
)
# Set some primitive variables
model.set_primitives(["x","y","z"])
# And a composite
id = model.set_atleast(["x","y","z"], 1, alias="A")
# Same one could be set instead by
other_id = model.set_or(["x","y","z"], alias="A")
assert id == other_id
# If you forget the id but remember the alias, there's a pointer to it
forgot_id = model.id_from_alias("A")
assert (id == forgot_id) and (forgot_id == other_id)
# Now we can do some propagation to verify some values.
# For instance, if x is 1, then A should be true as well.
# Note that you must give the ID and not the alias when getting its value
model.propagate_downstream({"x": 1+1j}).get(id) == 1+1j
# Or maybe we want to find a combination that trying
# to not include x and even more not y, such that (x or y or z) must be true.
# Note that we can send in multiple "objectives" and there's one solution returned
# by each objective
solutions = model.solve(
objectives=[
{
"x": -1,
"y": -2,
}
],
fix={id: 1+1j},
solver=puan_db_python.Solver.GLPK,
)
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
puan_db_python-0.1.2.tar.gz
(10.1 kB
view details)
Built Distribution
File details
Details for the file puan_db_python-0.1.2.tar.gz
.
File metadata
- Download URL: puan_db_python-0.1.2.tar.gz
- Upload date:
- Size: 10.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.9.19 Darwin/23.1.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4028897f30a8d017e337b6047a7437c41ad18dfa00cff9161cabf380c804c348 |
|
MD5 | 0453abf9d5a44ef87901250ce85f5f12 |
|
BLAKE2b-256 | 62aaf78d656c5616871677fcfad89bd7dbedcbe03e6ec6d51c0b0c8b8f0c7355 |
File details
Details for the file puan_db_python-0.1.2-py3-none-any.whl
.
File metadata
- Download URL: puan_db_python-0.1.2-py3-none-any.whl
- Upload date:
- Size: 10.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.9.19 Darwin/23.1.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8064b93815dd3b83ca427c264a421930e8a26f242139c4eb2916b89727e9aaeb |
|
MD5 | a990027835dd934066bec83cb66bcb7c |
|
BLAKE2b-256 | fac07aee0fe83b5c7990542adb64648a66e0fb9cf662f9ca1110f72f03e53b2a |